# CD9 API Reference

Esta documentação descreve os principais endpoints da API do sistema CD9 (Backend - Laravel). A API utiliza autenticação baseada em tokens JWT via Laravel Sanctum.

---

## Autenticação (Auth)

### POST `/api/auth/login`
Autentica um usuário e retorna o token de acesso.

**Parâmetros (Body JSON):**
| Nome | Tipo | Obrigatório | Descrição |
|------|------|-------------|-----------|
| email | string | Sim | E-mail do usuário |
| password | string | Sim | Senha do usuário |

**Respostas:**
- `200 OK`: Retorna o token de acesso e os dados do usuário.
- `401 Unauthorized`: Credenciais inválidas.

### GET `/api/auth/me`
Retorna os dados do usuário logado atual. Requer Header `Authorization: Bearer {token}`.

**Respostas:**
- `200 OK`: Dados do usuário logado.
- `401 Unauthorized`: Token não fornecido ou inválido.

---

## Módulo: CIV (Controle de Identificação de Veículo)
Todas as rotas abaixo baseiam-se em `/api/cadastros/cd/` e requerem autenticação (Bearer Token).

### GET `/api/cadastros/cd/civ`
Lista todos os CIVs cadastrados. Suporta paginação e filtros.

### POST `/api/cadastros/cd/civ`
Cria um novo CIV (Entrada ou Saída).

**Exemplo de Payload:**
```json
{
  "fk_cd_empresa": 1,
  "placa": "ABC1234",
  "data_entrada": "2026-02-24T10:00:00Z"
}
```

### POST `/api/cadastros/cd/civ/{id}/analyze`
Realiza a análise e o processamento de um CIV específico (verifica lotes e anexos).

---

## Módulo: Estoque
Endpoint base: `/api/cadastros/cd/estoque`

### GET `/api/cadastros/cd/estoque`
Lista as movimentações de estoque.

### GET `/api/cadastros/cd/estoque/disponivel/{civ_id}`
Retorna o estoque disponível filtrado para os produtos requeridos por um CIV específico (Saída). 
**Importante:** Essa rota resolve um dos fluxos mais críticos de validação de carga.

### POST `/api/cadastros/cd/estoque/upload-xml/{loteId}`
Faz o upload de um arquivo XML para um lote do estoque associado a um CIV.
O sistema internamente processa a tag `<refNFe>` e compara com a chave gravada para registrar o `status_validacao`.

---

## Módulo: Contratos
Endpoint base: `/api/cadastros/cd/contratos`

### GET `/api/cadastros/cd/contratos`
Lista os contratos cadastrados.

### POST `/api/cadastros/cd/contratos/verify-password`
Verifica a senha administrativa para permitir ações restritas, como reabrir um contrato vigente.

**Parâmetros (Body JSON):**
| Nome | Tipo | Obrigatório | Descrição |
|------|------|-------------|-----------|
| password | string | Sim | Senha do administrador/gestor |

---

## Demais Endpoints (Referência Rápida)

As seguintes entidades possuem endpoints padrão de CRUD (`GET /`, `GET /{id}`, `POST /`, `PUT /{id}`, `DELETE /{id}`):
- **Motoristas:** `/api/cadastros/cd/motorista`
- **Empresas:** `/api/cadastros/cd/empresas`
- **Veículos:** `/api/cadastros/cd/veiculo`
- **Docas:** `/api/cadastros/cd/doca`
- **Produtos:** `/api/cadastros/cd/produto`
- **Conferência:** `/api/cadastros/cd/conferencia`
- **Filiais:** `/api/cadastros/cd/filiais`

Para explorar a API na íntegra de forma interativa ou testar as rotas localmente, você pode importar suas dependências no Insomnia/Postman utilizando a URL base `http://localhost:8000/api`.
