> ## 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 Consignado

> Lerian Consignado devuelve respuestas de error estructuradas. Consulta cada código de error CLT, su significado y los códigos de motivo que provienen directamente de Dataprev.

**Formato de error**

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

<CodeGroup>
  ```json JSON theme={null}
  {
    "code": "CLT-0006",
    "detail": "The worker's authorization is outside its validity window, so their payroll data can no longer be read under it. Obtain a fresh worker authorization and send its evidence; repeating this request cannot succeed.",
    "status": 422,
    "title": "Unprocessable Entity",
    "type": "https://errors.lerian.studio/v1/CLT-0006"
  }
  ```
</CodeGroup>

**Definiciones de campos**

* **`type`** – Un URI que identifica el error en el catálogo de errores de Lerian. Se construye como `https://errors.lerian.studio/v1/<code>`.
* **`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 una respuesta `5xx`, Consignado sanea el detail a `internal error`, de modo que una causa interna no queda expuesta en el cuerpo. Distingue por `code` y por el estado en su lugar.
* **`code`** – Un identificador estable para el error. Las tablas siguientes muestran los códigos `CLT-NNNN`. Algunas operaciones responden con un código propio, como `CURSOR_EXPIRED` en el barrido del inventario de registros.
* **`errors`** – Lista opcional de detalles de error individuales, cada uno con un `location`, un `message` y un `value`.
* **`upstream`** – El error propio de Dataprev, cuando el gateway retransmite uno. Contiene el `code` y el `message` de Dataprev, y sobrevive al saneamiento `5xx` que borra `detail`. Consulta [Códigos de motivo de Dataprev](#dataprev-reason-codes).

## 400: Solicitud incorrecta

***

| `code`   | Descripción                                                                                                           | `detail`                                              |
| -------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| CLT-0001 | Solicitud no válida. El gateway no pudo leer la sintaxis de la solicitud, o un campo enviado no superó la validación. | Nombra el campo o la sintaxis que el gateway rechazó. |
| CLT-0011 | Solicitud fallida. El código de reserva para un rechazo del lado del cliente sin una entrada propia.                  | Nombra el rechazo.                                    |

## 401: No autorizado

***

| `code`   | Descripción                                                                                                              | `detail`       |
| -------- | ------------------------------------------------------------------------------------------------------------------------ | -------------- |
| CLT-0003 | No autorizado. La solicitud no llevaba un token bearer válido, o el gateway no pudo resolver un tenant a partir de ella. | `Unauthorized` |

## 403: Prohibido

***

| `code`   | Descripción                                                                 | `detail`    |
| -------- | --------------------------------------------------------------------------- | ----------- |
| CLT-0004 | Prohibido. El solicitante autenticado no tiene permiso para esta operación. | `Forbidden` |

## 404: No encontrado

***

| `code`   | Descripción                                                                                                                                                   | `detail`    |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| CLT-0005 | No encontrado. El registro que nombra la solicitud no existe para este tenant. Un artefacto retenido que pertenece a otro tenant responde de la misma manera. | `Not Found` |

## 409: Conflicto

***

| `code`   | Descripción                                                                   | `detail`                                                                                    |
| -------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| CLT-0007 | Conflicto. La solicitud entra en conflicto con el estado actual del registro. | `Conflict`, o la frase para el conflicto, como `an identical request is already in flight`. |

`CLT-0007` con el detail `an identical request is already in flight` marca una solicitud que el gateway no ha terminado. Reintenta esa solicitud con la misma clave de idempotencia.

Los conflictos de comando responden con un código propio en lugar de `CLT-0007`, de modo que un cliente pueda distinguirlos. Lee `code` y `detail` juntos antes de reintentar. Estas grafías de código son parte del contrato de transmisión y no cambian.

| `code`                               | Descripción                                                                                                                       | `detail`                                                                                                                                                                                                                                |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| FGTS\_EXECUTION\_PAYLOAD\_MISMATCH   | Esta clave de idempotencia ya contiene una ejecución de garantía FGTS diferente.                                                  | Esta clave de idempotencia ya contiene una ejecución de garantía FGTS diferente. Reenvía la solicitud original con esta clave para reproducirla, o usa una clave nueva para una ejecución diferente.                                    |
| FGTS\_EXECUTION\_OUTCOME\_UNRESOLVED | La ejecución retenida bajo esta clave de idempotencia todavía no tiene un resultado conocido, por lo que no se puede reproducir.  | La ejecución de la garantía FGTS retenida bajo esta clave de idempotencia todavía no tiene un resultado conocido, por lo que no se puede reproducir. Ejecutar el mismo contrato con una clave nueva arriesga mover el dinero dos veces. |
| FGTS\_EXECUTION\_ALREADY\_REFUSED    | La ejecución retenida bajo esta clave de idempotencia fue rechazada, por lo que una solicitud corregida necesita una clave nueva. | La ejecución de la garantía FGTS retenida bajo esta clave de idempotencia fue rechazada. Esta clave solo puede devolver ese rechazo, por lo que una solicitud corregida necesita una clave nueva.                                       |
| FGTS\_EXECUTION\_CONTRACT\_TAKEN     | La garantía FGTS de este contrato ya se ejecutó con otra clave de idempotencia. Esta solicitud no se ejecutó.                     | La garantía FGTS de este contrato ya se ejecutó con otra clave de idempotencia, y una garantía se ejecuta una sola vez. Esta solicitud no se ejecutó.                                                                                   |
| BID\_SOLICITACAO\_TAKEN              | Esta solicitação ya lleva una oferta de esta institución.                                                                         | Esta solicitação ya lleva una oferta de esta institución, y una solicitação admite una. Consulta el libro de ofertas para conocer el resultado de la oferta que la retiene.                                                             |
| BID\_PROPOSAL\_SLOT\_TAKEN           | Un envío anterior ocupa la posición de la propuesta, por lo que esta oferta no se registró.                                       | Una posición de propuesta en esta oferta ya está ocupada por un envío anterior, por lo que esta oferta no se registró. Consulta el libro de ofertas para conocer el resultado del envío que la ocupa.                                   |
| AVERBACAO\_CLAIM\_CONFLICT           | La averbação de este contrato ya está reclamada con otra clave de idempotencia.                                                   | La averbação de este contrato ya está reclamada con otra clave de idempotencia. Sigue el reclamo existente en lugar de abrir uno segundo.                                                                                               |
| AVERBACAO\_ARTIFACT\_CONFLICT        | Ya hay un documento diferente retenido para la averbação de este contrato. Esta solicitud no se aplicó.                           | Ya hay un documento diferente retenido para la averbação de este contrato, y un documento retenido nunca se reemplaza. Esta solicitud no se aplicó.                                                                                     |
| EXCLUSION\_AUTHORITY\_QUARANTINED    | Este contrato tiene un registro de exclusión que el gateway no puede reportar, por lo que no responde como ausente.               | Este contrato tiene un registro de exclusión que el gateway no puede reportar. De forma deliberada no se responde como ausente, porque el contrato bien podría estar excluido.                                                          |
| EXCLUSION\_AUTHORITY\_CONFLICT       | La exclusión de este contrato ya está registrada bajo otra autoridad. Esta solicitud no se aplicó.                                | La exclusión de este contrato ya está registrada bajo otra autoridad, y una exclusión no tiene deshacer. Esta solicitud no se aplicó.                                                                                                   |
| RAIL\_COMMAND\_CLAIM\_CONFLICT       | Este comando ya está reclamado para este contrato con otra clave de idempotencia.                                                 | Este comando ya está reclamado para este contrato con otra clave de idempotencia. Sigue el reclamo existente en lugar de abrir uno segundo.                                                                                             |
| RAIL\_COMMAND\_ANSWER\_NOT\_RETAINED | Este comando ya se confirmó para este contrato, y su respuesta original no se conservó.                                           | Este comando ya se confirmó para este contrato, pero su respuesta original no se conservó, por lo que no hay nada que reproducir. Consulta el estado actual del contrato en lugar de volver a enviarlo.                                 |
| REVERSAO\_WINDOW\_EXPIRED            | La ventana para revertir este refinanciamiento se cerró, por lo que ninguna corrección la reabre.                                 | La ventana para revertir este refinanciamiento se cerró, por lo que la reversión ya no se puede solicitar. Ninguna corrección de esta solicitud puede reabrirla.                                                                        |

## 410: Ya no disponible

***

El barrido paginado del inventario de registros emite un cursor con una ventana de reintento limitada.

| `code`          | Descripción                                                                                                                                                 | `detail`                                   |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| CURSOR\_EXPIRED | Ya no disponible. La ventana de reintento del cursor pasó, por lo que el barrido al que pertenecía no puede continuar. Inicia un barrido nuevo en su lugar. | La ventana de reintento del cursor expiró. |

## 413: Entidad de la solicitud demasiado grande

***

| `code`   | Descripción                                                                                                      | `detail`                   |
| -------- | ---------------------------------------------------------------------------------------------------------------- | -------------------------- |
| CLT-0010 | Entidad de la solicitud demasiado grande. El payload de la solicitud es más grande de lo que acepta el endpoint. | `Request Entity Too Large` |

## 422: Entidad no procesable

***

| `code`   | Descripción                                                                                                                                                           | `detail`                                                                            |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| CLT-0006 | Entidad no procesable. El gateway leyó la solicitud y la rechaza en su forma actual. Un rechazo determinístico de Dataprev también responde aquí, y lleva `upstream`. | El motivo sobre el que actuar, como obtener una autorización de trabajador vigente. |

## 500: Error interno del servidor

***

| `code`   | Descripción                                                         | `detail`         |
| -------- | ------------------------------------------------------------------- | ---------------- |
| CLT-0002 | Error interno del servidor. Un fallo inesperado dentro del gateway. | `internal error` |

## 501: No implementado

***

Un `501` responde a una operación que tu implementación no habilitó. Las rutas permanecen montadas, de modo que la respuesta llega por solicitud en lugar de como una ruta ausente. Las descargas de artefactos de contrato, las correcciones de contrato, la confirmación de desembolso, el registro de cessão y el envío de ofertas responden `501` hasta que tu implementación los habilite.

El `detail` muestra `internal error`, porque Consignado sanea el detail en una respuesta `5xx`. Distingue por el estado.

## 503: Servicio no disponible

***

| `code`   | Descripción                                                                                                                                                                                  | `detail`         |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| CLT-0008 | Servicio no disponible. Una dependencia que la solicitud necesita no está disponible, o Dataprev respondió con un fallo de reintentar más tarde. Envía la misma solicitud de nuevo en breve. | `internal error` |

Cuando Dataprev produjo el fallo, la respuesta también lleva `upstream` con el código y el mensaje propios de Dataprev.

<h2 id="dataprev-reason-codes">
  Códigos de motivo de Dataprev
</h2>

***

Consignado retransmite los códigos de motivo de Dataprev en lugar de asignarlos a códigos propios. Esto mantiene un rechazo legible frente a lo que Dataprev dijo realmente. Lee cada código de motivo contra la especificación de Dataprev, no contra esta página. Dataprev puede publicar un código que esta página no incluye, y el gateway igual te lo entrega.

Te llegan en dos lugares.

**En un rechazo.** El miembro `upstream` lleva el `code` y el `message` propios de Dataprev, ambos literales. El gateway acota cada campo en la transmisión, de modo que el miembro contiene un código y una frase, no un cuerpo de respuesta. Un `422` lo lleva para un rechazo determinístico, y un `503` lo lleva para un fallo de reintentar más tarde.

**En las respuestas de contrato y margen.** Varios campos de respuesta emparejan un código de motivo de Dataprev con la etiqueta propia de Dataprev para él. Una lectura de margen publica `blockType` y `ineligibilityReason`, que forman el par `code` y `description`. Una lectura de contrato publica `motivo_exclusao`, `origem_averbacao`, `origem_exclusao`, `portabilidade_situacao`, y `situacao_bloqueio_garantia`, que lo forman como `codigo` y `descricao`. Cada campo contiene un código numérico y el texto que Dataprev devolvió junto a él.

Trata el conjunto como abierto. Asigna los códigos de motivo sobre los que actúa tu integración, y transmite el resto con sus etiquetas, de modo que un código que aún no hayas asignado siga siendo legible para un operador.
