Pular para o conteúdo principal

Login (JWT)

POST /v1/auth/login

Autentica um usuario originador e retorna um token JWT.

Request​

{
"email": "usuario@empresa.com",
"password": "sua_senha_segura"
}
CampoTipoObrigatorioValidacao
emailstringSim5-254 caracteres
passwordstringSim8-256 caracteres

Exemplos​

curl -X POST https://receivables-api.zemocapital.com/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "dev.admin@zemocapital.com", "password": "sua_senha"}'

Response 200​

{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"user": {
"id": "01970dc6-61cb-721a-9f4b-1bde936a0503",
"originator_id": "01970dc5-a1b2-7123-8abc-def012345678",
"email": "dev.admin@zemocapital.com",
"full_name": "Admin Dev",
"role": "OWNER"
}
}

Response 401​

Senha nao provada — e-mail inexistente, senha errada ou conta bloqueada com senha errada. Os tres casos devolvem o mesmo status e o mesmo corpo: a rota nao revela se a conta existe.

O tempo de resposta tambem nao denuncia a existencia da conta — o login roda a mesma verificacao de senha (mesmo custo de KDF) quando o e-mail nao existe. E uma mitigacao de canal lateral temporal: a garantia de contrato e a igualdade de status e corpo.

{"detail": "invalid_credentials"}

Response 423​

Senha CORRETA e conta bloqueada (30 minutos apos 5 falhas). So o dono da credencial ve este codigo. Passados os 30 minutos o desbloqueio e automatico e o contador de falhas volta a zero — uma nova trava exige 5 novas falhas.

{"detail": "user_locked"}
Token de curta duracao

O JWT expira em 15 minutos. Faca login novamente quando receber 401 token_expired.


Verificar sessao​

GET /v1/auth/me

Retorna os dados do usuario autenticado.

curl https://receivables-api.zemocapital.com/v1/auth/me \
-H "Authorization: Bearer $TOKEN"