# Webhook'lar

Yoklama (polling) yapmak istemeyen partner sistemleri için push
tabanlı olay teslimatı. WHost, desteklenen olaylardan biri tetiklendiğinde
(`account.created`, `account.suspended`, `license.state_changed`,
`webhook.failed`, …) kayıtlı her endpoint'e imzalı bir POST gönderir.

**Kısa akış:**

1. Sistem yöneticisi `POST /api/v1/webhooks/endpoints` üzerinden bir
   endpoint kaydeder.
2. WHost endpoint'i endpoint başına bir imzalama gizli anahtarıyla
   saklar.
3. Denetim logu kaydedilmiş bir olay gerçekleştiğinde, dispatcher
   `X-WHost-Event`, `X-WHost-Delivery-Id`, `X-WHost-Signature`,
   `X-WHost-Timestamp` header'ları ve JSON gövdesi ile URL'e POST yapar.
4. Alıcı imzayı doğrular (PHP SDK'nın
   `WHost\Webhook\WebhookVerifier`'ını veya kanonik formülü kullanın:
   `HMAC-SHA256(secret, "{timestamp}.{body}")`).
5. 2xx olmayan yanıtlar exponential-backoff tekrar denemeleri tetikler;
   son denemeden sonra teslimat dead-letter kuyruğuna düşer ve
   `/admin/webhooks → Deliveries → Failed` altında görünür.

Tam olay kataloğu, payload şekilleri, tekrar deneme politikası ve imza
doğrulama tarifleri — ve **abone tarafı gizli anahtar rotasyon
playbook'u** (rolling window yok; iki-deploy koordinasyonu gerekli) —
[`docs/developer/webhooks.md`](webhooks.md) içindedir.

---
