LANIA_API/openapi

219 lines
6.6 KiB
Plaintext

openapi: 3.0.3
info:
title: API de Candidatos
description: |
API para gestionar información de candidatos con autenticación OAuth 2.0.
Permite obtener información detallada de candidatos incluyendo datos demográficos,
formación académica, exámenes y experiencia de servicio.
version: 1.0.0
servers:
- url: https://sgcd.lania.edu.mx/api_candidatos
description: Servidor principal
security:
- oauth2: []
paths:
/oauth/token:
post:
summary: Obtener token de acceso OAuth 2.0
description: Endpoint para obtener un token de acceso utilizando credenciales de cliente
tags:
- Autenticación
security: [] # Este endpoint no requiere token previo
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- grant_type
- client_id
- client_secret
properties:
grant_type:
type: string
enum: [client_credentials]
description: Tipo de autorización OAuth 2.0
client_id:
type: string
description: Identificador del cliente
client_secret:
type: string
description: Secreto del cliente
scope:
type: string
description: Alcances solicitados (opcional)
responses:
'200':
description: Token de acceso generado exitosamente
content:
application/json:
schema:
type: object
properties:
token_type:
type: string
example: Bearer
expires_in:
type: integer
example: 3600
access_token:
type: string
example: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
'400':
description: Solicitud inválida o credenciales incorrectas
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: No autorizado
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/candidatos/obtenerCandidatos:
get:
summary: Obtener lista de candidatos
description: Devuelve un listado de todos los candidatos con información detallada.
tags:
- Candidatos
responses:
'200':
description: Lista de candidatos obtenida correctamente
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Candidato'
'401':
description: No autorizado - Token de acceso inválido o expirado
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Error del servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
securitySchemes:
oauth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://sgcd.lania.edu.mx/api_candidatos/oauth/token
scopes: {}
schemas:
Error:
type: object
properties:
error:
type: string
example: invalid_request
message:
type: string
example: El token de acceso proporcionado es inválido
Candidato:
type: object
properties:
id_candidato:
type: string
description: Identificador único del candidato
nombre_completo:
type: string
description: Nombre completo del candidato
contacto:
type: object
properties:
correo:
type: string
format: email
description: Correo electrónico del candidato
telefono:
type: string
description: Número telefónico del candidato
demograficos:
type: object
properties:
genero:
type: string
description: Género del candidato
rango_edad:
type: string
description: Rango de edad del candidato
tipo_identificacion:
type: string
description: Tipo de identificación del candidato
ubicacion:
type: object
properties:
pais:
type: string
description: País de residencia
estado:
type: string
description: Estado o provincia
municipio:
type: string
description: Municipio o ciudad
colonia:
type: string
description: Colonia o barrio
formacion:
type: object
properties:
nivel_estudio:
type: string
description: Nivel de estudios del candidato
giro:
type: string
description: Sector o giro de actividad
nombre_empresa_institucion:
type: string
description: Nombre de la empresa o institución donde trabaja/estudia
examen:
type: object
properties:
id_examen:
type: string
description: Identificador del examen
nombre_examen:
type: string
description: Nombre del examen realizado
motivo:
type: string
description: Motivo por el cual realizó el examen
experiencia_servicio:
type: object
properties:
calificacion_servicio:
type: integer
minimum: 0
maximum: 10
description: Calificación del servicio (0-10)
consentimiento_publicidad:
type: boolean
description: Consentimiento para recibir publicidad
fechas:
type: object
properties:
entrada:
type: string
format: date-time
description: Fecha y hora de entrada
salida:
type: string
format: date-time
description: Fecha y hora de salida