Boss HubBoss HubDocs
Sürüm notlarıDurum
Sağlayıcı API/Tur sorgulama & replay

Tur sorgulama & replay

API · Operatör → Boss Hub
GET/v1/rounds

Turları oyuncu, oyun, durum ve tarihe göre arar. Tek tur için GET /v1/rounds/{round_id} işlemleri ve replay bağlantısını da döndürür. Yalnız kendi turlarınızı, çağırdığınız ortamda görürsünüz. rounds.read kapsamı gerekir. Takılı turları listeleme ve çözme uçları sayfanın sonunda.

Başlıklar

BaşlıkAçıklama
X-Operator-IdOperatör kimliğiniz
X-TimestampUnix saniye. ±30 sn dışı reddedilir
X-Signaturehex(HMAC_SHA256(secret, ts + "." + METHOD + "." + path?query + "." + body))
X-Api-Keyİsteğe bağlı. Birden çok anahtarınız varsa doğru secret’ı seçer

Sorgu parametreleri

site_idstring
Site kodu, örn. site_mrd01.
player_idstring
Operatör tarafındaki oyuncu kimliği. Bilinmeyen oyuncuda liste boş döner.
game_idstring
Oyun kodu, örn. sultans-ember. Bilinmeyen oyunda liste boş döner.
statusstring
open, closed, rolled_back, void, stuck. Verilmezse void dışındaki turlar. open, closed, rolled_back, void saklanan durumla süzer; çözüm bekleyen kaydı olan tur bu süzgeçlerde de (örn. status=open) yanıtta stuck görünür. stuck yalnız böyle turları getirir.
fromdate-time
Başlangıç zamanı, dahil (created_at). RFC 3339 zaman ve saat dilimi: 2026-11-12T10:00:00Z ya da 2026-11-12T13:00:00+03:00 (sorguda + işaretini %2B yazın). Yalnız gün (2026-11-12) UTC gece yarısı sayılır. Saat dilimsiz zaman (2026-11-12T10:00:00) 422 VALIDATION_ERROR.
todate-time
Bitiş zamanı, dahil değil. from ile aynı biçim.
cursorstring
Önceki yanıttaki next_cursor değeri.
limitinteger
Sayfa boyutu: 1-200, varsayılan 50.
Sayfalama: Liste yeniden eskiye sıralıdır (created_at, sonra id). next_cursor doluysa aynı sorguyu cursor ile tekrar edin. null ise son sayfadasınız.

Tek tur ve işlemleri

GET /v1/rounds/{round_id} turun bütün alanlarını, oluşma sırasına göre transactions dizisini ve replay_url’i döndürür. round_id yol parametresidir, örn. rnd_01HF3K9QZ2. Tur yoksa, başka ortamdaysa veya size ait değilse 404 NOT_FOUND gelir.

GET /v1/rounds?player_id=u_88213&status=closed HTTP/1.1
Host: staging.example.com
X-Operator-Id: op_meridyen
X-Timestamp: 1762344000
X-Signature: 5ea17c…b204
200GET /v1/rounds
{
  "items": [
    {
      "id": "rnd_01HF3K9QZ2",
      "session_id": "ses_01HF3K7M",
      "site_id": "site_mrd01",
      "player_id": "u_88213",
      "game_id": "sultans-ember",
      "currency": "USD",
      "bet": 2.00,
      "win": 5.00,
      "freeround_win": 0.00,
      "jackpot_win": 0.00,
      "status": "closed",
      "kind": "normal",
      "is_freeround": false,
      "has_jackpot": false,
      "rtp_variant": "v96",
      "game_version": "1.4.2",
      "created_at": "2026-11-05T14:22:05.120Z",
      "closed_at": "2026-11-05T14:22:09.480Z"
    }
  ],
  "next_cursor": null
}
200GET /v1/rounds/{round_id}
{
  "id": "rnd_01HF3K9QZ2",
  "session_id": "ses_01HF3K7M",
  "site_id": "site_mrd01",
  "player_id": "u_88213",
  "game_id": "sultans-ember",
  "currency": "USD",
  "bet": 2.00,
  "win": 5.00,
  "freeround_win": 0.00,
  "jackpot_win": 0.00,
  "status": "closed",
  "kind": "normal",
  "is_freeround": false,
  "has_jackpot": false,
  "rtp_variant": "v96",
  "game_version": "1.4.2",
  "created_at": "2026-11-05T14:22:05.120Z",
  "closed_at": "2026-11-05T14:22:09.480Z",
  "transactions": [
    {
      "transaction_id": "tx_01HF3K9QZ2-b1",
      "type": "bet",
      "status": "ok",
      "amount": 2.00,
      "capped_from": null,
      "balance_after": 148.60,
      "http_status": 200,
      "attempts": 1,
      "latency_ms": 84,
      "operator_tx_id": "op_tx_9921844",
      "request_id": "req_01HF3KA2",
      "ref_transaction_id": null,
      "created_at": "2026-11-05T14:22:05.120Z",
      "booked_at": "2026-11-05T14:22:09.480Z"
    },
    {
      "transaction_id": "tx_01HF3K9QZ2-w1",
      "type": "win",
      "status": "ok",
      "amount": 5.00,
      "capped_from": null,
      "balance_after": 153.60,
      "http_status": 200,
      "attempts": 1,
      "latency_ms": 91,
      "operator_tx_id": "op_tx_9921845",
      "request_id": "req_01HF3KA7",
      "ref_transaction_id": null,
      "created_at": "2026-11-05T14:22:09.480Z",
      "booked_at": "2026-11-05T14:22:09.480Z"
    }
  ],
  "replay_url": "https://replay.provider.example/rnd_01HF3K9QZ2"
}
404Tur bulunamadı
{
  "code": "NOT_FOUND",
  "message": "Record not found.",
  "request_id": "req_01HF3Q2N"
}

Tur durumları

DurumAnlam
openTur açık.
closedTur kapandı; closed_at dolu.
rolled_backTüm bahis ve kazançlar geri alındı veya geçersiz sayıldı, en az biri geri alındı.
voidHiç para hareketi olmadı. Filtre verilmeyen listelerde görünmez.
stuckTurda çözüm bekleyen kayıt var. Saklanan bir durum değildir; açık kayıt varken gösterilir, kayıt kapanınca tur gerçek durumuna döner.

Round alanları

AlanTürAçıklama
idstringTur kimliği. Callback’lerde round_id olarak geçer.
session_idstringOyun oturumu.
site_idstringSite kimliği.
player_idstringOperatör tarafındaki oyuncu kimliği.
game_idstringOyun kodu.
currencyISO 4217Tur para birimi.
betdecimal(18,2)Net bahis toplamı; geri alınanlar düşülmüş.
windecimal(18,2)Net kazanç toplamı: normal kazanç + freeround_win + jackpot_win.
freeround_windecimal(18,2)Free round kazancı.
jackpot_windecimal(18,2)Jackpot kazancı.
statusstringTur durumu, yukarıda.
kindstringnormal, freeround, bonus_buy, promo. promo: bahissiz promosyon kredisi turu (turnuva ödülü); tutar işlem listesindedir, wine girmez.
is_freeroundbooleanFree round turu.
has_jackpotbooleanTurda jackpot düşüşü var.
rtp_variantstring | nullOynanan RTP varyantı, örn. v96.
game_versionstring | nullOynanan oyun sürümü, örn. 1.4.2.
created_atdate-timeTurun açıldığı an.
closed_atdate-time | nullTurun kapandığı an. Fatura dönemi bu ana göre belirlenir.

Transaction alanları

AlanTürAçıklama
transaction_idstringCallback’te gönderilen işlem kimliği.
typestringbet, win, rollback.
statusstringqueued, pending, ok, rejected, ambiguous, reversed, void, manual_ok.
amountdecimal(18,2)İşlem tutarı.
capped_fromdecimal(18,2) | nullFree round kazanç tavanı ödemeyi kıstıysa oyunun gösterdiği tutar; ödenen amount. Oyuncu geçmişinde ikisini birlikte gösterin.
balance_afterdecimal(18,2) | nullYanıtınızdaki bakiye.
http_statusinteger | nullYanıtınızın HTTP kodu.
attemptsintegerDeneme sayısı.
latency_msinteger | nullYanıt süresi, ms.
operator_tx_idstring | nullYanıtınızdaki işlem kimliği.
request_idstringCallback’in X-Request-Id değeri.
ref_transaction_idstring | nullRollback’te geri alınan işlem.
created_atdate-timeİşlemin oluştuğu an.
booked_atdate-time | nullMuhasebe tarihi. Raporlar ve fatura bu tarihi okur.

Replay

replay_url turun tekrar izleme bağlantısıdır. Sağlayıcı replay sunmuyorsa, turun sağlayıcı kaydı yoksa, sağlayıcıya o an ulaşılamıyorsa veya replay modülünüz kapalıysa null gelir; tur ve işlemler yine döner. EGT turlarında bağlantı kalıcıdır: turun oluştuğu andan itibaren 24 ay geçerlidir ve aynı tur için hep aynı bağlantı döner. Saklayabilir, istediğiniz kadar açabilirsiniz. Giriş ve çerez istemez, yalnız o turu gösterir; yeni sekmede de, başka alan adındaki iframe içinde de (Safari dahil) açılır. EGT her oyunda ve her turda replay kaydı vermez: kaydı olmayan turda replay_url null gelir, bu bir hata değildir. Süresi dolmuş veya iptal edilmiş bağlantı oyun yerine bir uyarı sayfası açar (HTTP 410). Bağlantıyı bilen herkes turu izleyebilir; yalnız yetkili kişilerle paylaşın. Bağlantı yanlış kişiye ulaştıysa destekten iptal isteyin: o sitenin o ana kadar verilmiş bütün replay bağlantıları kapanır, GET /v1/rounds/{round_id} sonra yeni bağlantı döndürür.

Hata kodları

KodHTTPAnlam
INVALID_SIGNATURE401İmza doğrulanamadı
TIMESTAMP_SKEW401X-Timestamp ±30 sn dışında
IP_NOT_ALLOWED403IP izin listesinde değil
SCOPE_MISSING403rounds.read kapsamı yok
SCOPE_DENIED403site_id veya tur anahtarınızın kapsamı dışında
NOT_FOUND404Tur yok veya size ait değil
VALIDATION_ERROR422Geçersiz sorgu parametresi
INVALID_CURSOR422cursor önceki yanıttan gelmiyor
RATE_LIMITED429Hız limiti aşıldı

Takılı turlar

GET /v1/reconciliation/stuck-rounds (reconciliation.read) çözüm bekleyen mutabakat kalemlerini en eskiden başlayarak döndürür: en çok 500 satır, sayfalama yok. Her açık kalem bir satırdır; aynı tur iki kez görünebilir. Açık kalem durumları: open, retrying, on_hold, escalated. Takılı tur oluşunca round.stuck webhook’u da gelir.

site_idstring
Site kodu.
older_thanstring
Yalnız bu süreden eski kalemler: sayı + m, h veya d, örn. 30m, 2h, 1d.
AlanTürAçıklama
…Round alanlarının tamamı (yukarıda).
item_idstringMutabakat kaleminin kimliği.
issuestringwin_no_response, win_rejected, bet_timeout, rollback_rejected, duplicate_conflict, win_without_bet, win_invalid, rollback_after_win, rollback_after_jackpot, round_open_timeout.
transaction_idstring | nullKalemin işlemi.
pending_callstring | nullBekleyen çağrı: bet, win, rollback.
item_statusstringopen, retrying, on_hold, escalated.
age_secondsintegerKalemin yaşı, saniye.
manual_unlock_atdate-time | nullElle kapanış seçeneklerinin açılacağı an.
attemptsobject[]Denemeler: at, result.
200GET /v1/reconciliation/stuck-rounds
[
  {
    "id": "rnd_01HF3M2C7R",
    "session_id": "ses_01HF3M1Q",
    "site_id": "site_mrd01",
    "player_id": "u_88213",
    "game_id": "sultans-ember",
    "currency": "USD",
    "bet": 2.00,
    "win": 0.00,
    "freeround_win": 0.00,
    "jackpot_win": 0.00,
    "status": "stuck",
    "kind": "normal",
    "is_freeround": false,
    "has_jackpot": false,
    "rtp_variant": "v96",
    "game_version": "1.4.2",
    "created_at": "2026-11-05T15:02:11.000Z",
    "closed_at": null,
    "item_id": "rci_01HF3M4A",
    "issue": "win_no_response",
    "transaction_id": "tx_01HF3M2C7R-w1",
    "pending_call": "win",
    "item_status": "retrying",
    "age_seconds": 640,
    "manual_unlock_at": null,
    "attempts": [
      { "at": "2026-11-05T15:02:14.000Z", "result": "timeout" },
      { "at": "2026-11-05T15:02:44.000Z", "result": "HTTP 502" }
    ]
  }
]

Takılı tur çözümü

POST /v1/reconciliation/stuck-rounds/{round_id}/resolve (reconciliation.write, X-Request-Id zorunlu) turun açık kalemine karar verir. Yanıt 202: {status, approval_id}. status: applied uygulandı; pending_approval Boss Hub onayı bekliyor demektir.

actionstringzorunlu
resend_win, rollback, manual_close, escalate, cancel_result, rollback_accept, rollback_refuse, drop_keep, drop_cancel.
reasonstringzorunlu
Gerekçe, 1-1000 karakter. Denetim kaydına yazılır.
transaction_idstring
Turda birden çok açık kalem varsa zorunlu: hangi kalem.
outcomestring
manual_close için zorunlu: operator_paid, not_taken, win_reversed, lost, invalid.
operator_confirmedboolean
Elle ödenmiş kazancı olan turda sonuç iptali için true gönderin.
issueactionmanual_close outcome
win_no_response, win_rejectedresend_win, manual_close, cancel_result, escalateoperator_paid
bet_timeoutrollback, manual_close, escalatenot_taken
rollback_rejectedbahis iadesinde: rollback, manual_close, escalate; kazanç veya jackpot iadesinde ayrıca rollback_refusenot_taken (bahis), win_reversed (kazanç, jackpot)
duplicate_conflictişlemin türüne göre yukarıdaki satır; gelen olay çakışmasında manual_close, escalateişleme göre; gelen olayda invalid
win_without_bet, win_invalidmanual_close, escalateinvalid
rollback_after_winrollback_refuse, rollback_accept, escalate
rollback_after_jackpotdrop_keep, drop_cancel, escalate
round_open_timeoutmanual_close, rollback, escalatelost
  • Boss Hub onayı her zaman gerekenler: cancel_result, rollback_accept, drop_cancel. Jackpot düşen turda cancel_result ve rollback_accept drop_cancel olarak işlenir.
  • Onay gerekmeyenler: rollback_refuse, drop_keep, escalate ve manual_close + operator_paid.
  • resend_win, rollback ve diğer manual_close sonuçları, turun en büyük bahis veya kazancı onay eşiğini (varsayılan 1.000 USD) aşarsa onaya gider.
  • Deneme yapılmış bir işlemde manual_close, önce portalda Çöz ya da escalate ile takvim durdurulup manual_unlock_at geçene kadar 409 MANUAL_LOCKED alır. Elle ödeme kuralı: win.
POST /v1/reconciliation/stuck-rounds/rnd_01HF3M2C7R/resolve

{
  "action": "resend_win",
  "reason": "Wallet was down 15:00-15:10, retry the win",
  "transaction_id": "tx_01HF3M2C7R-w1"
}

202
{ "status": "applied", "approval_id": null }

Çözüm hata kodları

KodHTTPAnlam
SCOPE_MISSING403reconciliation.read veya reconciliation.write kapsamı yok
SCOPE_DENIED403site_id veya tur anahtarınızın kapsamı dışında
NOT_FOUND404Turda açık kalem yok
ITEM_RESOLVED409Kalem zaten çözüldü
MANUAL_LOCKED409Elle seçenek henüz kilitli (details.manual_unlock_at)
APPROVAL_PENDING409Bu kalem için bekleyen onay var
TX_NOT_RESENDABLE409İşlem bu durumda yeniden gönderilemez
TX_CHANGED409İşlem bu sırada değişti; listeyi yenileyip tekrar karar verin
NO_TRANSACTION409Bu çözüm için turda uygun işlem yok
TRANSACTION_REQUIRED422Birden çok açık kalem var, transaction_id gerekli (details.transaction_ids)
TRANSACTION_MISMATCH422transaction_id bu turun açık kalemi değil (details.transaction_ids)
ACTION_NOT_ALLOWED422Bu action bu kalemde kullanılamaz
OUTCOME_NOT_ALLOWED422outcome eksik veya bu kalemde kullanılamaz
OPERATOR_CONFIRMATION_REQUIRED422Elle ödenmiş kazancın iptali operator_confirmed: true ister
VALIDATION_ERROR422Eksik veya geçersiz alan, older_than biçimi
← ÖncekiOyun başlatma (launch)Sonraki →İşlem akışı
Tur sorgulama & replay · Dokümanlar · Boss Hub