O modelo e o porquê
Em vez de amarrar cada usuário a cada grupo individualmente (o que não escala), a Cativa usa uma camada indireta: o badge. O usuário recebe um badge, e o badge libera tudo o que está atrelado a ele. Trocar o acesso de mil pessoas vira uma operação de badge, não mil operações de grupo. Pense no badge como um crachá de acesso. O crachá “Premium” abre certas portas do prédio. Você não configura porta por porta para cada funcionário: dá o crachá certo e as portas certas abrem sozinhas.Ciclo de vida de um badge
1
Criar o badge (admin)
Um badge é criado uma vez, via
POST /admin/membership/badges ou no painel. Ele tem nome, imagem e relevância.2
Configurar o acesso (painel)
O admin marca, na tela de acesso de cada grupo/curso, quais badges liberam a entrada. Essa amarração vive no painel, não na API de parceiro.
3
Atribuir ao usuário (API)
Você atribui o badge ao usuário (por
userId ou por email). Nesse instante o acesso é liberado.4
Remover quando necessário (API)
Ao remover o badge, o acesso é revogado imediatamente. Ideal para cancelamento de assinatura.
Casos de uso reais
Compra externa libera grupo
Cliente compra na Hotmart: webhook chega na sua API, você atribui o badge
Premium ao usuário e ele já entra no grupo VIP.Assinatura cancelada revoga acesso
Cancelamento no Stripe: webhook chega, você remove o badge
Premium e o acesso ao curso some na hora.Turma com validade
Aluno da turma 2026: atribua o badge com
expirationDate e o acesso expira sozinho no fim do curso.Papel de mentor
Promoveu alguém a mentor: o badge
Mentor abre o grupo dos mentores sem mexer em cada grupo na mão.Os badges do usuário
Para listar os badges do usuário autenticado, useGET /membership/badges/my:
id é o vínculo usuário/badge (a atribuição); badgeId é o badge em si. Para revogar, use o badgeId. Os JSON aqui são ilustrativos: o schema campo a campo fica na aba API Reference (tag Badge).API administrativa de badges
Sob o prefixo/admin/membership/badges:
Criar um badge
201 Created):
Atribuir um badge
Atribua por email quando você só tem o email do CRM, sem precisar resolver ouserId antes. Se já tem o userId, use a rota direta.
expirationDate opcional (ISO 8601). Sem ela, o acesso não expira.
Remover um badge
Ajustar a expiração
Prorrogue ou encurte o acesso sem re-atribuir:Idempotência
Atribuir o mesmo badge duas vezes é idempotente: o estado final é o mesmo, sem erro nem duplicata. Remover um badge que o usuário já não tem também é idempotente. Isso simplifica retries em jobs e handlers de webhook: você pode reprocessar um evento sem medo de efeito colateral.Fluxo ponta a ponta: compra externa libera acesso
1
Receba o webhook da compra
Sua API recebe o evento de compra do provedor externo (Hotmart, Stripe etc.) com o email do comprador.
2
Garanta o usuário na Cativa
Procure por email (
GET /admin/users/email/{email}); se não existir, crie (POST /admin/users). Veja Identidade e usuários.3
Atribua o badge
POST /admin/membership/badges/{badgeId}/users/by-email com o email. O acesso ao grupo/curso é liberado na hora.4
No cancelamento, remova o badge
Ao receber o webhook de cancelamento, faça
DELETE na atribuição. O acesso é revogado.Diferença para Roles
Badge pergunta “você pode entrar aqui?”. Role pergunta “você pode editar o que está aqui?”.
Erros comuns
404 Not Found ao atribuir
404 Not Found ao atribuir
O
badgeId não existe no tenant, ou o email/userId não corresponde a nenhum usuário. Confirme o badge (GET /admin/membership/badges) e o usuário antes de atribuir.403 Forbidden
403 Forbidden
A chave não tem escopo administrativo. Rotas
/admin/membership/badges exigem API Key administrativa.Atribuí o badge mas o acesso não abriu
Atribuí o badge mas o acesso não abriu
O badge existe e foi atribuído, mas nenhum grupo/curso está configurado para aceitá-lo. Essa amarração é feita no painel. Confirme com o admin do tenant que o badge é requisito de acesso em algum recurso.
Antipattern: não use badges como tag
Próximos passos
Comunidades e Espaços
Como grupos e cursos consomem badges para controlar entrada.
Webhooks
Receba
user_received_badge e outros eventos de membership.