Pular para o conteúdo principal

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étodoRotaAuthDescrição
POST/api/v1/auth/loginPúblicaLogin email/senha → JWT
POST/api/v1/auth/logoutBearerDecrementa sessões ativas
POST/api/v1/auth/registerPúblicaRegisto de utilizador
GET/api/v1/auth/users/:userIdBearerPerfil completo (próprio ou admin)
PATCH/api/v1/auth/users/:userIdBearerAtualização parcial
PATCH/api/v1/auth/users/:userId/permissionsBearerGrant/revoke permissões

POST /api/v1/auth/login

Body

CampoObrigatórioNotas
emailSimE-mail válido
passwordSimNão vazio
tenantId / tidNãoIncluído no JWT se enviado

200: { accessToken, tokenType, expiresIn, user }

HTTPMensagem típica
401Credenciais inválidas
403Conta 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.