{"info":{"_postman_id":"3d705cea-888e-4f5c-9108-8f4f2a85678a","name":"Reverse Integration API","description":"<html><head></head><body><h2 id=\"introduction\">Introduction</h2>\n<p><strong>Provider</strong> - 3rd party provider that integrates this API to make its game content available for players through Aggregator.</p>\n<p><strong>Aggregator</strong> - aggregator that provides API for integrating Provider's content.</p>\n<h3 id=\"provider-provides\">Provider provides:</h3>\n<ol>\n<li><p><code>apiUrl</code> - API endpoint URL</p>\n</li>\n<li><p>IPs to whitelist</p>\n</li>\n</ol>\n<h3 id=\"aggregator-provides\">Aggregator provides:</h3>\n<ol>\n<li><p><code>brandId</code> - unique brand identifier where Provider's games will be available. Can be used for custom RTP settings, game lists, etc.</p>\n</li>\n<li><p><code>provider</code> - unique Provider identifier in Aggregator's system</p>\n</li>\n<li><p>API credentials (<code>apiUsername</code>, <code>apiPassword</code>)</p>\n</li>\n<li><p>IPs to whitelist</p>\n</li>\n</ol>\n<p><strong>Note:</strong> API credentials and URLs may differ for each <code>provider</code> + <code>brandId</code> combination.</p>\n<hr>\n<h2 id=\"formats\">Formats</h2>\n<h4 id=\"date-and-time\">Date And Time</h4>\n<p>Date and Time are passed in Unix Timestamp using UTC timezone - number of milliseconds from the epoch of 1970-01-01T00:00:00Z.<br>Examples: 2024-03-15T11:42:03+00:00 = '1710499323000'</p>\n<h4 id=\"locale\">Locale</h4>\n<p>User's locale should be passed in ISO-639 + '_' + ISO-3166 format.<br>Examples: en_US, ru_RU, de_DE</p>\n<h4 id=\"money\">Money</h4>\n<p>Money amount is passed as bigdecimal.<br>Examples: 10.00, 150.50, 0.25, 144.39999</p>\n<p>Currency is passed as string (ISO 4217).<br>Examples: EUR, USD, TRY</p>\n<hr>\n<h2 id=\"security\">Security</h2>\n<p>Each request between Provider and Aggregator must contain basic auth header.<br>Example for username 'name' and password 'password':<br>Authorization: Basic bmFtZTpwYXNzd29yZA==</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"48907826","collectionId":"3d705cea-888e-4f5c-9108-8f4f2a85678a","publishedId":"2sBXcAH33C","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-02-09T13:50:23.000Z"},"item":[{"name":"Game Provider API","item":[{"name":"Games","item":[{"name":"Get Games List","id":"2776caaa-01eb-49e9-bc47-7833804bbdc1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"currencies\": [\n    \"USD\",\n    \"EUR\"\n  ],\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/games/list","description":"<p>Loads the provider's game catalog.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>currencies</code> (array, required) - List of requested currencies</p>\n</li>\n<li><p><code>jurisdiction</code> (object, required) - Jurisdiction information</p>\n<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>games</code> (array, required) - List of games</p>\n<ul>\n<li><p><code>id</code> (string, required) - Game identifier</p>\n</li>\n<li><p><code>name</code> (string, required) - Game name</p>\n</li>\n<li><p><code>demoAvailable</code> (boolean, required) - Demo mode availability</p>\n</li>\n<li><p><code>rtp</code> (number, required) - Return to player percentage</p>\n</li>\n<li><p><code>tag</code> (string, required) - Game category tag (see Available Tags below)</p>\n</li>\n<li><p><code>provider</code> (string, required) - Sub-provider identifier. Used by aggregators to display games from multiple providers separately. Game IDs are expected to be unique within a provider. Example: your provider is <code>green-studio</code>, sub-provider is <code>yellow-studio</code></p>\n</li>\n<li><p><code>betSizes</code> (object, required) - Bet amount sizes per currency. Note: this is the actual bet amount, not coin value. Example: if coin value is 0.01 and slot has 20 lines, bet amount = coinValue * lines = 0.01 * 20 = 0.20</p>\n<ul>\n<li><code>{currency}</code> (array, required) - Available bet amounts for currency</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<hr />\n<h4 id=\"available-tags\">Available Tags</h4>\n<p>New tags can be added upon request.</p>\n<p><strong>Live Casino</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Tag</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>LC_LOBBY</code></td>\n<td>Live casino lobby</td>\n</tr>\n<tr>\n<td><code>LC_ROULETTE</code></td>\n<td>Live roulette games</td>\n</tr>\n<tr>\n<td><code>LC_BLACKJACK</code></td>\n<td>Live blackjack games</td>\n</tr>\n<tr>\n<td><code>LC_BACCARAT</code></td>\n<td>Live baccarat games</td>\n</tr>\n<tr>\n<td><code>LC_SIC_BO</code></td>\n<td>Live sic bo games</td>\n</tr>\n<tr>\n<td><code>LC_POKER</code></td>\n<td>Live poker games</td>\n</tr>\n<tr>\n<td><code>LC_DRAGON_TIGER</code></td>\n<td>Live dragon tiger games</td>\n</tr>\n<tr>\n<td><code>LC_GAME_SHOWS</code></td>\n<td>Live game show games</td>\n</tr>\n<tr>\n<td><code>LC_ANDAR_BAHAR</code></td>\n<td>Live andar bahar games</td>\n</tr>\n<tr>\n<td><code>LC_KENO</code></td>\n<td>Live keno games</td>\n</tr>\n<tr>\n<td><code>LC_TEEN_PATTI</code></td>\n<td>Live teen patti games</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Casino</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Tag</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>CAS_SLOTS</code></td>\n<td>Slot machine games</td>\n</tr>\n<tr>\n<td><code>CAS_TABLE_GAMES</code></td>\n<td>Table games (non-live)</td>\n</tr>\n<tr>\n<td><code>CAS_VIDEO_POKER</code></td>\n<td>Video poker games</td>\n</tr>\n<tr>\n<td><code>CAS_CLASSIC_SLOTS</code></td>\n<td>Classic slot machine games</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Games</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Tag</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>GAM_CRASH</code></td>\n<td>Crash games</td>\n</tr>\n<tr>\n<td><code>GAM_BINGO</code></td>\n<td>Bingo games</td>\n</tr>\n<tr>\n<td><code>GAM_SOLO</code></td>\n<td>Solo games</td>\n</tr>\n<tr>\n<td><code>GAM_SCRATCH</code></td>\n<td>Scratch card games</td>\n</tr>\n<tr>\n<td><code>GAM_KENO</code></td>\n<td>Keno games</td>\n</tr>\n<tr>\n<td><code>GAM_LOTTO</code></td>\n<td>Lotto games</td>\n</tr>\n<tr>\n<td><code>GAM_LOTTERY</code></td>\n<td>Lottery games</td>\n</tr>\n<tr>\n<td><code>GAM_PLINKO</code></td>\n<td>Plinko games</td>\n</tr>\n<tr>\n<td><code>GAM_MINES</code></td>\n<td>Mines games</td>\n</tr>\n<tr>\n<td><code>GAM_DICE</code></td>\n<td>Dice games</td>\n</tr>\n<tr>\n<td><code>GAM_ROULETTE</code></td>\n<td>Roulette games</td>\n</tr>\n<tr>\n<td><code>GAM_LIMBO</code></td>\n<td>Limbo games</td>\n</tr>\n<tr>\n<td><code>GAM_HI_LO</code></td>\n<td>Hi Lo games</td>\n</tr>\n<tr>\n<td><code>GAM_SHOOTER</code></td>\n<td>Shooter games</td>\n</tr>\n<tr>\n<td><code>GAM_MARBLES</code></td>\n<td>Marbles games</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Virtuals</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Tag</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>VIRT_FOOTBALL</code></td>\n<td>Virtual football games</td>\n</tr>\n<tr>\n<td><code>VIRT_HORSE_RACING</code></td>\n<td>Virtual horse racing games</td>\n</tr>\n<tr>\n<td><code>VIRT_GREYHOUNDS</code></td>\n<td>Virtual greyhound racing games</td>\n</tr>\n<tr>\n<td><code>VIRT_BOXING</code></td>\n<td>Virtual boxing games</td>\n</tr>\n<tr>\n<td><code>VIRT_TENNIS</code></td>\n<td>Virtual tennis games</td>\n</tr>\n<tr>\n<td><code>VIRT_MOTOR_RACING</code></td>\n<td>Virtual motor racing games</td>\n</tr>\n<tr>\n<td><code>VIRT_GOLF</code></td>\n<td>Virtual golf games</td>\n</tr>\n<tr>\n<td><code>VIRT_NUMBERS</code></td>\n<td>Virtual numbers games</td>\n</tr>\n<tr>\n<td><code>VIRT_BICYCLE</code></td>\n<td>Virtual bicycle racing games</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","{provider}","{brandId}","games","list"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"9ab0a527-c116-4c15-9b29-2967b4fe805a","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"currencies\": [\n    \"USD\",\n    \"EUR\"\n  ],\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/v1/your-provider-code/brand-001/games/list"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"games\": [\n    {\n      \"id\": \"some-slot-id\",\n      \"name\": \"Some slot name\",\n      \"demoAvailable\": true,\n      \"rtp\": 96.0,\n      \"tag\": \"CAS_SLOTS\",\n      \"provider\": \"yellow-studio\",\n      \"betSizes\": {\n        \"USD\": [0.20, 0.50, 1.00, 2.00, 5.00],\n        \"EUR\": [0.20, 0.40, 1.00, 2.00, 5.00]\n      }\n    }\n  ]\n}"}],"_postman_id":"2776caaa-01eb-49e9-bc47-7833804bbdc1"},{"name":"Get Real Game Link","id":"e45ba148-0dda-4d4a-9f66-427a4bfdbad3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"locale\": \"en_US\",\n  \"ip\": \"127.0.0.1\",\n  \"country\": \"USA\",\n  \"device\": {\n    \"operatingSystem\": \"ANDROID\",\n    \"mobile\": true,\n    \"userAgent\": \"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36\"\n  },\n  \"urls\": {\n    \"returnUrl\": \"https://example.com/home\",\n    \"depositUrl\": \"https://example.com/deposit\"\n  },\n  \"player\": {\n    \"id\": \"player-123\",\n    \"username\": \"player_username\"\n  },\n  \"session\": {\n    \"id\": \"session-123\"\n  },\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/games/url/real","description":"<p>Using this method Aggregator can receive a valid launch URL for the requested game. Aggregator has to forward Player to the returned URL. There are several ways to forward the Player:</p>\n<ol>\n<li><p>Embed URL into iframe on your site;</p>\n</li>\n<li><p>Redirect Player to URL;</p>\n</li>\n<li><p>Open URL in new window/tab of browser.</p>\n</li>\n</ol>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>gameId</code> (string, required) - Game id from Get Games List response</p>\n</li>\n<li><p><code>provider</code> (string, required) - Sub-provider identifier. Used by aggregators to display games from multiple providers separately. Game IDs are expected to be unique within a provider. Example: your provider is <code>green-studio</code>, sub-provider is <code>yellow-studio</code></p>\n</li>\n<li><p><code>currency</code> (string, required) - Player currency (ISO 4217)</p>\n</li>\n<li><p><code>locale</code> (string, required) - Player locale (ISO-639 + '_' + ISO-3166)</p>\n</li>\n<li><p><code>ip</code> (string, required) - Player IP address IPv4 or IPv6.</p>\n</li>\n<li><p><code>country</code> (string, optional) - Country code (ISO 3166-1 alpha-3)</p>\n</li>\n<li><p><code>device</code> (object, required)</p>\n<ul>\n<li><p><code>operatingSystem</code> (enum, required) - Values: 'WINDOWS', 'LINUX', 'MACOS', 'IOS', 'ANDROID'</p>\n</li>\n<li><p><code>mobile</code> (boolean, required) - Whether the device is mobile</p>\n</li>\n<li><p><code>userAgent</code> (string, required) - User agent string from browser</p>\n</li>\n</ul>\n</li>\n<li><p><code>urls</code> (object, required)</p>\n<ul>\n<li><p><code>returnUrl</code> (string, required) - URL to redirect page on Aggregator</p>\n</li>\n<li><p><code>depositUrl</code> (string, required) - URL to deposit page on Aggregator</p>\n</li>\n</ul>\n</li>\n<li><p><code>player</code> (object, required)</p>\n<ul>\n<li><p><code>id</code> (string, required) - Player id in Aggregator system. Must be unique</p>\n</li>\n<li><p><code>username</code> (string, required) - Player username</p>\n</li>\n</ul>\n</li>\n<li><p><code>session</code> (object, optional)</p>\n<ul>\n<li><code>id</code> (string, required) - Unique session identifier for the player. Every transaction made by the player (/bet, /win, /rollback) must include the sessionId obtained during game launch</li>\n</ul>\n</li>\n<li><p><code>jurisdiction</code> (object, required) - Jurisdiction information</p>\n<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>value</code> (object, required) - Game link object<ul>\n<li><p><code>value</code> (string, required) - Game launch content (URL or HTML depending on type)</p>\n</li>\n<li><p><code>type</code> (enum, required) - Link type. Values: 'URL', 'HTML'</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Link Types:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>URL</code></td>\n<td>Direct URL to the game. Aggregator should redirect or embed this URL in iframe</td>\n</tr>\n<tr>\n<td><code>HTML</code></td>\n<td>HTML content to be rendered directly. Aggregator should inject this HTML into the page</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","{provider}","{brandId}","games","url","real"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"60e2fc08-6a8d-467e-a2f2-ece1327fd053","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"locale\": \"en_US\",\n  \"ip\": \"127.0.0.1\",\n  \"country\": \"USA\",\n  \"device\": {\n    \"operatingSystem\": \"ANDROID\",\n    \"mobile\": true,\n    \"userAgent\": \"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36\"\n  },\n  \"urls\": {\n    \"returnUrl\": \"https://example.com/home\",\n    \"depositUrl\": \"https://example.com/deposit\"\n  },\n  \"player\": {\n    \"id\": \"player-123\",\n    \"username\": \"player_username\"\n  },\n  \"session\": {\n    \"id\": \"session-123\"\n  },\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/v1/your-provider-code/brand-001/games/url/real"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"value\": {\n    \"value\": \"https://example.com/launch-game\",\n    \"type\": \"URL\"\n  }\n}"},{"id":"9843d445-36c0-4994-94c7-188f3f6fe24c","name":"fail","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"gameId\": \"invalid-game-id\",\n  \"currency\": \"USD\",\n  \"locale\": \"en_US\",\n  \"ip\": \"127.0.0.1\",\n  \"device\": {\n    \"operatingSystem\": \"ANDROID\",\n    \"mobile\": true,\n    \"userAgent\": \"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36\"\n  },\n  \"urls\": {\n    \"returnUrl\": \"https://example.com/home\",\n    \"depositUrl\": \"https://example.com/deposit\"\n  },\n  \"player\": {\n    \"id\": \"player-123\",\n    \"username\": \"player_username\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/games/url/real"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"RS_ERROR_UNKNOWN\",\n  \"message\": \"Game not found\"\n}"}],"_postman_id":"e45ba148-0dda-4d4a-9f66-427a4bfdbad3"},{"name":"Get Demo Game Link","id":"e27226b2-0432-4fd7-a488-42bee9f163ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"gameId\": \"some-game-id\",\n  \"locale\": \"en_US\",\n  \"ip\": \"127.0.0.1\",\n  \"country\": \"USA\",\n  \"device\": {\n    \"operatingSystem\": \"ANDROID\",\n    \"mobile\": true,\n    \"userAgent\": \"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36\"\n  },\n  \"urls\": {\n    \"returnUrl\": \"https://example.com/home\"\n  },\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/games/url/demo","description":"<p>Returns the Landing URL of the chosen game in Demo mode.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>gameId</code> (string, required) - Game id from Get Games List response</p>\n</li>\n<li><p><code>locale</code> (string, required) - Player locale (ISO-639 + '_' + ISO-3166)</p>\n</li>\n<li><p><code>ip</code> (string, required) - Player IP address</p>\n</li>\n<li><p><code>country</code> (string, optional) - Country code (ISO 3166-1 alpha-3)</p>\n</li>\n<li><p><code>device</code> (object, required)</p>\n<ul>\n<li><p><code>operatingSystem</code> (enum, required) - Values: 'WINDOWS', 'LINUX', 'MACOS', 'IOS', 'ANDROID'</p>\n</li>\n<li><p><code>mobile</code> (boolean, required) - Whether the device is mobile</p>\n</li>\n<li><p><code>userAgent</code> (string, required) - User agent string from browser</p>\n</li>\n</ul>\n</li>\n<li><p><code>urls</code> (object, required)</p>\n<ul>\n<li><code>returnUrl</code> (string, required) - URL to redirect page on Aggregator</li>\n</ul>\n</li>\n<li><p><code>jurisdiction</code> (object, required) - Jurisdiction information</p>\n<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>value</code> (object, required) - Game link object<ul>\n<li><p><code>value</code> (string, required) - Game launch content (URL or HTML depending on type)</p>\n</li>\n<li><p><code>type</code> (enum, required) - Link type. Values: 'URL', 'HTML'</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Link Types:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>URL</code></td>\n<td>Direct URL to the game. Aggregator should redirect or embed this URL in iframe</td>\n</tr>\n<tr>\n<td><code>HTML</code></td>\n<td>HTML content to be rendered directly. Aggregator should inject this HTML into the page</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","{provider}","{brandId}","games","url","demo"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"59772ea2-60b1-4356-8939-f969b449290d","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"gameId\": \"some-game-id\",\n  \"locale\": \"en_US\",\n  \"ip\": \"127.0.0.1\",\n  \"country\": \"USA\",\n  \"device\": {\n    \"operatingSystem\": \"ANDROID\",\n    \"mobile\": true,\n    \"userAgent\": \"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36\"\n  },\n  \"urls\": {\n    \"returnUrl\": \"https://example.com/home\"\n  },\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/v1/your-provider-code/brand-001/games/url/demo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"value\": {\n    \"value\": \"https://example.com/launch-demo-game\",\n    \"type\": \"URL\"\n  }\n}"}],"_postman_id":"e27226b2-0432-4fd7-a488-42bee9f163ee"},{"name":"Get Round History","id":"2908fc67-8645-466a-85b4-3e49d6878c11","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"roundId\": \"your-round-id\",\n  \"locale\": \"en_US\",\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/games/history/private/round","description":"<p>History API provides game rounds played by the player, with their details.</p>\n<p>This endpoint is strictly intended for backoffice use only. Player's browser must NOT be used as initiator of requests to this service.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>roundId</code> (string, required) - Round identifier</li>\n<li><code>locale</code> (string, optional) - User locale (ISO-639 + '_' + ISO-3166)</li>\n<li><code>jurisdiction</code> (object, required) - Jurisdiction information<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>value</code> (object, required) - Round history link object<ul>\n<li><code>value</code> (string, required) - Round history content (URL or HTML depending on type)</li>\n<li><code>type</code> (enum, required) - Link type. Values: 'URL', 'HTML'</li>\n</ul>\n</li>\n</ul>\n<p><strong>Link Types:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>URL</code></td>\n<td>Direct URL to the round history page</td>\n</tr>\n<tr>\n<td><code>HTML</code></td>\n<td>HTML content to be rendered directly</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","{provider}","{brandId}","games","history","private","round"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"46941630-ad73-4c13-9b4c-dc3eb11ad2dd","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"roundId\": \"your-round-id\",\n  \"locale\": \"en_US\",\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/v1/your-provider-code/brand-001/games/history/private/round"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"value\": {\n    \"value\": \"https://example.com/round-history\",\n    \"type\": \"URL\"\n  }\n}"}],"_postman_id":"2908fc67-8645-466a-85b4-3e49d6878c11"}],"id":"fca48d86-45dc-4e62-a19f-ce3db5c4e355","description":"<p>Provides methods to display and launch games.</p>\n","_postman_id":"fca48d86-45dc-4e62-a19f-ce3db5c4e355"},{"name":"Free Spins","item":[{"name":"Create Free Spins","id":"55248015-7e7c-4b1d-99e3-1cf0f736082b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"fs-tx-001\",\n  \"playerId\": \"player-123\",\n  \"gameIds\": [\"game-1\", \"game-2\"],\n  \"count\": 10,\n  \"currency\": \"USD\",\n  \"betValue\": 0.50,\n  \"expiresAt\": 1735689600000,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/games/freeround","description":"<p>Creates free spins for a player.</p>\n<p>This operation is idempotent: if free spins with the same <code>id</code> were previously created, they will not be modified and the request will succeed without changes.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>id</code> (string, required) - Unique transaction identifier for creating free spins. This ID must be used in bet, win, and rollback requests when the transaction relates to these free spins</li>\n<li><code>playerId</code> (string, required) - User identifier in Aggregator system</li>\n<li><code>gameIds</code> (array, required) - List of game identifiers eligible for free spins</li>\n<li><code>count</code> (int, required) - Number of free rounds. If assigned to multiple games, the total is shared across all games</li>\n<li><code>currency</code> (string, required) - Currency code (ISO 4217)</li>\n<li><code>betValue</code> (number, required) - Bet value per free round</li>\n<li><code>expiresAt</code> (number, required) - Expiration date as Unix timestamp in milliseconds</li>\n<li><code>jurisdiction</code> (object, required) - Jurisdiction information<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Empty response body on success (HTTP 200)</p>\n","urlObject":{"path":["v1","{provider}","{brandId}","games","freeround"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"7064a38e-bc7d-430f-a60d-0881cdc250b2","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"fs-tx-001\",\n  \"playerId\": \"player-123\",\n  \"gameIds\": [\"game-1\", \"game-2\"],\n  \"count\": 10,\n  \"currency\": \"USD\",\n  \"betValue\": 0.50,\n  \"expiresAt\": 1735689600000,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/v1/your-provider-code/brand-001/games/freeround"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":""},{"id":"e3399efb-2f23-4118-b8a3-bec75ce36a3a","name":"fail","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"fs-tx-002\",\n  \"playerId\": \"invalid-player\",\n  \"gameIds\": [\"game-1\"],\n  \"count\": 10,\n  \"currency\": \"USD\",\n  \"betValue\": 0.50,\n  \"expiresAt\": 1735689600000\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/games/freeround"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"RS_ERROR_UNKNOWN\",\n  \"message\": \"Failed to create free spins\"\n}"}],"_postman_id":"55248015-7e7c-4b1d-99e3-1cf0f736082b"},{"name":"Cancel Free Spins","id":"dbc45fa8-a237-4060-8107-069e4bdddea3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"fs-tx-001\",\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/games/freeround/cancel","description":"<p>Cancels previously created free spins.</p>\n<p>This operation is idempotent: if free spins with the specified <code>id</code> do not exist or were already cancelled, the request will succeed with HTTP 200.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>id</code> (string, required) - Free spins transaction identifier (from Create Free Spins request)</li>\n<li><code>jurisdiction</code> (object, required) - Jurisdiction information<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>On success (200): Empty response body</p>\n<p>On error (400):</p>\n<p>Object:</p>\n<ul>\n<li><code>code</code> (string, required) - Error status code</li>\n<li><code>message</code> (string, required) - Error message</li>\n</ul>\n","urlObject":{"path":["v1","{provider}","{brandId}","games","freeround","cancel"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"11bb3f00-6269-40b5-8614-966ec096c667","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"fs-tx-001\",\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/v1/your-provider-code/brand-001/games/freeround/cancel"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"dbc45fa8-a237-4060-8107-069e4bdddea3"}],"id":"75612dee-c74d-45db-acfe-6df0338e8780","description":"<p>Provides methods to manage free spins for players.</p>\n","_postman_id":"75612dee-c74d-45db-acfe-6df0338e8780"}],"id":"8e2b3e8e-37a1-4c44-86d3-9625272c9ac9","description":"<p>Requests sent from Aggregator to Provider.<br />Authentication: Use apiUsername / apiPassword for Basic Auth.</p>\n<hr />\n<h2 id=\"integration-flow\">Integration Flow</h2>\n<h3 id=\"simple-game-flow\">Simple Game Flow</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Aggregator                          Provider\n    |                                   |\n    |-- Get Real Game Link ------------&gt;|\n    |&lt;------------ Game URL ------------|\n    |                                   |\n    |    [Player plays the game]        |\n    |                                   |\n    |&lt;------------- Bet ----------------|\n    |------------- Balance ------------&gt;|\n    |                                   |\n    |&lt;------------- Win ----------------|\n    |------------- Balance ------------&gt;|\n    |                                   |\n    |    [Player continues playing]     |\n    |                                   |\n    |&lt;------------- Bet ----------------|\n    |------------- Balance ------------&gt;|\n    |                                   |\n    |&lt;------------- Win ----------------|\n    |------------- Balance ------------&gt;|\n\n</code></pre><h3 id=\"free-spins-flow\">Free Spins Flow</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Aggregator                          Provider\n    |                                   |\n    |-- Create Free Spins -------------&gt;|\n    |&lt;------------ Success -------------|\n    |                                   |\n    |-- Get Real Game Link ------------&gt;|\n    |&lt;------------ Game URL ------------|\n    |                                   |\n    |    [Player starts free spins]     |\n    |                                   |\n    |&lt;----- Bet (freeSpins.id) ---------|\n    |------------- Balance -------------|\n    |                                   |\n    |&lt;----- Win ------------------------|\n    |------------- Balance ------------&gt;|\n    |                                   |\n    |    ... more free spin rounds ...  |\n    |                                   |\n    |&lt;----- Bet (freeSpins.id) ---------|\n    |------------- Balance ------------&gt;|\n    |                                   |\n    |&lt;- Win (freeSpins.completed=true) -|\n    |------------- Balance ------------&gt;|\n    |                                   |\n    |    [Free spins finished,          |\n    |     player continues with         |\n    |     regular bets]                 |\n    |                                   |\n    |&lt;------------- Bet ----------------|\n    |------------- Balance ------------&gt;|\n    |                                   |\n    |&lt;------------- Win ----------------|\n    |------------- Balance ------------&gt;|\n\n</code></pre><h3 id=\"multi-bet-round-examples\">Multi-Bet Round Examples</h3>\n<p>A single round can contain multiple bet and win transactions. The <code>roundEnded</code> field indicates whether the round is complete.</p>\n<p><strong>Example 1: Simple round (single bet)</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>bet -&gt; win (roundEnded: true)\n\n</code></pre><p><strong>Example 2: Multi-bet round (e.g., blackjack with double)</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>bet -&gt; win (roundEnded: false) -&gt; bet -&gt; win (roundEnded: true)\n\n</code></pre><p><strong>Example 3: Parallel bets resolved sequentially</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>bet -&gt; bet -&gt; win (roundEnded: false) -&gt; win (roundEnded: true)\n\n</code></pre><p><strong>Example 4: Round cancelled after bet</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>bet -&gt; rollback (roundEnded: true)\n\n</code></pre><p><strong>Example 5: Partial rollback in multi-bet round</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>bet -&gt; bet -&gt; rollback (roundEnded: false) -&gt; rollback (roundEnded: true)\n\n</code></pre><p><strong>Important:</strong> Provider must not create new transactions for a round after sending a transaction with <code>roundEnded: true</code>.</p>\n","_postman_id":"8e2b3e8e-37a1-4c44-86d3-9625272c9ac9"},{"name":"Aggregator API","item":[{"name":"Game Provider","item":[{"name":"Get Balance","id":"3f8a71e4-4000-4de7-a45d-68935e3b90d0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"sessionId\": \"session-token-123\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/player/balance","description":"<p>Called when player's balance is needed. Aggregator is expected to return player's current balance.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>sessionId</code> (string, required) - Session token from game launch</p>\n</li>\n<li><p><code>gameId</code> (string, required) - Game identifier</p>\n</li>\n<li><p><code>provider</code> (string, required) - Sub-provider identifier from games/list response</p>\n</li>\n<li><p><code>playerId</code> (string, required) - User identifier in Aggregator system</p>\n</li>\n<li><p><code>currency</code> (string, required) - Player currency at game launch (ISO 4217)</p>\n</li>\n<li><p><code>jurisdiction</code> (object, required) - Jurisdiction information</p>\n<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>playerId</code> (string, required) - User identifier</p>\n</li>\n<li><p><code>currency</code> (string, required) - Currency code (ISO 4217)</p>\n</li>\n<li><p><code>balance</code> (bigdecimal, required) - Current balance</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","{provider}","{brandId}","game","player","balance"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"26a052d3-a0ad-4467-b271-4f2f6e0d0406","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"sessionId\": \"session-token-123\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/player/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"balance\": 150.50\n}"},{"id":"d9667c2b-e350-48f7-9235-ad97fb21027f","name":"fail","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"sessionId\": \"invalid-session\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"playerId\": \"player-123\"\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/player/balance"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"RS_ERROR_INVALID_TOKEN\",\n  \"message\": \"Session token is invalid or expired\"\n}"}],"_postman_id":"3f8a71e4-4000-4de7-a45d-68935e3b90d0"},{"name":"Bet","id":"924fd2a5-4cab-4018-a4da-0352496c8ff7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-bet-001\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 10.00,\n  \"freeSpins\": null,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/bet","description":"<p>Called when the User places a bet. Deducts the bet amount from the user's balance.</p>\n<hr />\n<h4 id=\"behavior\">Behavior</h4>\n<p>This endpoint is designed for executing game transactions. Request retry is only allowed in case of network errors. Each transaction ID must be globally unique. It's recommended to retry bet transactions only in case of network errors.</p>\n<p><strong>Idempotency:</strong> The <code>transactionId</code> field serves as an idempotency key. If a request with the same <code>transactionId</code> is received multiple times, the Aggregator will return the response without processing the transaction again. This ensures safe retry behavior in case of network failures.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>transactionId</code> (string, required) - Globally unique transaction identifier (also serves as idempotency key)</p>\n</li>\n<li><p><code>timestamp</code> (number, required) - Request timestamp as Unix timestamp in milliseconds</p>\n</li>\n<li><p><code>sessionId</code> (string, required) - Session token from game launch</p>\n</li>\n<li><p><code>playerId</code> (string, required) - User identifier in Aggregator system</p>\n</li>\n<li><p><code>roundId</code> (string, required) - Game round identifier</p>\n</li>\n<li><p><code>gameId</code> (string, required) - Game identifier</p>\n</li>\n<li><p><code>provider</code> (string, required) - Sub-provider identifier from games/list response</p>\n</li>\n<li><p><code>currency</code> (string, required) - Currency code (ISO 4217)</p>\n</li>\n<li><p><code>amount</code> (bigdecimal, required) - Bet amount</p>\n</li>\n<li><p><code>freeSpins</code> (object, optional) - Free spins information</p>\n<ul>\n<li><p><code>id</code> (string, required) - Free spins identifier from Create Free Spins request</p>\n</li>\n<li><p><code>spentAmount</code> (int, required) - Number of free spins spent in this bet</p>\n</li>\n</ul>\n</li>\n<li><p><code>jurisdiction</code> (object, required) - Jurisdiction information</p>\n<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>playerId</code> (string, required) - User identifier</p>\n</li>\n<li><p><code>currency</code> (string, required) - Currency code (ISO 4217)</p>\n</li>\n<li><p><code>balance</code> (bigdecimal, required) - Balance after bet</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","{provider}","{brandId}","game","transaction","bet"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"afbd24b2-be33-405e-ba1d-aaf58dc88d54","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-bet-001\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 10.00,\n  \"freeSpins\": null,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/bet"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"balance\": 140.50\n}"},{"id":"9a12dcf7-8dce-4a75-b9e1-d876b3e3b9db","name":"fail - not enough money","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-bet-001\",\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 10000.00,\n  \"freeSpins\": null\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/bet"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"RS_ERROR_NOT_ENOUGH_MONEY\",\n  \"message\": \"Insufficient balance for the operation\"\n}"},{"id":"842299fe-9069-43bd-95e7-58aca67efdd8","name":"free spins bet","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-bet-002\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-002\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 0,\n  \"freeSpins\": {\n    \"id\": \"fs-tx-001\",\n    \"spentAmount\": 1\n  },\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/bet"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"balance\": 140.50\n}"}],"_postman_id":"924fd2a5-4cab-4018-a4da-0352496c8ff7"},{"name":"Tip","id":"9779220b-2c48-468c-a7a6-9f0f96f38ba3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-tip-001\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 10.00,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/tip","description":"<p>Called when the User makes a tip. Deducts the tip amount from the user's balance.</p>\n<hr />\n<h4 id=\"behavior\">Behavior</h4>\n<p>To make tips, this endpoint must be used instead of <code>/bet</code>. Request retry is only allowed in case of network errors. Each transaction ID must be globally unique. It's recommended to retry tip transactions only in case of network errors.</p>\n<p><strong>Idempotency:</strong> The <code>transactionId</code> field serves as an idempotency key. If a request with the same <code>transactionId</code> is received multiple times, the Aggregator will return the response without processing the transaction again. This ensures safe retry behavior in case of network failures.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>transactionId</code> (string, required) - Globally unique transaction identifier (also serves as idempotency key)</p>\n</li>\n<li><p><code>timestamp</code> (number, required) - Request timestamp as Unix timestamp in milliseconds</p>\n</li>\n<li><p><code>sessionId</code> (string, required) - Session token from game launch</p>\n</li>\n<li><p><code>playerId</code> (string, required) - User identifier in Aggregator system</p>\n</li>\n<li><p><code>roundId</code> (string, required) - Game round identifier. Must be unique for every tip.</p>\n</li>\n<li><p><code>gameId</code> (string, required) - Game identifier</p>\n</li>\n<li><p><code>provider</code> (string, required) - Sub-provider identifier from games/list response</p>\n</li>\n<li><p><code>currency</code> (string, required) - Currency code (ISO 4217)</p>\n</li>\n<li><p><code>amount</code> (bigdecimal, required) - Bet amount</p>\n</li>\n<li><p><code>jurisdiction</code> (object, required) - Jurisdiction information</p>\n<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><p><code>playerId</code> (string, required) - User identifier</p>\n</li>\n<li><p><code>currency</code> (string, required) - Currency code (ISO 4217)</p>\n</li>\n<li><p><code>balance</code> (bigdecimal, required) - Balance after bet</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","{provider}","{brandId}","game","transaction","tip"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"2feffcca-a095-40e7-a539-26e8bbf866ba","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-tip-001\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 10.00,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/tip"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"balance\": 140.50\n}"},{"id":"4dc9308f-8e6c-414c-96f8-ae07b697f61b","name":"fail - not enough money","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-tip-001\",\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 10000.00\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/bet"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"RS_ERROR_NOT_ENOUGH_MONEY\",\n  \"message\": \"Insufficient balance for the operation\"\n}"}],"_postman_id":"9779220b-2c48-468c-a7a6-9f0f96f38ba3"},{"name":"Win","id":"897a4df3-ff12-409f-a1d7-12063d9912ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-win-001\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"referenceTransactionId\": \"tx-bet-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 25.00,\n  \"roundEnded\": true,\n  \"freeSpins\": null,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/win","description":"<p>Called when the User wins. Credits the win amount to the user's balance.</p>\n<hr />\n<h4 id=\"behavior\">Behavior</h4>\n<p>This endpoint is designed for crediting balance to the player. Each /win transaction must reference a /bet transaction via <code>referenceTransactionId</code>. These transactions must be retried until a successful response is received. Provider must not allow /win to reference a /bet transaction that was cancelled through /rollback.</p>\n<p><strong>Idempotency:</strong> The <code>transactionId</code> field serves as an idempotency key. If a request with the same <code>transactionId</code> is received multiple times, the Aggregator will return the response without processing the transaction again.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>transactionId</code> (string, required) - Globally unique transaction identifier (also serves as idempotency key)</li>\n<li><code>timestamp</code> (number, required) - Request timestamp as Unix timestamp in milliseconds</li>\n<li><code>sessionId</code> (string, required) - Session token from game launch</li>\n<li><code>playerId</code> (string, required) - User identifier in Aggregator system</li>\n<li><code>roundId</code> (string, required) - Game round identifier</li>\n<li><code>referenceTransactionId</code> (string, required) - Reference to the original bet transaction</li>\n<li><code>gameId</code> (string, required) - Game identifier</li>\n<li><code>provider</code> (string, required) - Sub-provider identifier from games/list response</li>\n<li><code>currency</code> (string, required) - Currency code (ISO 4217)</li>\n<li><code>amount</code> (bigdecimal, required) - Win amount</li>\n<li><code>roundEnded</code> (boolean, required) - Whether the game round has ended. Provider must not create new transactions for this round after sending <code>roundEnded: true</code></li>\n<li><code>freeSpins</code> (object, optional) - Free spins information<ul>\n<li><code>id</code> (string, required) - Free spins identifier from Create Free Spins request</li>\n<li><code>completed</code> (boolean, required) - Whether free spins session is completed</li>\n</ul>\n</li>\n<li><code>jurisdiction</code> (object, required) - Jurisdiction information<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>playerId</code> (string, required) - User identifier</li>\n<li><code>currency</code> (string, required) - Currency code (ISO 4217)</li>\n<li><code>balance</code> (bigdecimal, required) - Balance after win</li>\n</ul>\n","urlObject":{"path":["v1","{provider}","{brandId}","game","transaction","win"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"465e2da3-226c-47fa-973c-97b775350588","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-win-001\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"referenceTransactionId\": \"tx-bet-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 25.00,\n  \"roundEnded\": true,\n  \"freeSpins\": null,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/win"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"balance\": 165.50\n}"},{"id":"212213c7-bdcd-4b78-97e7-df47ed569d85","name":"free spins win","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-win-002\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-002\",\n  \"referenceTransactionId\": \"tx-bet-002\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"currency\": \"USD\",\n  \"amount\": 50.00,\n  \"roundEnded\": true,\n  \"freeSpins\": {\n    \"id\": \"fs-tx-001\",\n    \"completed\": true\n  },\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/win"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"balance\": 215.50\n}"}],"_postman_id":"897a4df3-ff12-409f-a1d7-12063d9912ba"},{"name":"Rollback","id":"290b70a1-f4ce-4e70-b53c-0f092344e1b1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{apiUsername}"},{"key":"password","value":"{apiPassword}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-rollback-001\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"referenceTransactionId\": \"tx-bet-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"roundEnded\": true,\n  \"freeSpins\": null,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/rollback","description":"<p>Called when there is need to roll back the effect of the referenced transaction.</p>\n<hr />\n<h4 id=\"behavior\">Behavior</h4>\n<p>This endpoint is designed for cancelling transactions. Both /bet and /win transactions can be cancelled (e.g., in case of round cancellation). These transactions must be retried until a successful response is received.</p>\n<p><strong>Idempotency:</strong> The <code>transactionId</code> field serves as an idempotency key. If a request with the same <code>transactionId</code> is received multiple times, the Aggregator will return the response without processing the transaction again.</p>\n<hr />\n<h4 id=\"request-body-description\">Request Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>transactionId</code> (string, required) - Globally unique transaction identifier for this rollback (also serves as idempotency key)</li>\n<li><code>timestamp</code> (number, required) - Request timestamp as Unix timestamp in milliseconds</li>\n<li><code>sessionId</code> (string, required) - Session token from game launch</li>\n<li><code>playerId</code> (string, required) - User identifier in Aggregator system</li>\n<li><code>roundId</code> (string, required) - Game round identifier</li>\n<li><code>referenceTransactionId</code> (string, required) - Reference to the transaction being rolled back</li>\n<li><code>gameId</code> (string, required) - Game identifier</li>\n<li><code>provider</code> (string, required) - Sub-provider identifier from games/list response</li>\n<li><code>roundEnded</code> (boolean, required) - Whether the game round has ended. Provider must not create new transactions for this round after sending <code>roundEnded: true</code></li>\n<li><code>freeSpins</code> (object, optional) - Free spins information<ul>\n<li><code>id</code> (string, required) - Free spins identifier from Create Free Spins request</li>\n<li><code>returnAmount</code> (int, required) - Number of free spins returned to the player</li>\n</ul>\n</li>\n<li><code>jurisdiction</code> (object, required) - Jurisdiction information<ul>\n<li><code>type</code> (enum, required) - Jurisdiction type. Values: 'NOT_APPLICABLE'</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response-body-description\">Response Body Description:</h4>\n<p>Object:</p>\n<ul>\n<li><code>playerId</code> (string, required) - User identifier</li>\n<li><code>currency</code> (string, required) - Currency code (ISO 4217)</li>\n<li><code>balance</code> (bigdecimal, required) - Balance after rollback</li>\n</ul>\n","urlObject":{"path":["v1","{provider}","{brandId}","game","transaction","rollback"],"host":["{apiUrl}"],"query":[],"variable":[]}},"response":[{"id":"83fe8605-e644-4285-a899-d10b3fa4bf11","name":"success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-rollback-001\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"referenceTransactionId\": \"tx-bet-001\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"roundEnded\": true,\n  \"freeSpins\": null,\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/rollback"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"balance\": 150.50\n}"},{"id":"c39d2c19-944c-426e-81e6-f22cc7972055","name":"fail - transaction not found","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-rollback-002\",\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-001\",\n  \"referenceTransactionId\": \"non-existent-tx\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"freeSpins\": null\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/rollback"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"RS_ERROR_TRANSACTION_DOES_NOT_EXIST\",\n  \"message\": \"Referenced transaction not found\"\n}"},{"id":"5fdb3c1c-d428-4b4a-b858-7db61f362d93","name":"free spins rollback","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionId\": \"tx-rollback-003\",\n  \"timestamp\": 1736942400000,\n  \"sessionId\": \"session-token-123\",\n  \"playerId\": \"player-123\",\n  \"roundId\": \"round-002\",\n  \"referenceTransactionId\": \"tx-bet-002\",\n  \"gameId\": \"some-game-id\",\n  \"provider\": \"yellow-studio\",\n  \"roundEnded\": true,\n  \"freeSpins\": {\n    \"id\": \"fs-tx-001\",\n    \"returnAmount\": 1\n  },\n  \"jurisdiction\": {\n    \"type\": \"NOT_APPLICABLE\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"{apiUrl}/v1/{provider}/{brandId}/game/transaction/rollback"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"playerId\": \"player-123\",\n  \"currency\": \"USD\",\n  \"balance\": 140.50\n}"}],"_postman_id":"290b70a1-f4ce-4e70-b53c-0f092344e1b1"}],"id":"3c1dd81f-5111-4781-9e93-5633b5abfb5b","description":"<p>Game transaction endpoints. This endpoints allow to make transactions against generic aggregator wallet</p>\n<h2 id=\"wallet-error-codes\">Wallet Error Codes</h2>\n<p>The following error codes may be returned in the <code>code</code> field of error responses:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>RS_ERROR_UNKNOWN</code></td>\n<td>Unknown or unspecified error</td>\n</tr>\n<tr>\n<td><code>RS_ERROR_INVALID_TOKEN</code></td>\n<td>Session token is invalid or expired</td>\n</tr>\n<tr>\n<td><code>RS_ERROR_NOT_ENOUGH_MONEY</code></td>\n<td>Insufficient balance for the operation</td>\n</tr>\n<tr>\n<td><code>RS_ERROR_TRANSACTION_DOES_NOT_EXIST</code></td>\n<td>Referenced transaction not found</td>\n</tr>\n<tr>\n<td><code>RS_ERROR_BET_DECLINED</code></td>\n<td>Bet was declined for some reason (active bonus, game unavailable, etc.)</td>\n</tr>\n<tr>\n<td><code>RS_ERROR_SESSION_EXPIRED</code></td>\n<td>Player session has expired. This error may occur when the player's session time limit has been exceeded</td>\n</tr>\n<tr>\n<td><code>RS_ERROR_INVALID_SIGNATURE</code></td>\n<td>Invalid signature of the request</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"3c1dd81f-5111-4781-9e93-5633b5abfb5b"}],"id":"7fe2a03b-093a-48d9-9cf2-4780bc629926","description":"<p>Requests sent from Provider to Aggregator.\nAuthentication: Use apiUsername / apiPassword for Basic Auth.</p>\n<hr />\n<h2 id=\"timeouts\">Timeouts</h2>\n<p>Recommended timeout for transaction requests (<code>/bet</code>, <code>/win</code>, <code>/rollback</code>): <strong>5 seconds</strong>.</p>\n<p>If a timeout occurs, the Provider should retry the request with the same <code>transactionId</code>. The Aggregator guarantees idempotent processing.</p>\n","_postman_id":"7fe2a03b-093a-48d9-9cf2-4780bc629926"}],"event":[{"listen":"prerequest","script":{"type":"text/javascript","requests":{},"exec":[""],"id":"654b6122-c85a-4ba1-8247-ea6e1af80acd"}},{"listen":"test","script":{"type":"text/javascript","requests":{},"exec":[""],"id":"3e6f7fe2-cc08-4a16-8416-6a32b53c5a49"}}],"variable":[{"key":"apiUrl","value":"{apiUrl}"},{"key":"apiUsername","value":"{apiUsername}"},{"key":"apiPassword","value":"{apiPassword}"},{"key":"provider","value":"{provider}"},{"key":"brandId","value":"{brandId}"}]}