> ## 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 erros do SLC

> Consulte os códigos de erro do Lerian SLC, o status HTTP que cada um carrega e os códigos de rejeição da Nuclea que chegam até você em uma operação de liquidação.

**Formato de erro**

O Lerian SLC retorna erros como problem details da RFC 9457, com o media type `application/problem+json`:

<CodeGroup>
  ```json JSON theme={null}
  {
    "type": "https://errors.lerian.studio/v1/SLC-0105",
    "title": "Conflict",
    "status": 409,
    "detail": "operation is not in a state that permits this transition",
    "code": "SLC-0105"
  }
  ```
</CodeGroup>

**Definições de campo**

* **`type`** – Um URI que identifica o erro no catálogo de erros da Lerian, construído como `https://errors.lerian.studio/v1/<code>`.
* **`title`** – O texto do status HTTP, por exemplo `Conflict` ou `Unprocessable Entity`. Vem do status, não do nome do erro.
* **`status`** – O código de status HTTP, repetido da linha de status da resposta.
* **`detail`** – Uma explicação específica dessa ocorrência. Uma resposta com status 500 ou acima carrega o texto fixo `internal error`, então decida com base em `code` em vez de analisar esse campo.
* **`code`** – O identificador estável de máquina, no formato `SLC-NNNN`. Decida com base nesse campo.
* **`errors`** – Uma lista de detalhes por campo, cada um com `location`, `message` e o `value` responsável pelo erro. Uma falha de validação de schema lista uma entrada por campo.

## Erros de plataforma e requisição

***

Esses códigos podem chegar de qualquer endpoint. Cada um descreve a requisição, a credencial ou a disponibilidade do serviço, e não a operação de liquidação em si.

| `code`   | Descrição                                                                                                                    | Status |
| -------- | ---------------------------------------------------------------------------------------------------------------------------- | ------ |
| SLC-0001 | A requisição está malformada. Um payload, um filtro ou um valor de path falhou na validação.                                 | 400    |
| SLC-0002 | O serviço encontrou uma condição inesperada. O `detail` traz `internal error`.                                               | 500    |
| SLC-0003 | A requisição chegou a uma rota protegida sem um bearer token válido.                                                         | 401    |
| SLC-0004 | A credencial está autenticada mas não tem a permissão que a rota exige.                                                      | 403    |
| SLC-0005 | O recurso solicitado não existe.                                                                                             | 404    |
| SLC-0006 | A requisição está bem formada, e uma regra de negócio a recusa.                                                              | 422    |
| SLC-0007 | O recurso está em um estado que proíbe a ação, como uma repetição de entrega de webhook que já foi enviada.                  | 409    |
| SLC-0008 | Um transporte ou uma dependência está indisponível. A condição se resolve sozinha, então repita a requisição.                | 503    |
| SLC-0010 | O corpo da requisição está acima do tamanho aceito.                                                                          | 413    |
| SLC-0011 | Uma condição 4xx sem um código mais específico. Um `405 Method Not Allowed` mantém seu próprio status e carrega esse código. | 4xx    |
| SLC-0012 | A rota está montada, e a configuração do seu deploy não a disponibiliza.                                                     | 501    |

## Erros de operação de liquidação

***

Esses códigos vêm do domínio de operações. Descrevem a instrução de liquidação que você enviou, a operação original que um cancelamento visa, ou a resposta que uma conciliação recebeu da contraparte.

| `code`   | Descrição                                                                                                                                                                              | Status |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| SLC-0102 | Um ISPB no corpo da requisição está ausente ou não tem oito dígitos. Isso cobre os ISPBs de credor, domicílio e liquidação, o registro da contraparte e o participante da conciliação. | 422    |
| SLC-0103 | O `operationType` é um valor reconhecido que não está habilitado para envio.                                                                                                           | 422    |
| SLC-0104 | O `externalId` já pertence a outra operação.                                                                                                                                           | 409    |
| SLC-0105 | A operação está em um estado que não permite a transição solicitada.                                                                                                                   | 409    |
| SLC-0106 | A operação que a requisição nomeia não existe.                                                                                                                                         | 404    |
| SLC-0107 | O lote NDJSON carrega mais linhas do que o limite configurado.                                                                                                                         | 413    |
| SLC-0108 | O NUliquid fornecido não tem 21 posições. A checagem de formato roda antes de qualquer busca.                                                                                          | 422    |
| SLC-0109 | O `participantId` não está registrado.                                                                                                                                                 | 422    |
| SLC-0110 | A cadeia de novas tentativas da operação atingiu o limite.                                                                                                                             | 409    |
| SLC-0111 | Um adiantamento chegou sem a justificativa exigida. O adiantamento é auditado, então o motivo e a evidência são obrigatórios.                                                          | 400    |
| SLC-0112 | Já existe uma operação ativa para o mesmo `externalId`. Convirja para essa operação em vez de criar uma segunda instrução.                                                             | 409    |
| SLC-0113 | A operação original não aceita mais um cancelamento. Ela já está cancelada, em liquidação, liquidada ou confirmada em D+1.                                                             | 409    |
| SLC-0114 | O `originalOperationId` referenciado por um cancelamento não existe.                                                                                                                   | 422    |
| SLC-0115 | A operação original carrega um tipo que não aceita cancelamento. Apenas movimentos CREDIT e DEBIT são canceláveis.                                                                     | 422    |
| SLC-0116 | A Nuclea ainda não aceitou a operação original, então ela não tem NUliquid e o cancelamento não tem movimento para bloquear.                                                           | 409    |
| SLC-0117 | Já há um cancelamento em andamento para a mesma operação original.                                                                                                                     | 409    |
| SLC-0118 | A nova tentativa visa uma operação rejeitada cujo valor já liquidou.                                                                                                                   | 409    |
| SLC-0119 | A operação não tem NUliquid, então a conciliação não tem chave para consultar. O `detail` nomeia a recuperação adequada ao estado atual.                                               | 409    |
| SLC-0120 | O NUliquid da operação está fora do horizonte de consulta online de 30 dias. Uma nova tentativa não ajuda, porque o horizonte se afasta ainda mais.                                    | 409    |
| SLC-0121 | A contraparte respondeu um status de liquidação fora do vocabulário mapeado, e a conciliação não registrou nada. O `detail` cita o token para que você possa levá-lo à Nuclea.         | 409    |
| SLC-0122 | A contraparte respondeu sobre um NUliquid diferente do consultado, então a resposta descreve outra operação e a conciliação não registrou nada.                                        | 409    |
| SLC-0123 | A consulta de liquidação não produziu resposta sobre a operação devido a uma condição no canal. O `detail` nomeia a condição.                                                          | 409    |
| SLC-0150 | Um cancelamento chegou sem a categoria numérica de motivo exigida pelo layout da Nuclea.                                                                                               | 422    |

## Códigos de rejeição da Nuclea

***

A Nuclea, a câmara de compensação que opera o SLC, responde a um envio ou a um arquivo de retorno com seus próprios códigos de erro de negócio, no formato `ESLCNNNN`. O Lerian SLC os registra na operação e os devolve sem alteração. A resposta de detalhe da operação carrega `eslcErrors`, um array dos códigos registrados que fica vazio quando a operação não tem nenhum, e `lastError`, os códigos registrados unidos em uma única string. Cada valor de código chega literalmente da rede, então leia-o como vocabulário da Nuclea, não como um código da Lerian.

A Nuclea define 85 desses códigos em seu manual de layout do SLC. A tabela abaixo cobre os que mudam o que você faz a seguir.

| `code`   | Descrição                                                                                   | O que fazer                                                                                                                                                                   |
| -------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ESLC0006 | A data é inválida.                                                                          | Corrija a data e envie novamente.                                                                                                                                             |
| ESLC0007 | O CPF ou CNPJ é inválido.                                                                   | Corrija o número do documento e envie novamente.                                                                                                                              |
| ESLC0029 | A requisição chegou fora da janela programada.                                              | Envie na próxima janela. O Lerian SLC enfileira uma operação enviada fora da janela e a despacha quando a janela abre. Veja [Operações do SLC](/pt/rails/slc/slc-operations). |
| ESLC0042 | Não existe um credenciamento para esse recurso.                                             | Complete o credenciamento com a Nuclea e envie novamente.                                                                                                                     |
| ESLC0097 | O número de liquidação não está registrado.                                                 | Verifique o NUliquid referenciado pela requisição.                                                                                                                            |
| ESLC0119 | O participante administrado não é administrado pelo participante principal.                 | Corrija o registro do participante junto à Nuclea. O mesmo arquivo é aceito assim que o registro corresponder.                                                                |
| ESLC0123 | O participante não se credenciou no recurso.                                                | Complete o credenciamento com a Nuclea. O mesmo arquivo é aceito depois disso.                                                                                                |
| ESLC0140 | O código do instituidor do arranjo não é permitido para o tipo de arquivo enviado.          | Corrija o registro do arranjo e envie novamente.                                                                                                                              |
| ESLC0161 | Um participante administrado não pode enviar via HTTP.                                      | Envie pelo transporte registrado para esse participante.                                                                                                                      |
| ESLC0163 | A data de pagamento não é permitida para um cancelamento.                                   | Cancele dentro do intervalo de datas que a operação original permite.                                                                                                         |
| ESLC0164 | O registro já está cancelado, liquidado ou em liquidação, então não aceita um cancelamento. | Interrompa o cancelamento. O Lerian SLC recusa a mesma condição localmente com `SLC-0113`.                                                                                    |
| ESLC1017 | Os números de liquidação para um cancelamento na data informada não foram encontrados.      | Verifique a data e os números de liquidação referenciados pela requisição.                                                                                                    |

<Note>
  Quatro desses códigos chegam até você em uma recusa síncrona de envio de arquivo: `ESLC0119`, `ESLC0123`, `ESLC0140` e `ESLC0161`. Eles chegam no evento `operation.forward_rejected`, em `rejectionCode`, em vez de no arquivo de retorno. Cada um é uma condição de registro ou credenciamento que se aplica a todos os arquivos que o participante envia, e uma alteração de registro na Nuclea resolve a condição. O arquivo em si não precisa de edição.
</Note>

**Os demais códigos**

O restante do catálogo descreve o registro enviado ou o registro do participante. As maiores famílias são:

* **Domínio e formato de campo** – Um valor está fora do domínio que o layout permite, ou um segmento carrega o formato errado. Códigos de moeda, tipos de pessoa, instituidores de arranjo e códigos de ocorrência aparecem aqui.
* **Registro e credenciamento** – Um CNPJ, um ISPB ou um relacionamento de participante difere do que a Nuclea mantém para o adquirente.
* **Números de controle duplicados** – Um número de controle ou um nome de arquivo repete um que a Nuclea já registrou.
* **Datas e períodos de relatório** – Uma data de pagamento, uma data de referência ou um intervalo de relatório está fora do que o tipo de produto permite.
* **Estado do registro e códigos de ocorrência** – O código de ocorrência não é adequado ao estado atual do registro, como um registro liquidado ou um cancelado.
* **Períodos de devolução** – O registro está dentro de um período de devolução, e a Nuclea nomeia o tipo de arquivo que carrega a correção.
* **Limites e volumes** – Um valor de pagamento, uma contagem de arquivos ou uma contagem de registros está acima do máximo aceito.

Um código de qualquer uma dessas famílias chega até você no arquivo de retorno, por meio de `eslcErrors` na operação. Cite o código ao abrir o caso com a Nuclea, porque é o identificador que o suporte da Nuclea usa.
