> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Lista de errores de SILOC

> Consulta los códigos de error de SILOC, el estado HTTP que lleva cada uno y la acción que lo resuelve.

**Formato de error**

SILOC devuelve los errores como detalles de problema RFC 9457 con el tipo de contenido `application/problem+json`:

<CodeGroup>
  ```json JSON theme={null}
  {
    "type": "https://errors.lerian.studio/v1/SILOC-0007",
    "title": "Not Found",
    "status": 404,
    "detail": "participant not found",
    "code": "SILOC-0007"
  }
  ```
</CodeGroup>

**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. Una solicitud que falla la validación de esquema lleva en su lugar el valor predeterminado de RFC `about:blank`.
* **`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. Una respuesta `500` reemplaza 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. El código `SILOC-0002` lleva un 401, un 403 y un 503, cada uno con su propia acción. Una solicitud que falla la validación de esquema omite el campo, 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í.

Las tablas siguientes listan los códigos que devuelve SILOC, agrupados por estado HTTP.

## 401: Solicitante no identificado

***

| `code`     | Descripción                                                                                                                                | `detail`                              |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- |
| SILOC-0002 | La solicitud llegó sin un token bearer, o con un token cuyos claims no identifican a un solicitante.                                       | `Missing Token`, o `Unauthorized`     |
| SILOC-0003 | Una solicitud que cambia el estado llegó a la puerta de idempotencia sin un solicitante identificado al que atribuir la `Idempotency-Key`. | `authenticated principal unavailable` |

## 403: Solicitante rechazado

***

| `code`     | Descripción                                                                                                     | `detail`                                                          |
| ---------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| SILOC-0002 | El servicio de autorización rechazó a este solicitante para el recurso y la acción que la solicitud especifica. | `Forbidden`, o el mensaje que reportó el servicio de autorización |

## 404: No encontrado

***

| `code`     | Descripción                                                                                                                              | `detail`                                                                                                                                                                                                   |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SILOC-0007 | La ruta o la consulta nombró un recurso que el riel no tiene. Verifica el identificador, o lista la colección para encontrar uno válido. | `participant not found`, `certificate not found`, `relay failure not found`, `cycle not found`, `settlement instruction not found`, `cycle reconciliation not found`, `business calendar year not covered` |

## 409: Conflictos

***

| `code`     | Descripción                                                                                                                                                    | `detail`                                                                                                                                                                                                                                                                                                                                                                      |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SILOC-0009 | La solicitud choca con un estado que el riel ya tiene, o con un comando que ya usó esta `Idempotency-Key`. Vuelve a leer el estado actual antes de reintentar. | `a participant with this ISPB already exists`, `the active credential cannot be disabled; revocation was not recorded`, `notification config was modified concurrently; re-read and retry with the current version`, `a request with this Idempotency-Key is still being processed; retry once it completes`, `the Idempotency-Key was already used with a different request` |

## 422: Errores de validación

***

| `code`     | Descripción                                                                                                                                                                          | `detail`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SILOC-0022 | La solicitud está bien formada, pero rompe una regla de dominio, o lleva un valor que el riel no puede leer. Corrige el campo que nombra la respuesta y envía la solicitud de nuevo. | `Idempotency-Key header is required on a state-changing request`, `Idempotency-Key must be at most 255 characters`, `invalid pagination cursor`, `participantId must be a valid uuid`, `certificateId must be a valid uuid`, `id must be a valid uuid`, `authorized actor identity is unavailable`, `from/to must be an RFC 3339 date-time`, `malformed semantic ROC payload`, `semantic ROC fiIspb is not the configured local FI`, `no OT cycle correlates the semantic ROC`, `ambiguous OT cycles correlate the semantic ROC`, `semantic ROC revision already ingested with a different content hash`, `semantic ROC revision supersession is invalid` |

## 500: Errores del servidor

***

| `code`     | Descripción                                                                                                                                                                        | `detail`         |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| SILOC-0500 | Un fallo inesperado del servidor. El riel oculta la causa y devuelve un texto fijo. Reintenta la solicitud, y cita el identificador de traza de la respuesta si el fallo persiste. | `internal error` |

## 503: El riel no puede responder

***

| `code`     | Descripción                                                                                                                                                                 | `detail`                                                                                                                                                   |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SILOC-0001 | El riel no pudo llegar a una decisión sobre este solicitante. El servicio de autorización no respondió, o la implementación no puede autorizar con su configuración actual. | `Service Unavailable`                                                                                                                                      |
| SILOC-0002 | El riel no pudo probar que el comando fuera único, por lo que el resultado del comando quedó indeterminado.                                                                 | El riel no pudo probar que este comando fuera único, así que concilia la solicitud original antes de reintentar, y nunca lo reintentes con una clave nueva |

<Note>
  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 `Idempotency-Key`, y nunca reintentes bajo una nueva.
</Note>
