Skip to main content

Visão Geral

A API usa Session Cookie para autenticação — não Bearer Token. O fluxo é:
  1. Frontend chama POST /auth/login com e-mail e senha
  2. O backend valida as credenciais na Firebase Identity Toolkit, cria um session cookie via Firebase Admin SDK e o seta na resposta
  3. Todas as requisições seguintes enviam o cookie automaticamente (browser/fetch com credentials: "include")
  4. O middleware verificarToken valida o cookie em cada requisição usando admin.auth().verifySessionCookie()
O cookie tem nome configurável via SESSION_COOKIE_NAME (padrão: imob_session) e expira em SESSION_EXPIRES_DAYS dias (padrão: 5).

Login

Resposta 200
O cookie imob_session é setado automaticamente na resposta com as flags httpOnly, secure e sameSite: none em produção. Erros possíveis:
401 — Credenciais inválidas
403 — Conta desativada

Como fazer requisições autenticadas

No frontend, use credentials: "include" em todas as chamadas para que o browser envie o cookie automaticamente:
Nenhum header Authorization é necessário — o cookie é enviado automaticamente pelo browser.

Logout

Invalida o cookie e revoga os refresh tokens do Firebase.
Resposta 200

Registro

Cria uma conta nova. O primeiro usuário registrado recebe automaticamente o role SUPER_ADMIN. Os demais recebem LOCADOR. Suporta Pessoa Física (PF) e Pessoa Jurídica (PJ).
Resposta 201
Um e-mail de verificação é enviado via Brevo automaticamente após o registro. A chamada não é bloqueada pelo envio — se falhar, apenas um aviso é logado.

Campos obrigatórios por tipo de pessoa

PF: nomeCompleto, cpf, mais o endereço completo. PJ: razaoSocial, cnpj, nomeResponsavel, mais o endereço completo.

Verificação de e-mail

Reenviar e-mail de verificação

Rate limit interno: 1 envio a cada 2 minutos por usuário.

Confirmar verificação

Chamado pelo frontend após o usuário clicar no link e o Firebase processar. Atualiza emailVerificado: true no Firestore.

Recuperação de senha

Envia o link de redefinição via Brevo. Por segurança, a resposta é sempre 200 independente de o e-mail existir ou não.
Resposta 200

Perfil do usuário autenticado

Buscar perfil

Atualizar perfil

Campos protegidos e ignorados mesmo que enviados: userId, email, role, tipoPessoa, cpf, cnpj, criadoEm, emailVerificado.

Erros de autenticação

Como a autenticação usa cookie HttpOnly, ela não funciona via ferramentas como Postman ou curl sem configuração adicional. Para testar endpoints autenticados nessas ferramentas, faça o login primeiro e copie o valor do cookie imob_session da resposta.