Saltar al contenido principal
Formato de error SILOC devuelve los errores como detalles de problema RFC 9457:
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>. Este URI repite code, por lo que no separa dos estados que comparten un código.
  • title – El texto del estado HTTP (por ejemplo, Not Found).
  • status – El código de estado HTTP.
  • detail – Una explicación legible para esta ocurrencia. Un 500 y un SILOC-0023 reemplazan el texto por internal error, de modo que la causa interna permanece dentro del riel. El texto varía según la ocurrencia, y un 403 puede llevar el mensaje que reportó el servicio de autorización. No distingas por él.
  • code – El código estable y procesable por máquina (SILOC-NNNN). Distingue por el par de status y code, no solo por code. Un código puede aparecer bajo más de un estado, y cada estado necesita una acción diferente. Por ejemplo, SILOC-0022 es un 400 para un cuerpo que no es JSON válido y un 422 para un valor que rompe una regla de dominio. Una solicitud que falla la validación de esquema lleva SILOC-0022, y errors nombra los campos con el fallo.
  • errors – Una lista opcional de detalles en el nivel de campo, cada uno con el location que leyó, un message y el value encontrado allí. Un rechazo de la puerta de autorización o de idempotencia lleva en su lugar una lista violations vacía.
Las tablas siguientes listan los códigos que devuelve SILOC, agrupados por estado HTTP.

400, 413, 415: Cuerpo de la solicitud rechazado


401: Solicitante no identificado


403: Solicitante rechazado


404: No encontrado


409: Conflictos


422: Errores de validación


500: Errores del servidor


503: El riel no puede responder


Un 503 que lleva SILOC-0002 no te dice que el comando fue rechazado. El riel responde con él tanto antes de que el comando se ejecute como después de que se confirme, de modo que el comando ya podría haber surtido efecto. Concilia primero la solicitud original. Cuando reintentes, envía la misma X-Idempotency, y nunca reintentes bajo una nueva.