Casino 25 Documentation v2.9.0
Casino 25 Documentation v2.9.0
v. 2.9.0
1 Changelog 1
2 General information 3
2.1 API types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 API endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Basic terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Getting Started 5
3.1 Preparations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.1 Get client certificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Step 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Step 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Step 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Step 4 (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.2 Run static server (optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Building your own server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.3 Install API (JSON-RPC) Client (Optional) . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Start demo game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.1 Get games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.2 Set bank group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.3 Start demo session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.4 Open session URL from response in browser tab . . . . . . . . . . . . . . . . . . . . . 13
3.3 Start standard game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.1 Get games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.2 Set bank group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.3 Set player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.4 Start session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.5 Open session URL from response in browser tab . . . . . . . . . . . . . . . . . . . . . 15
3.4 Start free rounds (bonus) game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4.1 Get games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4.2 Set bank group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4.3 Set player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4.4 Set bonus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4.5 Start bonus session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4.6 Open bonus session URL from response in browser tab . . . . . . . . . . . . . . . . . 18
4 API Methods 19
4.1 Operator API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.1 Game.List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.2 BankGroup.Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
i
4.1.3 Player.Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1.4 Session.Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1.5 Session.CreateDemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.1.6 Session.Close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.7 Bonus.Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2 Seamless V2 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.1 getBalance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.2 withdrawAndDeposit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2.3 rollbackTransaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.4 Seamless errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Error 1 ErrNotEnoughMoneyCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Error 2 ErrIllegalCurrencyCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Error 3 ErrNegativeDepositCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Error 4 ErrNegativeWithdrawalCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Error 5 ErrSpendingBudgetExceeded . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Error 6 ErrMaxBetLimitExceededCode . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Error 7 ErrInternalErrorCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7 Application 45
7.1 Currencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.2 Bet types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.3 Win types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.4 Vocabulary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.4.1 Game provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.4.2 Game client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.4.3 Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.4.4 Seamless server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.4.5 Back-office . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.4.6 Bank Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.4.7 Spin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.4.8 Free round . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.4.9 Bonus balance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.4.10 Series of sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
ii
Changelog
1
Casino 25 Documentation
2 Chapter 1. Changelog
General information
Before further reading, we strongly recommend you to get familiar with the basic terminology in the vocab-
ulary for better understanding.
3
Casino 25 Documentation
This section provides information about how to integrate your casino with Casino 25 API in several steps.
3.1 Preparations
This certificate needs for verifying and identifying you when you send requests to the game provider.
To get the client certificate, you need to use instruction below.
Before you start using the API you need to generate a certificate to be able to use it as an authorized user.
You can do it with any utility you want but here is an example of using openssl in Linux:
Step 1
Create a folder (‘ssl’ or any other name you want, it doesn’t matter at all), where you are going to generate a
private key and a certificate signing request file. And just go there.
mkdir ssl
cd ssl
Step 2
openssl req -out client.csr -new -newkey rsa:2048 -nodes -keyout client.key
Attention: You should pre-install the openssl component before you do this.
5
Casino 25 Documentation
Note: You can fill all the fields out with whatever you want or just leave it blank.
After executing this command, you will see new files in that folder.
ls -la
total 16
drwxrwxr-x 2 hidden hidden 4096 Jul 25 15:10 .
drwxrwxr-x 7 hidden hidden 4096 Jul 25 15:10 ..
-rw-rw-r-- 1 hidden hidden 956 Jul 25 15:10 client.csr
-rw-rw-r-- 1 hidden hidden 1704 Jul 25 15:10 client.key
Put the content of client.csr into the ‘CSR’ text area (you can find it on the home page of your back office
account) and click ‘Save’ button. You will get a signed API certificate in the ‘Certificate’ text area.
Step 3
Now just copy the content of the ‘Certificate’ text area and put it to client.crt file. That’s your certificate
for our API.
Attention: The certificate is issued only for 5 years — after it needs to be re-issued.
You can always find out the certificate expiration date in your back-office.
Note: Step 4 is required for customers who use PHP API Client.
Step 4 (Optional)
And finally, you need to join (concatenate) client.key and client.crt and save it to a new file named
apikey.pem. Because our API Client requires to do that.
On Linux you can do it like that:
ls -la
total 16
(continues on next page)
3.1. Preparations 7
Casino 25 Documentation
Overview
Getting games’ static files and serving them allows you to decrease the latency of receiving big game files
for your players. You can scale this server however you want, i.e server per country if you would like.
We serve static files via rsync server.
The address is: rsync.c2seven.com
Prerequisites
• AlpineLinux:
• CentOS:
• Windows:
There is no official rsync client for Windows but CwRsync is an implementation of rsync for Windows. Ba-
sically, you could also use Cygwin (Linux terminal emulator for Windows) and use native rsync. There is no
difference in parts of functionality we are going to use. Download and install it.
2. Ensure that you have rsync utility on your server by executing rsync command
3. Create directory for static files and use it in the next step
4. Get static files for the first time
Make sure you have enough free space on disk.
To get static files, run this command:
server {
# replace with your domain name
server_name "static.domain.com";
listen 443 ssl;
charset utf-8;
error_page 405 =200 $uri;
location / {
# replace with your path to static files
root /path/to/static;
(continues on next page)
3.1. Preparations 9
Casino 25 Documentation
include mime.types;
types {
text/plain asp;
}
location ~ ^(?<pref>/netEnt/[^/]+/)(?:en/en/)(?<postf>.*)$ {
try_files $uri $pref$postf =404;
}
location ~ ^(?<pref>/netEnt/[^/]+/)(?:en|de|fr|es|pl|ru|it|cn)/(?<postf>.*)$ {
try_files $uri $pref$postf =404;
}
Docker image is also available, check the repository for further setup.
7. Make game sessions to use your static files
Start invoking Session.Create method with StaticHost parameter.
Fill it out with your domain name.
For example, static.domain.com.
First of all, you need to install Composer (Dependency Manager for PHP) if you haven’t done it before.
Here you can find how to do this.
Then, go to the root of your project path, create a file, name it composer.json and put this content there:
{
"minimum-stability": "dev",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/OutcomeBet/casino25-api-client.git"
}
]
}
<?php
use outcomebet\casino25\api\client\Client;
var_export($client->listGames());
Note: For a more quick start, you can use our PHP API Client.
Request:
{
"jsonrpc": "2.0",
"method": "Game.List",
"id": 1920911592
}
Expected response:
{
"jsonrpc": "2.0",
"id": 1920911592,
"result": {
"Games": [
(continues on next page)
Note: Step 2 is intended for operators who are using the API for the first time. Therefore, there is no need
to re-create the bank group if you have already done so.
Request:
{
"jsonrpc": "2.0",
"method": "BankGroup.Set",
"id": 1225625456,
"params": {
"Id": "new_bank_group",
"Currency": "EUR"
}
}
Expected response:
{
"jsonrpc": "2.0",
"id": 1225625456,
"result": []
}
Request:
{
"jsonrpc": "2.0",
"method": "Session.CreateDemo",
"id": 321864203,
"params": {
"BankGroupId": "new_bank_group",
"GameId": "starburst_touch",
(continues on next page)
Expected response:
{
"jsonrpc": "2.0",
"id": 321864203,
"result": {
"SessionId": "xxxxxxxxxx",
"SessionUrl": "https://xxxxxxxxxx.domain.com/"
}
}
In the last step you need to open SessionUrl in a new browser tab.
Note: For a more quick start, you can use our PHP API Client.
Request:
{
"jsonrpc": "2.0",
"method": "Game.List",
"id": 1920911592
}
Expected response:
{
"jsonrpc": "2.0",
"id": 1920911592,
"result": {
"Games": [
{
"Id": "starburst_touch",
(continues on next page)
Note: Steps 2, 3 are intended for operators who are using the API for the first time. Therefore, there is no
need to re-create the bank group/player or set the initial balance if you have already done so.
Request:
{
"jsonrpc": "2.0",
"method": "BankGroup.Set",
"id": 1225625456,
"params": {
"Id": "new_bank_group",
"Currency": "EUR"
}
}
Expected response:
{
"jsonrpc": "2.0",
"id": 1225625456,
"result": []
}
Request:
{
"jsonrpc": "2.0",
"method": "Player.Set",
"id": 1928822491,
"params": {
"Id": "noname",
"Nick": "Noname",
"BankGroupId": "new_bank_group"
}
}
Expected response:
{
"jsonrpc": "2.0",
"id": 1928822491,
"result": []
}
Request:
{
"jsonrpc": "2.0",
"method": "Session.Create",
"id": 321864203,
"params": {
"PlayerId": "noname",
"GameId": "starburst_touch"
}
}
Expected response:
{
"jsonrpc": "2.0",
"id": 321864203,
"result": {
"SessionId": "xxxxxxxxxx",
"SessionUrl": "https://xxxxxxxxxx.domain.com/"
}
}
In the last step you need to open SessionUrl in a new browser tab.
Note: For a more quick start, you can use our PHP API Client.
Request:
{
"jsonrpc": "2.0",
"method": "Game.List",
"id": 1920911592
}
Expected response:
{
"jsonrpc": "2.0",
"id": 1920911592,
"result": {
"Games": [
{
"Id": "starburst_touch",
"Name": "Starburst touch",
"Description": "10 Lines, L\/R, Respin",
"SectionId": "netent",
"Type": "slots",
"Tags": ["FR"],
"Format": "html"
},
{ "..." }
]
}
}
Note: Steps 2, 3, 4 are intended for operators who are using the API for the first time. Therefore, there is
no need to re-create the bank group/player or set bonus if you have already done so.
Request:
{
"jsonrpc": "2.0",
"method": "BankGroup.Set",
"id": 1225625456,
"params": {
"Id": "new_bank_group",
"Currency": "EUR"
}
}
Expected response:
{
"jsonrpc": "2.0",
"id": 1225625456,
(continues on next page)
Request:
{
"jsonrpc": "2.0",
"method": "Player.Set",
"id": 1928822491,
"params": {
"Id": "noname",
"Nick": "Noname",
"BankGroupId": "new_bank_group"
}
}
Expected response:
{
"jsonrpc": "2.0",
"id": 1928822491,
"result": []
}
Request:
{
"jsonrpc": "2.0",
"method": "Bonus.Set",
"id": 1928822492,
"params": {
"Id": "new_bonus"
}
}
Expected response:
{
"jsonrpc": "2.0",
"id": 1047919053,
"result": {
"Bonus": {
"Id": "new_bonus",
"FsType": "original",
"CounterType": "separate"
}
}
}
Request:
{
"jsonrpc": "2.0",
"method": "Session.Create",
"id": 321864203,
"params": {
"PlayerId": "noname",
"GameId": "starburst_touch",
"BonusId": "new_bonus",
"Params": {
"freeround_bet": 2,
"freeround_denomination": 0.3
}
}
}
Expected response:
{
"jsonrpc": "2.0",
"id": 321864203,
"result": {
"SessionId": "xxxxxxxxxx",
"SessionUrl": "https://xxxxxxxxxx.domain.com/"
}
}
In the last step you need to open SessionUrl in a new browser tab.
4.1.1 Game.List
Type: Request
Returns a list of available games.
Request parameters:
Response parameters:
19
Casino 25 Documentation
Possible tags:
Request example:
{
"jsonrpc": "2.0",
"method": "Game.List",
"id": 1920911592,
"params": {
"BankGroupId": "new_bank_group"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1920911592,
"result": {
"Games": [
{
"Id": "starburst_touch",
"Name": "Starburst touch",
(continues on next page)
4.1.2 BankGroup.Set
Type: Request
Creates or updates a bank group (aka “upsert”).
Warning: You can set a currency for the bank group only when you create the bank group.
Request parameters:
{
"jsonrpc": "2.0",
"method": "BankGroup.Set",
"id": 1225625456,
"params": {
"Id": "new_bank_group",
"Currency": "EUR"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1225625456,
(continues on next page)
4.1.3 Player.Set
Type: Request
Creates or updates a player (aka “upsert”).
Request parameters:
{
"jsonrpc": "2.0",
"method": "Player.Set",
"id": 1928822491,
"params": {
"Id": "noname",
"Nick": "Noname",
"BankGroupId": "new_bank_group"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1928822491,
"result": []
}
4.1.4 Session.Create
Type: Request
Creates a game session.
Request parameters:
RestorePolicy options:
Value Description
Create Creates a brand-new session. It is used by default if Restore-
Policy is not specified
Restore Creates a new session and tries to restore it from the previous
session by copying old data to the new session. If the previous
session has not existed yet (the same player and game), then
it uses Create case (creates a new session)
Last Returns the last session (the same player and game) if it’s still
open. Otherwise, it uses the Restore case
Note: When a new session created all previous open sessions get closed (implicitly).
Note: If the RestorePolicy parameter is set to Create, the game provider generates a new session series,
while if the parameter is set to Restore or Last, the game provider adds a new session to the latest series
for combination of player + game.
Note: Restore policies do not work for free round sessions. Only for standard sessions.
Params options:
Example: 0.01
Response parameters:
Request example:
{
"jsonrpc": "2.0",
"method": "Session.Create",
"id": 1047919053,
"params": {
"PlayerId": "noname",
"GameId": "starburst_touch",
"BonusId": "new_bonus",
"Params": {
"language": "es",
"freeround_bet": 2,
"freeround_denomination": 0.3
}
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1047919053,
"result": {
"SessionId": "xxxxxxxxxx",
"SessionUrl": "https://xxxxxxxxxx.domain.com/"
}
}
4.1.5 Session.CreateDemo
Type: Request
Creates a demo game session.
Request parameters:
Params options:
Response parameters:
Request example:
{
"jsonrpc": "2.0",
"method": "Session.CreateDemo",
"id": 321864203,
"params": {
"BankGroupId": "new_bank_group",
"GameId": "starburst_touch",
"StartBalance": 10000
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 321864203,
"result": {
"SessionId": "xxxxxxxxxx",
"SessionUrl": "https:\/\/xxxxxxxxxx.domain.com\/"
}
}
4.1.6 Session.Close
Type: Request
Explicitly closes the opened session.
Note: To calculate the statistics in the back-office, you may need to close the session by this method
invocation. This method should only be called if you want to check the statistics immediately. Otherwise,
prefer the default way: each new session closes the previous session.
Request parameters:
{
"jsonrpc": "2.0",
"method": "Session.Close",
"id": 1362660429,
"params": {
"SessionId": "xxxxxxxxxx"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1362660429,
"result": []
}
4.1.7 Bonus.Set
Type: Request
Sets up a bonus.
Request parameters:
Request example:
{
"jsonrpc": "2.0",
"method": "Bonus.Set",
"id": 1928822492,
"params": {
"Id": "new_bonus"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1928822492,
"result": {
"Bonus": {
"Id": "new_bonus"
}
}
}
The server on the operator side should be ready to receive API calls from the game provider. JSON-RPC 2.0
over HTTPS is used to implement the server.
The game provider sends requests to the operator server and expects to receive a corresponding response.
If the response is broken or failed for some reason, the system will keep trying to request it again with some
delay.
To make it secure the Seamless API handler should expect using a client certificate to authorize requests.
Here’s the certificate authority to check it: seamless-ca.pem.
Here is the example of Nginx config for TLS termination of traffic and authorization requests:
server {
listen 443 ssl;
server_name "seamless.example.com";
ssl_certificate YOUR_OWN_CERTIFICATE;
ssl_certificate_key YOUR_OWN_CERTIFICATE_KEY;
ssl_verify_client on;
ssl_client_certificate /path/to/seamless-ca.pem;
location / {
proxy_pass http://YOUR_JSONRPC_SERVER;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
}
}
Here are the methods you need to implement so the game provider could request the operator for balance
operations.
4.2.1 getBalance
Type: Request
This method returns the actual balance of the player’s account.
Request parameters:
Response parameters:
{
"jsonrpc": "2.0",
"method": "getBalance",
"id": 1928822492,
"params": {
"callerId": 365,
"playerName": "noname",
"currency": "USD",
"gameId": "starburst_touch",
"sessionId": "n5vpp2xp406c8f5",
"sessionAlternativeId": "78342b60-809e-4735-bde4-90abe4aa9e8c",
"bonusId": "new_bonus"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1928822492,
"result": {
"balance": 44
}
}
4.2.2 withdrawAndDeposit
Type: Request
withdrawAndDeposit provides a more efficient way of making deposits and withdraws as it requires one call
rather than two.
In case of a bonus free round game, this method should be processed as follows:
If the value of the withdraw field > 0 and the number of bonus free rounds remaining >= the value of the charge-
Freerounds field, then reduce the number of bonus free rounds remaining by the value of the chargeFreerounds
field and ignore the debiting of the amount from the player’s balance specified in the withdraw field.
If the condition described above is not met, the player’s balance should be decreased on the amount from the
withdraw field.
Request parameters:
spinDetails object:
reason field:
Response parameters:
Attention: The operator must guarantee the uniqueness of transactionId generated on the operator
side.
{
"jsonrpc": "2.0",
"method": "withdrawAndDeposit",
"id": 1928822492,
"params": {
"callerId": 365,
"playerName": "noname",
"withdraw": 20,
"deposit": 0,
"currency": "USD",
"transactionRef": "1:P0GKaKsJEqMzKnEk",
"gameRoundRef": "kq",
"gameId": "starburst_touch",
"reason": "GAME_PLAY_FINAL",
"sessionId": "n5vpp2xp406c8f5",
"sessionAlternativeId": "78342b60-809e-4735-bde4-90abe4aa9e8c",
"chargeFreerounds": 1,
"bonusId": "new_bonus",
"spinDetails": {
"betType": "spin",
"winType": "standart"
}
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1928822492,
"result": {
"newBalance": 30,
"transactionId": "2:E0GKbKsJEqMzKnEk"
}
}
4.2.3 rollbackTransaction
Type: Request
This method rolls back the transaction if something went wrong.
The transaction roll back may be performed for withdrawals as well as deposits.
In case of withdrawAndDeposit needs to be reverted, the method must remove the amount (in cents) of the
transaction from the player’s account.
In case of a bonus free round game deposit or withdraw needs to be reverted, the method must remove (de-
posit) or increase (withdraw) the amount (in cents) of the transaction from the player’s bonus account and
increase the number of free rounds.
In case of transaction not exist on your side, you should save it and mark as rolled back.
Request parameters:
Response parameters:
Empty response.
The game provider system considers it executed by checking the right HTTP status code and existence of
the result field:
• The HTTP status code is 200 OK.
• The result field must present, the error field must not present.
Otherwise, the rollback is marked as unsuccessful and will be repeated for 24 hours with an interval of 60
seconds.
Full request example:
{
"jsonrpc": "2.0",
"method": "rollbackTransaction",
"id": 1928822492,
"params": {
"callerId": 365,
"playerName": "noname",
"transactionRef": "1:P0GKaKsJEqMzKnEk",
"gameId": "starburst_touch",
"sessionId": "n5vpp2xp406c8f5",
"sessionAlternativeId": "78342b60-809e-4735-bde4-90abe4aa9e8c"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1928822492,
"result": {}
}
The server on the operator’s side should be ready to send the errors listed below if the cause of the error
matches its description.
For the game provider, only the error code is important, since the determination of the received error occurs
by reading the error code, and not its message.
Accordingly, you can specify any arbitrary error message
Error example:
{
"jsonrpc": "2.0",
"id": 1928822492,
"error": {
"code": 1,
"message": "ErrNotEnoughMoneyCode"
}
}
Error 1 ErrNotEnoughMoneyCode
Game Provider tried to debit money from the player’s balance, but the player does not have enough money
on it.
Error 2 ErrIllegalCurrencyCode
Game Provider sends a request with a currency code that does not support by the server on the operator’s
side.
Error 3 ErrNegativeDepositCode
Value of deposit field in the withdrawAndDeposit request is less than zero or incorrect.
This value should be greater than zero or equal to zero.
Error 4 ErrNegativeWithdrawalCode
Value of withdraw field in the withdrawAndDeposit request is less than zero or incorrect.
Error 5 ErrSpendingBudgetExceeded
Game Provider tried to debit money from the player’s balance, but the player has reached the budget limit.
It causes the “Play limit has been reached” popup to be displayed in the game interface.
Error 6 ErrMaxBetLimitExceededCode
Game Provider tried to debit money from the player’s balance, but the bet has reached the limit.
Error 7 ErrInternalErrorCode
Game Provider tried to process the Seamless V2 API request, but received an internal error when processing
the request.
35
Casino 25 Documentation
Methods: Session.Create
Definitions: Operator, Game Provider, Series of sessions
RestorePolicy - a required parameter in Session.Create method.
Note: When a new session created all previous open sessions get closed (implicitly).
This example shows the process of creating a session with the parameter RestorePolicy=Create.
This example shows the process of creating a session with the parameter RestorePolicy=Restore or
RestorePolicy=Last.
Methods: rollbackTransaction
Definitions: Game Client, Game Provider, Seamless server
This method rolls back the transaction if something went wrong.
The transaction rollback may be performed for withdrawals as well as deposits.
In case of the withdrawAndDeposit needs to be reverted, the method must re-deposit the amount of the
The following flowcharts describe error handling and transaction rollback mechanism when using the seam-
less V2 API.
Accept: application/json
43
Casino 25 Documentation
6.3 Error 495 Cert Error after executing Operator API method
This means that the session has been already ended (closed).
Possible solutions:
• The player should start a new session.
7.1 Currencies
45
Casino 25 Documentation
46 Chapter 7. Application
Casino 25 Documentation
7.1. Currencies 47
Casino 25 Documentation
Note: Some currencies have unknown description, because of they are not defined in ISO 4217.
Note: NAN - it is a special currency that is defined for purposes when currency is unknown.
Note: The currency list may differ from what it is and might be changed by your request.
Value Description
split Additional bet. BlackJack game only. Player split his initial hand into 2 parallel
hands.
insure Additional bet. BlackJack game only. Player ‘buy’ insurance for his hand from
dealer’s blackjack.
spin Player`s action, bet in the base game in slots.
collect Player`s action. collect current spin`s winnings.
draw Video-poker games only. Reissue of cards draw.
picksymbol Player`s action, special symbol selection for bonus or free games feature choose.
bonus Player`s action in bonus game.
drop An automatic avalanche of the winning symbols on the reels and the issuance of
new ones instead of the collapsed ones (without an additional bet).
shiftreels An automatic shift of reels to the right by 1 position, and on the first reel new values
are given (without additional bet).
pickwintype Choice of winning option or bonus feature or free spin feature.
deal Bet in video-poker games.
bonusaction Player`s action in bonus game.
respin An automatic re-rotation of reels issuing new symbols, possible sticky symbols, etc.
(no additional bet).
double Winning`s double feature.
freespin Free game`s spin (without additional bet).
stand BlackJack game only. Player’s choice. Stop of cards getting.
platinumaction Player`s action in bonus game.
init Game`s initialisation.
hit BlackJack game only. Player’s choice. Get one more card.
standart Same as spin - standard (base) game winnings.
free Free game`s spin win (without additional bet).
tumble Same as drop / avalanche.
halfcollect Partial winnings collect in ‘double’ feature.
SG Game feature, where the part of regular symbol wins will be paid as additional game.
jackpot Jackpot’s winning feature. EGT and PlayTech sections only.
48 Chapter 7. Application
Casino 25 Documentation
Value Description
standart Standard win
free Win during free spins
bonus Bonus win
double Double (gamble) win
jackpot Jackpot win (EGT and PlayTech sections only)
7.4 Vocabulary
7.4.3 Operator
The server part of the Operator, which serves and modifies players balances from the Game provider API.
7.4.5 Back-office
7.4.7 Spin
To make spin means to play one bet in a game with a win or lose.
This is a bonus game session, where a player can spend his/her free spins.
This is a separate type of balance that does not overlap with a player’s balance.
That balance is replenished by wining in free rounds.
The player or operator can execute a bonus balance to the player’s balance.
50 Chapter 7. Application
Casino 25 Documentation
This is a set of sessions that are combined in order to be able to transfer the state of the game from one
session to another for a specific player.
7.4. Vocabulary 51