Auth — /api/v1/auth
Módulo: AuthLoginModule
BD: conexão USER_PROFILES (AUTH_DATABASE_*) — public."user" e tabelas relacionadas.
Controller: AuthV1Controller
Tag Swagger: Central Auth — Autenticação
Rotas
| Método | Rota | Auth | Descrição |
|---|---|---|---|
POST | /api/v1/auth/login | Pública | Login email/senha → JWT |
POST | /api/v1/auth/logout | Bearer | Decrementa sessões ativas |
POST | /api/v1/auth/register | Pública | Registo de utilizador |
GET | /api/v1/auth/users/:userId | Bearer | Perfil completo (próprio ou admin) |
PATCH | /api/v1/auth/users/:userId | Bearer | Atualização parcial |
PATCH | /api/v1/auth/users/:userId/permissions | Bearer | Grant/revoke permissões |
POST /api/v1/auth/login
Body
| Campo | Obrigatório | Notas |
|---|---|---|
email | Sim | E-mail válido |
password | Sim | Não vazio |
tenantId / tid | Não | Incluído no JWT se enviado |
200: { accessToken, tokenType, expiresIn, user }
| HTTP | Mensagem típica |
|---|---|
| 401 | Credenciais inválidas |
| 403 | Conta não disponível para login |
POST /api/v1/auth/logout
200: { success: true, sessoesAtivas: number }
POST /api/v1/auth/register
Body (mínimo): nome, email, password (8–128).
Opcionais: role, displayName, addresses, documents, permissoes, branding, personalData, etc.
201: UserFullResponseDto
409: Email já registado
GET /api/v1/auth/users/:userId
Qualquer JWT válido (não está limitado ao próprio utilizador no controller actual).
200: perfil completo · 401 JWT · 404 não encontrado
PATCH /api/v1/auth/users/:userId
Patch parcial. Arrays (addresses, documents, permissoes) substituem quando enviados.
PATCH /api/v1/auth/users/:userId/permissions
Body: { grant?: string[], revoke?: string[], updatedBy?: uuid }
IDs: permissao_id ou chave da tabela permissoes.
200: { userId, granted, revoked, active, updatedAt, updatedBy }
Detalhe de campos: docs/GUIA_FRONTEND_APIS.md, docs/FRONTEND_LOGIN.md.