Docs · Guías
Errores y reintentos
Los errores son problem details según RFC 9457. Cada uno tiene un type que dice qué salió mal y un indicador retryable que dice si volver a intentarlo.
Problem details
Las respuestas de error usan application/problem+json. Decide qué hacer a partir de type y retryable, no de title ni de detail, que son para personas.
{
"type": "https://developers.novo.co/problems/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This client does not have the cards:freeze scope.",
"request_id": "req_example_01",
"retryable": false
}typeobligatorioIdentifica el error. Usa este campo, no el título, para decidir qué hacer
titleobligatorioResumen breve y legible
statusobligatorioEl código de estado HTTP
detailExplicación de este caso concreto
instanceIdentifica este caso concreto
request_idobligatorioIgual que el encabezado Novo-Request-Id. Indícalo al contactar con soporte
retryableobligatorioSi se puede reintentar la misma solicitud, después de Retry-After cuando lo hay
type es una URI absoluta que lleva a la página de ese error (consulta Tipos de problema). El host de la documentación aún no es definitivo , y los nombres cortos de abajo son propuesto. El endpoint de tokens es la excepción: responde con errores de OAuth 2.0 (consulta Autenticación).
Tipos de error
invalid-token401NoFalta el token, está mal formado o es desconocidotoken-expired401NoEl token venció. Obtén uno nuevo y envía la solicitud otra vezclient-disabled401NoEl cliente se revocó, se suspendió o se desactivóinsufficient-scope403NoEl cliente no tiene el scope que necesita esta llamadaowner-standing-lost403NoEl titular al que está vinculado este cliente ya no tiene el rol de titular, o su perfil ya no permite el accesofeature-not-enabled403NoLa API no está habilitada para este negocioinvalid-parameter400NoUn parámetro no es válido, por ejemplo un card_id que no es un UUID, o el cuerpo no es JSON válidonot-found404NoNo hay nada con ese id en el negocio vinculadoidempotency-key-reused409NoEl Idempotency-Key ya se usó con otra solicitudidempotency-in-progress409Después de Retry-AfterLa primera solicitud con esta clave todavía está en cursocard-state-conflict409NoLa tarjeta está en un estado que no permite congelarlapayload-too-large413NoEl cuerpo de la solicitud es demasiado grande. El límite de tamaño se indicará en esta documentación cuando se fijeunsupported-media-type415NoLa operación no acepta el tipo de contenido o el charset del cuerpo de la solicitudrate-limited429Después de Retry-AfterDemasiadas solicitudes para este cliente o negociointernal-error500NoAlgo falló de forma inesperada del lado de Novo. El cuerpo no incluye detalles internosdependency-unavailable503Después de Retry-AfterAhora mismo no se puede cargar una parte de la respuestaCuándo reintentar
Límites de solicitudes
Los límites se aplican por cliente y por negocio. Cuando los superas, la API devuelve 429 con Retry-After, además de los encabezados RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset. Las cifras están . El endpoint de tokens tiene su propio límite, así que guarda tu token de acceso en caché durante toda su vida.
Idempotencia
Congelar una tarjeta acepta un encabezado Idempotency-Key: un valor que eliges tú, de hasta 255 caracteres, como un UUID. Se recomienda, pero no es obligatorio. De todos modos, congelar es seguro de repetir: congelar una tarjeta ya congelada devuelve 200.