Criar Usuário
Cria um novo usuário (Admin ou Informador) no sistema
Descrição
Cria um novo usuário no sistema com as seguintes funcionalidades:
- Permite criar Admin ou Informador
- Valida unicidade de email
- Se role = informador, exige campos adicionais (pronome, telefone, diocese, grupo, etc.)
- Suporta verificação de email opcional (configurável por usuário ou global)
- Envia email de verificação automaticamente se habilitado
- Gera iniciais automaticamente ignorando artigos e preposições (da, das, do, dos, e, de)
- Retorna o usuário criado com todos os relacionamentos
- Requer autenticação JWT válida
Detalhes do Endpoint
VERBO
POST
URL BASE
http://api.provista.dev.nabrasil.org.br/v1
ENDPOINT
/users
Cabeçalhos
| Parâmetro | Valor |
|---|---|
| Authorization | Bearer <token> |
| Content-Type | application/json |
Campos da Requisição (Base)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| first_name | string | Sim | Primeiro nome do usuário |
| last_name | string | Sim | Sobrenome do usuário |
| string | Sim | E-mail único do usuário | |
| password | string | Sim | Senha (mínimo 6 caracteres, deve conter pelo menos 1 letra maiúscula, 1 minúscula e 1 número) |
| role | string | Sim | Tipo de usuário: "admin" ou "informador" |
| img_url | string | Não | URL da foto de perfil do usuário |
| require_email_verification | boolean | Não | Se omitido, usa configuração global |
Campos Adicionais para Informador
Os campos abaixo são aplicados quando role = "informador":
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| treatment_pronoun_id | integer | Sim | ID do pronome de tratamento (Pe., Dom, Card., etc.) |
| phone | string | Sim | Telefone do informador |
| function | string | Sim | Função eclesiástica do informador |
| diocese_id | integer | Sim | ID da diocese do informador |
| group_id | string (UUID) | Sim | UUID do grupo eclesiástico |
| provision_candidate | string | Sim | Nome do candidato a provisão |
| cpf | string | Não | CPF apenas com números (11 dígitos) |
Normalização Automática
O sistema aplica normalização automática nos seguintes campos antes de salvar no banco de dados:
| Campo | Regra de Normalização | Exemplo |
|---|---|---|
| first_name | Primeira letra maiúscula, exceto artigos |
"joão" → "João"
|
| last_name | Primeira letra maiúscula, exceto artigos |
"da silva" → "da Silva"
|
| Tudo minúsculo |
"RICARDO@GMAIL.COM" → "ricardo@gmail.com"
|
|
| city | Primeira letra de cada palavra maiúscula |
"são paulo" → "São Paulo"
|
| state | Sempre maiúsculo |
"sp" → "SP"
|
| cpf | 11 dígitos numéricos + validação |
"11144477735" (válido)
|
Artigos que permanecem minúsculos: de, da, do, das, dos, e
Demais campos: Mantidos exatamente como digitado (apenas trim)
Exemplo de Requisição - Admin
{
"first_name": "Sergio",
"last_name": "Borges",
"email": "sluizborges@gmail.com",
"password": "Slb123",
"role": "admin",
"img_url": "https://via.placeholder.com/150/28a745/ffffff?text=SB",
"require_email_verification": false
}
Nota: O campo initials é gerado automaticamente pelo sistema a partir do primeiro e último nome (neste caso: "SB").
Exemplo de Requisição - Informador
{
"first_name": "João",
"last_name": "Silva",
"email": "joao.silva@diocese.com.br",
"password": "Info123",
"role": "informador",
"img_url": "https://via.placeholder.com/150/28a745/ffffff?text=JS",
"require_email_verification": false,
"treatment_pronoun_id": 1,
"phone": "(61) 98888-8888",
"function": "Padre",
"diocese_id": 1,
"group_id": "9fd6b694-602a-461f-a052-c473f59bbcc6",
"provision_candidate": "João Silva",
"cpf": "12345678901"
}
Nota: O campo initials é gerado automaticamente pelo sistema a partir do primeiro e último nome (neste caso: "JS").
Respostas
Sucesso - 201 (Admin criado)
{
"success": true,
"data": {
"id": "9fd6b694-602a-461f-a052-c473f59bbcc6",
"first_name": "Sergio",
"last_name": "Borges",
"email": "sluizborges@gmail.com",
"img_url": "https://via.placeholder.com/150/28a745/ffffff?text=SB",
"initials": "SB",
"email_verified_at": "2025-01-21T17:00:00.000000Z",
"role_id": 1,
"created_at": "2025-01-21T17:00:00.000000Z",
"updated_at": "2025-01-21T17:00:00.000000Z",
"role": {
"id": 1,
"name": "Administrador",
"slug": "admin"
}
},
"message": "Administrador criado com sucesso",
"email_verification_required": false
}
Sucesso - 201 (Informador criado)
{
"success": true,
"data": {
"id": "8fd7c805-713b-572g-b163-d584g60ccd7",
"first_name": "Mateus",
"last_name": "da Silva Almeida",
"email": "mateus.silva@diocese.com.br",
"img_url": "https://via.placeholder.com/150/28a745/ffffff?text=MS",
"initials": "MS",
"email_verified_at": "2025-01-21T17:00:00.000000Z",
"role_id": 2,
"created_at": "2025-01-21T17:00:00.000000Z",
"updated_at": "2025-01-21T17:00:00.000000Z",
"role": {
"id": 2,
"name": "Informador",
"slug": "informador"
},
"informer": {
"id": "7ec8d916-824c-683h-c274-e695h71dde8",
"user_id": "8fd7c805-713b-572g-b163-d584g60ccd7",
"cpf": "11144477735",
"treatment_pronoun_id": 1,
"phone": "(61) 98888-8888",
"function": "Padre",
"diocese_id": 1,
"group_id": "9fd6b694-602a-461f-a052-c473f59bbcc6",
"provision_candidate": "João Silva",
"created_at": "2025-01-21T17:00:00.000000Z",
"updated_at": "2025-01-21T17:00:00.000000Z",
"treatment_pronoun": {
"id": 1,
"name": "Pe.",
"description": "Padre"
},
"diocese": {
"id": 1,
"name": "Arquidiocese de Brasília",
"state": "DF"
},
"group": {
"id": "9fd6b694-602a-461f-a052-c473f59bbcc6",
"name": "Grupo 1",
"description": "Bispo em saída/transferido",
"color": "#007bff"
}
}
},
"message": "Informador criado com sucesso. Email de verificação enviado.",
"email_verification_required": true
}
Erro - 422 (Validação falhou)
{
"success": false,
"message": "Dados de validação inválidos",
"errors": {
"email": [
"O email já está em uso."
],
"role": [
"O campo role deve ser admin ou informador."
]
}
}
Erro - 401 (Token inválido)
{
"success": false,
"message": "Token inválido"
}
Códigos de Resposta
| Código | Descrição |
|---|---|
| 201 | Usuário criado com sucesso |
| 401 | Token inválido ou não fornecido |
| 422 | Dados de validação inválidos |