Endpoints de Autenticação
POST /auth/register
Seção intitulada “POST /auth/register”Registra uma nova conta de usuário.
Requisição
Seção intitulada “Requisição”POST /api/v1/auth/registerContent-Type: application/json{ "email": "usuario@exemplo.com", "first_name": "João", "last_name": "Silva", "phone_number": "+5588998689699", "password": "senha_segura", "role": "OWNER", "activity": "SHRIMP_PRODUCER", "annual_production": "BETWEEN_50_AND_100_TONS", "address": { "street": "Rua das Flores", "number": 123, "city": "Fortaleza", "state": "CE", "zip_code": "60000-000", "country": "Brazil", "complement": "Apto 4B", "is_primary": true }}Parâmetros do Body
Seção intitulada “Parâmetros do Body”| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email | string (email) | ✅ | Email válido do usuário |
first_name | string | ✅ | Primeiro nome do usuário (mínimo 2 caracteres) |
last_name | string | ✅ | Sobrenome do usuário (mínimo 2 caracteres) |
phone_number | string | ✅ | Telefone no formato internacional (ex: +5588998689699) |
password | string | ✅ | Senha do usuário |
role | enum | ✅ | Papel do usuário: ADMIN, OWNER ou OPERATOR |
activity | enum | ✅ | Tipo de atividade do usuário (veja abaixo) |
annual_production | enum | ✅ | Faixa de produção anual (veja abaixo) |
address | object | ✅ | Endereço principal do usuário |
Papéis de Usuário
Seção intitulada “Papéis de Usuário”| Papel | Descrição |
|---|---|
ADMIN | Administrador do sistema - acesso total |
OWNER | Proprietário de fazenda - gerencia fazendas próprias |
OPERATOR | Operador de fazenda - acesso limitado |
Tipos de Atividade
Seção intitulada “Tipos de Atividade”| Tipo | Descrição |
|---|---|
SHRIMP_PRODUCER | Produtor de camarão |
FISH_PRODUCER | Produtor de peixe |
FARM_EMPLOYEE | Funcionário de fazenda |
Faixas de Produção Anual
Seção intitulada “Faixas de Produção Anual”| Faixa | Descrição |
|---|---|
FINGERLINGS_JUVENILES_LARVAE | Produção de alevinos, juvenis ou larvas |
LESS_THAN_50_TONS | Menos de 50 toneladas por ano |
BETWEEN_50_AND_100_TONS | Entre 50 e 100 toneladas por ano |
BETWEEN_100_AND_200_TONS | Entre 100 e 200 toneladas por ano |
BETWEEN_200_AND_500_TONS | Entre 200 e 500 toneladas por ano |
MORE_THAN_500_TONS | Mais de 500 toneladas por ano |
OTHER | Outra faixa de produção |
Validação de Telefone
Seção intitulada “Validação de Telefone”- Deve iniciar com código do país (ex:
+55para Brasil) - Telefones brasileiros:
+55seguido de 10 ou 11 dígitos - Exemplo:
+5588998689699
Resposta 201 Created
Seção intitulada “Resposta 201 Created”{ "id": "550e8400-e29b-41d4-a716-446655440000", "email": "usuario@exemplo.com", "first_name": "João", "last_name": "Silva", "full_name": "João Silva", "phone_number": "+5588998689699", "role": "OWNER", "activity": "SHRIMP_PRODUCER", "annual_production": "BETWEEN_50_AND_100_TONS", "addresses": [ { "id": "addr-uuid", "street": "Rua das Flores", "number": 123, "city": "Fortaleza", "state": "CE", "zip_code": "60000-000", "country": "Brazil", "complement": "Apto 4B", "is_primary": true, "latitude": null, "longitude": null, "created_at": "2025-11-21T10:30:00Z" } ], "created_at": "2025-11-21T10:30:00Z", "updated_at": null}Possíveis Erros
Seção intitulada “Possíveis Erros”| Status | Detalhe |
|---|---|
400 | Email já registrado |
422 | Erro de validação (email, telefone, código de estado inválidos, etc.) |
POST /auth/login
Seção intitulada “POST /auth/login”Faz login e recebe um token de acesso JWT.
Requisição
Seção intitulada “Requisição”POST /api/v1/auth/loginContent-Type: application/json{ "email": "usuario@exemplo.com", "password": "senha_segura", "remember_me": false}Parâmetros do Body
Seção intitulada “Parâmetros do Body”| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email | string | ✅ | Email do usuário |
password | string | ✅ | Senha do usuário |
remember_me | boolean | ❌ | Se true, token expira em 30 dias |
Resposta 200 OK
Seção intitulada “Resposta 200 OK”{ "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "bearer"}Possíveis Erros
Seção intitulada “Possíveis Erros”| Status | Detalhe |
|---|---|
401 | Email ou senha incorretos |
POST /auth/logout
Seção intitulada “POST /auth/logout”Faz logout e invalida o token atual.
Requisição
Seção intitulada “Requisição”POST /api/v1/auth/logoutAuthorization: Bearer <token>Resposta 200 OK
Seção intitulada “Resposta 200 OK”{ "message": "Successfully logged out"}