Entitlement Grant
Payload yang dikirim ke endpoint webhook Anda ketika pemberian hak istimewa dibuat, dikirim, gagal, atau dibatalkan.
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 Grant Webhook Events
Event ini terjadi setiap kali status pemberian hak istimewa pelanggan berubah, misalnya ketika sebuah kunci lisensi dihasilkan, peran Discord diberikan, tautan unduhan disediakan, atau akses dicabut. Berlangganan ke event-event ini untuk menjaga aplikasi Anda tetap sinkron dengan apa yang dapat diakses oleh setiap pelanggan.| Event | Deskripsi |
|---|---|
entitlement_grant.created | Baris pemberian baru telah dibuat. Statusnya adalah delivered segera untuk kunci lisensi, dan pending untuk setiap integrasi lainnya. |
entitlement_grant.delivered | Pemberian berubah menjadi terkirim. Pelanggan sekarang memiliki akses ke platform yang ditunjuk, file, atau kunci lisensi. |
entitlement_grant.failed | Pengiriman gagal dan tidak dicoba kembali. Periksa error_code dan error_message. |
entitlement_grant.revoked | Akses dicabut. Periksa revocation_reason untuk memahami alasannya. |
EntitlementGrantResponse yang sama seperti yang didokumentasikan dalam skema di bawah.
Pemicu Event
entitlement_grant.created
Baris pemberian baru saja dimasukkan. Pemberian selalu memilikiid yang stabil sejak saat ini, bahkan jika statusnya berubah. Gunakan event ini untuk mencatat bahwa pemenuhan sedang berlangsung.
Untuk kunci lisensi baris dimasukkan langsung dengan status: "delivered" dan delivered_at terisi, sehingga satu event created diikuti tanpa perubahan status lebih lanjut kecuali pemberian dicabut kemudian.
Untuk setiap integrasi lainnya baris tiba dengan status: "pending". Sebuah event delivered atau failed mengikuti setelah pengiriman selesai:
- Integrasi berbasis OAuth (Discord, GitHub, Notion) mencakup
oauth_urlyang harus dikunjungi pelanggan untuk menyelesaikan persetujuan. Pemberian tetappendinghingga pelanggan memberikan otorisasi. - Integrasi langsung dari platform (Telegram, Framer, Digital Files) hanya berada di
pendingdengan singkat saat panggilan platform berjalan, kemudian berpindah kedelivered.
entitlement_grant.delivered
Pemberian berpindah daripending ke delivered. Pelanggan sekarang memiliki akses seperti yang dijelaskan oleh pemberian tersebut. Gunakan event ini untuk membuka fitur bergantung dalam sistem Anda sendiri, misalnya untuk menyediakan workspace, mengirim email sambutan khusus, atau menandai “fulfilled”.
Field delivered_at dalam payload menangkap waktu penyelesaian pengiriman. Untuk pemberian yang tiba delivered pada pembuatan, Anda akan menerima event created dan delivered secara berurutan.
entitlement_grant.failed
Pengiriman dicoba dan gagal dengan kesalahan yang tidak dapat dicoba ulang. Fielderror_code dan error_message menjelaskan kegagalan. Penyebab umum termasuk token OAuth dicabut, izin platform ditolak, atau target yang hilang (misalnya, komunitas Discord yang dihapus).
entitlement_grant.revoked
Akses ditarik di tingkat platform: peran Discord dihapus, kolaborator GitHub dihapus, kunci lisensi dinonaktifkan, URL unduhan file tidak lagi diterbitkan. Fieldrevocation_reason mencatat pemicu.
revocation_reason | Pemicu |
|---|---|
subscription_cancelled | Langganan pelanggan dibatalkan (subscription.cancelled event). |
subscription_on_hold | Langganan ditangguhkan karena gagal perpanjangan (subscription.on_hold). Dapat dipulihkan: percobaan ulang yang berhasil menghasilkan pemberian kembali. |
subscription_expired | Langganan mencapai akhir masa berlakunya (subscription.expired). |
plan_changed | Paket diubah; pemberian lama dicabut sebelum yang baru dikeluarkan (subscription.plan_changed). |
refund | Sebuah pengembalian diproses untuk pembayaran satu kali asli (refund.succeeded). |
manual | Seorang pedagang mencabut pemberian melalui API atau dasbor. Pencabutan manual tidak secara otomatis diberikan kembali pada pembaruan langganan. |
license_key_disabled | Kunci lisensi di belakang pemberian kunci-lisensi dinonaktifkan. Pemberian diaktifkan kembali secara otomatis jika kunci diaktifkan kembali. |
platform_external | Sisi platform dari integrasi tidak sinkron (misalnya, sebuah peran Discord dihapus secara manual, Aplikasi GitHub kehilangan akses repository, atau penelusuran rekonsiliasi mendeteksi target yang hilang). Pemberian tidak diberikan kembali secara otomatis pada pembaruan langganan hingga masalah platform yang mendasar teratasi. |
Variasi Payload
Fielddata selalu merupakan objek EntitlementGrantResponse. Dua jenis integrasi menempelkan objek bersarang tambahan:
license_keydisertakan ketika jenis integrasi pemberian adalahlicense_key. Ini berisi kunci yang dihasilkan, kedaluwarsa, dan penggunaan aktivasi.digital_product_deliverydisertakan ketika jenis integrasi adalahdigital_files. Ini berisi URL unduhan yang ditandatangani sebelumnya,instructionsopsional, danexternal_urlopsional.
null; konfigurasi yang relevan ditangkap dalam pemberian itu sendiri, bukan pemberian.
Contoh Payload
Kunci lisensi dikirim (entitlement_grant.delivered)
File digital dikirim (entitlement_grant.delivered)
Peran Discord dibuat dan tertunda (entitlement_grant.created)
Pemberian dicabut pada pembatalan langganan (entitlement_grant.revoked)
Pengiriman gagal (entitlement_grant.failed)
Tips Integrasi
- Tunggu
entitlement_grant.deliveredsebelum membuka fitur yang bergantung. Sebuah eventpayment.succeededmemberi tahu Anda bahwa pembayaran telah diterima; itu tidak memberi tahu Anda bahwa pelanggan memiliki repo GitHub atau peran Discord. Eventdeliveredadalah sumber kebenaran untuk pemenuhan. - Petakan
revocation_reasonke alur retensi. Pencabutansubscription_on_holdbiasanya berarti kartu pelanggan gagal dan pembaruan berikutnya akan memberikan kembali akses. Pencabutanmanualatausubscription_cancelledadalah disengaja. Perlakukan mereka secara berbeda dalam komunikasi pelanggan. - Gunakan
idpemberian sebagai kunci idempoten Anda. Sebuah pemberian tunggal mengeluarkan paling banyak satu eventcreateddan paling banyak satu event terminal (deliveredataufailed), dan paling banyak satu eventrevoked. Pengiriman ulang dari sistem webhook dapat mengulangi acara; hapus duplikasi padaidpemberian plustype. - Periksa
license_keydandigital_product_deliveryuntuk mengenali jenis integrasi. Payload pemberian itu sendiri tidak membawa jenis integrasi, tetapi tepat satu dari objek bersarang ini terisi untuk pemberian kunci-lisensi dan file digital. - Untuk pemberian berbasis OAuth, tampilkan
oauth_urlkepada pelanggan. Evententitlement_grant.createduntuk alur pelanggan Discord, GitHub, atau Notion menyertakanoauth_urldanoauth_expires_at. Kirim email kepada pelanggan atau tampilkan dalam aplikasi Anda untuk membuka blokir pengiriman.
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.