# Changelog

Historial de cambios del Motor de Agendamiento API. Esta API solo funciona en su última versión.

---

## [1.6.3] - 2026

### Mejorado
- **POST `/api/booking/schedule`**: Mensajes de error descriptivos y específicos
  - `Invalid Parameters` ahora indica qué parámetro falta o es inválido
  - `Option not Available` diferencia entre slot no disponible y slot tomado por otro paciente
  - `Type attention not valid` muestra las opciones disponibles
  - Mensajes en español traducidos a inglés para consistencia

### Agregado
- **Nuevo campo `error_code`** en todas las respuestas de error de la API
  - Código programático para facilitar integración (ej: `SLOT_NOT_AVAILABLE`, `INVALID_PARAMS`)
  - Backward compatible: el campo `error` sigue existiendo con el mensaje legible
  - Catálogo completo documentado en OpenAPI y docs markdown

### Seguridad
- **POST `/api/booking/schedule`**: Ya no se expone el número de línea interno en errores de excepción

---

## [1.6.2] - 2025

### Agregado
- **POST `/api/booking/schedule`**: Soporte para tipos de documento de Perú
  - Nuevos tipos: DNI (Documento Nacional de Identidad), RUC (Registro Único de Contribuyentes), PTP (Permiso Temporal de Permanencia)
  - Ampliado `max` de 2 a 3 caracteres para soportar códigos de 3 letras

---

# Changelog - Portal de Agendamiento API

Historial de cambios del Portal de Agendamiento API (`/api/portal/booking`).

---

## [1.1] - 2025

### Agregado
- **GET `/api/portal/booking/insurers`**: Nuevo endpoint para consultar aseguradoras
  - Parámetro `public_offer` para filtrar aseguradoras disponibles en canales de autogestión
  - Requiere módulo de aseguradoras activo en la empresa

- **Filtro por aseguradora en endpoints existentes**: Nuevo parámetro `insurer_id`
  - GET `/specialties`: Filtrar especialidades por aseguradora
  - GET `/specialties/by-place`: Filtrar especialidades por aseguradora
  - GET `/services`: Filtrar servicios por aseguradora
  - GET `/professionals`: Filtrar profesionales por aseguradora
  - GET `/procedures`: Filtrar prestaciones por aseguradora
  - GET `/availability`: Filtrar disponibilidad por aseguradora

- **POST `/api/portal/booking/patient`**: Sincronización automática con sistemas externos
  - Al crear/actualizar paciente, se sincroniza con HIS/ERP si está configurado
  - Sincronización no bloqueante: si falla el sistema externo, el paciente se crea igual
  - Compatible con integraciones Osigu, Servinte360 y futuras

---

## [1.6.1] - 2024

### Mejorado
- **GET `/api/booking/appointment/list/date`**: Respuesta mejorada con estructura anidada
  - Información del paciente agrupada en objeto `patient` (identifier_value, name, phone, phone2, email)
  - Información de la cita agrupada en objeto `schedule` (start_time, end_time, service, place, professional, insurer)

---

## [1.6.0] - 2024

### Agregado
- **POST `/api/booking/appointment/update/state`**: Nuevo endpoint para modificación de estados de citas
  - Permite cambiar el estado de una cita existente
  - Requiere: tenant, appointment_id, state
  - Estados disponibles: confirmada, cancelada, atendida, no_asistio

- **GET `/api/booking/appointment/list/date`**: Nuevo endpoint para consulta de citas por fecha
  - Permite consultar todas las citas de una fecha específica
  - Parámetros: tenant, date (YYYY-MM-DD)
  - Filtros opcionales: place, professional, service

---

## [1.5.1] - 2024

### Agregado
- **GET `/api/booking/places`**: Nuevo parámetro `insurer`
  - Permite filtrar sedes por aseguradora

- **GET `/api/booking/places`**: Nuevo parámetro `available_slots`
  - Define el mínimo de cupos disponibles al buscar con `search_disponibility=true`
  - Valor por defecto: 5

- **GET `/api/booking/professional/types_attention`**: Nuevo parámetro `insurer`
  - Permite filtrar tipos de atención por aseguradora

- **GET `/api/booking/dates/available`**: Nuevo parámetro `available_slots`
  - Consistencia con el parámetro de places

---

## [1.5.0] - 2024

### Versión Base
Versión inicial documentada del Motor de Agendamiento API.

#### Endpoints de Autenticación
- **POST `/oauth/token`**: Obtención de token de acceso OAuth 2.0

#### Endpoints de Consulta
- **GET `/api/booking/insurers`**: Consultar aseguradoras disponibles
- **GET `/api/booking/services`**: Consultar servicios ofertados
- **GET `/api/booking/places`**: Consultar sedes por servicio
- **GET `/api/booking/professionals`**: Consultar profesionales por sede y servicio
- **GET `/api/booking/professional/types_attention`**: Consultar tipos de atención
- **GET `/api/booking/availability`**: Consultar disponibilidad de citas

#### Endpoints de Agendamiento
- **POST `/api/booking/schedule`**: Asignar cita
- **GET `/api/booking/appointment/list`**: Consultar citas de un paciente
- **POST `/api/booking/appointment/cancel`**: Cancelar cita

---

## Notas

- Esta API opera siempre en su **última versión**. No hay soporte para versiones anteriores.
- Los cambios son retrocompatibles a menos que se indique lo contrario.
- Para soporte técnico, contacte al equipo de COCO Tecnologías.
