Entitlement-Gewährung
Die Nutzlast, die an Ihren Webhook-Endpunkt gesendet wird, wenn eine Entitlement-Gewährung erstellt, geliefert, fehlschlägt oder widerrufen wird.
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.
Entitlement-Gewährung Webhook-Ereignisse
Diese Ereignisse werden ausgelöst, wann immer sich der Status einer Entitlement-Gewährung eines Kunden ändert, zum Beispiel wenn ein Lizenzschlüssel generiert wird, eine Discord-Rolle zugewiesen wird, ein Download-Link bereitgestellt wird oder der Zugriff widerrufen wird. Abonnieren Sie diese Ereignisse, um Ihre Anwendung mit dem zu synchronisieren, worauf jeder Kunde zugreifen kann.| Ereignis | Beschreibung |
|---|---|
entitlement_grant.created | Eine neue Gewährungszeile wurde erstellt. Der Status ist delivered sofort für Lizenzschlüssel und pending für jede andere Integration. |
entitlement_grant.delivered | Die Gewährung wechselt zu „geliefert“. Der Kunde hat jetzt Zugriff auf die berechtigte Plattform, Datei oder den Lizenzschlüssel. |
entitlement_grant.failed | Die Lieferung ist fehlgeschlagen und wird nicht erneut versucht. Überprüfen Sie error_code und error_message. |
entitlement_grant.revoked | Der Zugriff wurde entzogen. Überprüfen Sie revocation_reason, um zu verstehen warum. |
EntitlementGrantResponse Nutzlast, die im untenstehenden Schema dokumentiert ist.
Ereignisauslöser
entitlement_grant.created
Eine Gewährungszeile wurde gerade eingefügt. Die Gewährung hat ab diesem Zeitpunkt immer einen stabilenid, auch wenn sich ihr Status ändert. Verwenden Sie dieses Ereignis, um zu protokollieren, dass die Erfüllung in Arbeit ist.
Für Lizenzschlüssel wird die Zeile direkt mit status: "delivered" und delivered_at eingefügt, sodass ein einziges created Ereignis keiner weiteren Statusänderungen folgt, es sei denn, die Gewährung wird später widerrufen.
Für jede andere Integration kommt die Zeile mit status: "pending" an. Ein delivered oder failed Ereignis folgt, sobald die Lieferung abgeschlossen ist:
- OAuth-basierte Integrationen (Discord, GitHub, Notion) enthalten ein
oauth_url, das der Kunde besuchen muss, um die Zustimmung abzuschließen. Die Gewährung bleibtpending, bis der Kunde autorisiert. - Plattform-direkte Integrationen (Telegram, Framer, Digitale Dateien) bleiben nur kurzzeitig
pending, während der Plattformaufruf läuft, und wechseln dann zudelivered.
entitlement_grant.delivered
Die Gewährung ist vonpending zu delivered übergegangen. Der Kunde hat jetzt den Zugriff, der durch die Berechtigung beschrieben wird. Verwenden Sie dieses Ereignis, um abhängige Funktionen in Ihren eigenen Systemen freizuschalten, z. B. um einen Arbeitsbereich bereitzustellen, eine benutzerdefinierte Willkommens-E-Mail zu senden oder eine “erfüllt”-Flagge zu setzen.
Das delivered_at Feld der Nutzlast erfasst, wann die Lieferung abgeschlossen wurde. Für Gewährungen, die bei Erstellung delivered angekommen sind, erhalten Sie created und delivered Ereignisse hintereinander.
entitlement_grant.failed
Die Lieferung wurde versucht und ist mit einem nicht wiederholbaren Fehler fehlgeschlagen. Die Feldererror_code und error_message erklären das Scheitern. Häufige Ursachen sind ein widerrufenes OAuth-Token, eine verweigerte Plattformberechtigung oder ein fehlendes Ziel (z. B. eine gelöschte Discord-Gilde).
entitlement_grant.revoked
Der Zugriff wurde auf Plattformebene widerrufen: Discord-Rolle entfernt, GitHub-Kollaborateur entfernt, Lizenzschlüssel deaktiviert, Download-URLs für Dateien werden nicht mehr ausgegeben. Dasrevocation_reason Feld zeichnet den Auslöser auf.
revocation_reason | Auslöser |
|---|---|
subscription_cancelled | Das Abonnement des Kunden wurde storniert (subscription.cancelled Ereignis). |
subscription_on_hold | Das Abonnement ist aufgrund eines fehlgeschlagenen Erneuerungsversuchs angehalten (subscription.on_hold). Wiederherstellbar: Ein erfolgreicher erneuter Versuch führt zu einer Neugewährung. |
subscription_expired | Das Abonnement hat sein Ende der Laufzeit erreicht (subscription.expired). |
plan_changed | Der Plan hat sich geändert; alte Gewährungen werden widerrufen, bevor neue ausgestellt werden (subscription.plan_changed). |
refund | Eine Rückerstattung wurde für die ursprüngliche Einmalzahlung verarbeitet (refund.succeeded). |
manual | Ein Händler hat die Gewährung über die API oder das Dashboard widerrufen. Manuelle Widerrufe werden bei Abonnementerneuerung nicht automatisch neu gewährt. |
license_key_disabled | Der Lizenzschlüssel hinter einer Lizenzschlüssel-Gewährung wurde deaktiviert. Die Gewährung wird automatisch reaktiviert, wenn der Schlüssel wieder aktiviert wird. |
platform_external | Die Plattform-Seite einer Integration ist aus der Synchronisation geraten (zum Beispiel wurde eine Discord-Rolle manuell entfernt, die GitHub-App hat den Repository-Zugriff verloren, oder ein Abgleichsprozess hat ein fehlendes Ziel erkannt). Die Gewährung wird bei Abonnementerneuerung nicht automatisch neu gewährt, bis das zugrunde liegende Plattformproblem gelöst ist. |
Nutzlastvarianten
Dasdata Feld ist immer ein EntitlementGrantResponse Objekt. Zwei Integrationstypen hängen zusätzliche verschachtelte Objekte an:
license_keywird beigefügt, wenn der Typ der Entitlement-Integrationlicense_keyist. Es enthält den generierten Schlüssel, das Ablaufdatum und die Aktivierungsnutzung.digital_product_deliverywird beigefügt, wenn der Integrationstypdigital_filesist. Es enthält signierte Download-URLs, das optionaleinstructionsund das optionaleexternal_url.
null; die relevante Konfiguration wird in der Berechtigung selbst erfasst, nicht in der Gewährung.
Beispiel-Nutzlasten
Lizenzschlüssel geliefert (entitlement_grant.delivered)
Digitale Dateien geliefert (entitlement_grant.delivered)
Discord-Rolle erstellt und ausstehend (entitlement_grant.created)
Gewährung bei Abonnementstornierung widerrufen (entitlement_grant.revoked)
Lieferung fehlgeschlagen (entitlement_grant.failed)
Integrationstipps
- Warten Sie auf
entitlement_grant.delivered, bevor Sie abhängige Funktionen freischalten. Einpayment.succeededEreignis sagt Ihnen, dass das Geld eingegangen ist; es sagt Ihnen nicht, dass der Kunde das GitHub-Repo oder die Discord-Rolle bereits hat. DasdeliveredEreignis ist die maßgebliche Quelle für die Erfüllung. - Ordnen Sie
revocation_reasonRetentionsflüssen zu. Einsubscription_on_holdWiderruf bedeutet normalerweise, dass die Karte des Kunden fehlgeschlagen ist und die nächste Erneuerung den Zugriff neu gewährt. Einmanualodersubscription_cancelledWiderruf ist beabsichtigt. Behandeln Sie sie in der Kundenkommunikation unterschiedlich. - Verwenden Sie die
idder Gewährung als Ihre Idempotenzschlüssel. Eine einzelne Gewährung löst maximal eincreatedEreignis, ein Terminalereignis (deliveredoderfailed) und einrevokedEreignis aus. Wiederholungen aus dem Webhook-System können Ereignisse wiederholen; entdoppeln Sie anhand der Gewährungidplustype. - Untersuchen Sie
license_keyunddigital_product_delivery, um den Integrationstyp zu erkennen. Die Nutzlast der Gewährung selbst trägt nicht den Integrationstyp, aber genau eines dieser verschachtelten Objekte wird für Lizenzschlüssel- und digitale Datei-Berechtigungen ausgefüllt. - Für OAuth-basierte Gewährungen, zeigen Sie
oauth_urldem Kunden an. Dasentitlement_grant.createdEreignis für Discord-, GitHub- oder Notion-Abonnentenflüsse enthält einoauth_urlundoauth_expires_at. Senden Sie es per E-Mail an den Kunden oder zeigen Sie es in Ihrer App an, um die Lieferung zu ermöglichen.
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.