Reproducir eventos de citas
GET
/appointment-eventsRetorna 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
| Nombre | Ubicacion | Requerido | Descripcion |
|---|---|---|---|
X-Correlation-Id | header | No | UUID generado por el consumidor para trazabilidad; el servidor genera uno si se omite. |
cursor | query | No | Cursor opaco retornado por la pagina anterior; no debe interpretarse. |
limit | query | No | Cantidad maxima de elementos solicitados. |
Responses
200Pagina cronologica de eventos posteriores al cursor.
Content-Type: application/json
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
hasMore | boolean | Si | - |
items | object[] | Si | - |
nextCursor | string | null | Si | - |
Ejemplo
{
"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
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
code | string | Si | - |
correlationId | string (uuid) | Si | - |
detail | string | No | Explicacion segura sin PII ni secretos. |
errors | object[] | No | - |
instance | string (uri-reference) | No | - |
status | integer | Si | - |
title | string | Si | - |
type | string (uri) | Si | URI estable que identifica la clase de problema. |
Ejemplo
{
"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
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
code | string | Si | - |
correlationId | string (uuid) | Si | - |
detail | string | No | Explicacion segura sin PII ni secretos. |
errors | object[] | No | - |
instance | string (uri-reference) | No | - |
status | integer | Si | - |
title | string | Si | - |
type | string (uri) | Si | URI estable que identifica la clase de problema. |
Ejemplo
{
"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
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
code | string | Si | - |
correlationId | string (uuid) | Si | - |
detail | string | No | Explicacion segura sin PII ni secretos. |
errors | object[] | No | - |
instance | string (uri-reference) | No | - |
status | integer | Si | - |
title | string | Si | - |
type | string (uri) | Si | URI estable que identifica la clase de problema. |
Ejemplo
{
"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
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
code | string | Si | - |
correlationId | string (uuid) | Si | - |
detail | string | No | Explicacion segura sin PII ni secretos. |
errors | object[] | No | - |
instance | string (uri-reference) | No | - |
status | integer | Si | - |
title | string | Si | - |
type | string (uri) | Si | URI estable que identifica la clase de problema. |
Ejemplo
{
"code": "RATE_LIMIT_EXCEEDED",
"correlationId": "10000000-0000-4000-8000-000000000001",
"status": 429,
"title": "Demasiadas solicitudes",
"type": "https://magnosoft.com.co/problems/rate-limit"
}