Saltar al contenido principal
Formato de error SPB devuelve los errores como problem details de RFC 9457. La referencia de la API declara el tipo de medio application/problem+json y el esquema Detail para estas respuestas.
Definiciones de campos
  • type – Un URI que identifica el error en el catálogo de errores de Lerian, construido como https://errors.lerian.studio/v1/<code>. Una respuesta sin code lleva el valor predeterminado de RFC about:blank.
  • title – El texto del estado HTTP, por ejemplo Unprocessable Entity.
  • status – El código de estado HTTP.
  • detail – Una explicación legible de esta ocurrencia. En la mayoría de las respuestas 5xx, SPB reemplaza el texto por internal error, así que la causa interna no queda expuesta en la respuesta. Usa code para decidir la rama en su lugar.
  • code – El código de error estable de SPB, con el formato SPB-NNNN.
  • errors – Una lista opcional de detalles de validación por campo. Cada entrada lleva un message y una location, y puede llevar el value rechazado.
  • correlationId – El identificador de correlación con alcance de la solicitud. SPB reutiliza un X-Request-ID válido o genera uno. Cita este valor en una solicitud de soporte.
El estado HTTP depende de la capa que rechaza la solicitud. Una solicitud que llega al handler y luego infringe una regla de negocio responde con el estado que aparece en las tablas siguientes. Una solicitud que el framework rechaza antes del handler también lleva un código. El código es SPB-0001 para un cuerpo que SPB no puede analizar (400), un método no admitido (405) o un tipo de medio no admitido (415). Una ruta desconocida responde 404 con SPB-0010, y una solicitud que no coincide con el esquema publicado responde 422 con SPB-0003. La capa de idempotencia se ejecuta antes del handler. Un encabezado X-Idempotency ausente responde 422 con SPB-0001. Una clave mal formada, o una clave reutilizada con un cuerpo distinto, responde 422 con SPB-0003. Una repetición de una clave todavía en curso responde 409 con SPB-0011. Si el almacén de idempotencia falla después de que el handler se ejecutó, SPB igual devuelve la respuesta del handler, con el encabezado X-Idempotency-Fenced. Cuando ese encabezado vale true, la clave rechaza un reenvío con 422. Concilia la solicitud original y no la envíes de nuevo con una nueva clave. La columna detail resume el texto que SPB coloca en el campo detail. La redacción exacta depende del punto de llamada, porque un punto de llamada puede reemplazarlo por un texto específico de la solicitud.

Errores de validación y de entrada


El rango SPB-0xxx cubre una solicitud que SPB leyó y luego rechazó.

HTTP 422 Entidad no procesable

HTTP 413 Entidad de solicitud demasiado grande

HTTP 404 No encontrado

HTTP 409 Conflicto

Errores de conectividad con el STR


El rango SPB-1xxx cubre una solicitud que SPB rechazó porque su camino hacia el STR está caído.

HTTP 503 Servicio no disponible

Errores de autenticación y de autorización


El rango SPB-2xxx cubre una solicitud cuya credencial está ausente o no se puede usar y una solicitud que pide una acción fuera de sus permisos. También cubre una solicitud enviada por HTTP en texto plano en producción o staging.

HTTP 401 No autorizado

HTTP 403 Prohibido

Errores de procesamiento y de estado


El rango SPB-3xxx cubre una solicitud que SPB aceptó y luego no pudo aplicar. Tres de estos códigos describen un conflicto de estado sobre el que puedes actuar, así que responden 409 en lugar de un 5xx.

HTTP 409 Conflicto

HTTP 500 Error interno del servidor

Errores de rate limit


El rango SPB-4xxx cubre a un emisor de llamadas que superó su presupuesto de solicitudes.

HTTP 429 Demasiadas solicitudes

Errores de reserva


El rango SPB-9xxx cubre una falla del lado de Lerian o en un componente del que depende SPB. Reintenta una solicitud que responde 503 o 504. Para los demás códigos, cita el correlationId en una solicitud de soporte.

HTTP 500 Error interno del servidor

HTTP 503 Servicio no disponible

HTTP 504 Tiempo de espera del gateway agotado

Rechazos de la red de BACEN


Un código SPB-NNNN describe una decisión que tomó Lerian SPB. Un mensaje que SPB transmite todavía puede fallar en el STR, y ese rechazo lleva el vocabulario propio de BACEN en lugar de un código SPB-NNNN. GET /v1/str/reports/rejected lista los mensajes rechazados para un rango de fechas. Cada elemento rechazado lleva un campo rejectReason cuando BACEN suministró uno. El valor es el propio código de error de BACEN para el rechazo, proyectado sin cambios. SPB lo lee del campo de código de error en la devolución de error del STR que envía BACEN. Trata rejectReason como un vocabulario abierto. El conjunto de valores pertenece a BACEN, y crece junto con el catálogo del STR. Pasa el valor a tu operador en lugar de compararlo con una lista fija en tu cliente. El resultado de la liquidación viaja por separado, en el campo sitLancSTR. SPB proyecta el estado de liquidación del STR de forma literal en ese campo. Lo hace en los eventos de una respuesta entrante y en las lecturas de estado de Conta PI y de dinero electrónico. En esas lecturas, el campo permanece vacío mientras el movimiento está en PENDING.