{"openapi":"3.1.0","info":{"title":"OrbiPoker Operator API","version":"1.0.0","description":"Server-to-server API for operators embedding OrbiPoker by iframe. All amounts are integer minor units. Authenticate with `Authorization: Bearer orbp_sk_…`."},"servers":[{"url":"https://orbipoker-production.up.railway.app"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}},"schemas":{"LaunchRequest":{"type":"object","required":["playerId","currency"],"properties":{"playerId":{"type":"string","maxLength":128},"nickname":{"type":"string","pattern":"^[\\p{L}\\p{N}_.-]{3,16}$"},"currency":{"type":"string","example":"BRL"},"locale":{"enum":["pt-BR","en","es"]},"country":{"type":"string","pattern":"^[A-Z]{2}$"},"parentOrigin":{"type":"string","format":"uri"},"sessionToken":{"type":"string","maxLength":512,"description":"Echoed in every wallet webhook."},"lobby":{"enum":["cash","fastfold","sng","spin","mtt"]},"table":{"type":"string"},"theme":{"type":"object","description":"Per-session theme override (same schema as config.theme)."},"depositUrl":{"type":"string","format":"uri"},"exitUrl":{"type":"string","format":"uri"}}},"LaunchResponse":{"type":"object","properties":{"launchId":{"type":"string"},"launchUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"integer"}}},"WalletRequest":{"type":"object","required":["version","event","transactionId","playerId","currency"],"properties":{"version":{"const":1},"event":{"enum":["balance","debit","credit","rollback"]},"transactionId":{"type":"string","format":"uuid"},"referenceTransactionId":{"type":["string","null"],"description":"For rollback: the debit being reversed."},"tenantId":{"type":"string"},"playerId":{"type":"string"},"currency":{"type":"string"},"amount":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"reason":{"enum":["cash_buyin","cash_topup","cash_cashout","cash_table_closed","cash_recovery","fastfold_buyin","fastfold_topup","fastfold_cashout","tourney_buyin","tourney_refund","tourney_prize","tourney_bounty","tourney_recovery","debit_timeout"]},"tableId":{"type":["string","null"]},"tournamentId":{"type":["string","null"]},"handId":{"type":"null","description":"Reserved; always null in v1."},"sessionToken":{"type":["string","null"]},"createdAt":{"type":"integer"}}},"WalletResponse":{"type":"object","properties":{"balance":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."}}}}},"paths":{"/api/v1/me":{"get":{"summary":"Operator identity and integration settings","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}}},"/api/v1/launch":{"post":{"summary":"Create a single-use iframe launch URL (expires in 120 s)","security":[{"bearer":[]}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LaunchResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LaunchRequest"}}}}}},"/api/v1/players/{playerId}":{"get":{"summary":"Player profile, stats, recent hands, tournaments and wallet movements","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"string"},"description":"Your player id (externalId)."}]}},"/api/v1/players/{playerId}/block":{"post":{"summary":"Block / self-exclude a player (closes their tables and returns chips)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"string"},"description":"Your player id (externalId)."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string"},"until":{"type":["integer","null"]}}}}}}}},"/api/v1/players/{playerId}/unblock":{"post":{"summary":"Unblock a player","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"string"},"description":"Your player id (externalId)."}]}},"/api/v1/players/{playerId}/limits":{"post":{"summary":"Responsible-gaming limits","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"string"},"description":"Your player id (externalId)."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"maxBuyInPerDay":{"type":["integer","null"]},"sessionMinutes":{"type":["integer","null"]},"maxTables":{"type":["integer","null"]}}}}}}}},"/api/v1/players/{playerId}/kick":{"post":{"summary":"Remove a player from every table now","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"string"},"description":"Your player id (externalId)."}]}},"/api/v1/hands":{"get":{"summary":"Search hands","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"playerId","in":"query","schema":{"type":"string"}},{"name":"tableId","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer"}}]}},"/api/v1/hands/{handId}":{"get":{"summary":"Full hand (JSON) or PokerStars-style text with ?format=text","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"handId","in":"path","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","schema":{"enum":["json","text"]}}]}},"/api/v1/reports/ggr":{"get":{"summary":"GGR by day and currency: rake, tournament fees, Spin margin, network settlement","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"from","in":"query","schema":{"type":"integer"}},{"name":"to","in":"query","schema":{"type":"integer"}},{"name":"groupBy","in":"query","schema":{"enum":["day","total"]}}]}},"/api/v1/reports/players":{"get":{"summary":"Per-player activity for loyalty/rakeback: hands, rake, cash net, tournament fees and entries","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"from","in":"query","schema":{"type":"integer"}},{"name":"to","in":"query","schema":{"type":"integer"}}]}},"/api/v1/transactions":{"get":{"summary":"Wallet movements with delivery status","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"parameters":[{"name":"status","in":"query","schema":{"enum":["ok","declined","retrying","failed","unknown","pending"]}},{"name":"playerId","in":"query","schema":{"type":"string"}}]}},"/api/v1/transactions/{id}/retry":{"post":{"summary":"Resend a pending credit/rollback now (same transactionId and body)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}}},"/api/v1/tables":{"get":{"summary":"List cash tables and fast-fold pools","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"post":{"summary":"Create a cash table or fast-fold pool","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["name","variant","currency","bb"],"properties":{"name":{"type":"string"},"kind":{"enum":["cash","fastfold"]},"variant":{"enum":["NLHE","PLHE","PLO4","PLO5","PLO6","PLO8","SHORT"]},"currency":{"type":"string"},"sb":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"bb":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"ante":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"bbAnte":{"type":"boolean"},"seats":{"enum":[2,6,8,9]},"minBuyIn":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"maxBuyIn":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"rakeBps":{"type":"integer"},"rakeCap":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"network":{"type":"boolean"},"features":{"type":"object","properties":{"straddle":{"type":"boolean"},"runItTwice":{"type":"boolean"},"rabbitHunt":{"type":"boolean"},"anonymous":{"type":"boolean"}}}}}}}}}},"/api/v1/tables/{id}":{"delete":{"summary":"Close a table (players are cashed out after the current hand)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}}},"/api/v1/tournaments":{"get":{"summary":"Tournaments and templates","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"post":{"summary":"Create an MTT, a recurring MTT template, or a Sit & Go / Spin template","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["kind","name","currency","buyin"],"properties":{"kind":{"enum":["mtt","sng","spin"]},"name":{"type":"string"},"variant":{"type":"string"},"currency":{"type":"string"},"buyin":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"fee":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"bounty":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"guarantee":{"type":"integer","minimum":0,"description":"Integer minor units of the currency (e.g. cents)."},"seats":{"type":"integer"},"speed":{"enum":["slow","regular","turbo","hyper"]},"startingStack":{"type":"integer"},"startAt":{"type":"integer"},"lateRegLevels":{"type":"integer"},"maxEntries":{"type":"integer"},"recurringMinutes":{"type":"integer"},"template":{"type":"boolean"},"network":{"type":"boolean"}}}}}}}},"/api/v1/tournaments/{id}":{"delete":{"summary":"Cancel a tournament before it starts (refunds) or archive a template (tt_…)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}}},"/api/v1/config":{"get":{"summary":"Brand, theme, features, timers, limits, betting presets, rake, locales","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"patch":{"summary":"Update configuration (deep-merged, strictly validated)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}}},"/api/v1/live":{"get":{"summary":"Live tables, pools, tournaments and connected players","security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}}}},"webhooks":{"wallet":{"post":{"summary":"Seamless wallet (implemented by the operator). Header X-OrbiPoker-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256(secret, t + \".\" + rawBody)>. Return 2xx with {balance} to accept; any non-2xx declines a debit. Deduplicate by transactionId and answer duplicates with 200.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletRequest"}}}},"responses":{"200":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletResponse"}}}},"402":{"description":"Declined (insufficient funds)"}}}}}}