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

# validation_error

> Erro 400: um ou mais campos do body falharam na validação

**Status HTTP:** `400`

## O que significa

Um ou mais campos do body da requisição falharam na validação de tipo ou de enum. A resposta segue o formato RFC 7807 (`Content-Type: application/problem+json`) e inclui o campo extra `errors[]`, que lista cada campo reprovado e a mensagem da restrição violada.

Use o campo `code` para tratamento programático. O `type` é um identificador, não deve ser dereferenciado em código de produção.

## Causas comuns

* `subject_type` com valor fora do enum (`pj` | `pf`).
* `legal_basis` com valor fora do enum (`consentimento` | `legitimo_interesse` | `cumprimento_obrigacao_legal` | `protecao_credito`).
* Campo enviado com o tipo errado (por exemplo, `document` como número em vez de string).
* Campo obrigatório vazio (por exemplo, `document` vazio no `POST /analyses`).
* **Motor de Borderô** (`POST /operations`, `multipart/form-data`): os `errors[]` são field-level sobre as partes do multipart — `file`, `xmls` e `cedente_cnpj`. Exemplos de mensagens: `No file provided` (parte `file` ausente), `cedente_cnpj is required`, `Invalid CNPJ format` (dígito verificador), arquivo que não parseia como CNAB 400 remessa, ou arquivo acima do teto (16 MB para `file`; 32 MB para o ZIP `xmls`). Nada é cobrado — o débito só acontece após o parse bem-sucedido do CNAB.
* **Motor de Borderô** (`GET /operations/{id}/result`): parâmetro `filter` com valor fora do enum (detail: `Invalid filter value. Use "issues" or "all".`).

## Como corrigir

* Leia o array `errors[]`: cada item traz `field` e `message` indicando exatamente o que corrigir.
* Corrija cada campo conforme a mensagem e reenvie a requisição.
* Ao reenviar a requisição corrigida com `Idempotency-Key`, gere uma key **nova**. A mesma key com conteúdo diferente retorna [`409 idempotency_conflict`](/problems/idempotency_conflict).

## Exemplo

**Motor de CPF/CNPJ:**

```json theme={null}
{
  "type": "https://docs.sherlocker.com.br/problems/validation_error",
  "title": "Validation Error",
  "status": 400,
  "code": "validation_error",
  "detail": "One or more fields failed validation.",
  "errors": [
    { "field": "document", "message": "document should not be empty" },
    { "field": "subject_type", "message": "subject_type must be one of the following values: pj, pf" }
  ],
  "instance": "/v1?request_id=req-uuid-here"
}
```

**Motor de Borderô (multipart):**

```json theme={null}
{
  "type": "https://docs.sherlocker.com.br/problems/validation_error",
  "title": "Validation Error",
  "status": 400,
  "code": "validation_error",
  "detail": "One or more fields failed validation.",
  "errors": [
    { "field": "file", "message": "No file provided" },
    { "field": "cedente_cnpj", "message": "cedente_cnpj is required" }
  ],
  "instance": "/v1?request_id=req-uuid-here"
}
```

## Campos extras

| Campo    | Tipo  | Descrição                                                    |
| -------- | ----- | ------------------------------------------------------------ |
| `errors` | array | Lista de objetos `{field, message}`, um por campo reprovado. |

## Relacionado

* [Erros da API](/motor-analise/erros)
* [Idempotência](/motores/idempotencia)
