Concessione di Diritti
Il payload inviato al tuo endpoint webhook quando una concessione di diritti è creata, consegnata, fallita o revocata.
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.
Eventi Webhook di Concessione di Diritti
Questi eventi vengono attivati ogni volta che lo stato della concessione di diritti di un cliente cambia, ad esempio quando viene generata una chiave di licenza, viene assegnato un ruolo Discord, viene fornito un link di download, o l’accesso viene revocato. Abbonati a questi eventi per mantenere la tua applicazione sincronizzata con ciò a cui ogni cliente può accedere.| Evento | Descrizione |
|---|---|
entitlement_grant.created | È stata creata una nuova riga di concessione. Lo stato è delivered immediatamente per le chiavi di licenza, e pending per ogni altra integrazione. |
entitlement_grant.delivered | La concessione passa a consegnato. Il cliente ora ha accesso alla piattaforma, al file o alla chiave di licenza concessi. |
entitlement_grant.failed | La consegna è fallita e non viene ripetuta. Controlla error_code e error_message. |
entitlement_grant.revoked | L’accesso è stato ritirato. Controlla revocation_reason per capire perché. |
EntitlementGrantResponse documentato nello schema qui sotto.
Trigger degli Eventi
entitlement_grant.created
È stata appena inserita una riga di concessione. La concessione ha sempre unid stabile da questo momento in poi, anche se il suo stato cambia. Usa questo evento per registrare che l’adempimento è in corso.
Per chiavi di licenza la riga viene inserita direttamente con status: "delivered" e delivered_at popolati, quindi un singolo evento created è seguito da nessun altro cambiamento di stato a meno che la concessione venga successivamente revocata.
Per ogni altra integrazione la riga arriva con status: "pending". Un evento delivered o failed segue una volta che la consegna è completata:
- Integrazioni basate su OAuth (Discord, GitHub, Notion) includono un
oauth_urlche il cliente deve visitare per completare il consenso. La concessione rimanependingfino a quando il cliente autorizza. - Integrazioni dirette alla piattaforma (Telegram, Framer, File Digitali) restano
pendingsolo brevemente mentre la chiamata alla piattaforma è in corso, poi si spostano adelivered.
entitlement_grant.delivered
La concessione è passata dapending a delivered. Il cliente ora ha l’accesso descritto dal diritto. Usa questo evento per sbloccare funzionalità dipendenti nei tuoi sistemi, per esempio per fornire uno spazio di lavoro, inviare un’email di benvenuto personalizzata, o segnare un flag “adempiuto”.
Il campo delivered_at del payload cattura quando la consegna è stata completata. Per le concessioni che sono arrivate delivered alla creazione, riceverai eventi created e delivered consecutivi.
entitlement_grant.failed
La consegna è stata tentata e fallita con un errore non ripetibile. I campierror_code e error_message spiegano il fallimento. Cause comuni includono un token OAuth revocato, un permesso della piattaforma negato, o un target mancante (es. una gilda Discord eliminata).
entitlement_grant.revoked
L’accesso è stato revocato a livello di piattaforma: ruolo Discord rimosso, collaboratore GitHub rimosso, chiave di licenza disabilitata, URL di download del file non più emessi. Il camporevocation_reason registra il trigger.
revocation_reason | Trigger |
|---|---|
subscription_cancelled | L’abbonamento del cliente è stato cancellato (evento subscription.cancelled). |
subscription_on_hold | L’abbonamento è in sospeso a causa di un rinnovo fallito (event subscription.on_hold). Recuperabile: un ritentativo riuscito produce una nuova concessione. |
subscription_expired | L’abbonamento ha raggiunto la fine del suo termine (evento subscription.expired). |
plan_changed | Il piano è cambiato; le vecchie concessioni sono revocate prima che ne vengano emesse di nuove (evento subscription.plan_changed). |
refund | Un rimborso è stato elaborato per il pagamento originale unico (evento refund.succeeded). |
manual | Un commerciante ha revocato la concessione tramite l’API o la dashboard. Le revoche manuali non vengono automaticamente concesse nuovamente al rinnovo dell’abbonamento. |
license_key_disabled | La chiave di licenza dietro una concessione di chiavi di licenza è stata disabilitata. La concessione è riattivata automaticamente se la chiave è riabilitata. |
platform_external | Il lato della piattaforma di un’integrazione è uscito dalla sincronizzazione (per esempio, un ruolo Discord è stato rimosso manualmente, l’app GitHub ha perso l’accesso al repository, o un passaggio di riconciliazione ha rilevato un target mancante). La concessione non viene automaticamente ripristinata al rinnovo dell’abbonamento fino a quando il problema di base della piattaforma non viene risolto. |
Varianti di Payload
Il campodata è sempre un oggetto EntitlementGrantResponse. Due tipi di integrazione allegano oggetti annidati extra:
license_keyè incluso quando il tipo di integrazione di concessione èlicense_key. Contiene la chiave generata, la scadenza e l’utilizzo di attivazione.digital_product_deliveryè incluso quando il tipo di integrazione èdigital_files. Contiene URL di download presigned, l’opzionaleinstructions, e l’opzionaleexternal_url.
null; la configurazione rilevante è catturata nel diritto stesso, non nella concessione.
Esempi di Payload
Chiave di licenza consegnata (entitlement_grant.delivered)
File digitali consegnati (entitlement_grant.delivered)
Ruolo Discord creato e in sospeso (entitlement_grant.created)
Concessione revocata al momento della cancellazione dell’abbonamento (entitlement_grant.revoked)
Consegna fallita (entitlement_grant.failed)
Consigli per l’Integrazione
- Aspetta
entitlement_grant.deliveredprima di sbloccare funzionalità dipendenti. Un eventopayment.succeededti dice che il pagamento è stato completato; non ti dice ancora se il cliente ha il repository GitHub o il ruolo Discord. L’eventodeliveredè la fonte di verità per l’adempimento. - Mappa
revocation_reasonai flussi di retention. Una revocasubscription_on_holddi solito significa che la carta del cliente ha fallito e il prossimo rinnovo concederà nuovamente l’accesso. Una revocamanualosubscription_cancelledè intenzionale. Trattali in modo diverso nella messaggistica al cliente. - Usa il grant
idcome tua chiave di idempotenza. Una singola concessione emette al massimo un eventocreatede al massimo un evento terminale (deliveredofailed), e al massimo un eventorevoked. Le riedizioni dal sistema webhook possono ripetere eventi; deduplicali sulla concessioneidpiùtype. - Esamina
license_keyedigital_product_deliveryper riconoscere il tipo di integrazione. Il payload della concessione stessa non trasporta il tipo di integrazione, ma esattamente uno di questi oggetti annidati è popolato per le concessioni di chiavi di licenza e file digitali. - Per concessioni basate su OAuth, metti in evidenza
oauth_urlal cliente. L’eventoentitlement_grant.createdper i flussi di abbonati a Discord, GitHub, o Notion include unoauth_urleoauth_expires_at. Invia un’email al cliente o mostrala nella tua app per sbloccare la consegna.
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.