Jornada Alteração/Recuperação de Senha
Diagrama do Fluxo
Representação documental dos dois fluxos descritos nesta jornada: alteração (usuário logado) e recuperação (usuário deslogado), ambos com validação OTP.
Esta API fornece os endpoints para que usuários autenticados possam alterar sua senha de acesso e para que usuários não autenticados possam recuperar uma senha esquecida.
Visão Geral
A jornada de alteração e recuperação de senha é dividida em dois fluxos principais:
Fluxo de Alteração de Senha (Usuário Logado):
- O cliente chama
/security/me/password/mail/otp/challengepara receber um código via e-mail - O cliente chama
/security/me/password/mail/otp/validatepara validar o código recebido - (Opcional, se mais fatores forem necessários) O cliente chama os endpoints de SMS (
/sms/otp/...) - Após a validação dos desafios, o cliente chama
/v2/security/me/password/changecom a nova senha
Fluxo de Recuperação de Senha (Usuário Deslogado):
- O cliente chama
/security/password/recover/challenge(ou/mail/challenge) informando o documento do usuário para receber um código de recuperação - O cliente chama
/security/password/recovery/validate(ou/mail/validate) para validar o código - Após a validação, o cliente chama
/security/password/recoverypara definir a nova senha
1. Gerar Desafio OTP por Email (Alteração)
Gera um desafio OTP por e-mail para alterar a senha
Inicia o fluxo de alteração de senha para um usuário autenticado, enviando um código de uso único (OTP) para o e-mail cadastrado.
Endpoint: POST /security/me/password/mail/otp/challenge
Headers:
X-BuildersBank-Authorization: {token_de_sessao}
Content-Type: application/json
Resposta de Sucesso (200):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 300,
"attempts": 3
}
Possíveis Erros:
401- Não autorizado (token ausente ou inválido)403- Proibido (token válido, mas não possui o escopo 'accounts-consumer')
2. Validar Desafio OTP de Email (Alteração)
Valida o desafio OTP de e-mail
Valida o código OTP que o usuário recebeu por e-mail.
Endpoint: POST /security/me/password/mail/otp/validate
Headers:
X-BuildersBank-Authorization: {token_de_sessao}
Content-Type: application/json
Request Body:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"code": "123456"
}
Resposta de Sucesso (200):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 300,
"attempts": 2
}
Possíveis Erros:
400- Requisição inválida ou OTP incorreto401- Não autorizado403- Proibido
3. Efetuar Alteração da Senha
Efetiva a alteração da senha
Após a validação bem-sucedida dos desafios (OTP), este endpoint define a nova senha para o usuário.
Endpoint: POST /v2/security/me/password/change
Headers:
X-BuildersBank-Authorization: {token_de_sessao}
Content-Type: application/json
Request Body:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"credential": "NewStrongP@ssw0rd!",
"oldCredential": "OldP@ssw0rd123"
}
Resposta de Sucesso (200):
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ey...",
"refreshToken": "def502006a2c63c033a8a7a3f4c4a24a...",
"expiresIn": 86400
}
Possíveis Erros:
400- Requisição inválida (ex: senha não atende aos critérios de segurança)401- Não autorizado403- Proibido
4. Gerar Desafio OTP para Recuperação
Gera um desafio OTP por SMS para recuperar a senha
Inicia o fluxo de recuperação de senha para um usuário, enviando um código OTP para o celular cadastrado com base no documento informado.
Endpoint: POST /security/password/recover/challenge
Headers:
Content-Type: application/json
Request Body:
{
"document": "12345678900"
}
Resposta de Sucesso (200):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 300,
"attempts": 3
}
Possíveis Erros:
400- Documento não encontrado ou formato inválido
5. Validar Desafio OTP de Recuperação
Valida o desafio OTP de recuperação
Valida o código OTP que o usuário recebeu (seja por SMS ou e-mail) para prosseguir com a recuperação.
Endpoint: POST /security/password/recovery/validate
Headers:
Content-Type: application/json
Request Body:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"code": "123456",
"document": "12345678900"
}
Resposta de Sucesso (200):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 300,
"attempts": 2
}
Possíveis Erros:
400- Requisição inválida ou OTP incorreto
6. Efetuar Recuperação da Senha
Efetiva a recuperação da senha
Após a validação do OTP, este endpoint define a nova senha para o usuário.
Endpoint: POST /security/password/recovery
Headers:
Content-Type: application/json
Request Body:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"credential": "NewStrongP@ssw0rd!"
}
Resposta de Sucesso (200):
- Senha recuperada e alterada com sucesso
Possíveis Erros:
400- Requisição inválida (ex: token de validação OTP expirado ou senha fora do padrão)
7. Schemas de Dados
Modelos de Request e Response
OTPChangeCredentialResponse
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 300,
"attempts": 3
}
ValidateOTPChangeCredentialRequest
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"code": "123456",
"document": "12345678900"
}
ChangeCredentialRequest
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"credential": "NewStrongP@ssw0rd!",
"oldCredential": "OldP@ssw0rd123"
}
AuthenticationValidateResponse
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ey...",
"refreshToken": "def502006a2c63c033a8a7a3f4c4a24a...",
"expiresIn": 86400
}
ErrorResponse
{
"timestamp": "2023-12-01T10:30:00.000Z",
"status": 400,
"error": "Bad Request",
"message": "Código OTP inválido",
"path": "/security/password/recovery/validate"
}
8. Autenticação
Token de Autorização
Para endpoints protegidos, utilize o header:
X-BuildersBank-Authorization: {token_de_sessao}
Descrição: Token de sessão do usuário obtido no fluxo de login. Para os endpoints protegidos, este token deve ser válido e conter o escopo "accounts-consumer".
Servidor:
- Produção:
https://api.buildersbank.com.br