API - Clientes
Documentação da API de gerenciamento de clientes.
Autenticação
Todos os endpoints requerem autenticação JWT. Veja Autenticação.
Endpoints
GET /clients
Lista todos os clientes (paginação).
Query Parameters:
page: Número da página (padrão: 1)limit: Itens por página (padrão: 10)search: Busca por nome, CNPJ ou emailstatus: Filtro por status (ativo, inativo, bloqueado)sortBy: Campo para ordenaçãosortOrder: Ordem (asc, desc)
Response (200 OK):
{
"data": [
{
"id": "uuid",
"razaoSocial": "Empresa Exemplo LTDA",
"nomeFantasia": "Exemplo",
"cnpj": "12.345.678/0001-90",
"email": "contato@exemplo.com",
"status": "ativo",
"dataCadastro": "2024-01-01T00:00:00Z"
}
],
"meta": {
"page": 1,
"limit": 10,
"total": 100,
"totalPages": 10
}
}
GET /clients/:id
Busca um cliente específico por ID.
Response (200 OK):
{
"id": "uuid",
"razaoSocial": "Empresa Exemplo LTDA",
"nomeFantasia": "Exemplo",
"cnpj": "12.345.678/0001-90",
"email": "contato@exemplo.com",
"telefone": "(11) 1234-5678",
"endereco": {
"logradouro": "Rua Exemplo",
"numero": "123",
"bairro": "Centro",
"cidade": "São Paulo",
"uf": "SP",
"cep": "01234-567"
},
"status": "ativo",
"setores": [],
"tecnicos": []
}
POST /clients
Cria um novo cliente.
Request Body:
{
"razaoSocial": "Empresa Exemplo LTDA",
"nomeFantasia": "Exemplo",
"cnpj": "12.345.678/0001-90",
"email": "contato@exemplo.com",
"telefone": "(11) 1234-5678",
"logradouro": "Rua Exemplo",
"numero": "123",
"bairro": "Centro",
"cidade": "São Paulo",
"uf": "SP",
"cep": "01234-567",
"status": "ativo"
}
Response (201 Created):
{
"id": "uuid",
"razaoSocial": "Empresa Exemplo LTDA",
...
}
PUT /clients/:id
Atualiza um cliente existente.
Request Body: (mesmos campos do POST, todos opcionais)
Response (200 OK):
{
"id": "uuid",
"razaoSocial": "Empresa Exemplo LTDA Atualizada",
...
}
DELETE /clients/:id
Remove um cliente (soft delete).
Response (204 No Content)
Permissões
- ADMIN: Acesso total
- RESPONSAVEL_TECNICO: Apenas seus clientes vinculados
- CLIENT: Apenas seus próprios dados
Validações
- CNPJ deve ser válido (validado via Receita Federal)
- Email deve ser único
- Campos obrigatórios: razaoSocial, nomeFantasia, cnpj, email, endereço completo