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

# Tratamento de Erros

> Formato padrão de erros nas APIs do DEVMOB

Todas as APIs retornam erros em formato padronizado.

## Formato de Erro

```json theme={null}
{
  "statusCode": 404,
  "error": "Not Found",
  "message": "user.not_found"
}
```

* `statusCode` — código HTTP.
* `error` — frase padrão do status HTTP (`Not Found`, `Forbidden`, `Conflict`, etc.).
* `message` — código legível por máquina no padrão `{modulo}.{código}` (ex: `user.not_found`, `trip.already_cancelled`). Use este campo para tratar o erro programaticamente.

## Erros de Validação

Falhas de validação retornam `400` com um array `errors`, contendo um item por campo inválido:

```json theme={null}
{
  "statusCode": 400,
  "message": "Bad Request Error",
  "errors": [
    { "code": "invalid_type", "message": "Required", "path": "name" }
  ]
}
```

* `path` — caminho do campo (dot notation para campos aninhados).
* `code` — código da regra Zod que falhou.

## Convenções

* O campo `message` segue o padrão `{modulo}.{código}` em erros de domínio (ex: `order.already_cancelled`)
* Cada domínio define seus próprios códigos de erro via `createExceptions()`
* Todo módulo possui automaticamente o código `not_found`

## Códigos HTTP

| Código | Uso                                           |
| ------ | --------------------------------------------- |
| `400`  | Validação de entrada falhou (Zod)             |
| `401`  | Token ausente ou inválido                     |
| `403`  | Sem permissão para o recurso                  |
| `404`  | Recurso não encontrado                        |
| `409`  | Conflito de estado (ex: pedido já confirmado) |
| `422`  | Regra de negócio violada                      |
| `500`  | Erro interno do servidor                      |
