advanced_reports a um produto, e cada cliente pagante recebe uma concessão que sua aplicação verifica por meio da API ou mantém sincronizada com webhooks. Não há plataforma externa, etapa de OAuth ou etapa de entrega: a própria concessão é a capacidade.O que é entregue
Nada sai do Dodo Payments. A concessão é o entregável:- Na compra, o Dodo Payments cria a concessão diretamente em
Delivered. Ela nunca entra emPending, não exige nenhuma ação do cliente e não tem uma etapa de entrega que possa falhar. - A concessão contém um payload
featuretipado:{ "feature_type": "boolean", "feature_id": "advanced_reports" }. Sua aplicação lêfeature_idpara decidir o que desbloquear. - Cancelamento, reembolso ou uma revogação manual move a concessão para
Revoked, e a flag desaparece das concessões entregues ao cliente.
feature_id é um identificador escolhido por você e não é exclusivo entre as concessões. Duas concessões podem conferir o mesmo feature_id, por exemplo, um plano Pro mensal e um anual que concedem advanced_reports.Criar uma feature flag
Open Entitlements
Name the Flag
api_access), e você pode editá-lo. Ele não pode conter espaços.
Creating a feature flag. The Feature ID is what your application checks; Meta Data attaches limits alongside the flag.
Add Metadata (Optional)
Confirm

The created feature flag. The right pane tracks every customer grant issued from it.
Anexar a um produto
Abra um produto ou crie um e localize o card Entitlements. Clique em + para anexar concessões existentes, selecione sua feature flag e clique em Done.
Attaching the feature flag to a product. One product can deliver multiple entitlements.

The product now includes the feature flag. Every successful purchase or active subscription grants it.
Configuração obrigatória
Criar via API
Anexar limites com metadados
Uma flag booleana responde a “Este cliente tem o recurso?”. Os metadados respondem a “Com qual configuração?”. Os metadados da concessão aceitam valores de string, inteiro, número e booleano. Cada concessão recebe um snapshot congelado dos metadados da concessão quando é criada. O snapshot é o que torna seguro usar metadados para limites de planos:- Editar os metadados da concessão posteriormente afeta apenas concessões futuras. Os clientes mantêm os limites sob os quais compraram.
- Cada concessão retorna seu snapshot no campo
metadata, portanto uma chamada à API fornece a flag e sua configuração.
advanced_reports com { "tier": "pro", "monthly_report_limit": 100 } permite que sua aplicação desbloqueie o dashboard e aplique a cota de 100 relatórios sem uma segunda consulta. Se você aumentar o limite posteriormente para 250, os clientes existentes continuarão com 100 até receberem uma nova concessão, por exemplo, após uma alteração de plano.
Verificar os recursos de um cliente
Para criar o conjunto de recursos que um cliente possui, liste suas concessões de feature flags entregues. O endpoint retorna uma linha por concessão em todas as concessões, e você pode filtrá-lo porintegration_type e status. Estes exemplos usam o client de Criar via API.
feature é preenchido apenas em concessões feature_flag. Ele é null para todos os outros tipos de integração. Consulte a referência da API Listar concessões de clientes para ver o formato completo da resposta.Ciclo de vida
As concessões de feature flags seguem o ciclo de vida padrão das concessões, com uma simplificação: não há etapa de entrega, portanto as concessões nunca ficam emPending e nunca passam para Failed.
Webhooks
Para espelhar as flags em seu próprio banco de dados em vez de fazer polling, assine os eventosentitlement_grant.*:
entitlement_grant.createdchega já emDelivered, com o payloadfeature. Habilite o recurso.entitlement_grant.deliveredé disparado quando uma concessão anteriormente revogada é restaurada. Habilite o recurso novamente.entitlement_grant.revokedsignifica que o acesso foi retirado. Desabilite o recurso e verifiquerevocation_reasonpara escolher sua mensagem.
entitlement_grant.failed, porque a entrega acontece inteiramente dentro do Dodo Payments.
Exemplo: o plano Pro desbloqueia relatórios avançados
- Crie a flag. Defina
feature_id: advanced_reportscom os metadados{ "tier": "pro", "monthly_report_limit": 100 }. - Anexe-a ao produto de assinatura do seu plano Pro.
- Um cliente assina. O Dodo Payments cria uma concessão
Deliverede disparaentitlement_grant.created. Seu handler de webhook habilitaadvanced_reportspara o cliente com um limite de 100. - Sua aplicação controla o acesso ao recurso. Ao carregar o dashboard, verifique o conjunto de recursos armazenado em cache (ou chame
listEntitlementGrants) e renderize a aba de relatórios somente quandoadvanced_reportsestiver presente. - O cliente cancela. O Dodo Payments revoga a concessão e dispara
entitlement_grant.revoked, e seu handler desabilita o recurso. Se uma assinatura se recuperar posteriormente por meio de dunning,entitlement_grant.deliveredrestaura o recurso sem alterações no código.
Boas práticas
- Use IDs de recursos estáveis em
snake_case. O código da sua aplicação verifica essas strings, portanto renomear uma delas é uma alteração incompatível nos dois lados. - Use uma flag por capacidade. Prefira
advanced_reportseapi_accesscomo duas concessões, em vez de uma únicapro_bundle, para manter organizadas a revogação e as combinações de planos. - Baseie o estado em webhooks e verifique com a API. Os webhooks mantêm seu banco de dados atualizado. O endpoint de listagem é a fonte de verdade para jobs de reconciliação e falhas de cache.
- Trate
Revokedcomo imediato. Uma flag revogada significa que o cliente não paga mais pelo recurso. Controle o acesso na próxima solicitação, não na próxima sessão. - Coloque os limites nos metadados, não no código. Alterar uma cota exige apenas editar a concessão. Novos clientes recebem o novo valor, e as concessões existentes mantêm o snapshot que foi comprado.