Nunciatura Provista

API Documentation V1

Criar Usuário

Cria um novo usuário (Admin ou Informador) no sistema

Este endpoint é do tipo: Protected

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
email 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"
email 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