{
 "openapi": "3.0.3",
 "info": {
  "title": "API de Afiliaciones Auna",
  "version": "1.0",
  "description": "API del workshop Quick Suite para consultar afiliados y gestionar solicitudes."
 },
 "servers": [
  {
   "url": "https://qgv58q2mj4.execute-api.us-east-1.amazonaws.com/v1"
  }
 ],
 "components": {
  "securitySchemes": {
   "oauth2": {
    "type": "oauth2",
    "flows": {
     "clientCredentials": {
      "tokenUrl": "https://auna-quick-753779157813.auth.us-east-1.amazoncognito.com/oauth2/token",
      "scopes": {
       "afiliaciones-api/full": "Acceso completo"
      }
     }
    }
   }
  },
  "schemas": {
   "Afiliado": {
    "type": "object",
    "properties": {
     "cod_afiliado": {
      "type": "string"
     },
     "apellidos_nombres_afil": {
      "type": "string"
     },
     "estado_afiliado": {
      "type": "string"
     },
     "des_plan": {
      "type": "string"
     },
     "departamento_afil": {
      "type": "string"
     }
    }
   },
   "Solicitud": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "cod_afiliado": {
      "type": "string"
     },
     "tipo": {
      "type": "string"
     },
     "descripcion": {
      "type": "string"
     },
     "estado": {
      "type": "string",
      "enum": [
       "PENDIENTE",
       "EN_PROCESO",
       "RESUELTA",
       "RECHAZADA"
      ]
     }
    }
   }
  }
 },
 "security": [
  {
   "oauth2": [
    "afiliaciones-api/full"
   ]
  }
 ],
 "paths": {
  "/afiliados": {
   "get": {
    "operationId": "listarAfiliados",
    "summary": "Lista afiliados con filtros opcionales",
    "parameters": [
     {
      "name": "estado",
      "in": "query",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "plan",
      "in": "query",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "departamento",
      "in": "query",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "schema": {
       "type": "integer",
       "maximum": 100
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK"
     }
    }
   }
  },
  "/afiliados/{codigo}": {
   "get": {
    "operationId": "obtenerAfiliado",
    "summary": "Obtiene un afiliado por su codigo",
    "parameters": [
     {
      "name": "codigo",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK"
     },
     "404": {
      "description": "No encontrado"
     }
    }
   }
  },
  "/solicitudes": {
   "get": {
    "operationId": "listarSolicitudes",
    "summary": "Lista solicitudes de afiliacion",
    "responses": {
     "200": {
      "description": "OK"
     }
    }
   },
   "post": {
    "operationId": "crearSolicitud",
    "summary": "Crea una solicitud de afiliacion",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "cod_afiliado",
         "tipo",
         "descripcion"
        ],
        "properties": {
         "cod_afiliado": {
          "type": "string"
         },
         "tipo": {
          "type": "string"
         },
         "descripcion": {
          "type": "string"
         }
        }
       }
      }
     }
    },
    "responses": {
     "201": {
      "description": "Creada"
     },
     "400": {
      "description": "Campos faltantes"
     }
    }
   }
  },
  "/solicitudes/{id}": {
   "get": {
    "operationId": "obtenerSolicitud",
    "summary": "Obtiene una solicitud por id",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK"
     },
     "404": {
      "description": "No encontrada"
     }
    }
   },
   "put": {
    "operationId": "actualizarSolicitud",
    "summary": "Cambia el estado de una solicitud",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "estado"
        ],
        "properties": {
         "estado": {
          "type": "string",
          "enum": [
           "PENDIENTE",
           "EN_PROCESO",
           "RESUELTA",
           "RECHAZADA"
          ]
         }
        }
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "OK"
     },
     "400": {
      "description": "Estado invalido"
     }
    }
   }
  }
 }
}