# Webhooks

Webhooks sind optionale signierte Benachrichtigungen an Ihren HTTPS-Empfänger. Statusabfragen bleiben verfügbar; für die API-Nutzung ist kein Webhook erforderlich.

## Mein API-Konto

Aktivieren Sie den Empfänger im API-Konto. Öffentliches HTTPS/443 ist erforderlich; Weiterleitungen, Abfrageparameter und URL-Zugangsdaten werden nicht unterstützt. URL-, Aktivierungs- oder Schlüsseländerungen verwerfen alte ausstehende Ereignisse. Historische Vorgänge werden nicht nachgeliefert.

Nur unterstützte neue API-Vorgänge werden beobachtet, nicht jede HTTP-Antwort oder Websitebestellung. Nachrichten enthalten sichere Kennungen und Status, nie API-Schlüssel oder Proxypasswörter. timestamp ist die lokale UTC-Beobachtung; der Minuten-Worker kann verzögern.

## Ereignistypen

| Typ | Status |
| --- | --- |
| `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
    }
}
```

## Signaturprüfung

Prüfen Sie webhook-id, webhook-timestamp und webhook-signature mit dem separaten Webhook-Schlüssel. Entfernen Sie whsec_, dekodieren Sie Base64, signieren Sie die unveränderte Rohdatenstruktur mit HMAC-SHA256 und vergleichen Sie zeitkonstant. Zeitstempeltoleranz: 300 Sekunden.

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

## Zustellung & Wiederholungen

Verarbeiten Sie jede Ereignis-ID idempotent. Zustellung kann sich wiederholen und ungeordnet eintreffen. Antworten Sie nach Annahme mit 2xx. Höchstens 7 Versuche mit 1 Min., 5 Min., 30 Min., 2 Std., 6 Std. und 24 Std. Abstand. Nur die Nachricht wird wiederholt, nie der Geschäftsvorgang.

HTTP 2xx bestätigt die Zustellung. 408/429/5xx und vorübergehende Netzfehler können wiederholt werden; andere 4xx und Weiterleitungen scheitern dauerhaft. Wiederholungen behalten ID und Inhalt, aber erhalten einen neuen Signaturzeitpunkt.

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