Pular para o conteúdo principal

Password Recovery Request

POST 

/company/auth/recovery

Endpoint para solicitar recuperação de senha de usuários corporativos.
Executa as seguintes operações:

  1. Valida o formato do e-mail
  2. Busca o usuário no banco de dados
  3. Gera um token de recuperação único
  4. Envia e-mail com link para redefinir a senha

Fluxo detalhado:

  1. Cliente envia e-mail no formato JSON
  2. Servidor valida o formato do e-mail (401 se inválido)
  3. Busca usuário por e-mail
  4. Gera token aleatório
  5. Armazena token no banco de dados associado ao usuário
  6. Envia e-mail com link contendo o token
  7. O link redireciona para formulário de nova senha

Segurança:

  • Por segurança, sempre retorna 200 OK para não revelar e-mails registrados
  • Os tokens têm validade limitada
  • Cada token é de uso único
  • Requer HTTPS
  • Verifica também em usuários desabilitados (soft delete)

Comportamento especial:

  • Se o e-mail não existir: retorna 200 com USER_NOT_FOUND
  • Se o usuário estiver desabilitado: retorna 200 com USER_DISABLED
  • Usuários de demonstração (cia@testing.com, ciamu@testing.com): retornam 200 sem enviar e-mail

Exemplo de requisição:

{
email: usuario@empresa.com
}

Exemplos de resposta:

E-mail válido encontrado:

{
op: recovery,
message: RECOVERY_EMAIL_SENT,
email: usuario@empresa.com
}

E-mail não encontrado (por segurança retorna 200):

{
op: recovery,
message: USER_NOT_FOUND,
email: naoexiste@empresa.com
}

Usuário desabilitado:

\{
op: recovery,
message: USER_DISABLED,
email: usuario@empresa.com

<Heading
id={"request"}
as={"h2"}
className={"openapi-tabs__heading"}
children={"Request"}
>
</Heading>

<ParamsDetails
parameters={[{"name":"lang","in":"query","description":"Idioma para o e-mail de recuperação","required":false,"schema":{"type":"string","default":"en","enum":["en","es"]}}]}
>

</ParamsDetails>

<RequestSchema
title={"Body"}
body={{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"E-mail do usuário para recuperar senha","example":"usuario@empresa.com"}},"required":["email"],"title":"RecoveryRequest"}}},"required":true}}
>

</RequestSchema>

<StatusCodes
id={undefined}
label={undefined}
responses={{"200":{"description":"Processado (sempre retorna 200 por segurança)","content":{"application/json":{"schema":{"type":"object","properties":{"op":{"type":"string","enum":["recovery"],"example":"recovery"},"message":{"type":"string","enum":["RECOVERY_EMAIL_SENT","USER_NOT_FOUND","USER_DISABLED"],"example":"RECOVERY_EMAIL_SENT"},"email":{"type":"string","format":"email","example":"usuario@empresa.com"}}}}},"headers":{}},"401":{"description":"E-mail não fornecido ou formato inválido","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":401},"message":{"type":"string","example":"NOT_VALID"}}}}},"headers":{}}}}
>

</StatusCodes>