# Events & Webhooks

Onoxsoft Panel, önemli işlemler gerçekleştiğinde hem Laravel Events hem de HTTP webhook bildirimleri gönderir.

## Laravel Events

Tüm domain olayları `app/Events/` altında tanımlıdır:

| Event Sınıfı | Ne Zaman |
|-------------|---------|
| `AccountCreated` | Hesap oluşturulduğunda |
| `AccountSuspended` | Hesap askıya alındığında |
| `AccountUnsuspended` | Askı kaldırıldığında |
| `AccountTerminated` | Hesap silindiğinde |
| `DomainAdded` | Domain eklendi |
| `DomainRemoved` | Domain silindi |
| `SslIssued` | SSL sertifikası alındı |
| `SslExpiring` | SSL 30/15/7 gün içinde dolacak |
| `BackupCompleted` | Yedek tamamlandı |
| `BackupFailed` | Yedek başarısız |

### Listener Kayıt

```php
// app/Providers/EventServiceProvider.php
protected $listen = [
    \App\Events\AccountCreated::class => [
        \App\Listeners\SendWelcomeEmail::class,
        \App\Listeners\CreateDefaultDnsRecords::class,
        \App\Listeners\NotifyWhmcs::class,
    ],
];
```

## HTTP Webhooks

Panel Admin > **Sistem > Webhooks** → URL + secret tanımlayın.

### Webhook İsteği

```http
POST https://your-whmcs.com/modules/servers/onox/webhook.php
Content-Type: application/json
X-Onox-Event: account.created
X-Onox-Signature: sha256=xxxxxxxx
X-Onox-Delivery: uuid-xxxx

{
    "event": "account.created",
    "timestamp": "2026-05-13T10:00:00Z",
    "data": {
        "username": "musteri",
        "email": "musteri@example.com",
        "domain": "musteri.com",
        "package": "Silver"
    }
}
```

### İmza Doğrulama (PHP)

```php
$secret = 'your_webhook_secret';
$body = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_ONOX_SIGNATURE'];
$expected = 'sha256=' . hash_hmac('sha256', $body, $secret);

if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    die('Invalid signature');
}
```

### Yeniden Deneme Politikası

Webhook başarısız olursa (HTTP dışı 2xx veya timeout):
- 5 dakika sonra 1. yeniden deneme
- 30 dakika sonra 2. yeniden deneme
- 2 saat sonra 3. yeniden deneme
- Sonrasında başarısız olarak işaretlenir, e-posta bildirimi gönderilir

---

*Bu sayfa geliştirilmekte. Event payload şemaları ve webhook test endpoint'i kılavuzu eklenecek.*
