Files
duorigin-v2/docs/API-ROUTES.md

4.8 KiB

DuOrigin v2 - API Routes

Autenticação

Todas as rotas (exceto login/registro) requerem autenticação via JWT. Header: Authorization: Bearer <token>

POST /api/auth/login

Login de usuário.

// Request
{ "email": "user@email.com", "password": "senha123" }

// Response
{ "success": true, "data": { "accessToken": "jwt...", "tokenType": "bearer" } }

POST /api/auth/registro

Registrar novo usuário.

// Request
{ "email": "user@email.com", "password": "senha123", "fullName": "Nome", "role": "operator" }

// Response
{ "success": true, "data": { "id": 1, "email": "...", "fullName": "...", "role": "operator", "isActive": true, "createdAt": "..." } }

GET /api/auth/me

Dados do usuário logado.

// Response
{ "success": true, "data": { "id": 1, "email": "...", "fullName": "...", "role": "...", "isActive": true, "createdAt": "..." } }

Empresas (Companies)

GET /api/empresas

Lista todas as empresas.

POST /api/empresas

Criar nova empresa.

{ "name": "Nome", "cnpj": "12345678000190", "country": "BR", "state": "SP", "city": "São Paulo", "euOperatorId": "EU-001" }

GET /api/empresas/[id]

Detalhes de uma empresa.

PUT /api/empresas/[id]

Atualizar empresa.

DELETE /api/empresas/[id]

Excluir empresa.


Propriedades (Producers)

GET /api/propriedades

Lista todas as propriedades. Query: ?companyId=1 para filtrar por empresa.

POST /api/propriedades

Criar nova propriedade.

{ "name": "Nome", "cpfCnpj": "12345678901", "companyId": 1, "state": "MT", "city": "Cuiabá", "carCode": "MT-123" }

GET /api/propriedades/[id]

Detalhes de uma propriedade.

PUT /api/propriedades/[id]

Atualizar propriedade.

DELETE /api/propriedades/[id]

Excluir propriedade.


Avaliações (Areas)

GET /api/avaliacoes

Lista todas as avaliações/áreas. Query: ?producerId=1 para filtrar por produtor.

POST /api/avaliacoes

Criar nova avaliação.

{ "name": "Nome", "producerId": 1, "geojson": "{...}", "areaHa": 100.5, "biome": "Cerrado", "latCenter": -15.0, "lonCenter": -56.0 }

GET /api/avaliacoes/[id]

Detalhes de uma avaliação.

PUT /api/avaliacoes/[id]

Atualizar avaliação.

DELETE /api/avaliacoes/[id]

Excluir avaliação.

POST /api/avaliacoes/[id]/gerar-dds

Gerar Due Diligence Statement para a avaliação.

// Request (opcional)
{ "notes": "Observações adicionais" }

// Response
{ "success": true, "data": { "id": 1, "referenceNumber": "DDS-ABC123", "status": "draft", ... } }

Dashboard

GET /api/dashboard/stats

Estatísticas do sistema.

{
  "success": true,
  "data": {
    "totalEmpresas": 10,
    "totalPropriedades": 50,
    "totalAvaliacoes": 100,
    "totalLotes": 200,
    "totalDds": 25,
    "ddsByStatus": { "draft": 5, "submitted": 10, "approved": 8, "rejected": 2 },
    "riskDistribution": { "low": 70, "medium": 20, "high": 8, "critical": 2 },
    "recentActivity": [...]
  }
}

Usuários (Admin Only)

GET /api/usuarios

Lista todos os usuários. Requer role admin.

GET /api/usuarios/[id]

Detalhes de um usuário.

PUT /api/usuarios/[id]

Atualizar usuário.

{ "email": "novo@email.com", "fullName": "Novo Nome", "role": "admin", "isActive": true, "password": "novaSenha" }

DELETE /api/usuarios/[id]

Excluir usuário (não pode excluir a si mesmo).


Formato de Resposta Padrão

Sucesso

{ "success": true, "data": { ... } }

Erro

{ "success": false, "error": "Mensagem de erro" }

Códigos de Status HTTP

  • 200 - OK
  • 201 - Created
  • 400 - Bad Request
  • 401 - Unauthorized
  • 403 - Forbidden
  • 404 - Not Found
  • 500 - Internal Server Error

Estrutura de Arquivos

src/app/api/
├── auth/
│   ├── login/route.ts      # POST - Login
│   ├── registro/route.ts   # POST - Registro
│   └── me/route.ts         # GET - Dados do usuário
├── empresas/
│   ├── route.ts            # GET list, POST create
│   └── [id]/route.ts       # GET, PUT, DELETE
├── propriedades/
│   ├── route.ts            # GET list, POST create
│   └── [id]/route.ts       # GET, PUT, DELETE
├── avaliacoes/
│   ├── route.ts            # GET list, POST create
│   ├── [id]/route.ts       # GET, PUT, DELETE
│   └── [id]/gerar-dds/route.ts  # POST - Gerar DDS
├── dashboard/
│   └── stats/route.ts      # GET - Estatísticas
└── usuarios/
    ├── route.ts            # GET list (admin)
    └── [id]/route.ts       # GET, PUT, DELETE (admin)

Libs Auxiliares

  • src/lib/prisma.ts - Prisma Client singleton
  • src/lib/auth.ts - JWT helpers (createToken, verifyToken, requireAuth, requireAdmin)
  • src/lib/password.ts - bcrypt helpers (hashPassword, verifyPassword)