A carga útil enviada para seu endpoint de webhook quando uma concessão de direito é criada, entregue, falha ou é revogada.
Documentation Index
Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
Use this file to discover all available pages before exploring further.
| Evento | Descrição |
|---|---|
entitlement_grant.created | Uma nova linha de concessão foi criada. O status é delivered imediatamente para chaves de licença, e pending para todas as outras integrações. |
entitlement_grant.delivered | A concessão transita para entregue. O cliente agora tem acesso à plataforma, arquivo ou chave de licença atribuída. |
entitlement_grant.failed | A entrega falhou e não está sendo tentada novamente. Inspecione error_code e error_message. |
entitlement_grant.revoked | O acesso foi retirado. Inspecione revocation_reason para entender o motivo. |
EntitlementGrantResponse documentada no esquema abaixo.
id estável a partir deste ponto, mesmo que seu status mude. Use este evento para registrar que o cumprimento está em andamento.
Para chaves de licença, a linha é inserida diretamente com status: "delivered" e delivered_at preenchidos, então um único evento created é seguido por nenhuma alteração de estado adicional, a menos que a concessão seja posteriormente revogada.
Para todas as outras integrações, a linha chega com status: "pending". Um evento delivered ou failed segue uma vez que a entrega é concluída:
oauth_url que o cliente deve visitar para completar o consentimento. A concessão permanece pending até que o cliente autorize.pending apenas brevemente enquanto a chamada de plataforma é executada, depois se movem para delivered.pending para delivered. O cliente agora tem o acesso descrito pela concessão. Use este evento para desbloquear funcionalidades dependentes em seus próprios sistemas, por exemplo, para provisionar um espaço de trabalho, enviar um email de boas-vindas personalizado, ou marcar uma bandeira “cumprida”.
O campo delivered_at da carga útil captura quando a entrega foi concluída. Para concessões que chegaram delivered na criação, você receberá eventos created e delivered um após o outro.
error_code e error_message explicam a falha. Causas comuns incluem um token OAuth revogado, uma permissão de plataforma negada ou um alvo ausente (por exemplo, uma guilda do Discord excluída).
revocation_reason registra o disparador.
revocation_reason | Disparador |
|---|---|
subscription_cancelled | A assinatura do cliente foi cancelada (evento subscription.cancelled). |
subscription_on_hold | A assinatura está em espera devido a falha na renovação (subscription.on_hold). Recuperável: uma tentativa bem-sucedida produz uma nova concessão. |
subscription_expired | A assinatura chegou ao fim do seu termo (subscription.expired). |
plan_changed | O plano mudou; concessões antigas são revogadas antes de novas serem emitidas (subscription.plan_changed). |
refund | Um reembolso foi processado para o pagamento único original (refund.succeeded). |
manual | Um comerciante revogou a concessão via API ou painel. Revogações manuais não são automaticamente reativadas na renovação da assinatura. |
license_key_disabled | A chave de licença por trás de uma concessão de chave de licença foi desativada. A concessão é reativada automaticamente se a chave for reativada. |
platform_external | O lado da plataforma de uma integração saiu de sincronia (por exemplo, um papel do Discord foi removido manualmente, o aplicativo do GitHub perdeu acesso ao repositório, ou uma verificação de reconciliação detectou um alvo ausente). A concessão não é automaticamente reativada na renovação da assinatura até que o problema subjacente da plataforma seja resolvido. |
data é sempre um objeto EntitlementGrantResponse. Dois tipos de integração anexam objetos aninhados extras:
license_key é incluído quando o tipo de integração de concessão é license_key. Ele contém a chave gerada, expiração e uso de ativação.digital_product_delivery é incluído quando o tipo de integração é digital_files. Ele contém URLs de download pré-assinados, o opcional instructions e o opcional external_url.null; a configuração relevante é capturada na própria concessão, não na concessão.
entitlement_grant.delivered)entitlement_grant.delivered)entitlement_grant.created)entitlement_grant.revoked)entitlement_grant.failed)entitlement_grant.delivered antes de desbloquear funcionalidades dependentes. Um evento payment.succeeded indica que o pagamento foi processado; ele não informa se o cliente já tem o repositório GitHub ou o papel Discord. O evento delivered é a fonte da verdade para o cumprimento.revocation_reason para fluxos de retenção. Uma revogação subscription_on_hold geralmente significa que o cartão do cliente falhou e a próxima renovação reativará o acesso. Uma revogação manual ou subscription_cancelled é intencional. Trate-os de forma diferente na comunicação com o cliente.id como sua chave de idempotência. Uma única concessão emite no máximo um evento created e no máximo um evento terminal (delivered ou failed), e no máximo um evento revoked. As re-entregas do sistema de webhook podem repetir eventos; deduplique na concessão id mais type.license_key e digital_product_delivery para reconhecer o tipo de integração. A própria carga útil da concessão não transporta o tipo de integração, mas exatamente um desses objetos aninhados é preenchido para concessões de chave de licença e arquivos digitais.oauth_url ao cliente. O evento entitlement_grant.created para fluxos de assinantes do Discord, GitHub ou Notion inclui um oauth_url e oauth_expires_at. Envie por email ao cliente ou exiba em seu aplicativo para desbloquear a entrega.Detailed view of a single entitlement grant: who it's for, its lifecycle state, and any integration-specific delivery payload.
Identifier of the business that owns the grant.
Timestamp when the grant was created.
Identifier of the customer the grant was issued to.
Identifier of the entitlement this grant was issued from.
Unique identifier of the grant.
Arbitrary key-value metadata recorded on the grant.
Lifecycle status of the grant.
Pending, Delivered, Failed, Revoked Timestamp when the grant was last modified.
Timestamp when the grant transitioned to delivered, when applicable.
Digital-product-delivery payload, present when the entitlement
integration is digital_files.
Machine-readable code reported when delivery failed, when applicable.
Human-readable message reported when delivery failed, when applicable.
License-key delivery payload, present when the entitlement integration
is license_key.
Timestamp when oauth_url stops being valid, when applicable.
Customer-facing OAuth URL for OAuth-style integrations. Populated
during the customer-portal accept flow; null until the customer
completes that step, and on grants for non-OAuth integrations.
Identifier of the payment that triggered this grant, when applicable.
Reason recorded when the grant was revoked, when applicable.
Timestamp when the grant transitioned to revoked, when applicable.
Identifier of the subscription that triggered this grant, when applicable.