Skip to main content

Campos

CampoTipoDescrição
otpIdUUIDIdentificador único
userIdUUIDReferência ao usuário
codeStringCredencial protegida do código OTP (nunca armazenado em texto puro)
contextOtpContextContexto de uso do código
recipientStringDestinatário da entrega (telefone do usuário)
expiresAtDateTimeData de expiração do código
usedAtDateTime?Data em que o código foi utilizado
createdByUUID?Usuário que criou o registro, quando aplicável
createdAtDateTimeData de criação
updatedByUUID?Usuário que fez a última atualização, quando aplicável
updatedAtDateTimeData da última atualização

Relacionamentos

  • Relaciona-se com User

Regras de Negócio

  • O código tem vida curta — expira em 2 minutos após a criação (expiresAt).
  • Apenas a versão protegida do code é mantida; o valor em texto puro só existe no momento da entrega ao destinatário.
  • Uso único — após validado, usedAt é preenchido e o código não pode ser reutilizado.
  • O campo context determina o fluxo ao qual o OTP está associado.

Enums

OtpContext

ValorDescrição
RESET_PASSWORDRecuperação de senha
RESET_PHONEVerificação para troca de telefone
RESET_EMAILVerificação para troca de email

Example

{
  "otpId": "0197a7fb-5227-7e39-a12d-ae3f6d50a732",
  "userId": "0197a7f5-2a88-7c1e-9b65-1f6d8f3b3a10",
  "code": "$protected_otp_hash",
  "context": "RESET_PASSWORD",
  "recipient": "+5511987654321",
  "expiresAt": "2026-07-03T12:02:00.000Z",
  "usedAt": null,
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-03T12:00:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-03T12:00:00.000Z"
}