# Webhook bildirimleri

Webhook, HTTPS alıcınıza gönderilen isteğe bağlı imzalı bildirimdir. Durum sorguları kullanılmaya devam eder; API kullanmak için webhook kurmak zorunlu değildir.

## API hesabım

Alıcıyı API hesabınızdan etkinleştirin. Genel HTTPS/443 zorunludur; yönlendirme, sorgu parametresi ve URL içi kimlik bilgisi desteklenmez. Adres, etkinlik veya imza değişirse eski bekleyen olaylar iptal edilir. Geçmiş işlemler topluca bildirilmez.

Yalnız desteklenen yeni API işlemleri izlenir; her HTTP yanıtı veya web sitesi siparişi bildirilmez. Bildirimler güvenli kimlik ve durum bilgisi içerir; API anahtarı veya proxy şifresi içermez. timestamp yerel UTC gözlemidir; dakikalık işçi nedeniyle gecikme olabilir.

## Olay türleri

| Tür | Durum |
| --- | --- |
| `webhook.test` | `test` |
| `order.accepted` | `accepted` |
| `order.delivered` | `delivered` |
| `order.action_required` | `action_required` |
| `order.canceled` | `canceled` |
| `renewal.completed` | `completed` |
| `extra_login.operation.completed` | `completed` |
| `extra_login.operation.rejected` | `rejected` |
| `extra_login.operation.action_required` | `action_required` |
| `proxy_ip.operation.completed` | `completed` |
| `proxy_ip.operation.rejected` | `rejected` |
| `proxy_ip.operation.action_required` | `action_required` |
| `proxy_ip.authorization.revoked` | `revoked` |
| `residential_list.operation.completed` | `completed` |
| `residential_list.operation.rejected` | `rejected` |
| `residential_list.operation.action_required` | `action_required` |
| `auto_renewal.configuration.completed` | `completed` |

```json
{
    "id": "evt_0123456789abcdef0123456789abcdef",
    "type": "order.delivered",
    "timestamp": "2026-10-26T12:00:00+00:00",
    "api_version": "1",
    "data": {
        "account_id": 12345,
        "order_id": 12345,
        "number": "1000012345",
        "product": "proxy",
        "state": "delivered",
        "quantity": 1,
        "mode": null,
        "gb": null,
        "reason_code": null,
        "provider_live_check": false
    }
}
```

## İmza doğrulama

Ayrı webhook anahtarıyla webhook-id, webhook-timestamp ve webhook-signature başlıklarını doğrulayın. whsec_ önekini çıkarıp anahtarı Base64 çözün; aşağıdaki ham gövde yapısını HMAC-SHA256 ile imzalayıp sabit süreli karşılaştırın. Zaman için 300 saniye tolerans uygulayın.

```text
signed_content = webhook_id + "." + webhook_timestamp + "." + raw_body
webhook_signature = "v1," + Base64(HMAC_SHA256(decoded_secret, signed_content))
```

## Gönderim ve tekrar denemeler

Olay ID’sini tekilleştirerek işleyin. Bildirim tekrarlanabilir ve sırasız gelebilir. Kabul edince 2xx dönün. En fazla 7 denemede 1 dk, 5 dk, 30 dk, 2 sa, 6 sa ve 24 sa gecikmeleri kullanılır. Tekrarlanan yalnız bildirimdir, asıl işlem değildir.

HTTP 2xx gönderimi doğrular. HTTP 408/429/5xx ve geçici ağ hataları tekrar denenebilir. Diğer 4xx ve yönlendirmeler kalıcı hatadır. Tekrar gönderimde olay ID’si ve gövde aynı kalır, imza zamanı yenilenir.

---
[ARNPROXY API](https://docs.arnproxy.com/tr/api-v1/webhooks)
