Reference
API reference
Every endpoint, parameter, body, response and schema of API v1, generated from its OpenAPI specification.
This reference is generated automatically from the OpenAPI 3.1 specification published by the API itself, so it's always in step with what is deployed. The curl examples point to the sandbox; in production, change the base URL and the key.
Every successful response is wrapped in the same envelope: { "status": 200, "data": { … }, "message": "…" }, and paginated lists carry data.items and data.pagination. Errors follow the RFC 9457 format.
- Version
1.0.0· OpenAPI 3.1.0- Base URL
https://api.saludenruta.es/api/integrations/v1— Productionhttps://sandbox-api.saludenruta.es/api/integrations/v1— Test (sandbox)
- Authentication
X-Api-Key(header) — Clave del proveedor. Producción: srd_live_…; pruebas (sandbox): srd_test_…
Provider Integration API (v1)
Avisos, catálogo, informes y sandbox
GET/catalog
Tipos de servicio permitidos y aseguradoras finales admitidas
Ámbito: visits:write.
Responses
200Success
objectstatusnumberoptionalShow fields
providerTypestringrequiredrequiresExternalRefbooleanrequiredSi externalRef es obligatorio
Tipos de servicio con línea en su tarifa vigente (o todos los activos sin tarifa)
Show fields
idstring (uuid)requiredcodestringrequirednamestringrequiredrequiredProfessionalstringrequired
Aseguradoras finales admitidas (solo intermediarios)
Show fields
idstring (uuid)requirednamestringrequired
messagestringoptional
401API key ausente, inválida, revocada o caducada
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
429Límite de peticiones de la clave superado (Retry-After)
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/catalog" \
-H "X-Api-Key: $SERAD_API_KEY"{
"status": 200,
"data": {
"providerType": "INSURER",
"requiresExternalRef": true,
"serviceTypes": [
{
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "GENERAL_CONSULTATION",
"name": "Consulta general",
"requiredProfessional": "DOCTOR"
}
],
"insurers": [
{
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"name": "Sanitas"
}
]
},
"message": "Operación realizada correctamente"
}GET/visits
Lista avisos del proveedor (filtro por externalRef, estado, fechas)
Ámbito: visits:read. ?externalRef=EXP-… busca por nº de expediente exacto.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
page | query | number | Número de página (1-indexado) |
limit | query | number | Elementos por página |
search | query | string | Búsqueda libre (nombre/email según el recurso) |
sortBy | query | string | Campo de ordenación |
sortOrder | query | stringASC · DESC | — |
status | query | array<string> | Uno o varios estados |
priority | query | stringURGENT · NORMAL · SCHEDULED | — |
dateFrom | query | string | Día de servicio desde (incl.) |
dateTo | query | string | Día de servicio hasta (incl.) |
externalRef | query | string | Nº de expediente exacto |
serviceTypeId | query | string (uuid) | — |
Responses
200Success
objectstatusnumberoptionaldataobjectoptionalShow fields
Show fields
idstring (uuid)requiredcodestringrequiredstatusstringrequiredstatusLabelstringrequiredprioritystringrequiredoriginstringrequiredexternalRefstringoptionalnullableShow fields
idstring (uuid)requiredcodestringrequirednamestringrequired
requiredProfessionalstringrequiredinsurerobjectoptionalnullableAseguradora final
patientNamestringrequiredNombre del paciente que envió
addressobjectrequiredDomicilio (sin coordenadas ni indicaciones de acceso)
serviceDatestringrequiredscheduledFromstring (date-time)optionalnullablescheduledTostring (date-time)optionalnullableFin de la cita, calculado: inicio + tiempo estimado
estimatedMinutesnumberrequiredTiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)
Show fields
requestedAtstring (date-time)requiredassignedAtstring (date-time)optionalnullabledepartedAtstring (date-time)optionalnullablearrivedAtstring (date-time)optionalnullablefinishedAtstring (date-time)optionalnullablecancelledAtstring (date-time)optionalnullableinvoicedAtstring (date-time)optionalnullable
Solo el tipo de unidad, desde la asignación
Show fields
typestringrequiredlabelstringrequiredNunca nombres ni matrículas
outcomestringoptionalnullablecancellationReasonstringoptionalnullablecancelledWithChargebooleanrequiredcancellablebooleanrequiredSi el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)
reportAvailablebooleanrequiredSi hay informe asistencial compartido y descargable
invoiceIdstring (uuid)optionalnullablecreatedAtstring (date-time)requiredupdatedAtstring (date-time)required
paginationobjectoptionalShow fields
pagenumberoptionallimitnumberoptionaltotalItemsnumberoptionaltotalPagesnumberoptional
messagestringoptional
401API key ausente, inválida, revocada o caducada
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
429Límite de peticiones de la clave superado (Retry-After)
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/visits" \
-H "X-Api-Key: $SERAD_API_KEY"{
"status": 200,
"data": {
"items": [
{
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "AV-000123",
"status": "PENDING",
"statusLabel": "Unidad en camino",
"priority": "URGENT",
"origin": "INTRANET",
"externalRef": "EXP-2026-004512",
"serviceType": {
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "GENERAL_CONSULTATION",
"name": "Consulta general"
},
"requiredProfessional": "DOCTOR",
"insurer": {},
"patientName": "María García López",
"address": {},
"serviceDate": "2026-09-25",
"scheduledFrom": "2026-09-25T09:30:00.000Z",
"scheduledTo": "2026-09-25T09:30:00.000Z",
"estimatedMinutes": 60,
"milestones": {
"requestedAt": "2026-09-25T09:30:00.000Z",
"assignedAt": "2026-09-25T09:30:00.000Z",
"departedAt": "2026-09-25T09:30:00.000Z",
"arrivedAt": "2026-09-25T09:30:00.000Z",
"finishedAt": "2026-09-25T09:30:00.000Z",
"cancelledAt": "2026-09-25T09:30:00.000Z",
"invoicedAt": "2026-09-25T09:30:00.000Z"
},
"unit": {
"type": "MEDICAL",
"label": "Unidad médica"
},
"outcome": "ATTENDED",
"cancellationReason": "string",
"cancelledWithCharge": true,
"cancellable": true,
"reportAvailable": true,
"invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"createdAt": "2026-09-25T09:30:00.000Z",
"updatedAt": "2026-09-25T09:30:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"totalItems": 134,
"totalPages": 7
}
},
"message": "Operación realizada correctamente"
}POST/visits
Crea un aviso
Ámbito: visits:write. Con Idempotency-Key (recomendado), repetir la petición con la misma clave y el mismo cuerpo durante 24 h devuelve el mismo aviso (200, cabecera Idempotent-Replayed: true); con otro cuerpo, 409. El paciente se identifica por documento y se reutiliza si ya existe. externalRef es obligatorio si el proveedor lo exige.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Sandbox-Simulation | header | string | Solo sandbox. |
Idempotency-Key | header | string | Identificador único de la operación en tu sistema (máx. 200 caracteres) |
Request body ProviderCreateVisitDto
patientIdstring (uuid)optionalPaciente de un aviso anterior de este proveedor (
GET /client/patients). Si llega,patientno hace faltaDatos del paciente. Obligatorio salvo que se indique
patientIdShow fields
firstNamestringrequiredlastNamestringrequireddocumentTypestringoptionaldocumentNumberstringoptionalObligatorio salvo documentType NONE
birthDatestringoptionalsexstringoptionalphonestringoptional
Domicilio de la visita; se geocodifica si no trae coordenadas
Show fields
line1stringrequiredline2stringoptionalcitystringrequiredpostalCodestringrequiredprovincestringoptionalaccessNotesstringoptionallatitudenumberoptionalSi falta, se geocodifica
longitudenumberoptional
serviceTypeCodestringoptionalCódigo del tipo de servicio (GET /catalog). Recomendado: es el mismo en pruebas y en producción, a diferencia del
serviceTypeId. Obligatorio si no se indicaserviceTypeIdserviceTypeIdstring (uuid)optionalId del tipo de servicio (GET /catalog). Cambia entre entornos: mejor
serviceTypeCode. Obligatorio si no se indicaserviceTypeCodeprioritystringoptionalPor defecto NORMAL, o SCHEDULED si trae franja
scheduledFromstring (date-time)optionalestimatedMinutesnumberoptionalTiempo estimado en minutos: bloques de 10 entre 30 y 240. Por defecto 60
scheduledTostring (date-time)optionaldeprecatedObsoleto: usar
estimatedMinutes. Si llega sin él, la duración de la franja se redondea al bloque de 10 min y se usa como tiempo estimadoreasonstringrequiredMotivo de la solicitud
externalRefstringoptionalObligatorio si el proveedor lo exige
insurerIdstring (uuid)optionalAseguradora final: solo intermediarios, y entre sus aseguradoras gestionadas
callerNamestringoptionalcallerPhonestringoptional
Responses
201Success
objectstatusnumberoptionalShow fields
idstring (uuid)requiredcodestringrequiredstatusstringrequiredstatusLabelstringrequiredprioritystringrequiredoriginstringrequiredexternalRefstringoptionalnullableShow fields
idstring (uuid)requiredcodestringrequirednamestringrequired
requiredProfessionalstringrequiredinsurerobjectoptionalnullableAseguradora final
patientNamestringrequiredNombre del paciente que envió
addressobjectrequiredDomicilio (sin coordenadas ni indicaciones de acceso)
serviceDatestringrequiredscheduledFromstring (date-time)optionalnullablescheduledTostring (date-time)optionalnullableFin de la cita, calculado: inicio + tiempo estimado
estimatedMinutesnumberrequiredTiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)
Show fields
requestedAtstring (date-time)requiredassignedAtstring (date-time)optionalnullabledepartedAtstring (date-time)optionalnullablearrivedAtstring (date-time)optionalnullablefinishedAtstring (date-time)optionalnullablecancelledAtstring (date-time)optionalnullableinvoicedAtstring (date-time)optionalnullable
Solo el tipo de unidad, desde la asignación
Show fields
typestringrequiredlabelstringrequiredNunca nombres ni matrículas
outcomestringoptionalnullablecancellationReasonstringoptionalnullablecancelledWithChargebooleanrequiredcancellablebooleanrequiredSi el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)
reportAvailablebooleanrequiredSi hay informe asistencial compartido y descargable
invoiceIdstring (uuid)optionalnullablecreatedAtstring (date-time)requiredupdatedAtstring (date-time)required
messagestringoptional
400Datos inválidos, tipo de servicio no permitido o falta el expediente
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
401API key ausente, inválida, revocada o caducada
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
403La clave no tiene el ámbito visits:write
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
409Idempotency-Key reutilizada con otro cuerpo o en curso
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
429Límite de peticiones de la clave superado (Retry-After)
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
curl -X POST "https://sandbox-api.saludenruta.es/api/integrations/v1/visits" \
-H "X-Api-Key: $SERAD_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"patient": {
"firstName": "María",
"lastName": "García López",
"documentType": "DNI",
"documentNumber": "12345678Z",
"birthDate": "1948-05-17",
"phone": "+34600111222"
},
"address": {
"line1": "Calle de Alcalá 120",
"line2": "3º B",
"city": "Madrid",
"postalCode": "28009"
},
"serviceTypeId": "57605fe9-bade-4040-b403-5eeb58e57c9e",
"priority": "URGENT",
"reason": "Fiebre alta desde ayer",
"externalRef": "EXP-2026-004512",
"insurerId": "fe8faeb8-0051-40d5-b0c1-dce10d5f5ba1"
}'{
"status": 201,
"data": {
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "AV-000123",
"status": "PENDING",
"statusLabel": "Unidad en camino",
"priority": "URGENT",
"origin": "INTRANET",
"externalRef": "EXP-2026-004512",
"serviceType": {
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "GENERAL_CONSULTATION",
"name": "Consulta general"
},
"requiredProfessional": "DOCTOR",
"insurer": {},
"patientName": "María García López",
"address": {},
"serviceDate": "2026-09-25",
"scheduledFrom": "2026-09-25T09:30:00.000Z",
"scheduledTo": "2026-09-25T09:30:00.000Z",
"estimatedMinutes": 60,
"milestones": {
"requestedAt": "2026-09-25T09:30:00.000Z",
"assignedAt": "2026-09-25T09:30:00.000Z",
"departedAt": "2026-09-25T09:30:00.000Z",
"arrivedAt": "2026-09-25T09:30:00.000Z",
"finishedAt": "2026-09-25T09:30:00.000Z",
"cancelledAt": "2026-09-25T09:30:00.000Z",
"invoicedAt": "2026-09-25T09:30:00.000Z"
},
"unit": {
"type": "MEDICAL",
"label": "Unidad médica"
},
"outcome": "ATTENDED",
"cancellationReason": "string",
"cancelledWithCharge": true,
"cancellable": true,
"reportAvailable": true,
"invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"createdAt": "2026-09-25T09:30:00.000Z",
"updatedAt": "2026-09-25T09:30:00.000Z"
},
"message": "Operación realizada correctamente"
}GET/visits/{id}
Estado, hitos y línea de tiempo de un aviso
Ámbito: visits:read. Un aviso de otro proveedor responde 404.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | — |
Responses
200Success
objectstatusnumberoptionalShow fields
idstring (uuid)requiredcodestringrequiredstatusstringrequiredstatusLabelstringrequiredprioritystringrequiredoriginstringrequiredexternalRefstringoptionalnullableShow fields
idstring (uuid)requiredcodestringrequirednamestringrequired
requiredProfessionalstringrequiredinsurerobjectoptionalnullableAseguradora final
patientNamestringrequiredNombre del paciente que envió
addressobjectrequiredDomicilio (sin coordenadas ni indicaciones de acceso)
serviceDatestringrequiredscheduledFromstring (date-time)optionalnullablescheduledTostring (date-time)optionalnullableFin de la cita, calculado: inicio + tiempo estimado
estimatedMinutesnumberrequiredTiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)
Show fields
requestedAtstring (date-time)requiredassignedAtstring (date-time)optionalnullabledepartedAtstring (date-time)optionalnullablearrivedAtstring (date-time)optionalnullablefinishedAtstring (date-time)optionalnullablecancelledAtstring (date-time)optionalnullableinvoicedAtstring (date-time)optionalnullable
Solo el tipo de unidad, desde la asignación
Show fields
typestringrequiredlabelstringrequiredNunca nombres ni matrículas
outcomestringoptionalnullablecancellationReasonstringoptionalnullablecancelledWithChargebooleanrequiredcancellablebooleanrequiredSi el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)
reportAvailablebooleanrequiredSi hay informe asistencial compartido y descargable
invoiceIdstring (uuid)optionalnullablecreatedAtstring (date-time)requiredupdatedAtstring (date-time)requiredShow fields
statusstringrequiredlabelstringrequiredatstring (date-time)required
messagestringoptional
401API key ausente, inválida, revocada o caducada
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
404Aviso no encontrado
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
429Límite de peticiones de la clave superado (Retry-After)
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/visits/string" \
-H "X-Api-Key: $SERAD_API_KEY"{
"status": 200,
"data": {
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "AV-000123",
"status": "PENDING",
"statusLabel": "Unidad en camino",
"priority": "URGENT",
"origin": "INTRANET",
"externalRef": "EXP-2026-004512",
"serviceType": {
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "GENERAL_CONSULTATION",
"name": "Consulta general"
},
"requiredProfessional": "DOCTOR",
"insurer": {},
"patientName": "María García López",
"address": {},
"serviceDate": "2026-09-25",
"scheduledFrom": "2026-09-25T09:30:00.000Z",
"scheduledTo": "2026-09-25T09:30:00.000Z",
"estimatedMinutes": 60,
"milestones": {
"requestedAt": "2026-09-25T09:30:00.000Z",
"assignedAt": "2026-09-25T09:30:00.000Z",
"departedAt": "2026-09-25T09:30:00.000Z",
"arrivedAt": "2026-09-25T09:30:00.000Z",
"finishedAt": "2026-09-25T09:30:00.000Z",
"cancelledAt": "2026-09-25T09:30:00.000Z",
"invoicedAt": "2026-09-25T09:30:00.000Z"
},
"unit": {
"type": "MEDICAL",
"label": "Unidad médica"
},
"outcome": "ATTENDED",
"cancellationReason": "string",
"cancelledWithCharge": true,
"cancellable": true,
"reportAvailable": true,
"invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"createdAt": "2026-09-25T09:30:00.000Z",
"updatedAt": "2026-09-25T09:30:00.000Z",
"timeline": [
{
"status": "PENDING",
"label": "Unidad asignada",
"at": "2026-09-25T09:30:00.000Z"
}
]
},
"message": "Operación realizada correctamente"
}GET/visits/{id}/eta
Hora estimada de llegada de la unidad (con el aviso en camino)
Ámbito: visits:read. Con la unidad en camino, minutos y hora estimada por carretera desde su última posición. En otros estados, etaMinutes es null. No se devuelve la posición de la unidad.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | — |
Responses
200Success
objectstatusnumberoptionalShow fields
statusstringrequiredetaMinutesnumberoptionalnullableMinutos estimados hasta la llegada; null si no está EN_ROUTE o no hay posición
estimatedArrivalAtstring (date-time)optionalnullableHora estimada de llegada
estimatedbooleanrequiredtrue si es una estimación en línea recta (sin OSRM)
calculatedAtstring (date-time)required
messagestringoptional
401API key ausente, inválida, revocada o caducada
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
404Aviso no encontrado
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
429Límite de peticiones de la clave superado (Retry-After)
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/visits/string/eta" \
-H "X-Api-Key: $SERAD_API_KEY"{
"status": 200,
"data": {
"status": "PENDING",
"etaMinutes": 14,
"estimatedArrivalAt": "2026-09-25T09:30:00.000Z",
"estimated": true,
"calculatedAt": "2026-09-25T09:30:00.000Z"
},
"message": "Operación realizada correctamente"
}POST/visits/{id}/cancel
Cancela un aviso (solo PENDING/ASSIGNED, sin cargo)
Ámbito: visits:write. Con la unidad en camino, llama a la centralita.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | — |
Request body ProviderCancelVisitDto
reasonstringrequired
Responses
200Success
objectstatusnumberoptionalShow fields
idstring (uuid)requiredcodestringrequiredstatusstringrequiredstatusLabelstringrequiredprioritystringrequiredoriginstringrequiredexternalRefstringoptionalnullableShow fields
idstring (uuid)requiredcodestringrequirednamestringrequired
requiredProfessionalstringrequiredinsurerobjectoptionalnullableAseguradora final
patientNamestringrequiredNombre del paciente que envió
addressobjectrequiredDomicilio (sin coordenadas ni indicaciones de acceso)
serviceDatestringrequiredscheduledFromstring (date-time)optionalnullablescheduledTostring (date-time)optionalnullableFin de la cita, calculado: inicio + tiempo estimado
estimatedMinutesnumberrequiredTiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)
Show fields
requestedAtstring (date-time)requiredassignedAtstring (date-time)optionalnullabledepartedAtstring (date-time)optionalnullablearrivedAtstring (date-time)optionalnullablefinishedAtstring (date-time)optionalnullablecancelledAtstring (date-time)optionalnullableinvoicedAtstring (date-time)optionalnullable
Solo el tipo de unidad, desde la asignación
Show fields
typestringrequiredlabelstringrequiredNunca nombres ni matrículas
outcomestringoptionalnullablecancellationReasonstringoptionalnullablecancelledWithChargebooleanrequiredcancellablebooleanrequiredSi el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)
reportAvailablebooleanrequiredSi hay informe asistencial compartido y descargable
invoiceIdstring (uuid)optionalnullablecreatedAtstring (date-time)requiredupdatedAtstring (date-time)required
messagestringoptional
401API key ausente, inválida, revocada o caducada
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
409El aviso ya no se puede cancelar desde la integración
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
429Límite de peticiones de la clave superado (Retry-After)
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
curl -X POST "https://sandbox-api.saludenruta.es/api/integrations/v1/visits/string/cancel" \
-H "X-Api-Key: $SERAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "El paciente ya no necesita la visita"
}'{
"status": 200,
"data": {
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "AV-000123",
"status": "PENDING",
"statusLabel": "Unidad en camino",
"priority": "URGENT",
"origin": "INTRANET",
"externalRef": "EXP-2026-004512",
"serviceType": {
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "GENERAL_CONSULTATION",
"name": "Consulta general"
},
"requiredProfessional": "DOCTOR",
"insurer": {},
"patientName": "María García López",
"address": {},
"serviceDate": "2026-09-25",
"scheduledFrom": "2026-09-25T09:30:00.000Z",
"scheduledTo": "2026-09-25T09:30:00.000Z",
"estimatedMinutes": 60,
"milestones": {
"requestedAt": "2026-09-25T09:30:00.000Z",
"assignedAt": "2026-09-25T09:30:00.000Z",
"departedAt": "2026-09-25T09:30:00.000Z",
"arrivedAt": "2026-09-25T09:30:00.000Z",
"finishedAt": "2026-09-25T09:30:00.000Z",
"cancelledAt": "2026-09-25T09:30:00.000Z",
"invoicedAt": "2026-09-25T09:30:00.000Z"
},
"unit": {
"type": "MEDICAL",
"label": "Unidad médica"
},
"outcome": "ATTENDED",
"cancellationReason": "string",
"cancelledWithCharge": true,
"cancellable": true,
"reportAvailable": true,
"invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"createdAt": "2026-09-25T09:30:00.000Z",
"updatedAt": "2026-09-25T09:30:00.000Z"
},
"message": "Operación realizada correctamente"
}GET/visits/{id}/report
Descarga el informe asistencial (PDF) si está compartido y consentido
Ámbito: reports:read. Cada descarga queda registrada (CLINICAL_ACCESS).
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | — |
Responses
401API key ausente, inválida, revocada o caducada
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
404Sin informe compartido para este aviso
application/pdf
429Límite de peticiones de la clave superado (Retry-After)
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
curl -X GET "https://sandbox-api.saludenruta.es/api/integrations/v1/visits/string/report" \
-H "X-Api-Key: $SERAD_API_KEY"POST/sandbox/visits/{id}/advance
[Solo sandbox] Avanza un aviso de prueba al siguiente estado o al indicado
Ámbito: visits:write. Dispara los mismos webhooks que en producción para cada estado por el que pasa. Para cancelar, {"to":"CANCELLED"} (desde pendiente, asignado o en camino).
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | — |
Request body SandboxAdvanceVisitDto
tostringoptionalEstado destino. Sin él, el siguiente. Pasa por los intermedios, con su webhook cada uno
Responses
200Success
objectstatusnumberoptionalShow fields
idstring (uuid)requiredcodestringrequiredstatusstringrequiredstatusLabelstringrequiredprioritystringrequiredoriginstringrequiredexternalRefstringoptionalnullableShow fields
idstring (uuid)requiredcodestringrequirednamestringrequired
requiredProfessionalstringrequiredinsurerobjectoptionalnullableAseguradora final
patientNamestringrequiredNombre del paciente que envió
addressobjectrequiredDomicilio (sin coordenadas ni indicaciones de acceso)
serviceDatestringrequiredscheduledFromstring (date-time)optionalnullablescheduledTostring (date-time)optionalnullableFin de la cita, calculado: inicio + tiempo estimado
estimatedMinutesnumberrequiredTiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)
Show fields
requestedAtstring (date-time)requiredassignedAtstring (date-time)optionalnullabledepartedAtstring (date-time)optionalnullablearrivedAtstring (date-time)optionalnullablefinishedAtstring (date-time)optionalnullablecancelledAtstring (date-time)optionalnullableinvoicedAtstring (date-time)optionalnullable
Solo el tipo de unidad, desde la asignación
Show fields
typestringrequiredlabelstringrequiredNunca nombres ni matrículas
outcomestringoptionalnullablecancellationReasonstringoptionalnullablecancelledWithChargebooleanrequiredcancellablebooleanrequiredSi el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)
reportAvailablebooleanrequiredSi hay informe asistencial compartido y descargable
invoiceIdstring (uuid)optionalnullablecreatedAtstring (date-time)requiredupdatedAtstring (date-time)requiredShow fields
statusstringrequiredlabelstringrequiredatstring (date-time)required
messagestringoptional
400El aviso no puede pasar a ese estado
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
404Aviso no encontrado, o la ruta no existe (producción)
ProblemDetailDtotypestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
curl -X POST "https://sandbox-api.saludenruta.es/api/integrations/v1/sandbox/visits/string/advance" \
-H "X-Api-Key: $SERAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "ASSIGNED"
}'{
"status": 200,
"data": {
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "AV-000123",
"status": "PENDING",
"statusLabel": "Unidad en camino",
"priority": "URGENT",
"origin": "INTRANET",
"externalRef": "EXP-2026-004512",
"serviceType": {
"id": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"code": "GENERAL_CONSULTATION",
"name": "Consulta general"
},
"requiredProfessional": "DOCTOR",
"insurer": {},
"patientName": "María García López",
"address": {},
"serviceDate": "2026-09-25",
"scheduledFrom": "2026-09-25T09:30:00.000Z",
"scheduledTo": "2026-09-25T09:30:00.000Z",
"estimatedMinutes": 60,
"milestones": {
"requestedAt": "2026-09-25T09:30:00.000Z",
"assignedAt": "2026-09-25T09:30:00.000Z",
"departedAt": "2026-09-25T09:30:00.000Z",
"arrivedAt": "2026-09-25T09:30:00.000Z",
"finishedAt": "2026-09-25T09:30:00.000Z",
"cancelledAt": "2026-09-25T09:30:00.000Z",
"invoicedAt": "2026-09-25T09:30:00.000Z"
},
"unit": {
"type": "MEDICAL",
"label": "Unidad médica"
},
"outcome": "ATTENDED",
"cancellationReason": "string",
"cancelledWithCharge": true,
"cancellable": true,
"reportAvailable": true,
"invoiceId": "3f1c2b8e-6a4d-4e2f-9b7a-1c5d8e9f0a12",
"createdAt": "2026-09-25T09:30:00.000Z",
"updatedAt": "2026-09-25T09:30:00.000Z",
"timeline": [
{
"status": "PENDING",
"label": "Unidad asignada",
"at": "2026-09-25T09:30:00.000Z"
}
]
},
"message": "Operación realizada correctamente"
}POST/sandbox/reset
[Solo sandbox] Borra todos tus avisos de prueba
Ámbito: visits:write. Deja el entorno limpio para empezar otra batería de pruebas.
Responses
200Success
objectstatusnumberoptionalShow fields
deletedVisitsnumberoptional
messagestringoptional
curl -X POST "https://sandbox-api.saludenruta.es/api/integrations/v1/sandbox/reset" \
-H "X-Api-Key: $SERAD_API_KEY"{
"status": 200,
"data": {
"deletedVisits": 12
},
"message": "Operación realizada correctamente"
}Webhooks
Requests Salud en Ruta sends to the URL you configure. See the webhooks guide for signatures and retries.
EVENTvisit.created
Evento visit.created
Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Serad-Signaturerequired | header | string | — |
X-Serad-Timestamprequired | header | string | — |
X-Serad-Eventrequired | header | string | — |
X-Serad-Deliveryrequired | header | string (uuid) | — |
Event payload object
No fields described.
Response we expect
2XXRecibido. Cualquier otra respuesta se reintenta.
No body
{
"id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
"type": "visit.created",
"createdAt": "2026-10-01T09:15:00.000Z",
"data": {
"visit": {
"id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
"code": "AV-000018",
"externalRef": "EXP-2026-004512",
"status": "ASSIGNED",
"priority": "URGENT",
"origin": "PROVIDER_API",
"serviceTypeCode": "URG",
"unitType": "MEDICAL",
"milestones": {
"requestedAt": "2026-10-01T09:10:00.000Z",
"assignedAt": "2026-10-01T09:15:00.000Z"
},
"outcome": null,
"cancelledWithCharge": false,
"invoice": null
}
}
}EVENTvisit.assigned
Evento visit.assigned
Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Serad-Signaturerequired | header | string | — |
X-Serad-Timestamprequired | header | string | — |
X-Serad-Eventrequired | header | string | — |
X-Serad-Deliveryrequired | header | string (uuid) | — |
Event payload object
No fields described.
Response we expect
2XXRecibido. Cualquier otra respuesta se reintenta.
No body
{
"id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
"type": "visit.assigned",
"createdAt": "2026-10-01T09:15:00.000Z",
"data": {
"visit": {
"id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
"code": "AV-000018",
"externalRef": "EXP-2026-004512",
"status": "ASSIGNED",
"priority": "URGENT",
"origin": "PROVIDER_API",
"serviceTypeCode": "URG",
"unitType": "MEDICAL",
"milestones": {
"requestedAt": "2026-10-01T09:10:00.000Z",
"assignedAt": "2026-10-01T09:15:00.000Z"
},
"outcome": null,
"cancelledWithCharge": false,
"invoice": null
}
}
}EVENTvisit.en_route
Evento visit.en_route
Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Serad-Signaturerequired | header | string | — |
X-Serad-Timestamprequired | header | string | — |
X-Serad-Eventrequired | header | string | — |
X-Serad-Deliveryrequired | header | string (uuid) | — |
Event payload object
No fields described.
Response we expect
2XXRecibido. Cualquier otra respuesta se reintenta.
No body
{
"id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
"type": "visit.en_route",
"createdAt": "2026-10-01T09:15:00.000Z",
"data": {
"visit": {
"id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
"code": "AV-000018",
"externalRef": "EXP-2026-004512",
"status": "ASSIGNED",
"priority": "URGENT",
"origin": "PROVIDER_API",
"serviceTypeCode": "URG",
"unitType": "MEDICAL",
"milestones": {
"requestedAt": "2026-10-01T09:10:00.000Z",
"assignedAt": "2026-10-01T09:15:00.000Z"
},
"outcome": null,
"cancelledWithCharge": false,
"invoice": null
}
}
}EVENTvisit.on_site
Evento visit.on_site
Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Serad-Signaturerequired | header | string | — |
X-Serad-Timestamprequired | header | string | — |
X-Serad-Eventrequired | header | string | — |
X-Serad-Deliveryrequired | header | string (uuid) | — |
Event payload object
No fields described.
Response we expect
2XXRecibido. Cualquier otra respuesta se reintenta.
No body
{
"id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
"type": "visit.on_site",
"createdAt": "2026-10-01T09:15:00.000Z",
"data": {
"visit": {
"id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
"code": "AV-000018",
"externalRef": "EXP-2026-004512",
"status": "ASSIGNED",
"priority": "URGENT",
"origin": "PROVIDER_API",
"serviceTypeCode": "URG",
"unitType": "MEDICAL",
"milestones": {
"requestedAt": "2026-10-01T09:10:00.000Z",
"assignedAt": "2026-10-01T09:15:00.000Z"
},
"outcome": null,
"cancelledWithCharge": false,
"invoice": null
}
}
}EVENTvisit.finished
Evento visit.finished
Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Serad-Signaturerequired | header | string | — |
X-Serad-Timestamprequired | header | string | — |
X-Serad-Eventrequired | header | string | — |
X-Serad-Deliveryrequired | header | string (uuid) | — |
Event payload object
No fields described.
Response we expect
2XXRecibido. Cualquier otra respuesta se reintenta.
No body
{
"id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
"type": "visit.finished",
"createdAt": "2026-10-01T09:15:00.000Z",
"data": {
"visit": {
"id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
"code": "AV-000018",
"externalRef": "EXP-2026-004512",
"status": "ASSIGNED",
"priority": "URGENT",
"origin": "PROVIDER_API",
"serviceTypeCode": "URG",
"unitType": "MEDICAL",
"milestones": {
"requestedAt": "2026-10-01T09:10:00.000Z",
"assignedAt": "2026-10-01T09:15:00.000Z"
},
"outcome": null,
"cancelledWithCharge": false,
"invoice": null
}
}
}EVENTvisit.cancelled
Evento visit.cancelled
Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Serad-Signaturerequired | header | string | — |
X-Serad-Timestamprequired | header | string | — |
X-Serad-Eventrequired | header | string | — |
X-Serad-Deliveryrequired | header | string (uuid) | — |
Event payload object
No fields described.
Response we expect
2XXRecibido. Cualquier otra respuesta se reintenta.
No body
{
"id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
"type": "visit.cancelled",
"createdAt": "2026-10-01T09:15:00.000Z",
"data": {
"visit": {
"id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
"code": "AV-000018",
"externalRef": "EXP-2026-004512",
"status": "ASSIGNED",
"priority": "URGENT",
"origin": "PROVIDER_API",
"serviceTypeCode": "URG",
"unitType": "MEDICAL",
"milestones": {
"requestedAt": "2026-10-01T09:10:00.000Z",
"assignedAt": "2026-10-01T09:15:00.000Z"
},
"outcome": null,
"cancelledWithCharge": false,
"invoice": null
}
}
}EVENTvisit.invoiced
Evento visit.invoiced
Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Serad-Signaturerequired | header | string | — |
X-Serad-Timestamprequired | header | string | — |
X-Serad-Eventrequired | header | string | — |
X-Serad-Deliveryrequired | header | string (uuid) | — |
Event payload object
No fields described.
Response we expect
2XXRecibido. Cualquier otra respuesta se reintenta.
No body
{
"id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
"type": "visit.invoiced",
"createdAt": "2026-10-01T09:15:00.000Z",
"data": {
"visit": {
"id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
"code": "AV-000018",
"externalRef": "EXP-2026-004512",
"status": "ASSIGNED",
"priority": "URGENT",
"origin": "PROVIDER_API",
"serviceTypeCode": "URG",
"unitType": "MEDICAL",
"milestones": {
"requestedAt": "2026-10-01T09:10:00.000Z",
"assignedAt": "2026-10-01T09:15:00.000Z"
},
"outcome": null,
"cancelledWithCharge": false,
"invoice": null
}
}
}EVENTreport.shared
Evento report.shared
Petición que Salud en Ruta envía a tu URL. Verifica la firma: X-Serad-Signature = sha256= + hex(HMAC-SHA256(secreto, <X-Serad-Timestamp>.<cuerpo crudo>)), con una tolerancia de 300 s. Responde 2xx en menos de 10 s; si no, se reintenta: 12 intentos en total con espera exponencial (de 30 s a 1 h, unas 5 horas). X-Serad-Delivery identifica la entrega para descartar duplicados.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
X-Serad-Signaturerequired | header | string | — |
X-Serad-Timestamprequired | header | string | — |
X-Serad-Eventrequired | header | string | — |
X-Serad-Deliveryrequired | header | string (uuid) | — |
Event payload object
No fields described.
Response we expect
2XXRecibido. Cualquier otra respuesta se reintenta.
No body
{
"id": "6f0a9c1e-2b7d-4f8a-9e3c-1d2b3c4d5e6f",
"type": "report.shared",
"createdAt": "2026-10-01T09:15:00.000Z",
"data": {
"visit": {
"id": "c6a3c348-40b6-4158-a44a-7d85f01a0201",
"code": "AV-000018",
"externalRef": "EXP-2026-004512",
"status": "ASSIGNED",
"priority": "URGENT",
"origin": "PROVIDER_API",
"serviceTypeCode": "URG",
"unitType": "MEDICAL",
"milestones": {
"requestedAt": "2026-10-01T09:10:00.000Z",
"assignedAt": "2026-10-01T09:15:00.000Z"
},
"outcome": null,
"cancelledWithCharge": false,
"invoice": null
}
}
}Schemas
FieldErrorDto
fieldstringrequiredmessagestringrequired
ProblemDetailDto
typestringrequiredtitlestringrequiredstatusnumberrequireddetailstringrequiredinstancestringrequiredShow fields
fieldstringrequiredmessagestringrequired
timestampstringrequired
ProviderVisitServiceTypeDto
idstring (uuid)requiredcodestringrequirednamestringrequired
ProviderVisitMilestonesDto
requestedAtstring (date-time)requiredassignedAtstring (date-time)optionalnullabledepartedAtstring (date-time)optionalnullablearrivedAtstring (date-time)optionalnullablefinishedAtstring (date-time)optionalnullablecancelledAtstring (date-time)optionalnullableinvoicedAtstring (date-time)optionalnullable
ProviderVisitUnitDto
typestringrequiredlabelstringrequiredNunca nombres ni matrículas
ProviderVisitResponseDto
idstring (uuid)requiredcodestringrequiredstatusstringrequiredstatusLabelstringrequiredprioritystringrequiredoriginstringrequiredexternalRefstringoptionalnullableShow fields
idstring (uuid)requiredcodestringrequirednamestringrequired
requiredProfessionalstringrequiredinsurerobjectoptionalnullableAseguradora final
patientNamestringrequiredNombre del paciente que envió
addressobjectrequiredDomicilio (sin coordenadas ni indicaciones de acceso)
serviceDatestringrequiredscheduledFromstring (date-time)optionalnullablescheduledTostring (date-time)optionalnullableFin de la cita, calculado: inicio + tiempo estimado
estimatedMinutesnumberrequiredTiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)
Show fields
requestedAtstring (date-time)requiredassignedAtstring (date-time)optionalnullabledepartedAtstring (date-time)optionalnullablearrivedAtstring (date-time)optionalnullablefinishedAtstring (date-time)optionalnullablecancelledAtstring (date-time)optionalnullableinvoicedAtstring (date-time)optionalnullable
Solo el tipo de unidad, desde la asignación
Show fields
typestringrequiredlabelstringrequiredNunca nombres ni matrículas
outcomestringoptionalnullablecancellationReasonstringoptionalnullablecancelledWithChargebooleanrequiredcancellablebooleanrequiredSi el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)
reportAvailablebooleanrequiredSi hay informe asistencial compartido y descargable
invoiceIdstring (uuid)optionalnullablecreatedAtstring (date-time)requiredupdatedAtstring (date-time)required
ProviderCatalogServiceTypeDto
idstring (uuid)requiredcodestringrequirednamestringrequiredrequiredProfessionalstringrequired
ProviderCatalogInsurerDto
idstring (uuid)requirednamestringrequired
ProviderCatalogResponseDto
providerTypestringrequiredrequiresExternalRefbooleanrequiredSi externalRef es obligatorio
Tipos de servicio con línea en su tarifa vigente (o todos los activos sin tarifa)
Show fields
idstring (uuid)requiredcodestringrequirednamestringrequiredrequiredProfessionalstringrequired
Aseguradoras finales admitidas (solo intermediarios)
Show fields
idstring (uuid)requirednamestringrequired
ProviderVisitPatientInputDto
firstNamestringrequiredlastNamestringrequireddocumentTypestringoptionaldocumentNumberstringoptionalObligatorio salvo documentType NONE
birthDatestringoptionalsexstringoptionalphonestringoptional
VisitAddressInputDto
line1stringrequiredline2stringoptionalcitystringrequiredpostalCodestringrequiredprovincestringoptionalaccessNotesstringoptionallatitudenumberoptionalSi falta, se geocodifica
longitudenumberoptional
ProviderCreateVisitDto
patientIdstring (uuid)optionalPaciente de un aviso anterior de este proveedor (
GET /client/patients). Si llega,patientno hace faltaDatos del paciente. Obligatorio salvo que se indique
patientIdShow fields
firstNamestringrequiredlastNamestringrequireddocumentTypestringoptionaldocumentNumberstringoptionalObligatorio salvo documentType NONE
birthDatestringoptionalsexstringoptionalphonestringoptional
Domicilio de la visita; se geocodifica si no trae coordenadas
Show fields
line1stringrequiredline2stringoptionalcitystringrequiredpostalCodestringrequiredprovincestringoptionalaccessNotesstringoptionallatitudenumberoptionalSi falta, se geocodifica
longitudenumberoptional
serviceTypeCodestringoptionalCódigo del tipo de servicio (GET /catalog). Recomendado: es el mismo en pruebas y en producción, a diferencia del
serviceTypeId. Obligatorio si no se indicaserviceTypeIdserviceTypeIdstring (uuid)optionalId del tipo de servicio (GET /catalog). Cambia entre entornos: mejor
serviceTypeCode. Obligatorio si no se indicaserviceTypeCodeprioritystringoptionalPor defecto NORMAL, o SCHEDULED si trae franja
scheduledFromstring (date-time)optionalestimatedMinutesnumberoptionalTiempo estimado en minutos: bloques de 10 entre 30 y 240. Por defecto 60
scheduledTostring (date-time)optionaldeprecatedObsoleto: usar
estimatedMinutes. Si llega sin él, la duración de la franja se redondea al bloque de 10 min y se usa como tiempo estimadoreasonstringrequiredMotivo de la solicitud
externalRefstringoptionalObligatorio si el proveedor lo exige
insurerIdstring (uuid)optionalAseguradora final: solo intermediarios, y entre sus aseguradoras gestionadas
callerNamestringoptionalcallerPhonestringoptional
ProviderVisitTimelineEntryDto
statusstringrequiredlabelstringrequiredatstring (date-time)required
ProviderVisitDetailResponseDto
idstring (uuid)requiredcodestringrequiredstatusstringrequiredstatusLabelstringrequiredprioritystringrequiredoriginstringrequiredexternalRefstringoptionalnullableShow fields
idstring (uuid)requiredcodestringrequirednamestringrequired
requiredProfessionalstringrequiredinsurerobjectoptionalnullableAseguradora final
patientNamestringrequiredNombre del paciente que envió
addressobjectrequiredDomicilio (sin coordenadas ni indicaciones de acceso)
serviceDatestringrequiredscheduledFromstring (date-time)optionalnullablescheduledTostring (date-time)optionalnullableFin de la cita, calculado: inicio + tiempo estimado
estimatedMinutesnumberrequiredTiempo estimado de realización, en minutos (puede ampliarse con el aviso en curso)
Show fields
requestedAtstring (date-time)requiredassignedAtstring (date-time)optionalnullabledepartedAtstring (date-time)optionalnullablearrivedAtstring (date-time)optionalnullablefinishedAtstring (date-time)optionalnullablecancelledAtstring (date-time)optionalnullableinvoicedAtstring (date-time)optionalnullable
Solo el tipo de unidad, desde la asignación
Show fields
typestringrequiredlabelstringrequiredNunca nombres ni matrículas
outcomestringoptionalnullablecancellationReasonstringoptionalnullablecancelledWithChargebooleanrequiredcancellablebooleanrequiredSi el proveedor puede cancelarlo ahora (PENDING/ASSIGNED)
reportAvailablebooleanrequiredSi hay informe asistencial compartido y descargable
invoiceIdstring (uuid)optionalnullablecreatedAtstring (date-time)requiredupdatedAtstring (date-time)requiredShow fields
statusstringrequiredlabelstringrequiredatstring (date-time)required
ProviderVisitEtaResponseDto
statusstringrequiredetaMinutesnumberoptionalnullableMinutos estimados hasta la llegada; null si no está EN_ROUTE o no hay posición
estimatedArrivalAtstring (date-time)optionalnullableHora estimada de llegada
estimatedbooleanrequiredtrue si es una estimación en línea recta (sin OSRM)
calculatedAtstring (date-time)required
ProviderCancelVisitDto
reasonstringrequired
SandboxAdvanceVisitDto
tostringoptionalEstado destino. Sin él, el siguiente. Pasa por los intermedios, con su webhook cada uno
SandboxResetResponseDto
deletedVisitsnumberoptional
ProviderApiKeyResponseDto
idstring (uuid)requiredproviderIdstring (uuid)requirednamestringrequiredkeyPrefixstringrequiredPrefijo visible: la clave empieza por srd_live_<prefijo>, srd_test<prefijo>_ o (legacy) srd_<prefijo>_
keyFormatstringrequiredFormato con el que se emitió: live (srd_live_), test (srd_test_) o legacy (srd_<prefijo>_)
scopesarray<string>requiredrateLimitPerMinutenumberrequiredexpiresAtstring (date-time)optionalnullablelastUsedAtstring (date-time)optionalnullablelastUsedIpstringoptionalnullablerevokedAtstring (date-time)optionalnullablerotatedFromIdstring (uuid)optionalnullablecreatedAtstring (date-time)required
ProviderApiKeyCreatedDto
idstring (uuid)requiredproviderIdstring (uuid)requirednamestringrequiredkeyPrefixstringrequiredPrefijo visible: la clave empieza por srd_live_<prefijo>, srd_test<prefijo>_ o (legacy) srd_<prefijo>_
keyFormatstringrequiredFormato con el que se emitió: live (srd_live_), test (srd_test_) o legacy (srd_<prefijo>_)
scopesarray<string>requiredrateLimitPerMinutenumberrequiredexpiresAtstring (date-time)optionalnullablelastUsedAtstring (date-time)optionalnullablelastUsedIpstringoptionalnullablerevokedAtstring (date-time)optionalnullablerotatedFromIdstring (uuid)optionalnullablecreatedAtstring (date-time)requiredkeystringrequiredClave completa. Solo se muestra en esta respuesta; guárdala en un gestor de secretos
CreateProviderApiKeyDto
namestringrequiredscopesarray<string>requiredrateLimitPerMinutenumberoptionalPeticiones por minuto (por defecto 60)
expiresAtstringoptionalSin valor, no caduca
ProviderWebhookResponseDto
idstring (uuid)requiredproviderIdstring (uuid)requiredurlstringrequiredeventsarray<string>requiredactivebooleanrequireddescriptionstringoptionalnullablesecretHintstringrequiredSolo los últimos caracteres
createdAtstring (date-time)requiredupdatedAtstring (date-time)required
ProviderWebhookWithSecretDto
idstring (uuid)requiredproviderIdstring (uuid)requiredurlstringrequiredeventsarray<string>requiredactivebooleanrequireddescriptionstringoptionalnullablesecretHintstringrequiredSolo los últimos caracteres
createdAtstring (date-time)requiredupdatedAtstring (date-time)requiredsecretstringrequiredSecreto completo para verificar X-Serad-Signature. Solo en esta respuesta
CreateProviderWebhookDto
urlstringrequiredeventsarray<string>requireddescriptionstringoptionalsecretstringoptionalSecreto de firma. Si no se indica, se genera (whsec_…) y se devuelve una vez
UpdateProviderWebhookDto
urlstringoptionaleventsarray<string>optionaldescriptionstringoptionalsecretstringoptionalSecreto de firma. Si no se indica, se genera (whsec_…) y se devuelve una vez
activebooleanoptionalDesactivado no recibe eventos
ProviderWebhookDeliveryDto
idstring (uuid)requiredendpointIdstring (uuid)requiredeventstringrequiredeventIdstring (uuid)requiredvisitIdstring (uuid)optionalnullablestatusstringrequiredattemptsnumberrequiredmaxAttemptsnumberrequiredlastStatusCodenumberoptionalnullablelastResponsestringoptionalnullableTruncada a 1000 caracteres
lastErrorstringoptionalnullablelastAttemptAtstring (date-time)optionalnullablenextAttemptAtstring (date-time)optionalnullabledeliveredAtstring (date-time)optionalnullableisTestbooleanrequiredredeliveryOfIdstring (uuid)optionalnullablepayloadobjectrequiredCarga enviada (sin datos clínicos)
createdAtstring (date-time)required
Something missing or not matching what you see? Email our technical team: info@saludenruta.es.
