Cambios de la API
Cada cambio de la API pública /v1 de Notificado, con fecha: qué se agregó, qué cambió y qué debe hacer un cliente.
Actualizado:
La API pública es la que vive bajo /v1 (autenticación). Dentro de v1 solo agregamos: operaciones nuevas, campos opcionales nuevos, campos nuevos en las respuestas, códigos de error nuevos. Lea con tolerancia los campos y códigos que no conozca. Un cambio que rompería un cliente que funciona (quitar o renombrar una operación o un campo, volver obligatorio un campo opcional) sale como /v2, anunciado aquí antes, con /v1 disponible al lado. La única salida dentro de v1 es la de una operación marcada Obsoleto: se anuncia aquí con su reemplazo, que ya funciona ese día, y con la fecha de retiro; hasta esa fecha responde igual que siempre.
Las rutas bajo /api/… y /_x/query/… son del panel y esta página no las cubre.
Cada entrada lleva su fecha (hora de Bogotá) y se marca como Agregado, Cambiado, Obsoleto o Retirado.
2026-10-09: un solo nombre por campo de paginación
Retirado
endCursoryhasNextPageya no vienen en una respuesta paginada. Desde el 30 de septiembre traían los mismos valores quenextCursoryhasMore, que toda respuesta paginada sigue trayendo y que desde hoy son los únicos nombres. LeanextCursoryhasMore; nada más de la paginación cambia. Salieron sin período de obsolescencia porque eran segundos nombres de campos que la misma respuesta conserva, retirados por el framework sobre el que está construida la API; un campo sin reemplazo en la misma respuesta siempre lo tendrá.
Cambiado
- En la última página
nextCursoresnull: lo es exactamente cuandohasMoreesfalse. Un cliente que repite mientras tenga unnextCursorahora se detiene en la última página en vez de pedir una vacía después.
2026-09-30: lecturas de un objeto, un solo sobre de paginación, más creaciones idempotentes
Agregado
- Cuatro lecturas de un solo objeto:
getCase(GET /v1/get-case,cases:read),getNotification(GET /v1/get-notification,notifications:read),getSendConfirmation(GET /v1/get-send-confirmation,notifications:read) ygetImport(GET /v1/get-import,cases:read). Responden el objeto mismo, no una lista de una fila. Si no existe, o no es de su firma, la respuesta es404X_NOT_FOUND(errores). evidenceDownloadInfo(evidence:read): el nombre, el tamaño en bytes, el SHA-256 y la versión de formato (zipVersion) del paquete de evidencia de una notificación, con la llamada HTTP que lo descarga. No registra nada; la descarga (POST /v1/download-evidence) sí. Vea Paquete para el perito.- Un solo sobre de paginación en todos los listados: con
_first=<filas>la respuesta traerows,nextCursor(lo que envía como_afterpara pedir la página siguiente) yhasMore(si hay otra).endCursoryhasNextPagesiguen en la respuesta con los mismos valores, para los clientes que ya los leen.caseList,notificationList,listImports,ledgerListyorgActivityrecorren ahora el listado completo con_firsty_after; sulimity sucursorsiguen funcionando. Desde hoy también se paginanbounceAlerts,caseRecipients,caseMemorials,partyAddresses,importSendablesylistDeadlines.exportNotificationsentrega hasta 5.000 líneas por archivo; cuando hay más respondetruncated: truey unnextCursor, que se envía comocursor, con los mismos filtros, para el archivo siguiente. Idempotency-Keyen siete operaciones más:send-notification,create-message-template,save-party-address,attach-document,confirm-upload,request-import-uploadyconfirm-import-upload. Un reintento con la misma clave y el mismo cuerpo devuelve la primera respuesta; la misma clave con otro cuerpo,409X_IDEMPOTENCY_CONFLICT(reintentos idempotentes).create-webhook-endpointsigue sin clave: su respuesta trae el secreto de firma, que no se guarda para repetirlo.- En openapi.json, cada operación declara en
securityel alcance exacto que exige su token.
Cambiado
- Un
limito un_firstmayor que el máximo de un listado se rechaza con400X_INPUT_INVALID, que nombra el máximo; ningún listado lo recorta en silencio. Los tamaños de página y sus máximos están en Límites. send-notificationcon el mismoIdempotency-Keydevuelve la primera solicitud pendiente en lugar de registrar otra.listDeadlinesrecibe la posición comocursor.afteres su nombre anterior y se sigue aceptando; los dos con valores distintos responden422X_DEADLINE_CURSOR_CONFLICT.downloadEvidenceya no es una herramienta MCP: un asistente pideevidenceDownloadInfoy descarga por HTTP. En/v1,POST /v1/download-evidenceno cambia.- En una entrega de webhook,
links.notificationapunta ahora aGET /v1/get-notification?notificationId=…&orgId=…(webhooks); apuntaba anotification-detail, retirada abajo.
Retirado
Cuatro lecturas que respondían un arreglo de una fila se retiraron el 30 de septiembre de 2026, el mismo día en que salieron sus reemplazos de un objeto. Ningún token fuera de nuestro propio panel las había llamado, así que salieron sin periodo de obsolescencia; una operación que un cliente usa siempre lo tendrá. Una llamada a una de ellas responde ahora 404.
| Retirada | Use en su lugar | Diferencia |
|---|---|---|
caseDetail |
getCase |
El objeto, no un arreglo de una fila (o vacío); 404 si no existe |
notificationDetail |
getNotification |
El objeto, no un arreglo de una fila (o vacío); 404 si no existe. Recibe notificationId donde la anterior recibía id |
sendConfirmationDetail |
getSendConfirmation |
El objeto, no un arreglo de una fila (o vacío); 404 si no existe |
importDetail |
getImport |
El objeto con los conteos de la importación y sus filas en rows, no un arreglo de filas; 404 si no existe |
- Del catálogo MCP:
downloadEvidence(vea Cambiado).
2026-09-27: v1
Agregado
- La API versionada en
https://www.notificado.co/v1, autenticada solo conAuthorization: Bearer <token>y un token de agente de /cuenta/api. El mismo token y los mismos seis alcances que el servidor MCP. - Rutas legibles: cada operación en
/v1/<su nombre en kebab-case>:createCase→POST /v1/create-case,caseList→GET /v1/case-list. - Las operaciones de los seis alcances: procesos y partes, cargas, borradores de notificación y adjuntos, memoriales, pedir un envío (un abogado lo confirma en el panel), lecturas de notificaciones y evidencia, términos.
- Una operación fuera de los alcances del token responde
404, como si no existiera; sin token o con uno inválido,401conWWW-Authenticate. - Un límite de 120 solicitudes por minuto por token, con
RateLimit-Limit,RateLimit-RemainingyRateLimit-Reseten cada respuesta y429+Retry-Afteral superarlo. Idempotency-Keyencreate-case,add-party,request-upload,create-notificationycreate-memorial(reintentos idempotentes).- Toda negativa como
application/problem+jsoncon uncodeestable, unacausey unfix(errores), cada código en el catálogo de errores. - El documento OpenAPI de exactamente esta API, con su esquema de seguridad
bearer, en https://www.notificado.co/v1/openapi.json. - Un inicio rápido con curl y TypeScript para el flujo completo.
Cambiado
- Las rutas del panel pasaron de rutas derivadas (
/api/cases/create) a rutas legibles (/api/create-case). Nunca fueron un contrato público; las integraciones van sobre/v1.