# Webhook Playground & API Tester

**Yol:** Admin Panel → Operasyon → Webhook Playground / API Tester

---

## Webhook Playground

### Gönderici (Outbound) Sekmesi

Bir hedef URL'ye test webhook isteği gönderir.

| Alan | Açıklama |
|---|---|
| Oturum Adı | İsteği kaydetmek için isim ver. Aynı isimle tekrar gönderilince üzerine yazar. |
| Endpoint URL | Hedef HTTP URL (dahili IP'ler engellenir) |
| Metod | POST / PUT / PATCH / DELETE |
| Headers | Anahtar-değer çiftleri |
| Body | JSON gövde (Monaco editör) |
| HMAC Secret | Doluysa body, `hash_hmac('sha256', body, secret)` ile imzalanır |
| İmza Header | İmzanın ekleneceği header adı (varsayılan: `X-Onox-Signature`) |

**Sonuç paneli:** HTTP durum kodu, süre (ms), yanıt headers, yanıt body, gönderilen imza.

**SSRF Koruması:** 127.x, 10.x, 192.168.x, 172.16-31.x, 169.254.x ve `localhost` hedefleri reddedilir.

---

### Alıcı (Inbound) Sekmesi

Dışarıdan webhook alabilmek için benzersiz bir inbox URL'si oluşturur.

1. **Yeni Receiver** düğmesine tıkla → isim ver → **Oluştur & URL Kopyala**.
2. Oluşturulan URL: `https://panel.example.com/webhooks/inbox/{slug}`
3. Bu URL'ye herhangi bir HTTP isteği gönderilebilir (GET dahil).
4. **Mesajlar** düğmesiyle drawer açılır; mesajlar 3 saniyede bir otomatik yenilenir.
5. Her mesajda: metod, IP, headers, query params, body görüntülenir.

**Limitler:**
- Max payload: 64 KB (receiver başına `max_payload_kb` ile değiştirilebilir)
- Rate limit: 60 istek / dakika (IP bazlı)
- Son 100 mesaj listelenir

---

### Örnekler (Cookbook) Sekmesi

Hazır webhook payload örnekleri içerir:

- cPanel Migration bildirimi
- WHMCS hesap askıya alma bildirimi
- SSL yenileme olayı
- Kota aşımı uyarısı

"Outbound'a Yükle" ile örnek form alanlarına yüklenir.

---

## API Tester

**Yol:** Admin Panel → Operasyon → API Tester

Panel kendi API'sine karşı Postman benzeri test imkânı sağlar.

### Endpoint Tarayıcısı (Sol Panel)

- `public/docs/openapi.json` dosyası varsa endpoint listesi otomatik yüklenir.
- Metod ve etiket bazlı filtreleme + metin arama desteklenir.
- Bir endpoint'e tıklamak formu otomatik doldurur.

### İstek Oluşturucu (Sağ Panel)

| Alan | Açıklama |
|---|---|
| Metod | GET / POST / PUT / PATCH / DELETE |
| Path | `/api/v1/…` formatında |
| Bearer Token | Authorization: Bearer header'ı ekler |
| Query Params | Anahtar-değer çiftleri |
| Headers | Özel header'lar |
| Body | POST/PUT/PATCH için JSON editör |

Sonuç: durum kodu badge, süre, yanıt headers, yanıt body (JSON pretty-print).

### Son İstekler

Son 20 istek listelenir. "Tekrar çalıştır" ile form yeniden yüklenir.

---

## Güvenlik Notları

- Outbound sender, dahili/özel IP adreslerini reddeder (SSRF koruması).
- Receiver slug'ları 16 karakter rastgele string; tahmin edilmesi güçtür.
- Webhook Playground ve API Tester sadece `admin` rolüne açıktır.
- API Tester, `use_token` alanına verilen token'ı loglamaz; headers JSON olarak saklanır — token içeren testlerde dikkatli olunması önerilir.
