Entitlement-Gewährung
Die Nutzlast, die an Ihren Webhook-Endpunkt gesendet wird, wenn eine Entitlement-Gewährung erstellt, geliefert, fehlschlägt oder widerrufen wird.
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.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.
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.
Integrationstipps
- Warte auf
entitlement_grant.delivered, bevor du davon abhängige Funktionen freischaltest. Einpayment.succeeded-Ereignis zeigt dir, dass die Zahlung abgewickelt wurde; es bedeutet nicht, dass der Kunde bereits Zugriff auf das GitHub-Repository oder die Discord-Rolle hat. Dasdelivered-Ereignis ist die maßgebliche Quelle für die Bereitstellung. - Ordne
revocation_reasonden Retention-Abläufen zu. Einsubscription_on_hold-Entzug bedeutet normalerweise, dass die Karte des Kunden fehlgeschlagen ist und der Zugriff bei der nächsten Verlängerung erneut gewährt wird. Einmanual- odersubscription_cancelled-Entzug ist beabsichtigt. Behandle diese Fälle in der Kundenkommunikation unterschiedlich. - Verwende den Grant
idals Idempotency Key. Ein einzelner Grant löst höchstens eincreated-Ereignis, höchstens ein abschließendes Ereignis (deliveredoderfailed) und höchstens einrevoked-Ereignis aus. Erneute Zustellungen durch das Webhook-System können Ereignisse wiederholen; entferne Duplikate anhand des Grantsidundtype. - Lies
integration_typeaus, um den Grant-Typ zu erkennen. Die Payload enthältintegration_typedirekt (zum Beispiellicense_key,digital_files,discord). Die verschachtelten Objektelicense_keyunddigital_product_deliverywerden ausgefüllt, sobald die jeweiligen Grants bereitgestellt wurden; ein manuell erfüllter License-Key-Grant bleibtpendingmitintegration_type: "license_key"und einemnulllicense_key, bis du ihn erfüllst. - Bei OAuth-basierten Grants solltest du
oauth_urldem Kunden anzeigen. Dasentitlement_grant.created-Ereignis für Subscriber-Abläufe von Discord, GitHub oder Notion enthält einoauth_urlundoauth_expires_at. Sende es per E-Mail an den Kunden oder zeige es in deiner App an, um die Bereitstellung zu ermöglichen.
Detailed view of a single entitlement grant: who it's for, its lifecycle state, and any integration-specific delivery payload.
Brand id this grant belongs to.
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.
The integration type of the grant's entitlement (e.g. license_key).
discord, telegram, github, figma, framer, notion, digital_files, license_key, feature_flag 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.
Typed feature payload, present only when the entitlement integration is
feature_flag; null for every other integration type.
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.