Diğer uç noktalar
API · Operatör → Boss HubDiğer sayfalarda anlatılmayan imzalı /v1 uç noktaları: bahis limitleri, açık/kapalı durumu, lobi kategorileri, pazarlama materyalleri, günlük mutabakat, cüzdan sağlığı, canlı tur akışı ve oyuncu olayları. Her bölümde kapsam, girdiler, yanıt ve davranış yer alır.
Uç noktalar
| Uç nokta | Kapsam | Modül | Ortam |
|---|---|---|---|
| GET /v1/limits | games.read | — | Ortak |
| GET /v1/limits/rules | games.read | — | Ortak |
| PUT /v1/limits/rules | limits.write | — | Ortak |
| GET /v1/availability | games.read | — | Kurallar ortak, sonuç ortama özel |
| PUT /v1/availability/rules | availability.write | — | Ortak |
| GET /v1/lobby/categories | games.read | — | Ortak |
| PUT /v1/lobby/categories | lobby.write | — | Ortak |
| GET /v1/marketing/assets | marketing.read | — | Ortak |
| GET /v1/reconciliation/daily | reconciliation.read | — | Ortama özel |
| POST /v1/reconciliation/daily | reconciliation.write | — | Ortama özel |
| GET /v1/wallet-health | wallet_health.read | — | Ortama özel |
| GET /v1/live/stream | rounds.read | live | Ortama özel |
| POST /v1/player-events | player_events.write | — | Ortama özel |
Ortak kurallar
- İstekleri Kimlik doğrulama sayfasındaki gibi imzalayın. Yazma isteklerinde (PUT, POST) X-Request-Id de zorunludur.
- site_id her yerde site kodudur, örn. site_mrd01. Siteye bağlı anahtar yalnız kendi sitesini görür ve yalnız kendi sitesine yazar.
- Yanıttaki tutarlar iki ondalıklı JSON sayısıdır, örn. 0.20.
- Ortak veri Test ve Canlı’da aynıdır: Test anahtarıyla yaptığınız değişiklik Canlı’da da geçerli olur. Bkz. Ortamlar.
- Her imzalı uçta dönebilen hatalar (INVALID_SIGNATURE, TIMESTAMP_SKEW, IP_NOT_ALLOWED, SCOPE_MISSING, RATE_LIMITED, yazmada X-Request-Id için 422 ve 409) Hata kodları sayfasındadır. Bu sayfaya özgü kodlar en alttaki tablodadır.
Etkin limitler
GET /v1/limits · kapsam games.read. Bir oyunun sitede launch’ta alacağı limitleri döndürür: tüm kurallar ve pazar tavanı uygulanmış hâli.
| Alan | Tür | Açıklama |
|---|---|---|
| currency | ISO 4217 | Limitlerin para birimi. |
| min_bet | decimal(18,2) | En düşük bahis. |
| max_bet | decimal(18,2) | En yüksek bahis, pazar tavanından sonra. |
| default_bet | decimal(18,2) | Varsayılan bahis, aralığın içinde. |
| source | object | min_bet ve max_bet değerini belirleyen katman: platform, provider, game, operator, site, market_rule. |
Oyun yoksa, sağlayıcısı size açık değilse veya bu para biriminde limit tanımlı değilse 404 NOT_FOUND döner. Oyunun açık olup olmadığına burada bakılmaz; onun için GET /v1/availability.
{
"currency": "USD",
"min_bet": 0.20,
"max_bet": 50.00,
"default_bet": 1.00,
"source": { "min_bet": "platform", "max_bet": "site" }
}Limit sırası
Katmanlar yukarıdan aşağı uygulanır. Her katman yalnız üstündeki aralığı daraltabilir: min_bet yalnız artar, max_bet yalnız azalır. Aralığı boşaltacak katman yok sayılır. default_bet onu belirleyen son katmandan gelir ve aralığa sığdırılır; hiçbir katman belirlemezse min_bet olur. Platform katmanlarını Boss Hub yönetir, operatör ve site katmanları sizindir.
| Sıra | Katman | source |
|---|---|---|
| 1 | Platform, tüm oyunlar | platform |
| 2 | Platform, sağlayıcı | provider |
| 3 | Platform, oyun | game |
| 4 | Operatör, tüm oyunlar (scope: all) | operator |
| 5 | Operatör, sağlayıcı | operator |
| 6 | Site, tüm oyunlar | site |
| 7 | Site, sağlayıcı | site |
| 8 | Operatör, oyun | operator |
| 9 | Site, oyun | site |
| 10 | Sitenin pazar tavanı, yalnız max_bet; para birimi farklıysa çevrilir | market_rule |
Limit kurallarınız
GET /v1/limits/rules · kapsam games.read. Parametre almaz. Operatörünüzün ve sitelerinizin limit kurallarını döndürür: önce operatör, sonra site kuralları. Platform kuralları listelenmez. Site anahtarı yalnız kendi sitesinin kurallarını görür.
| Alan | Tür | Açıklama |
|---|---|---|
| scope | string | Hedef: all, provider, game. |
| ref | string | null | Sağlayıcı kodu veya oyun kodu; all için null. |
| site_id | string | null | Site kodu; operatör geneli kuralda null. |
| currency | ISO 4217 | Kuralın para birimi. |
| inherit | boolean | true: kural saklanır ama uygulanmaz, üst katman geçerlidir. |
| min_bet | decimal(18,2) | null | En düşük bahis. |
| max_bet | decimal(18,2) | null | En yüksek bahis. |
| default_bet | decimal(18,2) | null | Varsayılan bahis; tanımlı değilse null. |
Limit kuralı yazma
PUT /v1/limits/rules · kapsam limits.write. Tek kural yazar: bir hedef, bir seviye (operatör veya site), bir para birimi. Kural yoksa açılır, varsa güncellenir. Yanıt {"changed": true}; değişen bir şey yoksa false.
- scope: all ile inherit: true kuralı siler.
- provider veya game ile inherit: true kuralı ve değerlerini saklar ama uygulamaz; GET /v1/limits/rules satırında inherit: true görünür. Değerlerle gönderilen yeni bir PUT kuralı yeniden uygular. Kural yoksa yanıt changed: false olur.
{
"scope": "game",
"ref": "sultans-ember",
"site_id": "site_mrd01",
"currency": "USD",
"min_bet": 0.20,
"max_bet": 50.00,
"default_bet": 1.00
}Açık/kapalı durumu
GET /v1/availability · kapsam games.read. Size açık her sağlayıcının ve oyunlarının site bazında çözülmüş durumunu döndürür. Launch ile aynı denetimdir ve anahtarınızın ortamında çalışır.
| Alan | Tür | Açıklama |
|---|---|---|
| scope | string | provider veya game. |
| ref | string | Sağlayıcı kodu veya oyun kodu. |
| site_id | string | Site kodu. |
| enabled | boolean | Şu an launch açık mı. |
| source | string | null | Kapatan ilk katman; açıkken null. |
Her site için önce sağlayıcı satırları, sonra oyun satırları gelir. Oyun satırları canlı sürümü olan ve kaldırılmamış oyunlardır. Seçili oyunlarla çalışıyorsanız seçim dışındaki oyun enabled: false, source: access gelir.
| source | Anlam |
|---|---|
| maintenance | Platformun veya sağlayıcının bakım penceresi. |
| operator | Operatör askıda veya production onayı henüz yok. |
| site_status | Site kapalı veya Test durumundaki site Canlı’da çağrıldı. |
| module | providers modülü kapalı (üçüncü taraf sağlayıcılar). |
| platform | Boss Hub kapattı. |
| access | Sağlayıcı bu ortamda size açık değil veya oyun seçiminizde yok. |
| game | Oyun henüz yayında değil veya kaldırıldı. |
| operator_rule | Operatör geneli kuralınız off. |
| site_rule | Site kuralı off. |
| market_rule | Sitenin pazarında izin verilen RTP varyantı yok. |
[
{ "scope": "provider", "ref": "boss-originals", "site_id": "site_mrd01", "enabled": true, "source": null },
{ "scope": "game", "ref": "sultans-ember", "site_id": "site_mrd01", "enabled": false, "source": "operator_rule" }
]Açma ve kapama kuralı
PUT /v1/availability/rules · kapsam availability.write. Bir sağlayıcı veya oyun için kararınızı yazar: operatör geneli veya tek site. Yanıt {"changed": true}; durum zaten aynıysa false.
Lobi kategorileri
GET /v1/lobby/categories · kapsam games.read. Lobi kategorilerini sırasıyla döndürür.
| Alan | Tür | Açıklama |
|---|---|---|
| key | string | Kategori anahtarı, örn. featured. |
| name | object | Kategori adı: tr, en. |
| mode | string | manual veya auto. |
| auto_rule | string | null | new_30d, popular_7d, jackpot; manual için null. |
| games | string[] | Oyun kodları, sırasıyla. auto kategoriyi kural doldurur. |
- new_30d: son 30 günde yayına çıkan oyunlar.
- popular_7d: son 7 günde oynanan oyunlar.
- jackpot: katıldığınız bir jackpot havuzundaki oyunlar.
- Otomatik kategori yalnız canlı ve kütüphanenizdeki oyunları alır, en çok 24 oyun. Sıra son 7 günün tur sayısına göredir (anahtarınızın ortamında), sonra ada göre.
[
{
"key": "featured",
"name": { "tr": "Öne çıkanlar", "en": "Featured" },
"mode": "manual",
"auto_rule": null,
"games": ["sultans-ember", "cyber-djinn"]
},
{
"key": "new",
"name": { "tr": "Yeni oyunlar", "en": "New games" },
"mode": "auto",
"auto_rule": "new_30d",
"games": ["cyber-djinn"]
}
]Lobi kategorilerini kaydetme
PUT /v1/lobby/categories · kapsam lobby.write. Gövde kategorilerin tam listesidir (JSON dizi) ve hedef kümenin tamamını değiştirir: operatör geneli veya site_id sitesi. Listedeki sıra lobideki sıradır. Yanıt kaydedilen kümedir, GET biçiminde.
Pazarlama materyalleri
GET /v1/marketing/assets · kapsam marketing.read. Kütüphanenizdeki oyunların materyal paketlerini listeler. Duyurulan bir oyunun paketi çıkıştan 14 gün önce görünür.
| Alan | Tür | Açıklama |
|---|---|---|
| game_id | string | Oyun kodu. |
| zip_url | string | Paketin tamamı için imzalı ZIP bağlantısı. 15 dakika geçerli. |
| files[].kind | string | tile, portrait, banner, logo, video, copy. |
| files[].size | string | null | Boyut veya biçim, örn. 1920x600. |
| files[].locale | string | null | Metin dosyalarında dil. |
| files[].name | string | Dosya adı. |
| files[].url | string | null | Görseller (tile, portrait, banner, logo; PNG, JPEG, WebP) için kalıcı /media/… adresi, /v1/games assets ile aynı. Diğer dosyalar (video, metin, SVG) için imzalı bağlantı, 5 dakika geçerli. Dosya depoda yoksa null; dosya yine listelenir. |
zip_url hazır bir indirme bağlantısıdır (…/packs/<oyun>.zip?op=…&exp=…&sig=…), 15 dakika geçerlidir. Bu indirme imza başlığı istemez; bağlantının kendisi operatörünüz ve o oyun için imzalıdır. Süresi dolan veya değiştirilen bağlantı 404 NOT_FOUND döner. ZIP, depodaki dosyaları ve her materyali included bayrağıyla listeleyen bir manifest.json içerir. Yeni bağlantı için listeyi tekrar çağırın.
[
{
"game_id": "sultans-ember",
"zip_url": "https://api.example.com/…/packs/sultans-ember.zip?op=…&exp=1762344900&sig=…",
"files": [
{
"kind": "banner",
"size": "1920x600",
"locale": null,
"name": "sultans-ember_banner_1920x600.png",
"url": "https://api.example.com/media/fil_01HF3K9QZ2.png"
},
{
"kind": "copy",
"size": null,
"locale": "en",
"name": "sultans-ember_copy_en.txt",
"url": null
}
]
}
]Günlük mutabakat
GET /v1/reconciliation/daily · kapsam reconciliation.read. Bir UTC günü için bizim toplamlarımızı sizin gönderdiklerinizle karşılaştırır; para birimi başına bir satır döner. Yalnız operatör anahtarı: site anahtarı 403 SCOPE_DENIED alır.
| Alan | Tür | Açıklama |
|---|---|---|
| date | date | UTC gün. |
| currency | ISO 4217 | Satırın para birimi. |
| provider_side | object | Bizim toplamlarımız: bets, wins (decimal), rounds, transactions (integer). |
| operator_side | object | null | Sizin toplamlarınız, aynı biçimde; göndermeden null. Göndermediğiniz rounds ve transactions null gelir. |
| difference | decimal(18,2) | null | Sizinki eksi bizimki: bahis farkı; bahisler tutuyorsa kazanç farkı. Göndermeden null. |
| status | string | pending: toplamınız yok. mismatch: bahis veya kazanç ya da gönderdiyseniz rounds veya transactions tutmuyor. matched: tutuyor veya fark portalda elle kapatıldı. |
[
{
"date": "2026-11-05",
"currency": "USD",
"provider_side": { "bets": 51240.00, "wins": 49190.40, "rounds": 19377, "transactions": 39102 },
"operator_side": { "bets": 51240.00, "wins": 49185.40, "rounds": 19377, "transactions": null },
"difference": -5.00,
"status": "mismatch"
}
]Günlük toplam gönderme
POST /v1/reconciliation/daily?date=YYYY-MM-DD · kapsam reconciliation.write. Bir gün ve para birimi için kendi toplamlarınızı gönderirsiniz. Yanıt karşılaştırılmış satırdır: 200, yukarıdaki biçimde tek nesne. Aynı gün ve para birimine yeniden göndermek önceki toplamınızın yerine geçer ve portalda elle kapatılmış farkı yeniden açar. Yalnız operatör anahtarı.
{
"currency": "USD",
"bets": 51240.00,
"wins": 49185.40,
"rounds": 19377
}Cüzdan sağlığı
GET /v1/wallet-health · kapsam wallet_health.read. Cüzdanınıza gönderdiğimiz callback’lerin performansını, anahtarınızın ortamında döndürür. Test paketi ve bağlantı testi çağrıları sayılmaz. Durum eşikleri hesabınızın cüzdan alarm kurallarından, yoksa platform varsayılanından gelir.
| Alan | Tür | Açıklama |
|---|---|---|
| p50_ms | integer | Ortanca yanıt süresi, ms. Süreler kova üst sınırıdır (örn. 200, 250); çağrı yoksa 0. |
| p95_ms | integer | Yüzde 95’lik yanıt süresi, ms. Aynı kovalar; çağrı yoksa 0. |
| error_rate | number | Hatalı çağrı oranı, 0-1. Hata: zaman aşımı, bağlantı hatası, 200 dışı yanıt, okunamayan gövde, iş reddi dışındaki hata kodu ve defterin kabul etmediği OK (para birimi yok ya da yanlış, 2’den çok ondalıklı bakiye, başka transaction_id). INSUFFICIENT_FUNDS, LIMIT_EXCEEDED, PLAYER_BLOCKED, INVALID_TOKEN, TRANSACTION_ROLLED_BACK, DUPLICATE_TRANSACTION hata sayılmaz. |
| timeout_rate | number | Zaman aşımına düşen çağrı oranı, 0-1. |
| by_call[] | object[] | authenticate, balance, bet, win, rollback için birer satır: call, count, p95_ms, error_rate. |
| hourly[] | object[] | Eskiden yeniye 24 satır: hour (saat başı, UTC) ve status. bad: hata veya zaman aşımı oranı eşiği aştı. warn: p95 eşiği aştı. ok: diğer durumlar ve çağrısız saat. |
{
"p50_ms": 75,
"p95_ms": 250,
"error_rate": 0.0004,
"timeout_rate": 0.0001,
"by_call": [
{ "call": "authenticate", "count": 1204, "p95_ms": 150, "error_rate": 0 },
{ "call": "balance", "count": 3310, "p95_ms": 125, "error_rate": 0 },
{ "call": "bet", "count": 18420, "p95_ms": 250, "error_rate": 0.0005 },
{ "call": "win", "count": 6120, "p95_ms": 200, "error_rate": 0.0002 },
{ "call": "rollback", "count": 12, "p95_ms": 300, "error_rate": 0 }
],
"hourly": [
{ "hour": "2026-11-04T15:00:00.000Z", "status": "ok" },
{ "hour": "2026-11-04T16:00:00.000Z", "status": "warn" }
]
}Canlı akış
GET /v1/live/stream · kapsam rounds.read · live modülü. Turlarınızı kapandıkça gönderen Server-Sent Events akışıdır (text/event-stream), anahtarınızın ortamında. İsteği her GET gibi imzalayın; bağlantı sonra açık kalır.
| Olay | Ne zaman |
|---|---|
| round.closed | Tur kapandı. |
| round.rolled_back | Tur geri alındı. |
| round.big_win | Tur olayından sonra: kazanç, bahsin platformdaki büyük kazanç katına (varsayılan 50×) ulaştı veya geçti. |
| jackpot.won | round.closed olayından sonra: turda jackpot kazancı var. |
| data alanı | Tür | Açıklama |
|---|---|---|
| id | string | Tur kimliği. |
| site_id | string | Site kodu. |
| player_id | string | Sizin oyuncu kimliğiniz. |
| game_id | string | Oyun kodu. |
| currency | ISO 4217 | Turun para birimi. |
| bet | decimal(18,2) | Bahis. Geri alınan turda geri alınan bahis. |
| win | decimal(18,2) | Toplam kazanç: oyun, free round ve jackpot kazancı. Cüzdanınızın henüz onaylamadığı kazanç dahildir. |
| status | string | closed veya rolled_back. |
| kind | string | normal, freeround, bonus_buy. |
| has_jackpot | boolean | Turda jackpot kazancı var. |
| closed_at | date-time | Turun kapandığı an; kapanış zamanı yoksa başladığı an. |
- İlk satır : ok yorumudur; her 20 sn’de bir : ping yorumu gelir. Yorum satırlarını yok sayın.
- Olaylarda id: yoktur ve olaylar sonradan gönderilmez: bağlantı kopukken kapanan turlar akışa gelmez. Yeniden bağlandıktan sonra aradaki turları tur sorgulama ile okuyun.
- İstemciniz yavaş okursa olaylar atlanır ve akışa SSE biçiminde olmayan bir {"type":"lag","dropped":N} satırı yazılır; ayrıştırıcınız bu satırı yok saymalıdır. Geride kalmaya devam ederse bağlantı kapanır. Anahtar iptal edilirse bağlantı yaklaşık 15 sn içinde kapanır.
- Promosyon kredisi turları akışa gelmez.
- Akış başlamadan önceki hatalar (imza, kapsam, modül, site_id) normal JSON hata gövdesiyle döner.
: ok
event: round.closed
data: {"id":"rnd_01HF3K9QZ2","site_id":"site_mrd01","player_id":"u_88213","game_id":"sultans-ember","currency":"USD","bet":2.00,"win":150.00,"status":"closed","kind":"normal","has_jackpot":false,"closed_at":"2026-11-05T14:22:09.000Z"}
event: round.big_win
data: {"id":"rnd_01HF3K9QZ2","site_id":"site_mrd01","player_id":"u_88213","game_id":"sultans-ember","currency":"USD","bet":2.00,"win":150.00,"status":"closed","kind":"normal","has_jackpot":false,"closed_at":"2026-11-05T14:22:09.000Z"}
: pingOyuncu olayları
POST /v1/player-events · kapsam player_events.write. İsteğe bağlıdır. Bu ortamda daha önce oyun açmış bir oyuncu için yatırım, çekim veya sinyal kaydeder. Yanıt 201 ve olay kimliğidir. Olay göndermezseniz aşağıdaki ölçümler boş kalır.
- withdrawal: bonus buy veya free round’dan kısa süre sonra çekim arayan fraud kuralları.
- deposit: portalda free round oynayıp sonra yatırım yapan oyuncu oranı.
- signal: data.text metni oyuncunun risk sinyallerine eklenir; data.code: "withdrawal_after_freeround" free round fraud kuralına girer.
{
"player_id": "u_88213",
"site_id": "site_mrd01",
"type": "deposit",
"amount": "25.00",
"currency": "USD",
"occurred_at": "2026-11-05T14:30:00Z"
}{
"id": "pev_01HF3Q2M8V"
}Hata kodları
| Kod | HTTP | Uç nokta | Ne zaman |
|---|---|---|---|
| SCOPE_DENIED | 403 | GET /v1/limits, GET /v1/availability, PUT /v1/limits/rules, PUT /v1/availability/rules, GET /v1/wallet-health, GET /v1/live/stream, POST /v1/player-events | site_id sitelerinizden biri değil veya site anahtarınızın sitesi değil |
| SCOPE_DENIED | 403 | PUT /v1/limits/rules, PUT /v1/availability/rules | Site anahtarı site_id göndermedi |
| SCOPE_DENIED | 403 | GET ve PUT /v1/lobby/categories | site_id sitelerinizden biri değil veya site anahtarınızın sitesi değil |
| SCOPE_DENIED | 403 | GET ve POST /v1/reconciliation/daily | Site anahtarıyla çağrıldı |
| MODULE_DISABLED | 403 | GET /v1/live/stream | live modülü kapalı |
| FRAUD_CLOSURE | 403 | PUT /v1/availability/rules | Kayıt fraud kuralıyla kapatıldı; yalnız off kabul edilir (details.case_id) |
| NOT_FOUND | 404 | GET /v1/limits | Oyun yok, sağlayıcısı size açık değil veya bu para biriminde limit yok |
| NOT_FOUND | 404 | PUT /v1/limits/rules, PUT /v1/availability/rules | ref bulunamadı veya sağlayıcısı size açık değil |
| NOT_FOUND | 404 | POST /v1/player-events | Bu player_id ile bu ortamda (o sitede) oyun açılmamış |
| NOT_FOUND | 404 | zip_url indirmesi | Bağlantının süresi doldu veya değiştirildi |
| FILE_TOO_LARGE | 413 | zip_url indirmesi | Paket 500 MB’tan büyük |
| SITE_REQUIRED | 422 | GET /v1/limits | Birden çok siteniz var, site_id yok |
| VALIDATION_ERROR | 422 | Tümü | Geçersiz parametre veya gövde (details.fields) |
| VALIDATION_ERROR | 422 | PUT /v1/limits/rules | ref veya min_bet ve max_bet eksik (details.field) |
| VALIDATION_ERROR | 422 | PUT /v1/lobby/categories | details.reason: KEY_DUPLICATE, GAME_NOT_ELIGIBLE (details.game), AUTO_RULE_REQUIRED (details.key) |
| LIMIT_RANGE_INVALID | 422 | PUT /v1/limits/rules | min_bet veya max_bet 0 ya da min_bet, max_betten büyük |
| LIMIT_DEFAULT_INVALID | 422 | PUT /v1/limits/rules | default_bet aralığın dışında |
| LIMIT_OUT_OF_RANGE | 422 | PUT /v1/limits/rules | Üst katmanların aralığından çıkıyor (details.allowed) |
| DATE_IN_FUTURE | 422 | POST /v1/reconciliation/daily | date bugünden (UTC) sonra |