Tur sorgulama & replay
API · Operatör → Boss HubTurları 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ık | Açıklama |
|---|---|
| X-Operator-Id | Operatör kimliğiniz |
| X-Timestamp | Unix saniye. ±30 sn dışı reddedilir |
| X-Signature | hex(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 |
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.
{
"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
}{
"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"
}{
"code": "NOT_FOUND",
"message": "Record not found.",
"request_id": "req_01HF3Q2N"
}Tur durumları
| Durum | Anlam |
|---|---|
| open | Tur açık. |
| closed | Tur kapandı; closed_at dolu. |
| rolled_back | Tüm bahis ve kazançlar geri alındı veya geçersiz sayıldı, en az biri geri alındı. |
| void | Hiç para hareketi olmadı. Filtre verilmeyen listelerde görünmez. |
| stuck | Turda çö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ı
| Alan | Tür | Açıklama |
|---|---|---|
| id | string | Tur kimliği. Callback’lerde round_id olarak geçer. |
| session_id | string | Oyun oturumu. |
| site_id | string | Site kimliği. |
| player_id | string | Operatör tarafındaki oyuncu kimliği. |
| game_id | string | Oyun kodu. |
| currency | ISO 4217 | Tur para birimi. |
| bet | decimal(18,2) | Net bahis toplamı; geri alınanlar düşülmüş. |
| win | decimal(18,2) | Net kazanç toplamı: normal kazanç + freeround_win + jackpot_win. |
| freeround_win | decimal(18,2) | Free round kazancı. |
| jackpot_win | decimal(18,2) | Jackpot kazancı. |
| status | string | Tur durumu, yukarıda. |
| kind | string | normal, freeround, bonus_buy, promo. promo: bahissiz promosyon kredisi turu (turnuva ödülü); tutar işlem listesindedir, wine girmez. |
| is_freeround | boolean | Free round turu. |
| has_jackpot | boolean | Turda jackpot düşüşü var. |
| rtp_variant | string | null | Oynanan RTP varyantı, örn. v96. |
| game_version | string | null | Oynanan oyun sürümü, örn. 1.4.2. |
| created_at | date-time | Turun açıldığı an. |
| closed_at | date-time | null | Turun kapandığı an. Fatura dönemi bu ana göre belirlenir. |
Transaction alanları
| Alan | Tür | Açıklama |
|---|---|---|
| transaction_id | string | Callback’te gönderilen işlem kimliği. |
| type | string | bet, win, rollback. |
| status | string | queued, pending, ok, rejected, ambiguous, reversed, void, manual_ok. |
| amount | decimal(18,2) | İşlem tutarı. |
| capped_from | decimal(18,2) | null | Free round kazanç tavanı ödemeyi kıstıysa oyunun gösterdiği tutar; ödenen amount. Oyuncu geçmişinde ikisini birlikte gösterin. |
| balance_after | decimal(18,2) | null | Yanıtınızdaki bakiye. |
| http_status | integer | null | Yanıtınızın HTTP kodu. |
| attempts | integer | Deneme sayısı. |
| latency_ms | integer | null | Yanıt süresi, ms. |
| operator_tx_id | string | null | Yanıtınızdaki işlem kimliği. |
| request_id | string | Callback’in X-Request-Id değeri. |
| ref_transaction_id | string | null | Rollback’te geri alınan işlem. |
| created_at | date-time | İşlemin oluştuğu an. |
| booked_at | date-time | null | Muhasebe 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ı
| Kod | HTTP | Anlam |
|---|---|---|
| INVALID_SIGNATURE | 401 | İmza doğrulanamadı |
| TIMESTAMP_SKEW | 401 | X-Timestamp ±30 sn dışında |
| IP_NOT_ALLOWED | 403 | IP izin listesinde değil |
| SCOPE_MISSING | 403 | rounds.read kapsamı yok |
| SCOPE_DENIED | 403 | site_id veya tur anahtarınızın kapsamı dışında |
| NOT_FOUND | 404 | Tur yok veya size ait değil |
| VALIDATION_ERROR | 422 | Geçersiz sorgu parametresi |
| INVALID_CURSOR | 422 | cursor önceki yanıttan gelmiyor |
| RATE_LIMITED | 429 | Hı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.
| Alan | Tür | Açıklama |
|---|---|---|
| … | Round alanlarının tamamı (yukarıda). | |
| item_id | string | Mutabakat kaleminin kimliği. |
| issue | string | win_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_id | string | null | Kalemin işlemi. |
| pending_call | string | null | Bekleyen çağrı: bet, win, rollback. |
| item_status | string | open, retrying, on_hold, escalated. |
| age_seconds | integer | Kalemin yaşı, saniye. |
| manual_unlock_at | date-time | null | Elle kapanış seçeneklerinin açılacağı an. |
| attempts | object[] | Denemeler: at, result. |
[
{
"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.
| issue | action | manual_close outcome |
|---|---|---|
| win_no_response, win_rejected | resend_win, manual_close, cancel_result, escalate | operator_paid |
| bet_timeout | rollback, manual_close, escalate | not_taken |
| rollback_rejected | bahis iadesinde: rollback, manual_close, escalate; kazanç veya jackpot iadesinde ayrıca rollback_refuse | not_taken (bahis), win_reversed (kazanç, jackpot) |
| duplicate_conflict | işlemin türüne göre yukarıdaki satır; gelen olay çakışmasında manual_close, escalate | işleme göre; gelen olayda invalid |
| win_without_bet, win_invalid | manual_close, escalate | invalid |
| rollback_after_win | rollback_refuse, rollback_accept, escalate | |
| rollback_after_jackpot | drop_keep, drop_cancel, escalate | |
| round_open_timeout | manual_close, rollback, escalate | lost |
- 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ı
| Kod | HTTP | Anlam |
|---|---|---|
| SCOPE_MISSING | 403 | reconciliation.read veya reconciliation.write kapsamı yok |
| SCOPE_DENIED | 403 | site_id veya tur anahtarınızın kapsamı dışında |
| NOT_FOUND | 404 | Turda açık kalem yok |
| ITEM_RESOLVED | 409 | Kalem zaten çözüldü |
| MANUAL_LOCKED | 409 | Elle seçenek henüz kilitli (details.manual_unlock_at) |
| APPROVAL_PENDING | 409 | Bu kalem için bekleyen onay var |
| TX_NOT_RESENDABLE | 409 | İşlem bu durumda yeniden gönderilemez |
| TX_CHANGED | 409 | İşlem bu sırada değişti; listeyi yenileyip tekrar karar verin |
| NO_TRANSACTION | 409 | Bu çözüm için turda uygun işlem yok |
| TRANSACTION_REQUIRED | 422 | Birden çok açık kalem var, transaction_id gerekli (details.transaction_ids) |
| TRANSACTION_MISMATCH | 422 | transaction_id bu turun açık kalemi değil (details.transaction_ids) |
| ACTION_NOT_ALLOWED | 422 | Bu action bu kalemde kullanılamaz |
| OUTCOME_NOT_ALLOWED | 422 | outcome eksik veya bu kalemde kullanılamaz |
| OPERATOR_CONFIRMATION_REQUIRED | 422 | Elle ödenmiş kazancın iptali operator_confirmed: true ister |
| VALIDATION_ERROR | 422 | Eksik veya geçersiz alan, older_than biçimi |