Convites

Verifique, aceite ou recuse um convite de organization para o Tokeflow Dashboard usando o token assinado do e-mail de convite.

Proprietários e administradores da Organization adicionam colegas de equipe ao Tokeflow Dashboard enviando convites. O convidado recebe um e-mail com um link que carrega um token de convite assinado e de uso único. Os três endpoints desta página alimentam esse fluxo de aterrissagem: a UI do Dashboard primeiro verifica o token para mostrar quem está convidando quem e para qual função, e então o convidado aceita (criando antes uma conta de usuário, caso ainda não tenha uma) ou recusa.

Aceitar um convite concede ao convidado uma associação na organization com a função escolhida por quem convidou — owner, admin, ou viewer. Os papéis e o que cada um pode ver estão descritos em Organizations e Merchants.

Estes endpoints alimentam a interface do Tokeflow Dashboard. Diferente do restante da superfície do dashboard — que exige uma sessão autenticada (JWT bearer) — os endpoints de convite são deliberadamente não autenticados: o convidado pode ainda não ter uma conta, então o token de convite assinado do e-mail é a única credencial. Eles nunca aceitam chaves de API sk_/pk_.

Como o fluxo funciona

Sempre verifique antes de renderizar um formulário de aceite: a flag is_new_user no resultado da verificação informa se você deve pedir uma senha ao convidado (conta nova) ou apenas confirmar (conta existente).

O objeto de resultado da verificação

GET /api/v1/invitations/verify retorna este objeto. Apenas valid está sempre presente; os campos descritivos são anuláveis (nullable) e são o que o Dashboard exibe na página de aterrissagem do convite.

FieldTypeDescription
validbooleanSe o token de convite é válido.
emailstring | nullEndereço de e-mail associado ao convite.
organization_namestring | nullNome da organization para a qual o convite é destinado.
rolestring | nullPapel que será atribuído ao convidado: owner, admin, ou viewer.
inviter_namestring | nullNome do usuário que enviou o convite.
expires_atstring | nullData de expiração do convite (ISO 8601 UTC).
is_new_userbooleanSe este convite é para um novo usuário sem conta existente. Quando true, a chamada de aceite deve incluir password e confirm_password.

Endpoints

GET/api/v1/invitations/verify

Auth: Nenhuma — o token de convite é a credencial. Nenhuma Dashboard session é necessária.

Verifica um token de convite e retorna os detalhes necessários para renderizar a página de aterrissagem do convite: quem convidou, para qual organization e papel, quando o convite expira, e se o convidado precisa criar uma conta.

Parâmetros de consulta

FieldTypeRequiredDescription
tokenstringSimToken de convite a verificar (do link de convite).

Exemplo de requisição

curl -G https://api.tokeflow.com/api/v1/invitations/verify \
  --data-urlencode "token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…"

Exemplo de resposta — 200 OK

{
  "valid": true,
  "email": "jane@acme.com",
  "organization_name": "Acme Digital",
  "role": "admin",
  "inviter_name": "Carlos Prado",
  "expires_at": "2026-08-19T12:00:00.000Z",
  "is_new_user": true
}

Um token inválido não é um erro HTTP. Um token inválido ou expirado ainda retorna 200 OK com valid: false (e campos descritivos nulos) — decida com base no campo valid, não no código de status.

Exemplo de resposta — 200 OK, token expirado

{
  "valid": false,
  "email": null,
  "organization_name": null,
  "role": null,
  "inviter_name": null,
  "expires_at": null,
  "is_new_user": false
}

POST/api/v1/invitations/accept

Auth: Nenhuma — o token de convite no corpo da requisição é a credencial. Nenhuma Dashboard session é necessária.

Aceita um convite e concede ao convidado uma associação na organization. Quando o convite é para um novo usuário (is_new_user: true no resultado da verificação), inclua password e confirm_password — a conta de usuário é criada com essa senha como parte do aceite.

Campos da requisição

FieldTypeRequiredDescription
tokenstringSimToken de convite do link de convite.
namestringNãoNome de exibição que o convidado deseja usar.
passwordstringCondicionalSenha para novos usuários. Se fornecida, a conta de usuário será criada com essa senha. Obrigatório quando o resultado da verificação mostra is_new_user: true.
confirm_passwordstringCondicionalDeve corresponder a password. As senhas devem ter de 12 a 128 caracteres e incluir uma letra minúscula, uma letra maiúscula e um número.

Exemplo de requisição — novo usuário

curl -X POST https://api.tokeflow.com/api/v1/invitations/accept \
  -H "Content-Type: application/json" \
  -d '{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
    "name": "Jane Doe",
    "password": "mySecureP@ss123",
    "confirm_password": "mySecureP@ss123"
  }'

Exemplo de requisição — usuário existente

curl -X POST https://api.tokeflow.com/api/v1/invitations/accept \
  -H "Content-Type: application/json" \
  -d '{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" }'

Resposta — 201 Created

Um aceite bem-sucedido retorna 201 Created com corpo vazio. O convidado agora pode fazer login no Dashboard com seu e-mail e senha.


POST/api/v1/invitations/decline

Auth: Nenhuma — o token de convite no corpo da requisição é a credencial. Nenhuma Dashboard session é necessária.

Recusa um convite. O token é consumido e o convidado não é adicionado à organization; quem convidou sempre pode enviar um novo convite depois.

Campos da requisição

FieldTypeRequiredDescription
tokenstringSimToken de convite do link de convite.

Exemplo de requisição

curl -X POST https://api.tokeflow.com/api/v1/invitations/decline \
  -H "Content-Type: application/json" \
  -d '{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" }'

Resposta — 201 Created

Uma recusa bem-sucedida retorna 201 Created com corpo vazio.


Erros

Os casos mais comuns para estes endpoints:

HTTPCausa típica
400Requisição malformada — token ausente, senhas não coincidentes, ou uma senha que não atende às regras de complexidade.
401O token de convite é inválido, expirado, ou já foi usado ao aceitar ou recusar. Chame verificar primeiro para mostrar ao convidado um estado amigável.

Consulte Erros para o formato geral de erro usado em toda a API.

Relacionados

Nesta página