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

> O Lerian SRC retorna respostas de erro estruturadas. Consulte cada código de erro do SRC, o que ele significa e o status HTTP que carrega.

**Formato de erro**

As operações do Lerian SRC retornam erros como problem details da RFC 9457, com o media type `application/problem+json`:

<CodeGroup>
  ```json JSON theme={null}
  {
    "code": "SRC-0002",
    "correlationId": "req-7a3f9c2e",
    "detail": "consultation domain validation failed: document: check digits are invalid for the declared documentType",
    "instance": "/v1/src/consultations",
    "status": 422,
    "title": "Unprocessable Entity",
    "traceId": "a1b2c3d4",
    "type": "https://errors.lerian.studio/v1/SRC-0002",
    "violations": [
      {
        "code": "SRC-0002",
        "field": "document",
        "reason": "check digits are invalid for the declared documentType"
      }
    ]
  }
  ```
</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, `Unprocessable Entity`).
* **`status`** – O código de status HTTP.
* **`detail`** – Uma explicação legível dessa ocorrência. Para respostas `5xx`, o detail traz `internal error`. Decida com base em `code`.
* **`instance`** – O caminho da requisição.
* **`traceId`** – O identificador de trace da requisição.
* **`correlationId`** – O identificador de correlação da requisição.
* **`code`** – Um identificador estável para o erro. Decida com base nesse campo. Dois erros podem compartilhar um status e ainda assim diferir aqui. `SRC-0003` e `SRC-0101` respondem `409`.
* **`violations`** – Uma lista de erros de validação por campo, cada um com um `field`, um `reason` e um `code` opcional.
* **`details`** – Contexto estruturado opcional sobre o erro.

## Erros de requisição

***

Esses erros se aplicam à própria requisição.

| `code` | Descrição | Status |
| - | - | - |
| SRC-0001 | Requisição malformada. Um valor na requisição não pode ser interpretado, por exemplo uma data, um cursor ou um id de consulta. Uma requisição `POST /v1/src/consultations` sem o header `X-Idempotency` também responde com esse código. Um corpo de requisição acima de 1 MiB responde `413`, e um método que o caminho não aceita responde `405`. | 400, 405, 413 |
| SRC-0002 | Falha de validação. `violations` indica os campos com erro. Por exemplo, os dígitos verificadores do CPF ou do CNPJ são inválidos, `documentType` não corresponde ao documento, um tipo de proteção está fora do catálogo ou a motivação está ausente. Uma requisição de consulta recusada não envia nada ao BACEN. | 422 |
| SRC-0003 | Conflito de idempotência. A chave `X-Idempotency` já foi usada com um corpo de requisição diferente. Use uma nova chave, ou envie de novo o corpo original. A mesma chave com o mesmo corpo responde `202` com o id da consulta original. | 409 |
| SRC-0004 | Papel do consultado inválido. `subjectRole` não é `individual`, `company`, `holder` ou `representative`. Envie um desses valores, ou omita o campo para que o Lerian SRC deduza o papel a partir de `documentType`. | 422 |
| SRC-0005 | Papel do consultado incompatível com o documento. `individual`, `holder` e `representative` exigem um CPF, e `company` exige um CNPJ. | 422 |
| SRC-0006 | Vínculo com a empresa obrigatório. `subjectRole` é `holder` ou `representative`, e a requisição não tem `companyConsultationId`. Envie o id que a consulta da empresa retornou com o `202` dela. | 422 |
| SRC-0007 | Vínculo com a empresa não permitido. A requisição envia `companyConsultationId` com `subjectRole` `individual` ou `company`. Remova o campo, ou use `holder` ou `representative`. | 422 |
| SRC-0008 | Consulta da empresa não utilizável. `companyConsultationId` não indica uma consulta de CNPJ deste deploy. | 422 |
| SRC-0201 | Uma requisição sem um token válido retorna `401`. Um token de outro tipo retorna `401` com o código `SRC-0201`. | 401 |
| SRC-0202 | Cada operação precisa de uma permissão no produto `src`. Um token sem essa permissão retorna `403` com o código `SRC-0202`. | 403 |
| SRC-0301 | Não encontrado. O recurso que a requisição indica não existe, por exemplo uma consulta ou um caso de operador. O fechamento de um caso de operador que não está aberto, e um caminho que não corresponde a nenhuma rota, também respondem com esse código. | 404 |
| SRC-0401 | Rate limit excedido. Chegaram requisições demais do seu endereço na janela atual. Tente de novo depois do intervalo no header `Retry-After`. | 429 |

## Erros de registro da instituição e de evidências

***

Esses erros se aplicam aos registros da instituição e às correções da trilha de evidências.

| `code` | Descrição | Status |
| - | - | - |
| SRC-0101 | Registro da instituição já cadastrado. A consulta já tem um registro da instituição. Um registro não pode mudar, e uma consulta guarda um registro, de qualquer um dos tipos. O `detail` pode indicar o tipo que está registrado. | 409 |
| SRC-0102 | Registro da instituição não aplicável. A consulta não foi concluída com uma restrição ativa, então ela não aceita um registro da instituição de nenhum dos tipos. | 409 |
| SRC-0104 | Posição da trilha ocupada. Uma correção concorrente da mesma trilha de evidências ocupou a posição. Nada foi gravado. Tente a correção de novo. | 409 |

## Erros de disponibilidade

***

Esses erros significam que o Lerian SRC não conseguiu concluir a requisição. Quando o BACEN ou o canal de mensageria está indisponível, o Lerian SRC continua aceitando consultas, e elas ficam `pending`.

| `code` | Descrição | Status |
| - | - | - |
| SRC-1002 | Não pronto. O Lerian SRC não consegue alcançar uma dependência de que precisa para atender a requisição. Tente de novo mais tarde. | 503 |
| SRC-1003 | Contenção de lock. Um lock do banco de dados não ficou disponível dentro do limite de tempo do Lerian SRC. Nada foi gravado, e a requisição estava correta. Tente de novo. | 504 |
| SRC-1004 | Orçamento da requisição esgotado. A requisição não terminou dentro do orçamento de tempo de 15 segundos do Lerian SRC. Tente de novo depois do intervalo no header `Retry-After`. Antes de repetir uma correção de evidência, leia a trilha de evidências. | 503 |
| SRC-9000 | Erro interno. Uma falha inesperada. O `detail` traz `internal error`. | 500 |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.