Saltar al contenido principal

Reproducir eventos de citas

GET/appointment-events

Retorna el log append-only del tenant en orden (occurredAt,id). Sin cursor inicia en el primer evento retenido; reutilizar un cursor repite deterministamente la pagina posterior. nextCursor representa el ultimo evento entregado y sirve para polling.

curl --request GET \
  --url '${BASE_URL}/appointment-events' \
  --header 'Authorization: Bearer ${ACCESS_TOKEN}' \
  --data-urlencode 'limit=50'

Request

Headers y parametros

NombreUbicacionRequeridoDescripcion
X-Correlation-IdheaderNoUUID generado por el consumidor para trazabilidad; el servidor genera uno si se omite.
cursorqueryNoCursor opaco retornado por la pagina anterior; no debe interpretarse.
limitqueryNoCantidad maxima de elementos solicitados.

Responses

200Pagina cronologica de eventos posteriores al cursor.

Content-Type: application/json

CampoTipoRequeridoDescripcion
hasMorebooleanSi-
itemsobject[]Si-
nextCursorstring | nullSi-

Ejemplo

ejemplo de respuesta 200
{
  "hasMore": false,
  "items": [
    {
      "appointmentId": "60000000-0000-4000-8000-000000000001",
      "correlationId": "10000000-0000-4000-8000-000000000001",
      "id": "62000000-0000-4000-8000-000000000001",
      "newStatus": "PENDING",
      "occurredAt": "2026-07-27T15:00:00.000Z",
      "previousStatus": null,
      "source": "EXTERNAL_API",
      "type": "APPOINTMENT_BOOKED"
    }
  ],
  "nextCursor": "eyJvY2N1cnJlZEF0IjoiMjAyNi0wNy0yN1QxNTowMDowMC4wMDBaIiwiaWQiOiI2MjAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMDAwMDEifQ"
}
400Solicitud mal formada o parametro invalido.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 400
{
  "code": "INVALID_REQUEST",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "detail": "Revise los parametros enviados.",
  "status": 400,
  "title": "Solicitud invalida",
  "type": "https://magnosoft.com.co/problems/invalid-request"
}
401Token ausente, invalido, vencido o con audience incorrecta.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 401
{
  "code": "INVALID_ACCESS_TOKEN",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "status": 401,
  "title": "Autenticacion requerida",
  "type": "https://magnosoft.com.co/problems/unauthorized"
}
403Service principal autenticado sin el scope requerido.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 403
{
  "code": "INSUFFICIENT_SCOPE",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "status": 403,
  "title": "Permiso insuficiente",
  "type": "https://magnosoft.com.co/problems/forbidden"
}
429Limite de solicitudes excedido para el service principal.

Content-Type: application/problem+json

CampoTipoRequeridoDescripcion
codestringSi-
correlationIdstring (uuid)Si-
detailstringNoExplicacion segura sin PII ni secretos.
errorsobject[]No-
instancestring (uri-reference)No-
statusintegerSi-
titlestringSi-
typestring (uri)SiURI estable que identifica la clase de problema.

Ejemplo

ejemplo de respuesta 429
{
  "code": "RATE_LIMIT_EXCEEDED",
  "correlationId": "10000000-0000-4000-8000-000000000001",
  "status": 429,
  "title": "Demasiadas solicitudes",
  "type": "https://magnosoft.com.co/problems/rate-limit"
}