Abonelik iptal edildiğinde gönderilir. Premium yetkiyi kapatırsın (deprovision). Ancak tenant hâlâ bağlı (connected) olabilir — veri silme app.uninstalled işidir, burada değil. data genelde boştur; eklenti ücretsize geçirildiyse data.reason="plugin_now_free" gelir (aboneliği iptal edildi ama erişim ÜCRETSİZ sürüyor → deprovision ETME, yalnız premium kapıları kaldır).
Deprovision — premium yetkiyi kapat (reason=plugin_now_free ise ücretsiz sürdür)
Abonelik / gating
Yok — bağlı (connected) her kuruluma her zaman gelir
Envelope (tüm lifecycle/event'lerde ortak)
Alan
Tip
Zorunlu
Açıklama
id
string
✓
Idempotency anahtarı. Aynı id tekrar gelebilir (retry) → dedup et.
type
string
✓
"subscription.canceled" — event mi lifecycle mı olduğunu bununla ayırt et.
version
string
✓
Envelope şema versiyonu ("1").
tenantId
string
✓
Hangi tenant (kurulum). İşlemini buna göre yap; cross-tenant doğrula.
occurredAt
number
✓
Oluşma zamanı (unix ms).
data
object
✓
Tipe özel gövde (aşağıda).
data alanları
Alan
Tip
Zorunlu
Açıklama
reason
string
–
Yalnız eklenti ücretsize geçirildiğinde: "plugin_now_free". Bu durumda abonelik iptal edildi ama erişim ücretsiz sürüyor — DEPROVISION ETME, premium kapıları kaldır yeter. Alan yoksa normal iptal (deprovision et).
Tam örnek payload
Örnek webhook gövdesi (data alanı teyitli — webhook.site)