Saltar al contenido principal
Esta guía reserva a un paciente con un profesional para un servicio, mueve la cita y la cancela. Usa curl y jq; cada paso es igual con cualquier cliente HTTP.

Antes de empezar

  • Una clave de API de la organización con services.read, professionals.read, calendar.read, appointments.read, appointments.create, appointments.reschedule y appointments.cancel, y patients.administrative.read para encontrar al paciente.
  • Las áreas de datos agenda y team activadas (lo están por defecto). Buscar al paciente por nombre necesita además el área patients; si está desactivada, usa un id de paciente que ya tengas.

1. Consigue los ids

Si la clínica tiene más de un centro, toma también un centerId de GET /v1/centers y envíalo en los pasos siguientes.

2. Busca huecos libres

Respuesta
  • Los huecos siguen el horario de la clínica y el intervalo de la agenda, y dejan fuera lo que el profesional ya tiene reservado o bloqueado: exactamente lo que aceptaría la agenda de Brelio.
  • Las horas están en UTC. La clínica del ejemplo está en Madrid (UTC+1), así que 08:00Z son las 09:00 hora local.
  • La ventana es de 31 días como máximo y llegan como mucho 50 huecos. La duración es la del servicio salvo que envíes durationMinutes.

3. Resérvalo

Envía uno de los startAt como start, con una Idempotency-Key nueva:
201 Created
Guarda el id. Es opaco: puede contener : y una fecha, y esa fecha no cambia cuando la cita se mueve. Úsalo tal cual. Si alguien ha ocupado el hueco desde que buscaste, la respuesta es 409 APPOINTMENT_OVERLAP_DETECTED: vuelve a buscar y ofrece otra hora.

4. Léela

Respuesta
GET /v1/agenda?from=…&to=… lista las mismas citas de una ventana, con los mismos ids.

5. Reprográmala

Envía la version que acabas de leer como expectedVersion, y un start nuevo de una nueva búsqueda de huecos:
Respuesta
Si la cita cambió en Brelio desde que la leíste, recibes 409 VERSION_CONFLICT: vuelve a leerla y decide otra vez. Consulta la concurrencia.

6. Cancélala

Respuesta
  • reason es solo administrativo. Nunca pongas información clínica.
  • Cancelar no se puede deshacer por la API.
  • Una cita que ya tiene sesión (paciente llegado o después) se cancela en Brelio: 409 APPOINTMENT_CANCEL_IN_BRELIO.

Límites de esta versión

  • Solo citas sueltas. Las series recurrentes responden 422 APPOINTMENT_RECURRING_UNSUPPORTED al reprogramar o cancelar.
  • Reservar, reprogramar y cancelar es solo por REST; los asistentes MCP pueden leer la agenda y los huecos, pero todavía no escribir.
  • patientId en la agenda es null salvo que el área patients de la clínica esté activada y tu clave esté aceptada para datos de pacientes.

Todo el flujo en Node.js

book.mjs