{
  "openapi": "3.1.0",
  "info": {
    "title": "Vikranth Reddimasu Portfolio API",
    "description": "Public, read-only developer API for Vikranth Reddimasu's portfolio, projects, skills, education, experience, and contact details.",
    "version": "1.0.0",
    "contact": {
      "name": "Vikranth Reddimasu",
      "email": "vikranthreddimasu@gmail.com",
      "url": "https://vikranthreddimasu.me/contact"
    },
    "license": {
      "name": "Public read-only access; content rights reserved",
      "identifier": "LicenseRef-Portfolio-API"
    }
  },
  "externalDocs": {
    "description": "Vikranth Reddimasu Developer Portal",
    "url": "https://vikranthreddimasu.me/developers"
  },
  "servers": [
    {
      "url": "https://vikranthreddimasu.me",
      "description": "Production"
    }
  ],
  "security": [],
  "tags": [
    {
      "name": "Portfolio",
      "description": "Read-only public portfolio data. No API key is required."
    }
  ],
  "x-versioning-policy": {
    "strategy": "Major versions use URL path prefixes such as /api/v1 and /api/v2.",
    "compatibleChanges": "Optional fields and endpoints may be added within a major version.",
    "deprecation": "Deprecated operations are documented and return Deprecation and Link headers. A Sunset header is added only after a retirement date is chosen, with at least 180 days notice."
  },
  "x-deprecation-policy": "https://vikranthreddimasu.me/developers/versioning",
  "paths": {
    "/api": {
      "get": {
        "operationId": "getPortfolioApiIndex",
        "summary": "Get the public API index",
        "description": "Returns the current API version, documentation URL, OpenAPI URL, authentication mode, and public endpoint links.",
        "tags": ["Portfolio"],
        "deprecated": false,
        "responses": {
          "200": {
            "description": "Public API index",
            "headers": {
              "RateLimit-Policy": { "$ref": "#/components/headers/RateLimitPolicy" },
              "RateLimit": { "$ref": "#/components/headers/RateLimit" },
              "RateLimit-Limit": { "$ref": "#/components/headers/RateLimitLimit" },
              "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimitRemaining" },
              "RateLimit-Reset": { "$ref": "#/components/headers/RateLimitReset" },
              "Link": { "$ref": "#/components/headers/DeprecationPolicyLink" }
            },
            "content": {
              "application/json": {
                "schema": { "type": "object", "$ref": "#/components/schemas/ApiIndex" }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": { "type": "integer", "minimum": 1 }
              },
              "RateLimit-Policy": { "$ref": "#/components/headers/RateLimitPolicy" },
              "RateLimit": { "$ref": "#/components/headers/RateLimit" },
              "RateLimit-Limit": { "$ref": "#/components/headers/RateLimitLimit" },
              "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimitRemaining" },
              "RateLimit-Reset": { "$ref": "#/components/headers/RateLimitReset" }
            },
            "content": {
              "application/problem+json": {
                "schema": { "type": "object", "$ref": "#/components/schemas/Problem" }
              }
            }
          },
          "default": {
            "description": "Structured RFC 9457 problem details",
            "content": {
              "application/problem+json": {
                "schema": { "type": "object", "$ref": "#/components/schemas/Problem" }
              }
            }
          }
        }
      }
    },
    "/api/v1/profile": {
      "get": {
        "operationId": "getVikranthReddimasuProfile",
        "summary": "Get Vikranth Reddimasu's portfolio profile",
        "description": "Returns Vikranth Reddimasu's public profile with projects, skills, education, experience, leadership, activities, resources, contact links, and agent metadata.",
        "tags": ["Portfolio"],
        "deprecated": false,
        "responses": {
          "200": {
            "description": "Complete public portfolio profile",
            "headers": {
              "RateLimit-Policy": { "$ref": "#/components/headers/RateLimitPolicy" },
              "RateLimit": { "$ref": "#/components/headers/RateLimit" },
              "RateLimit-Limit": { "$ref": "#/components/headers/RateLimitLimit" },
              "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimitRemaining" },
              "RateLimit-Reset": { "$ref": "#/components/headers/RateLimitReset" },
              "Link": { "$ref": "#/components/headers/DeprecationPolicyLink" }
            },
            "content": {
              "application/json": {
                "schema": { "type": "object", "$ref": "#/components/schemas/Profile" }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": { "type": "integer", "minimum": 1 }
              },
              "RateLimit-Policy": { "$ref": "#/components/headers/RateLimitPolicy" },
              "RateLimit": { "$ref": "#/components/headers/RateLimit" },
              "RateLimit-Limit": { "$ref": "#/components/headers/RateLimitLimit" },
              "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimitRemaining" },
              "RateLimit-Reset": { "$ref": "#/components/headers/RateLimitReset" }
            },
            "content": {
              "application/problem+json": {
                "schema": { "type": "object", "$ref": "#/components/schemas/Problem" }
              }
            }
          },
          "500": {
            "description": "The portfolio profile is temporarily unavailable",
            "content": {
              "application/problem+json": {
                "schema": { "type": "object", "$ref": "#/components/schemas/Problem" }
              }
            }
          },
          "default": {
            "description": "Structured RFC 9457 problem details",
            "content": {
              "application/problem+json": {
                "schema": { "type": "object", "$ref": "#/components/schemas/Problem" }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "headers": {
      "RateLimitPolicy": {
        "description": "Quota policy using the current IETF RateLimit structured-field draft.",
        "schema": { "type": "string", "example": "\"default\";q=60;w=60" }
      },
      "RateLimit": {
        "description": "Remaining quota and reset window using the current IETF RateLimit structured-field draft.",
        "schema": { "type": "string", "example": "\"default\";r=59;t=60" }
      },
      "RateLimitLimit": {
        "description": "Legacy-compatible request limit for the current window.",
        "schema": { "type": "integer", "example": 60 }
      },
      "RateLimitRemaining": {
        "description": "Legacy-compatible requests remaining in the current window.",
        "schema": { "type": "integer", "example": 59 }
      },
      "RateLimitReset": {
        "description": "Legacy-compatible seconds until the current window resets.",
        "schema": { "type": "integer", "example": 60 }
      },
      "DeprecationPolicyLink": {
        "description": "RFC 9745 deprecation link relation pointing to the public lifecycle policy. Its presence does not mean this operation is deprecated; a Deprecation header is added only when deprecation begins.",
        "schema": { "type": "string", "example": "</developers/versioning>; rel=\"deprecation\"; type=\"text/html\"" }
      }
    },
    "schemas": {
      "ApiIndex": {
        "type": "object",
        "additionalProperties": false,
        "required": ["name", "version", "authentication", "documentation", "deprecationPolicy", "openapi", "endpoints"],
        "properties": {
          "name": { "type": "string" },
          "version": { "type": "string", "const": "v1" },
          "authentication": { "type": "string", "const": "none" },
          "documentation": { "type": "string", "format": "uri" },
          "deprecationPolicy": { "type": "string", "format": "uri" },
          "openapi": { "type": "string", "format": "uri" },
          "endpoints": {
            "type": "object",
            "additionalProperties": false,
            "required": ["profile"],
            "properties": {
              "profile": { "type": "string", "format": "uri" }
            }
          }
        }
      },
      "Profile": {
        "type": "object",
        "additionalProperties": false,
        "required": ["name", "role", "status", "email", "website", "resume", "github", "linkedin", "summary", "education", "experience", "skills", "projects", "activities", "resources", "leadership", "metadata"],
        "properties": {
          "name": { "type": "string" },
          "role": { "type": "string" },
          "status": { "type": "string" },
          "email": { "type": "string", "format": "email" },
          "website": { "type": "string", "format": "uri" },
          "resume": { "type": "string", "format": "uri" },
          "github": { "type": "string", "format": "uri" },
          "linkedin": { "type": "string", "format": "uri" },
          "summary": { "type": "string" },
          "education": { "type": "array", "items": { "$ref": "#/components/schemas/Education" } },
          "experience": { "type": "array", "items": { "$ref": "#/components/schemas/Experience" } },
          "skills": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": { "type": "string" }
            }
          },
          "projects": { "type": "array", "items": { "$ref": "#/components/schemas/Project" } },
          "activities": { "type": "array", "items": { "$ref": "#/components/schemas/Activity" } },
          "resources": { "type": "array", "items": { "$ref": "#/components/schemas/Resource" } },
          "leadership": { "type": "array", "items": { "type": "string" } },
          "metadata": { "$ref": "#/components/schemas/AgentMetadata" }
        }
      },
      "Education": {
        "type": "object",
        "additionalProperties": false,
        "required": ["degree", "institution", "gpa", "period", "coursework"],
        "properties": {
          "degree": { "type": "string" },
          "institution": { "type": "string" },
          "gpa": { "type": "number" },
          "period": { "type": "string" },
          "coursework": { "type": "array", "items": { "type": "string" } }
        }
      },
      "Experience": {
        "type": "object",
        "additionalProperties": false,
        "required": ["company", "role", "period", "location", "bullets"],
        "properties": {
          "company": { "type": "string" },
          "role": { "type": "string" },
          "period": { "type": "string" },
          "location": { "type": "string" },
          "bullets": { "type": "array", "items": { "type": "string" } }
        }
      },
      "Project": {
        "type": "object",
        "additionalProperties": false,
        "required": ["title", "slug", "description", "techStack", "url", "githubUrl"],
        "properties": {
          "title": { "type": "string" },
          "slug": { "type": "string" },
          "description": { "type": "string" },
          "techStack": { "type": "array", "items": { "type": "string" } },
          "url": { "type": "string", "format": "uri" },
          "githubUrl": { "type": ["string", "null"], "format": "uri" }
        }
      },
      "Activity": {
        "type": "object",
        "additionalProperties": false,
        "required": ["title", "slug", "description", "period", "tags", "url"],
        "properties": {
          "title": { "type": "string" },
          "slug": { "type": "string" },
          "description": { "type": "string" },
          "period": { "type": "string" },
          "tags": { "type": "array", "items": { "type": "string" } },
          "url": { "type": "string", "format": "uri" }
        }
      },
      "Resource": {
        "type": "object",
        "additionalProperties": false,
        "required": ["title", "slug", "description", "tags", "url"],
        "properties": {
          "title": { "type": "string" },
          "slug": { "type": "string" },
          "description": { "type": "string" },
          "tags": { "type": "array", "items": { "type": "string" } },
          "url": { "type": "string", "format": "uri" }
        }
      },
      "AgentMetadata": {
        "type": "object",
        "additionalProperties": false,
        "required": ["lastUpdated", "apiVersion", "llmsTxt", "llmsFullTxt", "agentJson", "openapi", "developers", "mcp"],
        "properties": {
          "lastUpdated": { "type": "string", "format": "date" },
          "apiVersion": { "type": "string", "const": "v1" },
          "llmsTxt": { "type": "string", "format": "uri" },
          "llmsFullTxt": { "type": "string", "format": "uri" },
          "agentJson": { "type": "string", "format": "uri" },
          "openapi": { "type": "string", "format": "uri" },
          "developers": { "type": "string", "format": "uri" },
          "mcp": { "type": "string", "format": "uri" }
        }
      },
      "Problem": {
        "type": "object",
        "additionalProperties": true,
        "required": ["type", "title", "status", "detail", "instance", "code", "resolution"],
        "properties": {
          "type": { "type": "string", "format": "uri-reference" },
          "title": { "type": "string" },
          "status": { "type": "integer", "minimum": 400, "maximum": 599 },
          "detail": { "type": "string" },
          "instance": { "type": "string", "format": "uri-reference" },
          "code": { "type": "string" },
          "resolution": { "type": "string" }
        }
      }
    }
  }
}
