API: registo de utilizador — POST /api/v1/auth/register
Contrato: apis/02-auth.md · catálogo.
Cria um registo em public."user" na BD G_DB_POSTGRESS, com dados relacionais nas tabelas user_addresses, user_branding, user_documents, user_permissoes e user_personal_data (transação única).
Endpoint
| Item | Valor |
|---|---|
| Método | POST |
| URL | {BASE_URL}/api/v1/auth/register |
| Auth | Não (rota pública) |
Corpo (application/json)
Campos base
| Campo | Obrigatório | Regras |
|---|---|---|
nome | Sim | Texto não vazio, máx. 255 → nome_completo. |
email | Sim | E-mail válido; guardado em minúsculas. |
password | Sim | Entre 8 e 128 caracteres; bcrypt em password. |
role | Não | Máx. 50 caracteres. |
displayName | Não | Máx. 100 → display_name. |
roleNumber | Não | Máx. 20 → role_number. |
roleId | Não | UUID v4 → role_id. |
createdByUuid | Não | UUID v4 → created_by_uuid. |
status | Não | Omite → ativo. |
Campos legados (mapeados para tabelas relacionais)
rg, cpf, cep, endereco, numero, cidade, estado, telefone, dataAniversario, tipoPessoa, roleUuid, metadata.
Coleções aninhadas (opcional)
| Campo | Tipo | Destino |
|---|---|---|
addresses | array | user_addresses |
branding | objeto | user_branding |
documents | array | user_documents |
permissoes | array | user_permissoes |
personalData | objeto | user_personal_data |
Exemplo mínimo
{
"nome": "Maria Silva",
"email": "maria@exemplo.pt",
"password": "senhaSegura8"
}
Resposta 201 Created
Devolve UserFullResponseDto (mesmo formato do login em user):
id,nomeCompleto,displayName,email,role,roleNumber,roleId,status,metadata,jwtRoleaddresses,branding,documents,permissoes,personalDatacreatedAt,updatedAt,dataCadastro
Não devolve token; o cliente pode chamar POST /api/v1/auth/login a seguir.
Erros
| HTTP | Quando |
|---|---|
| 400 | Validação (password curto, email inválido, etc.). |
| 409 | Email duplicado → Email já registado. |
Backend: RegisterService + AuthUserEntity na conexão userProfilesConnection.