Referans/Webhook olayları
Webhook olayları
Boss Hub önemli olayları kayıtlı adresinize POST ile bildirir. Uç noktaları ve dinleyecekleri olayları portalda Webhook teslimatları kartından yönetirsiniz. Webhook’lar api modülüne bağlıdır.
Olaylar
| Olay | Ne zaman | data |
|---|---|---|
| round.big_win | Turun kazancı bahsin belirli katına (varsayılan 50×) ulaştı; tur başına bir kez. Free round ve promosyon turlarında gelmez | round_id, bet, win, currency |
| round.stuck | Tur takılı duruma düştü | round_id |
| round.resolved | Takılı tur çözüldü | round_id |
| jackpot.won | Boss Hub jackpot düşüşü ödendi. EGT’nin kendi jackpot’ları için gelmez | pool_id, level, amount, currency, site_id, player_id, game_id, round_id, won_at |
| invoice.issued | Fatura kesildi. Yalnız Canlı adresinize. Elle kesilen faturada dönem alanları null, total_usd ve credited yok | invoice_no, period_start, period_end, total, currency, total_usd, credited, issued_at, due_date |
| invoice.overdue | Faturanın vadesi geçti. Yalnız Canlı adresinize | invoice_no, balance, currency, due_date |
| payment.confirmed | Ödeme onaylandı. Yalnız Canlı adresinize | invoice_no, payment_id, amount, currency, paid_amount, paid_currency, value_date, status |
| campaign.finished | Free round kampanyası bitti (status: finished) veya iptal edildi (status: cancelled) | campaign_id, name, status, won_total, currency (iptalde yalnız ilk üçü) |
| tournament.finished | Turnuvanın süresi bitti, sıralama dondu | aşağıda |
| tournament.prize_approved | Turnuva ödülü onaylandı (cüzdana veya elle ödeme) | aşağıda |
| game.released | Yeni oyun yayınlandı. Sağlayıcı canlıya alındıysa Canlı, değilse Test adresinize | game_id, name, version, release_at |
| game.retiring | Kütüphanenizdeki bir oyun için kaldırma planlandı, tarihi değişti veya plan iptal edildi | aşağıda |
| game.availability_changed | Oyun veya sağlayıcının açık/kapalı durumu değişti | changes[]: scope, target, provider_id, game_id, site_id, state, source; truncated |
| limits.changed | Etkin bahis limitleri değişti | changes[]: scope, target, provider_id, game_id, site_id, currency, inherit, min_bet, max_bet, default_bet, removed; truncated |
| market_rule.changed | Pazar kuralı değişti. Yalnız Test’e özel pazar değilse Canlı adresinize | market_id, market, rules[]: key, value |
| wallet.degraded | Callback performansı düştü; yalnız bozulmaya geçişte | since, metrics |
| alert.triggered | Uyarı kuralı tetiklendi | alert_id, rule, metric, severity, value, label, started_at |
| key.revoked | API anahtarı iptal edildi veya döndürüldü | name, prefix, rotated (döndürmede true) |
Jackpot: Yalnız Boss Hub havuzundan ödenen düşüş bildirilir (jackpot.won), düşüş anında değil ödeme anında. Bahis başına jackpot katkısı için olay gönderilmez.
Turnuva: tournament.finished süre bitince bir kez gelir: data içinde tournament_id, name, scoring, currency, starts_at, ends_at, ended_at, participants ve leaderboard (ilk 10 ve bütün ödüllü sıralar: rank, player_id, score, prize). Ödül kararı portalda verilir. tournament.prize_approved her onaylanan ödül için ayrı gelir: tournament_id, name, rank, player_id, method (wallet veya manual), prize ve currency (turnuva biriminde), decided_at. wallet yönteminde ödül /win çağrısıyla promosyon kredisi olarak gelir (promo.type: tournament); olay paid_amount, paid_currency, transaction_id, round_id taşır. manual yönteminde bu alanlar null: ödülü kendi sisteminizden ödersiniz. Reddedilen ödül için olay gönderilmez.
Oyun kaldırma: game.retiring en az 7 gün önceden gelir: data içinde game_id, name, provider, status (planned veya cancelled), retire_at (iptalde null) ve note. Tarih gelince oyun kapanır ve game.availability_changed olayı source: retired ile gelir. Planı /v1/games retire_at ve /v1/releases da gösterir.
Kural değişiklikleri: Tek kayıt tek olaydır, toplu düzenleme de öyle: game.availability_changed ve limits.changed değişiklikleri data.changes içinde taşır, 100 satırdan sonrası kesilir (data.truncated), güncel durumu /v1den okuyun. Kurallar ortam ayırmaz: operatör ve site kuralınızın olayı Test ve Canlı adresinize ayrı ayrı gelir; sağlayıcıya veya oyuna ait platform kuralının olayı, sağlayıcı sizin için canlıysa iki ortama, testteyse yalnız Test’e gelir; bütün oyunları kapsayan platform kuralı iki ortama gelir. wallet.degraded yalnız bozulmaya geçişte gelir, her ölçümde değil.
İmza
| Başlık | Açıklama |
|---|---|
| X-Timestamp | Unix saniye |
| X-Signature | hex(HMAC_SHA256(webhook_secret, ts + "." + body)) |
Her webhook uç noktasının kendi secret’ı (whsec_…) vardır; uç noktayı eklerken bir kez gösterilir. Secret döndürme yoktur: yeni uç nokta ekleyip eskisini silin. Adres sabit olduğu için imza yalnız zaman damgası ve ham gövdeyi kapsar; API imzasından bu yönüyle ayrılır. Her denemede zaman damgası ve imza yenilenir; eski zaman damgalı isteği reddedebilirsiniz.
Teslimat
- Yanıt: 2xx teslim edildi sayılır. Başka bir yanıtta veya zaman aşımında (5 sn) yeniden denenir.
- Deneme: Varsayılan olarak en çok 5 deneme: olaydan sonra yaklaşık 15 sn içinde, sonra 1, 2, 4 ve 8 dakika arayla. Son denemeden sonra otomatik tekrar yoktur.
- Yeniden gönderim: Portalda Webhook teslimatları tablosundan istediğiniz olayı Yeniden gönder ile tekrar yollayabilirsiniz; id aynı kalır, created_at yeniden gönderim anıdır.
- Tekrar: Aynı olay birden çok kez gelebilir. id ile tekilleştirin: işlediğiniz id’leri saklayın (portaldan yeniden gönderim günler sonra da olabilir), tekrar gelende 2xx dönüp yeniden işlemeyin.
- Sıra: Sıra garantisi yoktur. Her teslimat ayrı denenir; tekrar edilen bir olay sonraki olaydan sonra gelebilir (örn. round.resolved round.stuck’tan önce). Gelme sırasına güvenmeyin, güncel durumu /v1den okuyun (örn. GET /v1/rounds/{round_id}).
- Zaman damgası: X-Timestamp her denemede ve yeniden gönderimde yenilenir. ±300 sn (5 dk) dışındaki isteği reddetmenizi öneririz; saatinizi NTP ile eşleyin. Reddettiğiniz deneme, deneme hakkı kaldıysa takvimle yeni zaman damgasıyla tekrar gelir.
- Tutarlar: data içindeki para alanları (amount, bet, win, total, total_usd, credited, balance, paid_amount, won_total, prize, min_bet, max_bet, default_bet) iki ondalıklı ondalık metindir, örn. "148.60". REST API yanıtlarında ve cüzdan çağrılarında tutarlar JSON sayısıdır; webhook’ta metindir. Float’a çevirmeden okuyun.
- Ortam: Webhook’lar ortam başınadır; Test olayı Canlı adrese gitmez. Fatura ve ödeme olayları yalnız Canlı uç noktalarınıza gelir.
- Kurulum: Portalda Webhook teslimatları kartından uç nokta ekleyin: adres en çok 500 karakter, Test dahil HTTPS zorunlu, özel ve iç ağ adresleri reddedilir; uç nokta başına 1-30 olay; api modülü gerekir. Canlı uç noktası production onayından sonra eklenir.