Skip to main content

Campos

CampoTipoDescrição
inviteIdUUIDIdentificador único
invitedByUserIdUUIDUsuário que emitiu ou originou o token
invitedUserIdUUID?Usuário convidado ou ativado
organizationIdUUID?Organização do convite — ausente em convites internos e ativações de conta
roleIdUUID?Role atribuída no aceite — usada apenas por MEMBER
typeInviteTypeTipo do token (MEMBER, DRIVER ou ACCOUNT_ACTIVATION)
tokenStringToken único usado no link
emailString?Email do convidado ou usuário ativado, quando informado
phoneIsoStringCódigo ISO do país do telefone (padrão BR)
phoneDdiStringDDI do telefone
phoneNumberStringNúmero do telefone
expiresAtDateTimeData de expiração do token
acceptedAtDateTime?Data em que o token foi aceito
revokedAtDateTime?Data de revogação
rejectedAtDateTime?Data de rejeição
createdByUUID?Usuário que criou o registro, quando aplicável
updatedByUUID?Usuário que fez a última atualização, quando aplicável
createdAtDateTimeData de criação

Relacionamentos

  • Relaciona-se com User (como invitedBy — emissor ou responsável pelo token)
  • Relaciona-se com User (como invitedUser — usuário convidado ou ativado, opcional)
  • Relaciona-se com Organization (opcional — apenas convites de organização)
  • Relaciona-se com Role (opcional — apenas type=MEMBER)

Regras de Negócio

  • O Invite é baseado em token único, com telefone obrigatório (phoneDdi + phoneNumber) e email opcional.
  • Possui data de expiração (expiresAt, padrão 7 dias) — após o vencimento, o token não pode ser aceito.
  • Pode ser revogado (revokedAt) ou rejeitado (rejectedAt) enquanto ainda não foi aceito.
  • organizationId diferencia convites de organização dos fluxos sem organização:
    • null + type=MEMBER representa convite interno de BackOffice.
    • preenchido + type=MEMBER representa convite de membro de organização.
    • preenchido + type=DRIVER representa convite de motorista.
    • null + type=ACCOUNT_ACTIVATION representa ativação de uma conta já criada.
  • roleId é obrigatório para MEMBER e ausente para DRIVER e ACCOUNT_ACTIVATION.
  • invitedUserId é preenchido no aceite de MEMBER e DRIVER, quando o User é resolvido por telefone/email ou criado. Em ACCOUNT_ACTIVATION, ele já referencia a conta que será ativada.
  • O type determina o efeito do aceite:
    • MEMBER -> concede Membership ACTIVE com a roleId do convite. Convites internos usam Role INTERNAL; convites de organização usam Role ENVIRONMENT ou ORGANIZATION.
    • DRIVER -> garante Driver e ativa o vínculo DriverCompany. A Company associada vem da relação Organization -> Company no momento do aceite. Não concede Membership.
    • ACCOUNT_ACTIVATION -> define a senha da conta referenciada por invitedUserId e torna o usuário apto a autenticar.
  • Claims de acesso não são gravados no Invite. Eles são derivados pelo Profile a partir do resultado do aceite.
  • O Invite não carrega companyId. Para convites type=DRIVER, o companyId é resolvido no aceite via organizationId -> Company.
  • O modelo não possui campo updatedAt.

Enums

InviteType

ValorDescrição
MEMBERConvite para membro — concede Membership ACTIVE com role
DRIVERConvite para motorista — garante Driver e ativa vínculo DriverCompany
ACCOUNT_ACTIVATIONToken para ativação de conta criada sem senha

InviteStatus (derivado)

O status é calculado a partir dos timestamps (acceptedAt, revokedAt, rejectedAt, expiresAt).
ValorCondição
ACCEPTEDacceptedAt preenchido
REVOKEDrevokedAt preenchido
REJECTEDrejectedAt preenchido
EXPIREDexpiresAt no passado
PENDINGnenhuma das condições acima

Example

{
  "inviteId": "0197a804-414d-79a3-a5c0-bb5c52185d23",
  "invitedByUserId": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "invitedUserId": null,
  "organizationId": "0197a7f7-7291-7a43-96db-2c8580b80c5d",
  "roleId": "0197a7f8-15d1-7320-9b60-02497d7a0d61",
  "type": "MEMBER",
  "token": "invite_8dW2nQ4pL6",
  "email": "mariana.costa@example.com",
  "phoneIso": "BR",
  "phoneDdi": "55",
  "phoneNumber": "11987654321",
  "expiresAt": "2026-07-10T13:30:00.000Z",
  "acceptedAt": null,
  "revokedAt": null,
  "rejectedAt": null,
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-03T13:30:00.000Z"
}