API REST

Errores

Gestiona el contrato de respuestas de problemas y correlaciona las solicitudes.

Los errores siguen el contrato JSON de problemas de RFC 9457, con el tipo de medio application/problem+json.

{
  "type": "https://www.ninjabuy.com/api/v1/problems/bad-body",
  "title": "Invalid request",
  "status": 400,
  "detail": "The request did not match the expected shape.",
  "request_id": "REQUEST_ID",
  "errors": [{"pointer": "/links", "detail": "Validation detail"}]
}

type es el identificador estable del problema; title y detail lo describen. status coincide con el estado HTTP. Las entradas opcionales de errors contienen un JSON Pointer y detalles de validación; un puntero vacío indica el cuerpo completo. Incluye request_id (también en X-Request-Id) al reportar un problema.

Todos los tipos siguientes comienzan con https://www.ninjabuy.com/api/v1/problems/.

Sufijo del tipoHTTPSignificado / acción
bad-json400El cuerpo no es JSON válido. Corrige la sintaxis.
bad-body400El cuerpo, los parámetros de consulta o el cursor no pasan la validación. Lee errors.
bad-idempotency-key400Usa de 1 a 255 caracteres ASCII imprimibles para Idempotency-Key.
unauthorized401Proporciona un token bearer válido; WWW-Authenticate ofrece los metadatos de descubrimiento.
not-found404El recurso no está disponible, es desconocido o no pertenece a esta cuenta.
method-not-allowed405Usa el método indicado en Allow.
idempotency-key-in-progress409La primera solicitud con esta clave está en curso. Espera el plazo de Retry-After.
upload-too-large413Los bytes subidos superan el tamaño declarado o el límite de 20 MiB.
unsupported-media-type415Envía Content-Type: application/json.
idempotency-key-reused422Esta clave se usó con otra solicitud. Usa una clave nueva.
invalid-workbook422La carga no es un XLSX/CSV legible dentro de los límites. Lee errors.
upload-expired422La reserva de carga venció. Vuelve a subir el archivo.
rate-limited429Espera los segundos de Retry-After antes de reintentar.
search-rate-limited429La ventana de búsqueda por palabras clave está llena. Espera el plazo de Retry-After.
service-unavailable503Reintenta en breve; respeta Retry-After cuando esté presente.
internal-error500Reintenta más tarde; conserva el identificador de solicitud si persiste.

Una solicitud exitosa puede contener errores en entradas individuales. Gestiona los estados de enlaces por separado de los errores HTTP. Usa Idempotency-Key para reproducir una solicitud de creación; sin clave, reintentar el envío de un lote crea otro trabajo.