Download as pdf or txt
Download as pdf or txt
You are on page 1of 145

Merchant Integration

Interface
Seamless Integration Guide
V.4.93

September 2022

The information presented herein is confidential information of Skywind Holdings Ltd. It is also protected subject matter of copyrights owned by Skywind
Holdings Ltd. and of agreements between Skywind Holdings Ltd. and its licensees and other parties. Copying, transmission and disclosure of such information
can only be done within the strict scope of a governing Skywind Holdings Ltd. agreement. In the absence of any specific agreement to the contrary, reverse
engineering, decompilation and disassembly are prohibited in any event as to any software content. While all efforts have been made to ensure that the
content of this document is accurate at the time of publication, the data upon which this document is based is subject to future change. Updated versions of
this document will be released when necessary, resources permitting.
Proprietary and Confidential

Preface
Purpose
The purpose of this document is to provide information on how to successfully
integrate Systems between the merchant and the provider’s platforms.

Scope
This document describes the basic API commands and gives instructions for
Seamless Integration.

Intended Audience
Licensees of Skywind Holdings Ltd.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 2 of 145
Proprietary and Confidential

Table of Contents
1. Introduction ......................................................................................................................5
1.1. Basic Definitions .....................................................................................................................5
1.2. Description..............................................................................................................................5
2. API Methods ......................................................................................................................8
2.1. Validate Ticket ........................................................................................................................8
2.2. Refresh Session Token .......................................................................................................... 10
2.3. Get Balance Operations ........................................................................................................ 11
2.3.1. Get Balance ........................................................................................................................ 11
2.4. Transactions .......................................................................................................................... 13
2.4.1. Debit Customer .................................................................................................................. 13
2.4.2. Credit Customer ................................................................................................................. 16
2.4.3. Rollback (Refund) Customer’s Bet Transaction ............................................................... 19
2.5. Player Logout ........................................................................................................................ 22
2.6. Get Ticket ............................................................................................................................. 24
3. Marketing Tools...............................................................................................................26
3.1. Free Bets ............................................................................................................................... 26
3.1.1. Get Free Bets ...................................................................................................................... 27
3.1.2. Debit Customer with Free Bets ......................................................................................... 29
3.1.3. Credit Customer with Free Bets........................................................................................ 30
3.2. Other Marketing Tools ......................................................................................................... 31
3.2.1. Bonus Payment (Credit a Customer with a Bonus Win) ................................................. 31
4. Error Responses ...............................................................................................................34
5. Falcon API .......................................................................................................................37
5.1. Endpoints and Routing ......................................................................................................... 37
5.2. Parameters Format ................................................................................................................ 38
5.3. Multi Domain ....................................................................................................................... 38
5.4. Authentication ...................................................................................................................... 39
5.5. User Login ............................................................................................................................. 40
5.6. Refresh Access Token ........................................................................................................... 42
5.7. Get List of Games .................................................................................................................. 43
5.7.1. Get Jackpot Tickers ............................................................................................................ 46
5.8. Get Game Info....................................................................................................................... 48
5.9. Get Player’s Game URL ........................................................................................................ 51
5.10. Get Fun Mode (Anonymous) Game URL ............................................................................ 53
5.11. Get Game History ............................................................................................................... 55
5.11.1. Get Game History from 3rd Party Game Providers ........................................................ 61
5.12. Get Game History Round Details ........................................................................................ 63
5.12.1. Get Game History Round Details from 3rd Party Game Providers................................ 65
5.13. Get Game Spin History for the Brand ................................................................................. 66
5.14. Get Game History Round Details SmResult ........................................................................ 69
5.15. Get Game History Round Details Visualisation .................................................................. 70
5.16. Get Game Event Details Visualisation ................................................................................ 71
5.17. Get Currency Report........................................................................................................... 73
5.18. Get Player Report ............................................................................................................... 75
5.19. Get List of Countries ........................................................................................................... 78
Copyright © 2022 Skywind Holdings Ltd.
All Rights Reserved 3 of 145
Proprietary and Confidential

5.20. Get List of Currencies ......................................................................................................... 79


5.21. Get List of Languages .......................................................................................................... 80
5.22. Get Jackpots ........................................................................................................................ 80
5.23. Promotions .......................................................................................................................... 82
5.23.1. Create a Promotion .......................................................................................................... 82
5.23.2. Add Promo Rewards for Player ...................................................................................... 86
5.23.3. Add Players to the Promotion ........................................................................................ 87
5.23.4. Get a Promotion by ID .................................................................................................... 88
5.23.5. Get a List of Promotions .................................................................................................. 91
5.23.6. Delete Player from the Promotion ................................................................................. 94
5.23.7. Archive a Promotion ....................................................................................................... 95
6. Round Finalization ..........................................................................................................96
6.1. Offline Payment.................................................................................................................... 97
6.2. Round Statistics..................................................................................................................... 98
6.3. Force-Finish .......................................................................................................................... 99
APPENDIX 1 ..................................................................................................................... 101
Test Account Provision.............................................................................................................. 101
APPENDIX 2 ..................................................................................................................... 102
Reports API ............................................................................................................................... 102
APPENDIX 3 ..................................................................................................................... 103
Jackpot Contribution Reports .................................................................................................... 103
1. Get Jackpot Contribution Report ..................................................................................... 103
2. Get Players’ Jackpot Contribution Report ....................................................................... 105
3. Get Jackpot Contribution Logs ......................................................................................... 107
4. Get Jackpot Wins Logs ...................................................................................................... 109
APPENDIX 4 ..................................................................................................................... 111
Whitelist Solution ..................................................................................................................... 111
APPENDIX 5 ..................................................................................................................... 112
CMA messages ........................................................................................................................... 112
APPENDIX 6 ..................................................................................................................... 114
Getting Critical Files from Games and Platform...................................................................... 114
1. Get List of Critical Files and their Hashes from Games .................................................. 114
2. Get List of Critical Files and their Hashes from the Platform ........................................ 115
3. Get List of Critical Files and Their Hashes from Games for the Entity ......................... 116
4. Get List of Critical Files and Their Hashes from the Platform for the Entity ............... 117
APPENDIX 7 ..................................................................................................................... 119
Retry Policy ............................................................................................................................... 119
APPENDIX 8 ..................................................................................................................... 121
Offline payments (Retransmissions) .......................................................................................... 121
Document Version History ............................................................................................... 122

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 4 of 145
Proprietary and Confidential

1. Introduction
The main objective of the Seamless Integration Guide is to provide merchants with
information required for successful integration of Systems between the merchant and
the provider.

1.1. Basic Definitions


API – the interface used to provide communication between merchant and provider’s
Systems.
Customer – the merchant’s client.
ID – identification number.
Merchant – a gaming company/operator, which operates its own gaming site and has
an agreement with Skywind Holdings Ltd.
Provider – Skywind Holdings Ltd.
Request – a request sent from the provider’s side.
Response – a response received from the merchant’s side. An object in the response
is an unordered set of name/value pairs.
Seamless Integration – if a merchant uses Seamless Integration, the user account is
managed from the merchant’s side.

1.2. Description
It is the provider’s responsibility to develop the API for establishing communication
between the merchant and the provider’s platforms. The described API has to support
the following basic methods:
• Validate Ticket – the method which enable to send the received ticket to the
merchant’s platform for validation. If the ticket is valid, the merchant’s server
will reply with the customer’s specific account data. If not, it will send an error.
If the customer is new, the validate_ticket function will register the customer
with Skywind Holdings Ltd.
• Get Balance Operations – a set of methods which enable to request the
customer’s current balance from the merchant’s side;
• Debit Operations – a set of methods enable to send requests to debit from
the customer;
• Credit Operations – a set of methods which enable to send a request to credit
the customer’s balance with his win and money that he didn’t spend in the
game;
• Rollback Bet Operations – a set of methods which enable to send a request
to rollback the customer’s payment;
• Free Bets – the method enables to get the free bet count and coins value per
line (it is required only for Free Bets managed from the Operator`s side).
• Player API: ${api.playerapi.com} represents a set of methods which provides
by the merchant and realizes on its platform.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 5 of 145
Proprietary and Confidential

• Operator API: ${api.operatorapi.com} represents a set of methods which


enable to get the information on the operator’s games.
• Lobby API: ${api.lobbyapi.com} represents a set of methods which provides
by the merchant and realizes on its platform.
• Report API: ${api.reportapi.com} represents a set of methods which enable
to get reports about currencies, players and game history.

Figure 1: Ticket usage in Seamless Integration

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 6 of 145
Proprietary and Confidential

Figure 2: Debit/Credit flow in Seamless Integration

Once the API with the methods described above has been established on the
merchant’s side, the merchant should give the provider the links (see examples):
• https://api.example.com/api/validate_ticket
• https://api.example.com/api/get_balance
• https://api.example.com/api/debit
• https://api.example.com/api/credit
• https://api.example.com/api/rollback

To describe the methods, the terms request and response will be used. For each
request, appropriate response data including error codes will be returned.

The preferrable request and response format of API is JSON, however, for the legacy
systems we can enable the support of raw (form encoded) format.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 7 of 145
Proprietary and Confidential

2. API Methods
2.1. Validate Ticket
Request: POST api.playerapi.com/api/validate_ticket HTTP/1.1
This method sends a received ticket from the Provider’s System to the merchant’s side
for validation. If the ticket is valid, the merchant’s server will reply with the customer’s
specific account data. If not, it will send an error.

In order to get the validation, a list of the following parameters should be entered
according to the scheme:
Parameters
Name Located in Required Type Notes

ticket body yes string (64) Merchant’s ticket, used for


authentication and getting session ID.

merch_id body yes string (32) This parameter refers to the merchant’s
ID (set up on the Integration phase).

merch_pwd body yes string (48) This parameter refers to the merchant’s
password (set up on the Integration
phase).

ip body no string (16) This parameter shows the player’s IP


address.

Example of JSON Request

Example
{
"ticket": "aXc2!f",
"merch_id": "gcxMerch",
"merch_pwd": "merchPassword"
}

The System responds to such requests according to the following schema:

Response

Code Schema Example

200 { {
error_code: number, "error_code": 0,
cust_session_id: string, "cust_session_id": "custSessId",
cust_id: string, "cust_id": "1234",
currency_code: string, "currency_code": "GBP",
test_cust: string ("true"| "test_cust": false,
"false") or "country": "GB",
boolean(true|false, "game_group": "Double Bets Group",

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 8 of 145
Proprietary and Confidential

country: string, "rci": "60",


game_group: string, "rce": "11"
rci: number, }
rce: number
}

Notes:
- The optional game_group parameter is used to override game limits. In order
to update player’s game group and limits, operator needs to create game groups
by following the Skywind ‘Game Group API’ document and set a name of the
game group in the validate_ticket response in the game_group field.

- The cust_id refers to the customer’s ID and includes numbers, letters, special
characters, except a colon.

- If you use terminals and use the same endpoint for the terminal user login as
for the validate_ticket method, it’s mandatory for you to add the language
parameter to your validate_ticket response.

- rci and rce are optional response fields that shall be provided when the reality
check (if it is needed by a regulator) is agreed to be tracked on the Skywind
side. If it is true, rce (reality check elapsed time) and rci (reality check interval)
params, when present in response, help Skywind to set a timer prior to the next
reality check player pop-up (RC). rci and rce are measured in minutes and are
replaced by the default values if they are absent in the response.
rce param, when present, stands for how many minutes elapsed since the
operator has shown the RC to a player the last time. Example: if the operator
sends us rci=15, rce=5, it means that the operator wants us to show the RC
every 15 minutes and that the operator has shown the RC to a player 5 minutes
ago, so we will present it to a player in 10 minutes.

- By default, one cust_session_id should be used for several different games


(you should not have in place a validation that cust_session_id is assigned to a
specific game code). If your system cannot support it and you have unique
tokens for each played game, you should implement Refresh Session Token
method and request Skywind L2 Technical Integration team to enable this
option for your entity.

For Error Response details see Section 4.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 9 of 145
Proprietary and Confidential

2.2. Refresh Session Token


Request: POST api.playerapi.com/api/refresh_session HTTP/1.1
This method is used for merchant systems that do not allow a player to play different
games with the same session token. Skywind will call this method to obtain a new
token (new_cust_session_id) when a player opens a new game on the provider’s
website after having played another game.

The 'refresh session token' method is needed for Skywind live games as it allows to
enable the 'Back to Lobby' button, also it is required for a proper work of Skywind
Engagement Tools.
The 'refresh session token' functionality is mandatory to provide the full set of features
for live games and Skywind Engagement Tools.

Please contact Skywind L2 Technical Integration team to enable this option for your
entity.

Request Parameters
Name Located Required Type Notes
in

merch_id body yes string (32) The merchant’s ID (set up on the


Integration phase).

merch_pwd body yes string (48) The merchant’s password (set up on the
Integration phase).

old_game_code body yes string (32) The code of the game the player opened
prior to opening the new game.

new_game_code body yes string (32) The code of the new game that the
player opens.

cust_id body yes string (32) The id of the customer (player).

cust_session_id body yes string (64) The id of the customer’s (player’s)


session preceding the launch of a new
game.

Example of JSON Request


Example
{
"merch_id": "EB",
"merch_pwd": "SoMEpassw",
"old_game_code": "sw_mrmnky",
"new_game_code": "sw_dc",
"cust_id": "1234",
"cust_session_id": "SoMeSeSsionId" //
old customer session id
}

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 10 of 145
Proprietary and Confidential

The System responds to such requests according to the following schema:


Response
Code Schema Example

200 { {
error_code: 0, "error_code": 0,
new_cust_session_id: string "new_cust_session_id": "NewSessionId"
(64) }
}

For Error Response details see Section 4.

2.3. Get Balance Operations

▪ Debit – see method 2.4.1.


Event_type: bet
▪ Credit – see method 2.4.2.
Event_type: win

2.3.1. Get Balance


Request: POST api.playerapi.com/api/get_balance
This method enables the customer’s current balance to be retrieved from the
Merchant’s System.
In order to get information about the customer’s balance, the following parameters
can be specified in the request to the System:
Parameters
Name Required Type Notes

merch_id yes string (32) This parameter refers to the merchant’s ID


(set up on the Integration phase).

merch_pwd yes string (48) This parameter refers to the merchant’s


password (set up on the Integration phase).

cust_id yes string (32) This parameter refers to the customer’s ID (it
can be numbers, letters and special
characters, except a colon and backslash).

cust_session_id yes string (64) This parameter refers to the customer’s


session ID.

game_code yes string (32) This parameter refers to a code assigned to a


game. If a game has more than 1 math
version, it has a unique game code per each
math version.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 11 of 145
Proprietary and Confidential

Name Required Type Notes

platform no string: If specified, the request will return balance


web | mobile information for the specified platform.

Example of JSON Request

Example
{
"merch_id": "EB",
"cust_id": "1234",
"merch_pwd": "SoMEpassw",
"cust_session_id": "SoMeSeSsionId",
"game_code": "slot_game_1"
}

The System responds to such requests according to the following schema:


Response
Code Schema Example

200 { {
error_code: number, "error_code": 0,
balance: number, "balance": 2055.15,
currency_code: string (3), "currency_code": "GBP"
free_bet_count: number (optional), }
messages: Array (optional)
}

For Error Response details see Section 4.

Note:
- The ‘free_bet_count’ field is only used in the ‘Get Balance with FB’ request;
- Balance amount should be rounded and formatted according to ISO 4217 for
the players’ currency
- The ‘messages’ field is used for CMA messages, for additional information
please read the Appendix 5 CMA messages section

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 12 of 145
Proprietary and Confidential

2.4. Transactions
Note (for all transaction methods): As we expect idempotency for all our
transactions, meaning multiple identical transaction requests must not multiply the
result, we require that in the case of receiving a duplicate transaction from us, you will
respond with error_code=1 (as stated in Error Responses section) and additionally
put balance into your response as if you were sending a response for the original
request.

2.4.1. Debit Customer


Request: POST api.playerapi.com/api/debit HTTP/1.1
This method sends a request to the merchant’s side when the customer places a bet
on the provider’s site.
In order to send a request, the following parameters can be specified in the request
to the System:
Parameters
Name Required Type Notes

merch_id yes string (32) This parameter refers to the merchant’s ID (set
up on the Integration phase).

merch_pwd yes string (48) This parameter refers to the merchant’s


password (set up on the Integration phase).

cust_id yes string (32) This parameter refers to the customer’s ID (it can
be numbers, letters and special characters,
except a colon and backslash).

cust_session_id yes string (64) This parameter refers to the customer’s session
ID.

round_id yes string (32) A string encoded representation of game_id (can


come as numeric game_id value if the string
encoded representation is not available).
The value of this parameter is case
sensitive.

amount yes BigDecimal/ This parameter shows the amount that is used in
Integer the debit operation. It can have an integer or a
decimal value.

- When the player wins a bonus (GRC win etc.),


in case a debit request is sent (depends on
integration) the bet will be 0.

currency_code yes string (3) This parameter shows the kind of currency that
is used in the debit operation.

game_code yes string (32) This parameter refers to a code assigned to a


game. If a game has more than 1 math version,
it has a unique game code per each math
version.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 13 of 145
Proprietary and Confidential

Name Required Type Notes

trx_id yes string (32) This is the original ID of the spin. The trx_id of
the debit request is the same as in the
corresponding credit request as we treat these
both transactions as a single spin. To distinguish
between credit and debit operations for the
same spin, please refer to the event_type field.

game_id yes BigInteger A unique numeric ID assigned to a game round

event_type yes string: “bet” | - Bet is used for regular spins and event_type:
“free-bet” “free-bet” is used for free bet spins.
- The debit amount shouldn’t be removed from
the real balance for event_type: “free-bet”.

event_id yes BigInteger This parameter refers to a unique ID of an event.

timestamp yes BigInteger The exact date and time of the debit transaction.
Used format is Unix time in seconds, time zone –
UTC.

game_type yes string: “normal” | This parameter shows the type of game in the
“freegame” | debit operation.
“bonusgame” • “normal” – the player is playing a
normal spin;
• “freegame” – the playing is playing in-
game free games/spins and the round
isn’t over yet;
• “bonusgame” the player is playing a
bonus game.

platform yes string: “web” | This parameter shows the platform where the
“mobile” debit operation is used.

promo_id no string (32) Optional promotion id to help distinguish


different promotions.

promo_pid no string (32) This is the encoded promo_id value. We send it


if the promo_id is numeric, that is when sending
the /debit request before crediting the player
with Free Bets wins.

jp_contribution no Decimal Optional request field that may be added upon


Operator request. Represents total amount
contributed to jackpots with this debit operation.

operation_ts yes BigInteger Unix time (milliseconds from January 1, 1970


00:00:00 UTC) – the original time when the
payment was created (it does not change on
retries).

distribution_type no string: “network” | Optional request field that may be added upon
“bespoke” Operator request. This parameter distinguishes a
promotion as “network” if it was launched for
more than one brand, or as “bespoke” otherwise.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 14 of 145
Proprietary and Confidential

Example of JSON Request

Example
{
"merch_id": "EB",
"merch_pwd": "SoMEpassw",
"cust_id": "1234",
"cust_session_id": "SoMeSeSsionId",
"amount": 10,
"currency_code": "USD",
"game_code": "xc_craps",
"trx_id": "1345",
"game_id": 23,
"event_type": "bet",
"event_id": 3,
"timestamp": 248110400,
"game_type": "normal",
"platform": "web",
"jp_contribution": "0.00343",
"operation_ts": 1644484234950,
"distribution_type": "network"
}

The System responds to such requests according to the following schema:


Response
Code Schema Example

200 { {
error_code: number, "error_code": 0,
error_msg: string, "balance": 2055.15,
balance: number, "trx_id": "1345"
trx_id: string, }
free_bet_count: number(optional),
messages: Array (optional)
}

For Error Response details see Section 4.

Note:

• Balance amount should be rounded and formatted according to ISO 4217 for the
players’ currency
• The ‘messages’ field is used for CMA messages, for additional information please
read the Appendix 5 CMA messages section
• trx_id: please, return the same value that was sent in the request.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 15 of 145
Proprietary and Confidential

• In cases that are specified below we will automatically send the rollback request
(relevant only for new integrations):
• 500 response status code;
• error code = -1 (Internal Merchant error);
• unknown error code;
• timeout
• As we expect idempotency for all our transactions, meaning multiple identical
transaction requests must not multiply the result, we require that in the case of
receiving a duplicate transaction from us, you will respond with error_code=1 (as
stated in Error Responses section) and additionally put balance into your response
as if you were sending a response for the original request.

2.4.2. Credit Customer


Request: POST api.playerapi.com/api/credit HTTP/1.1
This method allows the customer’s winnings and any money that they didn’t spend in
the game to be credited back to his balance.
In order to send a request, the following parameters can be specified in the request
to the System:
Parameters
Name Required Type Notes

merch_id yes string (32) This parameter refers to the merchant’s ID (set
up on the Integration phase).

merch_pwd yes string (48) This parameter refers to the merchant’s


password (set up on the Integration phase).

cust_id yes string (32) This parameter refers to the customer’s ID (it can
be numbers, letters and special characters,
except a colon and backslash).

cust_session_id yes string (64) This parameter refers to the customer’s session
ID.

round_id yes string (32) A string encoded representation of game_id (can


come as numeric game_id value if the string
encoded representation is not available).
The value of this parameter is case
sensitive.

amount yes BigDecimal/ This parameter shows the amount that is used in
Integer the credit operation. It can have an integer or a
decimal value.

currency_code yes string (3) This parameter shows the kind of currency that
is used in the credit operation.

game_code yes string (32) This parameter refers to a code assigned to a


game. If a game has more than 1 math version,
it has a unique game code per each math
version.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 16 of 145
Proprietary and Confidential

Name Required Type Notes

trx_id yes string (32) This is the original ID of the spin. The trx_id
of the credit request is the same as in the
corresponding debit request as we treat these
both transactions as a single spin. To
distinguish between credit and debit operations
for the same spin, please refer to the
event_type field.

game_id yes BigInteger A unique numeric ID assigned to a game round.

event_type yes string: “win” | - Win is used for regular wins and event_type.
“free-bet-win” - “free-bet-win” is used for free bet wins.

jp_win no boolean: “true” | If present and true means that this payout is a
absent otherwise jackpot payout.

event_id yes BigInteger This parameter refers to a unique ID of an event.

timestamp yes BigInteger The exact date and time of the credit transaction.
Used format is Unix time in seconds, time zone –
UTC.

game_type yes string: “normal” | This parameter shows the type of game in the
“freegame” | credit operation.
“bonusgame”
• “normal” – the player is playing a
normal spin;
• “freegame” – the playing is playing in-
game free games/spins and the round
isn’t over yet;
• “bonusgame” the player is playing a
bonus game.

game_status yes string: “settled” | This parameter shows the game’s status that is
“freegame” | used in the credit operation.
“bonusgame” • “settled” – the current credit operation is
the last credit operation in this round,
after this operation the round is closed.
• “freegame” – the player is playing in-
game free spins and the round is not
over yet;
• “bonusgame” – the player is playing a
bonus game and the round isn’t over yet.

platform yes string: “web” | This parameter shows the platform where the
“mobile” credit operation is used.

operation_ts yes BigInteger Unix time (milliseconds from January 1, 1970


00:00:00 UTC) – the original time when the
payment was created (it does not change on
retries).

jp_ids no string [] This is an array in jackpot ids that is triggered on


the current spin, if the jp_win has been
responsed with ‘true’ result.

promo_id no string (32) Optional promotion id to help distinguish


different promotions.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 17 of 145
Proprietary and Confidential

Name Required Type Notes

promo_pid no string (32) This is the encoded promo_id value. We send it


if the promo_id is numeric, that is when crediting
the player with Free Bets wins.

distribution_type no string: “network” | Optional request field that may be added upon
“bespoke” Operator request. This parameter distinguishes a
promotion as “network” if it was launched for
more than one brand, or as “bespoke” otherwise.

sm_result no string (4000) Round details formatted according to the


Portuguese regulation requirements.

Example of JSON Request

Example
{
"merch_id": "EB",
"merch_pwd": "SoMEpassw",
"cust_id": "1234",
"cust_session_id": "SoMeSeSsionId",
"amount": 10,
"currency_code": "USD",
"game_code": "xc_craps",
"trx_id": "1345",
"game_id": 23,
"event_type": "bet",
"event_id": 3,
"timestamp": 248110400,
"game_type": "normal",
"game_status": "freegame",
"platform": "web",
"operation_ts": 1644484234950,
"distribution_type": "network",
"sm_result": "0:2;3;4;2;3#2;5;5;2;3#0;7;6;4;3#"
}

The System responds to such requests according to the following schema:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 18 of 145
Proprietary and Confidential

Response
Code Schema Example

200 { {
error_code: number, "error_code": 0,
error_msg: string, "balance": 2055.15,
balance: number, "trx_id": "1345"
trx_id: string, }
free_bet_count: number (optional),
messages: Array (optional)
}

For Error Response details see Section 4.

Notes:

• Balance amount should be rounded and formatted according to ISO 4217 for the
players’ currency.
• The ‘messages’ field is used for CMA messages, for additional information please
read the Appendix 5 CMA messages section.
• trx_id: please, return the same value that was sent in the request.
• If the credit request has been unsuccessful, another credit request attempt is made
according to the retry policy.
• As we expect idempotency for all our transactions, meaning multiple identical
transaction requests must not multiply the result, we require that in the case of
receiving a duplicate transaction from us, you will respond with error_code=1 (as
stated in Error Responses section) and additionally put balance into your response
as if you were sending a response for the original request.

2.4.3. Rollback (Refund) Customer’s Bet Transaction


Request: POST api.playerapi.com/api/rollback HTTP/1.1
This method sends a request from the provider’s side to the merchant’s side stating
that the player needs to rollback their payment (bet) from the game.
Rollback (bet refund) operation can be applied only to debit (bet) operation. In other
words, rollback is triggered only by a failed debit (bet) operation.
The Rollback operation is initiated in one of the following cases:

▪ -1 error code received from operator on /debit


▪ unknown error code (any code not listed in Error Responses) from operator on
/debit
▪ request timeout on /debit

Note: this method rollbacks only the last bet transaction in a round. This means that
if there was more than one bet transaction in a round, then only the last failed bet
must be refunded.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 19 of 145
Proprietary and Confidential

In order to rollback a payment (bet), the following parameters should be entered


according to the schema:
Parameters
Name Required Type Notes

This parameter refers to the


merch_id yes string (32) merchant’s ID (set up on the
Integration phase).

This parameter refers to the


merch_pwd yes string (48) merchant’s password (set up on the
Integration phase).

This parameter refers to the


customer’s ID (it can be numbers,
cust_id yes string (32)
letters and special characters, except a
colon and backslash).

This parameter refers to the


cust_session_id yes string (64)
customer’s session ID.

round_id yes string (32) A string encoded representation of


game_id (can come as numeric
game_id value if the string encoded
representation is not available).
The value of this parameter is
case sensitive.

This parameter shows the kind of


currency_code yes string (3) currency that is used in the credit
operation.

This parameter refers to a code


assigned to a game. If a game has
game_code no string (32) more than 1 math version, it has a
unique game code per each math
version.

trx_id yes string (32) This is the original trx ID of the bet.

A unique numeric ID assigned to a


game_id yes BigInteger
game round.

event_type: “rollback” literal is set for transfer in


yes string=’rollback’
“rollback” request.

This parameter refers to a unique ID


event_id yes BigInteger
of an event.

The exact date and time of the credit


timestamp yes BigInteger transaction. Used format is Unix time
in seconds, time zone – UTC.

operation_ts yes BigInteger Unix time (milliseconds from January


1, 1970 00:00:00 UTC) – the original
time when the debit payment was
created (it does not change on retries).

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 20 of 145
Proprietary and Confidential

Example of JSON Request

Example
{
"merch_id": "EB",
"merch_pwd": "SoMEpassw",
"cust_id": "1234",
"cust_session_id": "SoMeSeSsionId",
"currency_code": "USD",
"game_code": "xc_craps",
"trx_id": "1345",
"game_id": 23,
"event_type": "rollback",
"event_id": 3,
"timestamp": 248110400,
"operation_ts": 1644484234950
}

The System responds to such requests according to the following schema:


Response
Code Schema Example

200 { {
error_code: number, "error_code": 0,
balance: number, "balance": 2055.15,
trx_id: string, "trx_id": "1345"
free_bet_count: number (optional) }
}

For Error Response details see Section 4.

Note:

• Balance amount should be rounded and formatted according to ISO 4217 for the
players’ currency
• trx_id: please, return the same value that was sent in the request
• the failed debit request doesn’t trigger ‘retry’ mechanism, whereas the failed rollback
request does.
• As we expect idempotency for all our transactions, meaning multiple identical
transaction requests must not multiply the result, we require that in the case of
receiving a duplicate transaction from us, you will respond with error_code=1 (as
stated in Error Responses section) and additionally put balance into your response
as if you were sending a response for the original request.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 21 of 145
Proprietary and Confidential

Error codes that operator must return for rollback operation

• If operator receives /rollback request and the transaction to cancel is not


found, then error_code=-7 (Transaction not found) must be returned
• If operator receives /rollback request and transaction to cancel has already
been cancelled, then error_code=1 (Duplicate transaction) must be
returned along with balance data.

2.5. Player Logout


Request: POST api.playerapi.com/api/logout_player HTTP/1.1

This method lets you get a notification when a player left the game meaning they
closed the window or were absent for some time. This method is not enabled by
default, but you can request enabling it from our Support team.
When requesting to enable the ‘Player logout’ method, please, specify the following:
• Whether you want to be notified each time a player left the game or only if a
player left in the middle of an unfinished round.
• How long a player should be inactive (the game window is open but the player
does not play) before we send the logout notification.
The following parameters should be entered according to the schema:
Parameters

Name Required Type Description

merch_id string (32) This parameter refers to the merchant’s ID


yes (set up on the Integration phase).

merch_pwd string (48) This parameter refers to the merchant’s


yes password (set up on the Integration phase).

Optional parameter, which requires a token


cust_id no string (32)
to be generated for a particular customer.

cust_session_id yes string (64) This parameter refers to the customer’s


session ID.

round_id yes string (32) A string encoded representation of game_id


(can come as numeric game_id value if the
string encoded representation is not
available).

The value of this parameter is case


sensitive.

game_code no string (32) This parameter refers to a code assigned to


a game. If a game has more than 1 math

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 22 of 145
Proprietary and Confidential

version, it has a unique game code per each


math version.

game_id yes BigInteger A unique numeric ID assigned to a game


round.

logout_id yes string (32) This parameter refers to a unique ID of a


logout event.

timestamp yes BigInteger Timestamp of logout event, in seconds.

Example of JSON Request

Example
{
"merch_id": "EB",
"merch_pwd": "SoMEpassw",
"cust_id": "1234",
"cust_session_id": "SoMeSeSsionId",
"game_code": "sw_sod",
"logout_id": "logoutId ",
"game_id": 4562,
"round_id ": " sWeq1eT",
"round_state": "finished",
"timestamp": 154353432289
}

The System responds to such requests according to the following schema:


Response
Code Schema Example

200 { {
error_code: number "error_code": 0
} }

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 23 of 145
Proprietary and Confidential

2.6. Get Ticket


Request: POST api.playerapi.com/api/get_ticket HTTP/1.1

This method generates a valid ticket for a test user on the merchant’s side.
To successfully pass the integration tests phase of your integration with Skywind, it is
mandatory to fulfil one of the following requirements:
1) to implement the 'get_ticket' method as it is used for getting a test ticket from your
API for running the integration test,
or
2) to provide our Support Team with means for obtaining a test ticket for your API
for running the integration test.
Note: the test ticket you provide must be able to pass the 'validate_ticket' check,
and have the'test_cust' field value of the'validate_ticket' response set as true.

In order to get the validation, a list of the following parameters should be entered
according to the schema:
Parameters

Name Required Type Description

merch_id string (32) This parameter refers to the merchant’s ID (set


yes up on the Integration phase).

merch_pwd string (48) This parameter refers to the merchant’s


yes password (set up on the Integration phase).

Optional parameter, which requires a token to be


cust_id no string (32)
generated for a particular customer.

Optional boolean flag, which requires any


single_session no boolean
previous sessions for this customer to be killed.

Optional string parameter, which requires a


currency_code no string (3)
token to have particular currency_code.

Note:
If the “cust_id” field is not specified or the player with such “cust_id” doesn’t exist, a new player
should be created. If the player exists, the operator should validate a received “currency_code” which
is matched with player’s currency and this player has the “test_cust: true” parameter.

Example of JSON Request


Example
{
"merch_id": "EB",
"merch_pwd": "SoMEpassw",
"cust_id": "1234",
"single_session": "true",

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 24 of 145
Proprietary and Confidential

"currency_code": "USD"
}

The System responds to such requests according to the following schema:


Response
Code Schema Example

200 { {
ticket: string "ticket": "UQ2hd9awiohdbahiwddawd"
} }

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 25 of 145
Proprietary and Confidential

3. Marketing Tools
Marketing tools help to increase the player retention and encourage them to spend
more time in the games.

These tools can be installed and managed directly from a merchant’s platform or from
the Falcon Integration System (FIS) side upon the merchant’s request.

3.1. Free Bets


Free Bets is a type of promotion where a player is awarded a number of free bets
that can be used in real game mode.

Please distinguish between Free Bets and Free Games:

1) Free Games is an in-game feature. The way Free Games are triggered is unique to
each game and is described in the game rules or the game paytable. Free Games are
a part of the game math, you can’t enable/disable them for the game. In some
games, Free Games can also be referred to as Free Spins.

2) Free Bets is a cross-game engagement tool that you can switch on for the games
that support this feature. It’s up to the player at which point of the game to use the
awarded Free Bets. The Free Bets can be used across all games they are enabled for.

Operator can choose on which side Free Bets are created and managed –
FIS side or the Operator’s side.
If it’s managed by FIS:
• Free Bets are created, configured and managed as a part of the Promotion
mechanism. Please see the required methods under Promotions.
• Free Bets can be created in the Unified Back Office system: Engagement >
Promotions.
• Operator does not have to implement get_free_bet endpoint.
The operator is able to set per player (or for all players) how many FBs he has and in
which games FBs can be used. The win amount will be determined by the coin value
which was set by the operator (multiplied by the max lines/total bet amount). Every
bet decreases the player’s FB count by 1.

If Free Bets are managed by the Operator:


• Free Bets creation, configuration and management are the responsibility of an
Operator, please see the required methods below in this section.
• Operator has to implement get_free_bet endpoint
• Operator has to return free_bet_count property as part of get_balance response

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 26 of 145
Proprietary and Confidential

Below is an approximate flow for Free Bets flow in FIS and Operator systems when
they are managed by the Operator.

Figure 3: Free Bets (managed by Operator) flow in Seamless Integration

3.1.1. Get Free Bets


Request: POST api.playerapi.com/api/get_free_bet
This method is optional and shall be implemented only if the Operator decides to
manage Free Bets completely on their side.

The method retrieves the free bet count and coins value per line. The total bet is
determined by the coin_multiplier * free_bet_coin. The free_bet_coin can be one from
stake all.
There are several options for the operators to manipulate free bets depending on their
needs:
1. Operators can award a player with FBs in a certain game by specifying the
game_code parameter in the request. In this case the FBs won’t be available to
the player in other games.
2. Operators can give different coin values per request.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 27 of 145
Proprietary and Confidential

3. Operators have the player’s information (VIP level, previous FBs used, etc.) and
can use it to define FBs.
To get the free bet coin per line, the following parameters should be specified in the
request to the System:

Parameters
Name Required Type Notes

cust_id yes string (32) This parameter refers to the customer’s ID


(it can be numbers, letters and special
characters, except a colon and backslash).

cust_session_id yes string (64) Unique session ID.

merch_id yes string (32) This parameter refers to the merchant’s ID


(set up on the Integration phase).

merch_pwd yes string (48) This parameter refers to the merchant’s


password (set up on the Integration phase).

game_code yes string (32) This refeers to a code assigned to a game.


If a game has more than 1 math version, it
has a unique game code per each math
version.

coin_multiplier yes number This parameter shows the number of


multipliers.

stake_all yes string This parameter shows an amount of


common stake.

Example of JSON Request


Example
{
"merch_id": "EB",
"cust_id": "1234",
"merch_pwd": "SoMEpassw",
"cust_session_id": "SoMeSeSsionId",
"game_code": "sw_sod",
"coin_multiplier": "50",
"stake_all": "0.1,0.2,0.5,1,2"
}

The System responds to such requests according to the following schema:


Response
Code Schema Example

200 { {
error_code: long, "error_code": 0,
free_bet_count: number (optional), "free_bet_count": 10,
free_bet_coin: number (optional) "free_bet_coin": 0.1
} }

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 28 of 145
Proprietary and Confidential

For Error Response details see Section 4.

3.1.2. Debit Customer with Free Bets


Request: POST api.playerapi.com/api/debit HTTP/1.1
This method sends a request to the merchant’s side when the customer places a bet
on the provider’s site.
Parameters to specify: same as in 2.2.0. Debit customer. The only difference is
the value of event_type param – it must be "free-bet".

Note: in our protocol the bet amount and free_bet_coin are sent for /debit
operation for "event_type" = "free-bet".
Example of JSON Request
Example
{
"merch_id": "EB",
"merch_pwd": "SoMEpassw",
"cust_id": "1234",
"cust_session_id": "SoMeSeSsionId",
"amount": 10,
"currency_code": "USD",
"game_code": "xc_craps",
"trx_id": "1345",
"game_id": 23,
"event_type": "free-bet",
"free_bet_coin": 0.1,
"event_id": 3,
"timestamp": 248110400,
"game_type": "normal",
"platform": "web",
"operation_ts": 1644484234950
}

The System responds to such requests according to the following schema:


Response
Code Schema Example

200 { {
error_code: long, "error_code": 0,
error_msg: string, "balance": 2055.15,
balance: number, "trx_id": "1345",
trx_id: string, "free_bet_count": 10

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 29 of 145
Proprietary and Confidential

free_bet_count: number(optional, }
applicable for free-bets managed by
Operator)
}

Notes:

• trx_id: please, return the same value that was sent in the request.

For Error Response details see Section 4.

3.1.3. Credit Customer with Free Bets


Request: POST api.playerapi.com/api/credit HTTP/1.1
This method credits the customer’s balance with winnings and any money that he
didn’t spend in the game.

Parameters to specify: same as in 2.3.0. Credit customer. The only difference


is the value of event_type param – it must be ‘free-bet-win’.
Example of JSON Request
Example
{
"merch_id": "EB",
"merch_pwd": "SoMEpassw",
"cust_id": "1234",
"cust_session_id": "SoMeSeSsionId",
"amount": 10,
"currency_code": "USD",
"game_code": "xc_craps",
"trx_id": "1345",
"game_id": 23,
"event_type": "free-bet-win",
"event_id": 3,
"timestamp": 248110400,
"game_type": "normal",
"game_status": "freegame",
"platform": "web",
"operation_ts": 1644484234950
}

The System responds to such requests according to the following schema:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 30 of 145
Proprietary and Confidential

Response
Code Schema Example

200 { {
error_code: long, "error_code": 0,
balance: number, "balance": 2055.15,
trx_id: string, "trx_id": "1345",
free_bet_count: number (optional) "free_bet_count": 3
} }

Notes:

• trx_id: please, return the same value that was sent in the request.
For Error Response details see Section 4.

3.2. Other Marketing Tools


Other marketing tools offered by Skywind include Tournaments, Must Win Jackpots
and Prize Drops.
• Tournaments – cross-game promotions where players earn points by making
bets, improve their position on the leaderboard and earn prizes on reaching
the highest ranks.
• Must Win Jackpots – cross-game jackpots that drop according to predefined
conditions (time limit, amount limit, etc.)
• Prize Drops – a type of promotion when any real money bet which meets the
minimum bet requirement can win a random prize for the player from the list
of the available prizes.

3.2.1. Bonus Payment (Credit a Customer with a Bonus


Win)
Request: POST api.playerapi.com/api/bonus HTTP/1.1
This method allows you to credit the customer’s balance with a bonus win when using
one of Skywind’s engagement tools such as Tournaments, Must Win Jackpots (Shared
Prize) or Prize Drops.

Tournaments, Must Win Jackpot (Shared Prize) and Prize Drops Payments

For Tournaments, Prize Drops and Must Win Jackpot (Shared Prize) this method will
credit the player’s balance regardless of whether the player is online or offline.
Additionally, the bonus payment will not be written to the players game history, as it
is not a part of a specific game play.
In order to send a request, the following parameters can be specified in the request
to the System:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 31 of 145
Proprietary and Confidential

Parameters
Name Required Type Notes

cust_id yes string (32) This parameter refers to the customer’s ID (it can
include numbers, letters and special characters,
except a colon and backslash).

merch_id yes string (32) Merchant’s ID, set up prior to the integration.

amount yes BigDecimal/ Amount of money transferred in this credit


Integer operation. This parameter can have an integer or
a decimal value.

currency_code yes string (3) Currency used in this credit operation.

trx_id yes string (32) The transaction id generated in Skywind’s system


and sent to the operator for reference.

timestamp yes BigInteger The date and time of the credit transaction.

promo_id yes string (32) Unique ID of the promotion.

If the operator specifies externalId when creating


a promo via API, then we will send externalId
value in the promo_id field instead of the promo
ID assigned to the promotion in Skywind system.

promo_type no string: An optional field which provides additional info on


"tournament"| the source of the bonus payout. You should not
"shared_jp_prize"| rely on this field as it may be changed to send
"prize_win" new bonus type payouts or it may be removed
completely from API. Currently supported values:
• “tournament" is for tournament payout;
• "shared_jp_prize" stands for the must
win jackpot shared prize payout;
• "prize_win" indicates Prize Drop feature
payout.

merch_pwd yes/no string (48) This parameter refers to the merchant’s


password (set up on the Integration phase).

hash no string (32) Hash code for checking whether the request is
valid.

operation_ts yes BigInteger Optional request field that may be added upon
Operator request. Unix time (milliseconds from
January 1, 1970 00:00:00 UTC) – the original
time when the payment was created (it does not
change on retries).

distribution_type no string: “network” | Optional request field that may be added upon
“bespoke” Operator request. This parameter distinguishes a
promotion as “network” if it was launched for
more than one brand, or as “bespoke” otherwise.

Note: The merch_pwd parameter is optional if the authentication option with the hash
parameter is selected.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 32 of 145
Proprietary and Confidential

Number of parameters can be changed in the future which will affect the hash
calculation. Please mind that the hash calculation must support adding new
parameters.

Authentication
There are 2 merchant authentication options:
1) by using the merch_pwd parameter
2) by using the hash parameter
Both methods require pre-configuration on Skywind side, please contact Skywind
support for assistance.

In order to calculate the hash code for the authentication with the hash parameter,
take all parameters from the request (except hash) and append them to the string by
following the steps below:

1. Sort all parameters by keys in alphabetical order.


2. Append them (if the value is not null or empty) in key1=value1&key2=value2.
3. Append secret (merch_pwd), e.g.: key1=value1&key2=value2SECRET.
4. Calculate the hash by using MD5.
5. Compare with the hash parameter. In the case of a failure, Casino Operator
should send the error code -1.
Example of JSON request
Example
{
"merch_id": "1234",
"promo_id": "1234234",
"promo_type": "tournament",
"amount": 100,
"currency_code": "USD",
"cust_id": "player001",
"timestamp": 1600780730294,
"trx_id": "23234dsdfasdfasdr5213",
"hash": "hash",
"operation_ts": 1644484234950,
"distribution_type": "network"
}

The System responds to such requests according to the following schema:


Response
Code Schema Example

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 33 of 145
Proprietary and Confidential

200 { {
error_code: number, "error_code": 0,
error_msg: string, "balance": 2055.15,
balance: number, "trx_id": "1345"
trx_id: string }
}

For Error Response please refer to 4. Error Responses.


Note: Balance amount should be rounded and formatted according to ISO 4217 for
the players’ currency.

4. Error Responses
If any issues occur while performing one of the operations, the merchant’s system
should respond with the error codes from the table below. For all errors that are
intentionally returned to us we expect to receive HTTP Status = 200.
If the System has an error code that doesn’t equal 0 in the response, it should be
explained in the error_msg.
General Errors
Seamless Text Description
Error Code

0 No errors

1 Duplicate transaction As we expect idempotency for all our


transactions, we require that in the case
of receiving a duplicate transaction from
us (a duplicate debit/credit request with
the same trx_id), you will respond with
error_code=1 and the balance value as in
the response to the original request.

-1 Merchant internal error An unexpected error was encountered


while processing the request. It can be
caused by a validation error, for example,
if the merchant doesn’t exist. Operator
can use this error when they don’t expect
such behavior from the provider’s side.

-2 Player not found Returned when the game is launched with


the playerCode which doesn’t exist on the
merchant’s side or if the playerCode has
an invalid value, for example, is empty or
has a number value type.

-3 Game token expired Player session has expired or has invalid


value.

-301 Player is suspended Player account is inactive and they can’t


launch games. This error is the extension
of the -3 error.

-302 Bet Limit Was Exceeded The bet limit for this player session has
been exceeded. This error is the
extension of -3 error.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 34 of 145
Proprietary and Confidential

Seamless Text Description


Error Code

-4 Insufficient balance Player does not have sufficient balance to


perform an operation.

-5 Insufficient free bets Balance Returned when the number of free bets
for the player is 0.

-6 Invalid free bet Returned when the request contains the


invalid value of the freebet parameter, for
example, when the Operator expects the
free bet promotion is stored on their side
but the promotion was created on
Provider’s side and the values of free bet
parameters don’t match.

-7 Transaction not found Can be returned in the case of a rollback


operation when the transaction id in the
request is invalid

Note:
• For the response with the HTTP status 200 we apply the mapping of errors
depending on the error_code in the response. For the error response with the
HTTP status = 200 we make retries of a request if:
- The request is either of /debit, /credit and /rollback.
- An outcome of the request is unclear: -1 error code from the merchant,
unknown error code from the merchant.
• For the response with the HTTP status which is greater than or equals 400 and
is less than 500 (400 ≤ statusCode < 500) we do not do retries and initiate our
internal error processing mechanism.
• For the response with the HTTP status >= 500, we can make retries of a failed
request if:
- The request is either of /debit, /credit and /rollback.
- An outcome of the failed request is unclear: 5xx response status code or
request timeout.
Please mind that in case of failure, retries are made with an exponential pause
time until the Total Request Time limit is reached (10 seconds by default).
Once the Total Request Time limit is reached, we initiate our internal error
processing mechanism.

Responsible Gaming Errors

Seamless Error Text


Code

-1500 Player is on timeout

-1501 Player is self-excluded

-1502 Player has reached his deposit limit

-1503 You have reached your session time limit

-1504 You have reached your daily time limit

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 35 of 145
Proprietary and Confidential

Seamless Error Text


Code

-1505 Reality check error

-1506 Player is permanently blocked

-1507 The bet amount you selected exceeds your loss limit for today

-1508 You’ve reached your loss limit for today

-1509 The bet amount you selected exceeds your loss limit for this week

-1510 You’ve reached your loss limit for this week

-1511 The bet amount you selected exceeds your loss limit for this month

-1512 You’ve reached your loss limit for this month

-1513 You’ve reached your session loss limit

-1514 Player has exceeded regulatory limits

-1515 You’ve reached your session bet limit

-1516 You’ve reached your bet limit for today

-1517 You’ve reached your bet limit for this week

-1518 You’ve reached your bet limit for this month

-1519 You’ve reached your withdraw limit

-1520 Mandatory limit missing

-1521 You’ve reached your session game group loss limit

-1522 You’ve reached your game group loss limit for today

-1523 You’ve reached your game group loss limit for this week

-1524 You’ve reached your game group loss limit for this month

-1525 You have exceeded max bet for bonus funds

-1526 Blocked from playing - daily time limit exceeded

-1527 Blocked from playing - weekly time limit exceeded

-1528 Blocked from playing - monthly time limit exceeded

-1529 Your session has now exceeded <playerSessionTime>. We would like to


notify you that you've already played for your reality check interval

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 36 of 145
Proprietary and Confidential

5. Falcon API
The Falcon API represents a set of methods which allow information regarding the
operator’s games to be retrieved, including jackpot details.

5.1. Endpoints and Routing


The Falcon Integration API is completely RESTful and accepts GET, POST, PUT, PATCH
and DELETE requests, depending on the resource.
The base endpoint URL enables access to all recourses of the Integration System -
${api.integrationsystem.com}.
POST https://${api.integrationsystem.com}/v1/example/ HTTP/1.1
Content-Type: application/json

{
"name": "example"
}

The Integration System API provides a selection of response codes, content-type


headers, and other options to help interpret the responses to the API requests.
Request:
GET https://api.integrationsystem.com/v1/example/ HTTP/1.1
Response:
HTTP/1.1 200 OK
Content-Type: application/json

{
"name": "example",
}

All API requests and responses are in the JSON format.


Sometimes the API call will generate an error. Every response to an API call that
generates an error will include an error code and error message to help understand
the reason for the error.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 37 of 145
Proprietary and Confidential

Response with Error:


{
code: 51
message: "Name is missing"
}

5.2. Parameters Format


For the methods in Falcon API, the date/time parameters such as firstTs follow ISO
8601 format unless a different date/time type is specified. For example, '2016-12-
10T16:47:38.887Z'.

Pay attention, that Skywind system always returns data related to time and dates in
UTC time zone.

5.3. Multi Domain


The Skywind System has different services, which are located on different domains
and united in one Multi-Domain Solution. This Multi-Domain Solution gives an
unprecedented level of flexibility when using the System. Currently unavailable
domains can be switched to a new one on the fly and quickly restore lost traffic.

This solution also allows different routes between Operators and Skywind servers to
be chosen and minimizes communication delays.

During the integration process, in order to support the Multi-Domain Solution, the
Operator has to take into consideration that Skywind services’ domain names are
subject to change. Thus, the Skywind Integration Team recommends storing of
Skywind services’ domain names as separate/external variables, which can be easily
updated.

Regardless of the domain name, API methods and their signatures stay the same
(unless some changes are made to the method itself).

Initial domains for the System’s endpoints are provided during the integration process.
If the Operator faces any issues blocking domains during live operations, the Skywind
Support Team will be notified of the issue and provide the Operator with a new domain
name. It is also possible to request new domains by sending a request to the Skywind
Support Team.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 38 of 145
Proprietary and Confidential

5.4. Authentication
In order to carry out API integration, the user gets a unique username, password and
secret key to log into the system and retrieve the token. This should be entered in
every request header to enable operation within the system.
JSON Web Token (JWT) is used as an authenticating mechanism. It is an open
standard (RFC 7519) that defines a compact and self-contained way of securely
transmitting information between parties as a JSON object. This information can be
verified and trusted because it is digitally signed.
JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key
pair using RSA.
The following diagram shows authentication process:

The advantages of JWT:


• Compact: Because of their smaller size, JWTs can be sent via a URL, POST
parameter or inside an HTTP header. The smaller size means transmission is
faster.
• Self-contained: The payload contains all the required information about the
user, avoiding the need to query the database more than once.

After the user logs in, they are given the following permissions:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 39 of 145
Proprietary and Confidential

• Request a list of
- games
- countries
- languages
- currencies available for the operator
• Create a player
• Deposit to/withdraw from a player
• Get a URL of the player’s game
• Get game info

5.5. User Login


Request: POST api.operatorapi.com/login HTTP/1.1
In order to receive a token and gain access to the System, the user must log in.
Initially, the operator is provided with a unique username, password and a secret key
for every user. This should be sent in order to log in.
Parameters to enter:

Name Located In Required Schema Note


info body yes { This parameter refers to
secretKey: string, the System user’s data.
username: string,
password: string
}

Example of JSON request

Example
{
"secretKey": "UserKey",
"username": "UserName",
"password": " UserPassword123",
}

In response to the entered username, password and secret key, the System generates
a token string to identify the user’s commands:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 40 of 145
Proprietary and Confidential

Example HTTP response

HTTP Code Schema Example


200 { User has been created:
username: string (32)
accessToken: varchar, {
key: string (64) "key": "0458d0f8-5040-4f04-8548-
} fc2570b12626",
"username": "USER",
"accessToken": "token"
}

The token should be entered in all request headers in the relevant format ‘X-ACCESS-
TOKEN: string’.

If any issues occur while entering the System, it responds with the following error
codes:

HTTP Code Error Code Description


400 998 Login Failed
Login Failed, please contact
230 Skywind Support to resolve the
issue
Two Factor Authentication is
715
401 not set for user
An error occurred when
719
sending sms
An error occurred when
720
sending email
Two factor auth code has been
409 727 sent recently. Repeat attempt a
little later

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 41 of 145
Proprietary and Confidential

5.6. Refresh Access Token


Request: POST api.operatorapi.com/login/refresh HTTP/1.1
The method enables the user to refresh the login information before the token expires.
The access token expiration time for the Back office user is 15 minutes, for the API
user – 1 hour. The System sends the token to the Integration API and gets it back to
log the user in again.

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 LoginInfo { {
key: string (64), "key": "4e85fb5c-cc34-
username: string (32), 472b-ac4a-69bbcf1b73c0",
accessToken: varchar "username": "USER1",
} "accessToken": "token"
}

If any issues occur while refreshing the login information, the System responds with
the following error codes:

HTTP Code Error Code Description


One of the parents is
400 62
suspended

10 Access Token is missing

204 Access token error


401
205 Access Token is expired

792 Access Session is expired

404 51 Could not find entity

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 42 of 145
Proprietary and Confidential

5.7. Get List of Games

Request: GET api.operatorapi.com/games/info/search HTTP/1.1

The user can get a list of the games with the base information available for its operator.
In order to do this, the following parameters should be entered according to the
schema:
Parameters
Name Located In Required Type Notes

offset query no integer Number of items to be


skipped from the beginning of
the selection (default – 0).

limit query no integer Number of items to return


(default – 20).

sortBy query no string (32) Sorting fields. Allowed values


are ‘code’, ‘title’,
‘providerTitle’, ‘providerCode’,
‘categoryList’.

sortOrder query no string (4) Sorting order: ASC or DESC.

code query no string (32) Game code to search for.

code__in query no string (64) Game codes to search for,


separated by commas. Ex.
‘code1’, ‘code2’.

jackpots query no boolean| Adding jackpots info to game


true or false info.

title query no string (32) Game title to search for.

title__contains query no string (64) Searches for games that


contain passed string in their
title.

title__contains! query no string (64) Searches for games that do


not contain passed string in
their title.

gamecategoryId query no string (16) Searches for games that


contain passed string in their
title.

providerId query no string (16) Game category’s public ID


that searched games should
be assigned to.

labelsId__in query no string (64) Game label’s codes separated


by commas.

jpCurrency query no string (3) Currency code for Jackpot.

isFreebetSupport query no boolean| It is true, if searched games


ed true or false should support freebets.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 43 of 145
Proprietary and Confidential

Name Located In Required Type Notes

isBonusCoinsSup query no boolean| It is true, if searched games


ported true or false should support bonus coins.
(deprecated)

transferEnabled query no boolean | It is true, if searched games


true or false should support transfer.

isGRCGame query no boolean | It is true, if searched games


true or false should be GRC.

jackpotTypes query no string (32) It is ‘true’ or comma-


separated list of jackpot
types, if searched games
should have jackpots.

The System responds to such request according to the following schema:


Response

Code Schema Example


200 [ [
{ {
code: string (32), "code": "SX567",
title: string (32), "title": "Mr Monkey",
type: string (16), "type": "slot",
limits: { "limits": {
currencyCode: { "USD": {
maxTotalStake: number, "maxTotalStake": 2000,
stakeAll: Array of all possible "stakeAll": [
stake [number], 1,
stakeDef: number, 2,
stakeMax: number, 3,
stakeMin: number, 5
winMax: number, ],
} "stakeDef": 1,
}, "stakeMax": 5,
features: { "stakeMin": 1,
isFreebetSupported: boolean, "winMax": 200
isMultibet: boolean, },
isFunModeNotSupported: boolean, "CNY": {
gamble: boolean, "maxTotalStake": 3000,
baseRTP: number, "stakeAll": [
highestPrizeProbability: number, 2,
baseRTPRange: { 3,
min: number, 5,
max: number 10
}, ],
jpRTP: number, "stakeDef": 2,
currenciesSupport: Array of "stakeMax": 10,
supported currency for the game "stakeMin": 2,
[string (3)], "winMax": 400
gameFinalizationType: string }
(32), },
featuresRTP: { "features": {
mode: { "isFreebetSupported": false,
rtpReducer: boolean, "isMultibet": false,
RTP: number "isFunModeNotSupported": false,
} "gamble": false,

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 44 of 145
Proprietary and Confidential

Code Schema Example


} "baseRTP": 95,
}, "highestPrizeProbability": 100,
releaseDate: string (32), "baseRTPRange": {
countries: Array list of available "min": 90.42,
countries codes ISO 3166-2. If "max": 93.52
empty– no restrictions [string (2)], },
totalBetMultiplier: number, "jpRTP": 95,
jackpots: { "currenciesSupport": [
sw-jpgame: { "EUR"
currency: string (3), ],
id: string (32), "gameFinalizationType": "none",
pools: { "featuresRTP": {
pool: { "mode1": {
amount:number "rtpReducer": true,
} "RTP": 95.75
} },
} "mode2": {
}, "rtpReducer": true,
live: { "RTP": 95.75
id: string (32), },
provider: string (32), "freeGames": {
dealer: { "rtpReducer": true,
name: string (32), "RTP": 95.75
picture: string (1024) }
}, }
status: string (32), },
type: number "releaseDate": "2018-08-
} 22T12:28:51.382Z",
} "countries": [
] "CN",
"GB",
"FR"
],
"totalBetMultiplier": 20,
"jackpots": {
"sw-jpgame": {
"currency": "USD",
"id": "sw-jpgame",
"pools": {
"pool0": {
"amount": 122
}
}
}
},
"live": {
"id": "mock-0-1",
"provider": "mock",
"dealer": {
"name": "Mock",
"picture":
"http://picture.com/mock.jpeg"
},
"status": "online",
"type": 0
}
}
]

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 45 of 145
Proprietary and Confidential

If any issues occur while getting a list of games, the System responds with the
following error codes:

HTTP Code Error Code Description


40 Validation error
400
62 One of the parents is suspended
10 Access Token is missing
204 Access token error
401
205 Access token has expired
792 Access Session is expired
403 206 Forbidden

404 51 Could not find entity

5.7.1. Get Jackpot Tickers

Request: GET {jackpot-api.com}/ticker HTTP/1.1


Domains:
Europe EU Jackpot Ticker:
STG - [https://jpn-ticker-eu-gcp-str.ss211208.com/v1]
PROD - [https://jpn-ticker-gcp-str.sw420101.com/v1]

Asia AS Jackpot Ticker:


STG - [https://jpn-ticker-as-gcp-str.ss211208.com/v1]
PROD - [https://jpn-ticker-gcp-str.hep200512.com/v1]
The domains are dynamic and can be changed. Skywind Support Team will provide
domains on request.

Example of request

GET "{jackpot-api.com}/ticker?currency=EUR&jackpotIds=MY-
JP-POOL,MY-SECOND-JP-POOL" -H "accept: application/json"

The user can get information about jackpots by using tickers which are available for
games. This is public available service and can be embedded into client’s site or portal.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 46 of 145
Proprietary and Confidential

Parameters to enter

Name Located In Required Schema Notes

currency query yes string (3) Player’s currency.

Comma-separated array of
jackpot instance IDs. You
can get the jackpot
instance IDs by sending the
jackpotIds query yes Array [string (32)] Get Game info request with
the gameCode of the of the
game for which you wish to
get the information on
Jackpot tickers.

The System responds to the parameters entered according to the following schema:

Response

Code Schema Example


200 [
[TickerInformationResponse {
{ "jackpotId": "MAGNIFICENT-
jackpotId: string, SEVEN",
jackpotType: string, "jackpotType": "sw-the-
jackpotBaseType: string, magnificent-seven",
pools: { "jackpotBaseType": "sw-
JackpotPoolInformation{ the-magnificent-seven",
amount: number "pools": {
} "magnificent_seven": {
}, "amount": 106187.84
currency: string (3) }
} },
] "currency": "EUR"
}
]

Response parameters

Name Description

jackpotId The unique ID of the jackpot entered in the request.

The type of the jackpot defining its properties such as the properties of the
jackpotType
pools within this jackpot.

jackpotBaseType Jackpot type inherited by the jackpot type in this response.

pools Pools this jackpot consists of.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 47 of 145
Proprietary and Confidential

amount The current amount of money in this jackpot pool.

currency The currency in which the amount is displayed.

If any issues occur while getting the jackpot info, the System responds with the
following error codes:

HTTP Code Error Code Description

400 3 Validation error

500 1 JPN internal server error

5.8. Get Game Info


Request: GET api.operatorapi.com/games/{gameCode}/info HTTP/1.1

The user can get information (title, type, labels, provider information, etc.) about the
games available for its operator.
In order to do this, the game code should be entered according to the following
schema:
Parameters

Name Located In Required Schema Notes


Game code of a game that is
gameCode path yes string (32)
fetched.
jpCurrency query no string (3) Currency code for Jackpot.

If true, it will return the


customized game limits of
the current operator,
otherwise it will return the
default game limits of the
boolean: “true” |
addAggregatedFinalLimits query no game.
“false”
If currency is present, limits
will be return only for that
currency, otherwise – for all
currencies (it works only for
brands).
Currency code which is equal
currency query no string (3)
to value.

The System responds to the parameters entered according to the following schema:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 48 of 145
Proprietary and Confidential

Response

Code Schema Example


200 { {
code: string (32), "code": "SX567",
title: string (32), "title": "Mr Monkey",
type: string (16), "type": "slot",
limits: { "limits": {
currencyCode: { "USD": {
maxTotalStake: number, "maxTotalStake": 2000,
stakeAll: Array of all possible "stakeAll": [
stake [number], 1,
stakeDef: number, 2,
stakeMax: number, 3,
stakeMin: number, 5
winMax: number, ],
} "stakeDef": 1,
}, "stakeMax": 5,
features: { "stakeMin": 1,
isFreebetSupported: boolean, "winMax": 200
isMultibet: boolean, },
isFunModeNotSupported: boolean, "CNY": {
gamble: boolean, "maxTotalStake": 3000,
baseRTP: number, "stakeAll": [
highestPrizeProbability: number, 2,
baseRTPRange: { 3,
min: number, 5,
max: number 10
}, ],
jpRTP: number, "stakeDef": 2,
currenciesSupport: Array of "stakeMax": 10,
supported currency for the game "stakeMin": 2,
[string (3)], "winMax": 400
gameFinalizationType: string }
(32), },
featuresRTP: { "features": {
mode: { "isFreebetSupported": false,
rtpReducer: boolean, "isMultibet": false,
RTP: number "isFunModeNotSupported": false,
} "gamble": false,
} "baseRTP": 95,
}, "highestPrizeProbability": 100,
releaseDate: string (32), "baseRTPRange": {
countries: Array list of available "min": 90.42,
countries codes ISO 3166-2. If "max": 93.52
empty– no restrictions [string (2)], },
totalBetMultiplier: number, "jpRTP": 95,
jackpots: { "currenciesSupport": [
sw-jpgame: { "EUR"
currency: string (3), ],
id: string (32), "gameFinalizationType": "none",
pools: { "featuresRTP": {
pool: { "mode1": {
amount:number "rtpReducer": true,
} "RTP": 95.75
} },
} "mode2": {
}, "rtpReducer": true,
live: { "RTP": 95.75
id: string (32), },
Copyright © 2022 Skywind Holdings Ltd.
All Rights Reserved 49 of 145
Proprietary and Confidential

Code Schema Example


provider: string (32), "freeGames": {
dealer: { "rtpReducer": true,
name: string (32), "RTP": 95.75
picture: string (1024) }
}, }
status: string (32), },
type: number "releaseDate": "2018-08-
} 22T12:28:51.382Z",
} "countries": [
"CN",
"GB",
"FR"
],
"totalBetMultiplier": 20,
"jackpots": {
"sw-jpgame": {
"currency": "USD",
"id": "sw-jpgame",
"pools": {
"pool0": {
"amount": 122
}
}
}
},
"live": {
"id": "mock-0-1",
"provider": "mock",
"dealer": {
"name": "Mock",
"picture":
"http://picture.com/mock.jpeg"
},
"status": "online",
"type": 0
}
}

If any issues occur while getting the game info, the System responds with the following
error codes:

HTTP Code Error Code Description

40 Validation error
One of the parents has been
400 62
suspended
101 Not a brand

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

403 206 Forbidden

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 50 of 145
Proprietary and Confidential

51 Could not find entity


Game \{gameCode\} is not
404 213
available for entity
300 Game not found

5.9. Get Player’s Game URL


Request:
GET api.operatorapi.com/players/{playerCode}/games/{gameCode} HTTP/1.1

The user is able to get a particular game URL for a specific player.
In order to do this, the game code, the player code (to get the URL for a particular
player) and the play mode (‘real’ by default) should be entered according to the
following schema:
Parameters to enter

Located Notes
Name Required Schema
In
The site of the cashier
cashier query no string

Player’s code of a player that is


playerCode path yes string (32) fetched.
Game code of a game that is
gameCode path yes string (32)
fetched.
This is an external ticket with
customer data used to recognise
us a customer in the provider’s
system.
For registered customers, tickets
can be provided either for real or
for fun play mode. This
parameter provides a quick
ticket query yes/no string (64)
means of switching to real mode
via the mode button in a
game/lobby without redirecting
to merch_login_url.
This parameter is optional only
for fun play mode.
The ticket will be validated by the
API command: validate ticket.
type query no string (32) Type of the game.

A play mode used for a ‘real’ or


‘fun’ game.
string | “fun” If the play mode is not specified,
playmode query no
or “real” the customer will be asked to
choose a play mode at the start
of the game.
The language used by a
language query no string (2)
customer.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 51 of 145
Proprietary and Confidential

If no language is defined, then a


language will be selected based
on customer data. If a customer
is anonymous, the language
must be defined.
lobby query no string The site of the lobby.

ip query no string Internet IP Address (Ipv4)


Optional parameter used only for
players under Italian regulation –
aamsSessionId query no string authority session id to provide in
case it’s needed to display it to
the player
Optional parameter used only for
players under Italian regulation –
aamsParticipationCode query no string authority session (participation)
code to provide in case it’s
needed to display it to the player

The System responds to the parameters entered according to the following schema:
Response

Code Schema Example


200 { {
url: string (1024) – game URL "url":
for specific player, "http://super_game.com/",
token: string (512) player "token":
token to access game "oJqXX2tkAADKn3MpcM9kVbVk53neuI
} YI62dEkYdYubl+9lyXRECjQww3VsmEP
fMoUkO6uqB56WDPhPGdS3aGnQ"
}

Note:
The returned url is the URL that should be used for launching the game. The
returned token value can be ignored by the operator.

If any issues occur while retrieving the game URL, the System responds with the
following error codes:

HTTP Code Error Code Description


40 Validation error
One of the parents is
62
suspended
101 Not a brand
306 Game is suspended
703 IP address cannot be resolved
400
It is forbidden to start game
708
from unauthorized site

712 Player is suspended

Entity is under maintenance,


736 but maintenance url is not
defined

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 52 of 145
Proprietary and Confidential

HTTP Code Error Code Description

751 Referrer is missing

10 Access Token is missing


204 Access token error
401
205 Access token has expired
792 Access Session is expired
User doesn’t have permission to
206
execute the operation
403
Country {country} of IP:{ip} is
701
restricted
51 Could not find entity
102 Player is not found

404 213 Game is not available for entity|

240 Game is not found

502 Merchant not found

500 506 Merchant internal error

5.10. Get Fun Mode (Anonymous) Game URL


Request: GET api.operatorapi.com/fun/games/{gameCode} HTTP/1.1

The administrator is able to get a particular game URL for an anonymous player.
In order to do this, the game code should be entered according to the following
schema:
Parameter to enter

Name Located In Required Schema Note


Game code of a game that is
gameCode path yes string (32)
fetched.
This is an external ticket with
customer data used to recognise a
customer in the provider’s system.
For registered customers, tickets
can be provided either for real or for
fun play mode. This parameter
ticket query no string (64)
provides a quick means of switching
to real mode via the mode button in
a game/lobby without redirecting to
merch_login_url.
The ticket will be validated by the
API command: validate ticket.
The language used by a customer.
If no language is defined, then a
language will be selected based on
language query no string (2)
customer data. If a customer is
anonymous, the language must be
defined.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 53 of 145
Proprietary and Confidential

Merchant’s login URL as encoded


merchantLoginUrl query no string (64)
string.
ip query no string Internet IP Address (Ipv4)

The System responds to the parameters entered according to the following schema:
Response

Code Schema Example


200 { {
url: string (1024) – game URL,
"url": "http://super_game.com/",
token: string (512) –
anonymous player token to "token":
access game "oJqXX2tkAADKn3MpcM9kVbVk53neuIYI62
} dEkYdYubl+9lyXRECjQww3VsmEPfMoUkO6u
qB56WDPhPGdS3aGnQ"
}

If any issues occur while retrieving the game URL, the System responds with the
following error codes:

HTTP Code Error Code Description


40 Validation error
62 One of the parents has been suspended
This operation is only permitted for the
101
400 brand
306 Game is suspended
902 Static domain is not defined
903 Dynamic domain is not defined
10 Access Token is missing
204 Access token error
401
205 Access token has expired
792 Access Session is expired
User doesn’t have permission to
206
execute the operation
Country 'country-name' of IP:'ip-of-
701
player' is restricted
403
Currency 'currency-name' is restricted
702
for IP:'ip-of-player'
It is forbidden to start game from
708
unauthorized site
51 Could not find entity
85 Currency not found
404 102 Player not found
213 Game is not available for entity
240 Game not found

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 54 of 145
Proprietary and Confidential

5.11. Get Game History


Request: GET api.reportapi.com/history/game HTTP/1.1
The user is able to get game history for the key entity.
In order to do this, the following parameters should be entered according to the
schema:
Parameters to enter

Name Located In Required Schema Notes


offset query yes integer Number of items to be
skipped from the beginning
of the selection.
limit query yes integer Number of items to return
(default – 20).
format query no string | “csv” Response’s format (CSV).
sortBy query no string (32) Sorting key. Allowed values
are:

“brandId”,

“roundId”,

“playerCode”,

“gameCode”,

“currencyCode”,

“ts”,

“firstTs”,

“finished”,

“bet”,

“win”,

“revenue”,

“isTest”
sortOrder query no string | “ASC” or Sorting order: ASC or DESC.
“DESC”
roundId query no string (32) A unique round number in
games.
roundId__in query no string (32) This parameter allows to list
game rounds by comma.
playerCode query no string (32) Player’s code of a player
that is fetched.
playerCode__in query no string (64) Player’s code to search for,
separated by commas.
gameCode query no string (32) Game’s code of a game that
is fetched.
gameCode__in query no string (64) Game’s code to search for,
separated by commas.
currency query no string (3) Player’s currency.
currency__in query no string (32) This parameter allows to list
currencies by comma.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 55 of 145
Proprietary and Confidential

Name Located In Required Schema Notes


firstTs query yes/no string (32) Time stamp when game
was started in ISO 8601
format (e.g. 2020-12-
10T16:47:38.887Z)
firstTs __gt query yes/no string (32) Time stamp of the game to
compare in ISO 8601
format (e.g. 2020-12-
10T16:47:38.887Z); gt –
greater than.
firstTs __gte query yes/no string (32) Time stamp of the game to
compare in ISO 8601
format (e.g. 2020-12-
10T16:47:38.887Z); gte –
greater than or equal.
firstTs __lt query yes/no string (32) Time stamp of the game to
compare in ISO 8601
format (e.g. 2020-12-
10T16:47:38.887Z); lt –
less than.
firstTs __lte query yes/no string (32) Time stamp of the game to
compare in ISO 8601
format (e.g. 2020-12-
10T16:47:38.887Z); lte –
less than or equal.
ts query yes/no string (32) Time stamp when game
was finished in ISO 8601
format (e.g. 2020-12-
10T16:47:38.887Z).
ts__gt query yes/no string (32) Time stamp when game
data was actually displayed
for comparison (gt –
greater than).
ts__gte query yes/no string (32) Time stamp when game
data was actually displayed
for comparison in ISO 8601
format (e.g. 2020-12-
10T16:47:38.887Z); gte –
greater than or equal.
ts__lt query yes/no string (32) Time stamp when game
data was actually displayed
for comparison in ISO 8601
format (e.g. 2020-12-
10T16:47:38.887Z); lt –
less than.
ts__lte query yes/no string (32) Time stamp when game
data was actually displayed
for comparison in ISO 8601
format (e.g. 2020-12-
10T16:47:38.887Z); lte –
less than or equal.
finished query no boolean| “true” or Parameter for a broken
“false” game status.

bet query no double Parameter that shows bet in


the game.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 56 of 145
Proprietary and Confidential

Name Located In Required Schema Notes


bet__lt query no double Parameter which allows to
compare bets (lt – less
than).
bet__lte query no double Parameter which allows to
compare bets (lte – less
than or equal).
bet__gt query no double Parameter which allows to
compare bets (gt – greater
than).
bet__gte query no double Parameter which allows to
compare bets (gte – greater
than or equal).
win query no double Parameter that shows win
in the game.
win__lt query no double Parameter which allows to
compare wins (lt – less
than).
win__lte query no double Parameter which allows to
compare wins (lte – less
than or equal).
win__gt query no double Parameter which allows to
compare wins (gt – greater
than).
win__gte query no double Parameter which allows to
compare wins (gte –
greater than or equal).
revenue query no double Parameter that shows
revenue of the game.
revenue__lt query no double Parameter which allows to
compare revenue (lt – less
than).
revenue__lte query no double Parameter which allows to
compare revenue (lte – less
than or equal).
revenue__gt query no double Parameter which allows to
compare revenue (gt –
greater than).
revenue__gte query no double Parameter which allows to
compare revenue (gte –
greater than or equal).
device query no string (64) Parameter that shows
device which is used in the
game.
balanceBefore query no double This parameter shows the
balance which was before
the game starts.
balanceBefore__lt query no double Parameter allows to
compare balances which
were before the game
starts (lt – less than).
balanceBefore__lte query no double Parameter allows to
compare balances which
were before the game
starts (lte – less than or
equal).

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 57 of 145
Proprietary and Confidential

Name Located In Required Schema Notes


balanceBefore__gt query no double Parameter allows to
compare balances which
were before the game
starts (gt – greater than).
balanceBefore__gte query no double Parameter allows to
compare balances which
were before the game
starts (gte – greater than or
equal).
balanceAfter query no double This parameter shows the
balance after the game
ended.
balanceAfter__lt query no double Parameter allows to
compare balances after the
game ended (lt – less than).
balanceAfter__lte query no double Parameter allows to
compare balances after the
game ended (lte – less than
or equal).
balanceAfter__gt query no double Parameter allows to
compare balances after the
game ended (gt – greater
than).
balanceAfter__gte query no double Parameter allows to
compare balances after the
game ended (gte – greater
than or equal).
isTest query no boolean This parameter allows to
make payment for test.
recoveryType query no string (16) Recovery type of a round to
revert | search for.
force-finish
recoveryType__in query no string (16) Recovery types of a round
to search for, separated by
commas.

The System responds to the parameters entered according to the following schema:
Response

Code Schema Example


200 [ [
{ {
roundId: string (32), "roundId": "g6qQOB9X",
brandId: string (32), "brandId": "feE3Sb39",
playerCode: string (32), "playerCode": "PLAYER1",
gameCode: string (32), "gameCode": "sw_mrmnky",
currency: string (3), "currency": "USD",
bet: number, "bet": 0.1,
win: number, "win": 2,
credit: number, "credit": 10,
debit: number, "debit": 5,
revenue: number, "revenue": -1.9,
firstTs: string (32) (in "firstTs": "2017-07-
UTC time zone), 14T07:07:01.080Z",
ts: string (32) (in UTC "ts": "2017-07-
time zone), 14T07:07:11.930Z",
Copyright © 2022 Skywind Holdings Ltd.
All Rights Reserved 58 of 145
Proprietary and Confidential

Code Schema Example


finished:boolean, "finished": true,
isTest: boolean , "isTest": false,
balanceBefore: number, "balanceBefore": 25000,
balanceAfter: number, "balanceAfter": 24950,
totalEvents: number, "totalEvents": 1,
totalJpWin: number, "totalJpWin": 1500,
totalContribution: number, "totalContribution":
insertedAt: string (32), 0.0001824647,
device: string (255), "insertedAt": "2017-07-
recoveryType: string (16): 14T07:07:12.092T",
[revert | force-finish] "device": "web",
} "recoveryType": "force-
] finish"
}
]
Note:
Default output is limited to 20 entries per page. Max output is 100 entries per page.
CSV export is limited to 1 000 entries. Pagination is not currently available.
Data is available for the last 3 months.
‘Start date’ (firsts or insertedAt) and ‘End date’ (ts) (can be defined with modifiers), must be set.
Parameter ‘ts’ for unfinished rounds will be defined as ‘null’.
‘Debit and credit’ parameters change the balance and they are not connected with game’s ‘win and
bet’.
Debit amount means the transfer-in amount, and similar operations. Credit amount defines the
transfer-out amount, tournament win, etc. Please mind that transfer operations are deprecated.
‘recoveryType’ – this column shows a recovery type for the unfinished or broken rounds that were
resolved manually.

Please see the description of the fields from the Response:

Field Type Description

Time when the round has ended.


finished boolean
Can be true or false.

revenue number Amout of the bet minus the win.

currency string Currency code with the format ISO 4217.

Change of the balance which is not connected with


debit number game’s win/bet. Debit amount means the transfer-in
amount, and similar operations.

Change of the balance which is not connected with


credit number game’s win/bet. Credit amount stands for the transfer-
out amount, tournament win, etc.

roundId string A unique round number in games

brandId string Brand public id

playerCode string Player’s code

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 59 of 145
Proprietary and Confidential

gameCode string Game code

Type of the device which was used for the current


device enum
operation

win number Game win amount

bet number Game bet amount

balanceBefore number Player’s balance before the current operation

balanceAfter number Player’s balance after the current operation

totalEvents number Count of events in the rounds

Time of the first action in the round with the format ISO
firstTs string
8601 timestamp, in UTC time zone.

Time of the last action in the round with the format ISO
ts string
8601 timestamp (in UTC time zone)

isTest boolean Whether the round has been created only for testing

Time when the round was saved in the format ISO 8601
insertedAt string
timestamp.

Shows a recovery type for the unfinished or broken


recoveryType enum
rounds that were resolved manually.

totalJpContribution number Contribution of the bet which goes to the JackPot

totalJpWin number Game JackPot win amount

If any issues occur while retrieving the game history, the System responds with the
following error codes:

HTTP Code Error Code Description


40 Validation error
One of the parents has been
62
400 suspended
This operation is only permitted
101
for the brand

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired


User doesn’t have permission to
403 206 execute the operation

404 51 Could not find entity

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 60 of 145
Proprietary and Confidential

5.11.1. Get Game History from 3rd Party Game Providers

Request: GET api.operatorapi.com/history/external HTTP/1.1


This method enables the user to get external win/bet history from a specified key
entity, from the 3rd party game providers.
In order to do this, the following parameters should be entered according to the
schema:
Parameters to enter

Name Located In Required Schema Notes


currency query no string (3) Player’s currency.
offset query yes integer Number of items to be skipped
from the beginning of the
selection.
limit query yes integer Number of items to return
(default – 20).
sortBy query no string (32) Sorting key. Allowed values are:

“brandId”,

“roundId”,

“playerCode”,

“gameCode”,

“currencyCode”,

“61venti”,

“finished”,

“bet”,

“win”,

“isTest”
sortOrder query no string | “ASC” or Sorting order: ASC or DESC.
“DESC”
roundId query no string (32) A unique round number in
games.
extTrxId query no string (32) An external reserence Id.

gameProviderCode query no string (32) Game Provider’s code.

insertedAt query no string (32) This parameter shows the time


when the spin was saved to the
database ISO 8601 format (and
there can be a slight delay from
the time when the spin actually
happened).
It should be used for
incremental updates when
querying the API.
insertedAt__gt query no string (32) This parameter shows the time
when the spin was saved to the
database (and there can be a
slight delay from the time when
the spin actually happened).
Copyright © 2022 Skywind Holdings Ltd.
All Rights Reserved 61 of 145
Proprietary and Confidential

Name Located In Required Schema Notes


It should be used for
incremental updates when
querying the API.
(gt – greater than). It has ISO
8601 format.
insertedAt__lt query no string (32) This parameter shows the time
when the spin was saved to the
database (and there can be a
slight delay from the time when
the spin actually happened).
It should be used for
incremental updates when
querying the API.
(lt – less than). It has ISO 8601
format.
playerCode query no string (32) Player’s code of a player that is
fetched.
gameCode query no string (32) Game’s code of a game that is
fetched.
isTest query no boolean This parameter allows to make
payment for test.

The System responds to the parameters entered according to the following schema:
Response

Code Schema Example


200 [ [
{ {
extTrxId: string (32), "extTrxId": "99167",
bet: number, "bet": 10,
win: number, "win": 20,
currency: string (3), "currency": "USD",
brandId: string (32), "brandId": "Qa1weSD",
playerCode: string (32), "playerCode": "PL0001",
roundId: string (32), "roundId": 167,
gameCode: string (32), "gameCode": "pt_gm1",
gameProviderCode: string (32), "gameProviderCode":
balanceBefore: number, "sw_gos",
balanceAfter: number, "balanceBefore": 1000,
isTest: boolean, "balanceAfter": 1010,
revenue: number, "revenue": 10,
insertedAt: string (32) in UTC "isTest": false,
time zone, "insertedAt": "2019-02-
providerSpecificData: number 12T11:32:15.000Z",
} "providerSpecificData": null
] }
]

If any issues occur while getting external win/bet history, the System responds with
the following error codes:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 62 of 145
Proprietary and Confidential

HTTP Code Error Code Description


11 Token is missed
400 12 Token is not valid
13 Token is expired

5.12. Get Game History Round Details


Request: GET api.operatorapi.com/history/game/{roundId} HTTP/1.1
This method enables the user to get game round details from a specified key entity.
In order to do this, the following parameters should be entered according to the
schema:
Parameters to enter

Name Located In Required Schema Notes


string (32) A unique round number in
roundId path yes
|integer games.
Number of items to be
offset query no integer skipped from the beginning of
the selection.
Number of items to return
limit query yes integer (default – 20).
Response’s format (CSV).
format query no string | “csv”

Sorting fields. Allowed values


are ‘code’, ‘title’,
sortBy query no string (32)
‘providerTitle’, ‘providerCode’,
‘categoryList’.
string | “ASC” or Sorting order: ASC or DESC.
sortOrder query no
“DESC”
boolean: “true” | Set to true for getting only
isPayment query no
“false” payment entries.
Spin number.
spinNumber query no integer

The System responds to such requests according to the following schema:


Response
Code Schema Example
200 [ [
{ {
spinNumber: integer, "spinNumber": 0,
type: string (16), "type": "slot",
currency: string (3), "currency": "CNY",
bet: number, "bet": 0,
win: number, "win": 0,
credit: number, "credit": 10,

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 63 of 145
Proprietary and Confidential

debit: number, "debit": 5,


balanceAfter: number, "balanceBefore": 1000,
balanceBefore: number, "balanceAfter": 3644,
endOfRound: boolean, "endOfRound": true,
ts: string (32) in UTC "ts": "2019-03-01T14:57:39.780Z",
time zone, "test": false,
test: boolean, "isPayment": true,
isPayment: boolean, "totalJpContribution": 0,
totalJpWin: number, "totalJpWin": 0
totalContribution: number }
} ]
]

If any issues occur while getting game round details, the System responds with the
following error codes:

HTTP Code Error Code Description


Validation Error
40

400 One of the parents is suspended


62

101 Not a brand

10 Access Token is missing

204 Access token error


401
205 Access Token is expired

792 Access Session is expired

User doesn’t have permission to


403 206 execute the operation

404 51 Could not find entity

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 64 of 145
Proprietary and Confidential

5.12.1. Get Game History Round Details from 3rd Party


Game Providers

Request: GET api.operatorapi.com/history/external/{roundId}/details HTTP/1.1


This method enables the user to get game round details from a specified key entity.
In order to do this, the following parameters should be entered according to the
schema:
Parameters to enter

Name Located In Required Schema Notes


string (32) A unique round number in
roundId path yes
|integer games.
gameProviderCode query yes string (32) Game Provider’s code.

extTrxId query yes string (32) An external reserence Id.

The System responds to the parameters entered according to the following schema:
Response

Code Schema Example


200 string
"<html>History</html>"

If any issues occur while getting game round details, the System responds with the
following error codes:

HTTP Code Error Code Description

11 Token is missed

400 12 Token is not valid

13 Token is expired

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 65 of 145
Proprietary and Confidential

5.13. Get Game Spin History for the Brand

Request: GET api.reportapi.com/history/spins HTTP/1.1


This method enables to return information per spin for the brand.
In order to do this, the following parameters should be entered according to the
schema:

Name Located In Required Schema Notes


offset query yes integer Number of items to be
skipped from the beginning
of the selection.
limit query yes integer Number of items to return
(default – 20).
sortBy query no string (32) Sorting key. Allowed values
are:

“brandId”,

“roundId”,

“playerCode”,

“gameCode”,

“currencyCode”,

“firstTs”,

“finished”,

“bet”,

“win”,

“isTest”
sortOrder query no string | “ASC” or Sorting order: ASC or DESC.
“DESC”

playerCode query no string (32) Player’s code of a player that


is fetched.

playerCode__in query no string (64) Player’s code to search for,


separated by commas.

gameCode query no string (32) Game’s code of a game that


is fetched.

gameCode__in query no string (64) Game’s code to search for,


separated by commas.
insertedAt__gt query no string (32) This parameter shows the
time when the spin was
saved to the database (and
there can be a slight delay
from the time when the spin
actually happened).

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 66 of 145
Proprietary and Confidential

It should be used for


incremental updates when
querying the API.
(gt – greater than). It has
ISO 8601 format.
insertedAt__lt query no string (32) This parameter shows the
time when the spin was
saved to the database (and
there can be a slight delay
from the time when the spin
actually happened).
It should be used for
incremental updates when
querying the API.
(lt – less than). It has ISO
8601 format.
ts__gt query no string (32) This parameter shows the
time when the spin
happened.
(gt – greater than). It has
ISO 8601 format.
ts__lt query no string (32) This parameter shows the
time when the spin
happened.
(lt – less than). It has ISO
8601 format.
type query no string (32) This parameter shows game
type equal to value as spin,
shot, respin, slot, freegame,
jackpot-mini-game, jackpot-
win, play-mini-game,
freebet, etc.
type__in query no string (32) This parameter shows the
game type from a comma
separated list as spin, shot,
respin, slot, freegame,
jackpot-mini-game, jackpot-
win, play-mini-game,
freebet, etc.

Types of parameters and their description


• System events:
force-finish – the event when the round has been finished manually by the
support team
finalized – the event when the round has been closed because of the expiration
time
revert-game – the event when the game state and the payment were reverted

• Slot Games Events:


slot – the event for the spin in some slot games
spin – the event for the spin in games

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 67 of 145
Proprietary and Confidential

• Bonus and promotions:


bonusgame – the event when the player triggers a bonus game
freebet – the event for the free bet mode when the player produces a bet action
freegame – the event when the player triggers a free game mode
respin – the event for a free (0 bet) spin

• Jackpot events:
jackpot-mini-game – the event when the player triggers a jackpot mini game
jackpot-win – the event for a jackpot win
jackpot_win – an old event for a jackpot win
mini-game – the event when the player triggers a mini game
play-mini-game – spin events which are produced inside mini games

The System responds to such requests according to the following schema:


Response
Code Schema Example
200 { [
roundId: string (32), {
spinNumber: integer, "roundId": "Rk8VenwB",
type: string (32), "spinNumber": 200000134,
gameId: string (32), "type": "slot",
playerCode: string (255), "gameId": "sw_sland",
currency: string (3), "currency": "USD",
bet: number, "bet": 0.1,
win: number, "win": 1.5,
endOfRound: boolean, "endOfRound": true,
ts: string (32), "ts": "2017-02-
test: boolean, 16T16:37:13.613Z",
credit: number, "test": false,
debit: number, "credit": 10,
balanceBefore: number, "debit": 5,
balanceAfter: number, "balanceBefore": 10,
totalJpContribution: "balanceAfter": 5,
number, "totalJpContribution": 10,
totalJpWin: number, "totalJpWin": 5,
insertedAt: string (32) in "insertedAt": "2017-02-
UTC time zone 16T16:37:13.613Z"
} }
]
Note:

‘Debit and credit’ parameters change the balance and they are not connected with game’s ‘win and
bet’.
Debit amount means the transfer-in amount, and similar operations. Credit amount stands for the
transfer-out amount, tournament win, etc. Please mind that transfer operations are deprecated.
The ‘test’ parameter defines if the player is a test player. True – indicates a test player, false – indicates
a real player.

If any issues occur while returning the information per spin, the System responds with
the following error codes:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 68 of 145
Proprietary and Confidential

HTTP Code Error Code Description

40 Validation error

400 One of the parents is


62
suspended
101 Not a brand

10 Access Token is missing

204 Access token error


401
205 Access Token has expired

792 Access Session is expired

50 Not master entity


403
206 Forbidden

404 51 Could not find entity

5.14. Get Game History Round Details SmResult


Request: GET api.operatorapi.com/history/game/{roundId}/sm-result HTTP/1.1

This method allows the user to get the game history round details formatted as
sm_result which is required by Portuguese regulation.
In order to do this, the round id should be entered according to the schema:

Parameter to enter

Name Located In Required Schema Notes


A unique round number in
roundId path yes string (32)
games.

The System responds to the parameters entered according to the following schema:
Response

Code Schema Example


200 { {
smResult: string (4000) "smResult":
} "0:2;3;4;2;3#2;5;5;2;3#0;7;6;4;3#"
}

If any issues occur while getting game round details, the System responds with the
following error codes:

HTTP Code Error Code Description


Validation Error
40

400 One of the parents is suspended


62

101 Not a brand

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 69 of 145
Proprietary and Confidential

HTTP Code Error Code Description


10 Access Token is missing

204 Access token error


401
205 Access Token is expired

792 Access Session is expired

403 206 Forbidden

404 51 Could not find entity

5.15. Get Game History Round Details


Visualisation

Request: GET api.operatorapi.com/history/game/{roundId}/image HTTP/1.1


This method enables the user to get the game history round details visualisation.
In order to do this, the following parameters should be entered according to the
schema:
Parameters to enter

Name Located In Required Schema Notes


string (32) A unique round number in
roundId path yes
|integer games.
If specified, the game history
language query no string (2) information will be provided in
the specified language
If specified, the game history
information will be converted
timezone query no string (32) to the specified timezone, for
example, “Asia/Shanghai”

The System responds to such requests according to the following schema:


Response
Code Schema Example
200 { {
imageUrl: string, "imageUrl":
ttl: number "http://example.com/gamehistory/0.0.1/his
} tory.html?data=bhESknjk578.eyJlSWQiJZCI6N
jk1NzCwiiZXhwIjoxNTMwNzgzNNJKNCDCjYzLCSSv
dXAifQ&url=site.com&language=en",
"ttl": 3600
}
ttl – Token expires after the specified period (in seconds).

Below is the example of the image available via the URL in the response:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 70 of 145
Proprietary and Confidential

If any issues occur while getting game round details, the System responds with the
following error codes:

HTTP Code Error Code Description


Validation Error
40

400 One of the parents is suspended


62

101 Not a brand

10 Access Token is missing

204 Access token error


401
205 Access Token is expired

792 Access Session is expired

User doesn’t have permission to


403 206 execute the operation

51 Could not find entity


404 683 Game History details not found
901 Domain is used by entity

409 689 Game history URL not found

5.16. Get Game Event Details Visualisation

Request: GET
api.operatorapi.com/history/game/{roundId}/details/{spinNumber}/image HTTP/1.1
This method enables the user to return a URL to a visualisation of game history with
spin details.
In order to do this, the following parameters should be entered according to the
schema:
Parameters to enter

Name Located In Required Schema Notes


string (32) A unique round number in
roundId path yes
|integer games.
Number of spins per game
spinNumber path yes integer round.
If it is specified, visualisation
will be translated to given
language query no string (2)
language.
Note: for Chinese localization

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 71 of 145
Proprietary and Confidential

the language code should


include 5 symbols – zh-cn,
zh- tw

The System responds to such requests according to the following schema:


Response
Code Schema Example
200 { {
imageUrl:string "imageUrl":
(65536) "https://flc.cdnsky.net/gamehistory/2.9.5/histo
} ry.html?data=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVC
J9.eyJyb3VuZElkIjozNDk1M…"
}

Below is the example of the image available via the URL in the response:

If any issues occur while returning a URL, the System responds with the following error
codes:

HTTP Code Error Code Description


Validation Error
400 40

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206
execute the operation
51 Could not find entity
404
683 Game history details not found
689 Game history URL not found

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 72 of 145
Proprietary and Confidential

HTTP Code Error Code Description


900 Domain does not exist

5.17. Get Currency Report


Request: GET api.reportapi.com/report/wallet/currency HTTP/1.1
This method enables the user to get a report on currencies available for the operator.
In order to generate the report, the following parameters should be entered according
to the schema:
Parameters to enter

Name Located In Required Schema Notes


It is false by default. If true,
boolean: “true” | all current entity children’s
includeSubBrands query no
“false” data will be included in the
response.
Period start date in UNIX-time
query – seconds that have elapsed
from no integer
since 00:00:00 1 January
1970 UTC.
Period end date in UNIX-time
– seconds that have elapsed
to query no integer
since 00:00:00 1 January
1970 UTC.
Time stamp when game was
ts query yes string (32) finished and it is always
required.
This parameter shows the
time when the spin
ts__gt query yes/no string (32)
happened.
(gt – greater than).
This parameter shows the
time when the spin happened
ts__gte query yes/no string (23) in ISO 8601 format (e.g.
2020-12-10T16:47:38.887Z);
gte – greater than or equal.
This parameter shows the
time when the spin happened
ts__lt query yes/no string (32) in ISO 8601 format (e.g.
2020-12-10T16:47:38.887Z);
lt– less than.
This parameter shows the
time when the spin happened
ts__lte query yes/no string (32) in ISO 8601 format (e.g.
2020-12-10T16:47:38.887Z);
lte – less than or equal.
currency (currency Parameter that shows player’s
query no string (3)
equal to value) currency in the game.
currency_in (currencies This parameter allows to list
query no string (32) currencies by comma.
separated by commas)
Number of items to return
limit query no integer
(default – 20).
Copyright © 2022 Skywind Holdings Ltd.
All Rights Reserved 73 of 145
Proprietary and Confidential

Note: The range between ts__gte and ts__lte dates cannot be more than 1 month, and ts__gte date
in ts__gte and ts__lte range cannot be older than 3 months.
If only ts__gte is specified and it is older than 1 month, it will be automatically set to 1 month ago from
the current date.
The option ‘yes/no’ means that the operator needs to choose one of them.

The System responds to such requests according to the following schema:


Response
Code Schema Example
200 [ [
{ {
currency: string (3), "currency": "USD",
playedGames: integer, "playedGames": 112503,
bets: number, "bets": 256432.12,
winnings: number, "winnings": 548123.34,
ggr: number, "ggr": 804555.46,
betsUsd: number, "betsUsd": 256432.12,
winningsUsd: number, "winningsUsd": 548123.34,
ggrUsd: number "ggrUsd": 804555.46
} }
] ]

If any issues occur while getting the report, the System responds with the following
error codes:

HTTP Code Error Code Description

Validation error
40
One of the parents is suspended
400 62
Not a brand
101
Access Token is missing
10
Access token error
204
401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206 execute the operation

404 51 Could not find entity

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 74 of 145
Proprietary and Confidential

5.18. Get Player Report


Request: GET api.reportapi.com/report/players HTTP/1.1
This method enables the user to get a report on a player’s information and activity.
In order to get this information under the key entity, the following parameters should
be entered according to the schema:
Parameters to enter

Located Notes
Name Required Schema
In
format query no string (8) Response’s format (CSV).

currency query no string (3) Player’s currency.


currency__in This parameter allows to list
query no string (32)
currencies by comma.
playerCode Player’s code of a player that
query no string (32)
is fetched.
playerCode__in Player’s code to search for,
query no string (64)
separated by commas.
gameCode Game’s code of a game that
query no string (32)
is fetched.
gameCode__in Game’s code to search for,
query no string (64)
separated by commas.
playedGames__gt This parameter allows to
query no number compare amounts of played
games (gt – greater than).
playedGames__lt This parameter allows to
query no number compare amounts of played
games (lt – less than).
playedGames__gte This parameter allows to
compare amounts of played
query no number games (gte – greater than or
equal).

playedGames__lte This parameter allows to


compare amounts of played
query no number
games (lte – less than or
equal).
playedGames This parameter shows
query no number
amounts of played games.
totalBets__gt This parameter allows to
query no number compare total bets in the
game (gt – greater than).
totalBets__lt This parameter allows to
query no number compare total bets in the
game (lt – less than).
totalBets__gte This parameter allows to
compare total bets in the
query no number
game (gte – greater than or
equal).
totalBets__lte This parameter allows to
compare total bets in the
query no number
game (lte – less than or
equal).

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 75 of 145
Proprietary and Confidential

Located Notes
Name Required Schema
In
totalBets This parameter shows total
query no number
bets in the game.
totalWins__gt This parameter allows to
query no number compare total wins in the
game (gt – greater than).
totalWins__lt This parameter allows to
query no number compare total wins in the
game (lt – less than).
totalWins__gte This parameter allows to
compare total wins in the
query no number
game (gte – greater than or
equal).
totalWins__lte This parameter allows to
compare total wins in the
query no number
game (lte – less than or
equal).
totalWins This parameter shows total
query no number
wins in the game.
paymentDate This parameter shows the
query yes string (32) date when the payment was
made.
paymentDate__gt This parameter allows to
query yes string (32) compare payment dates (gt
– greater than).
paymentDate__lt This parameter allows to
query yes string (32) compare payment dates (lt –
less than).
paymentDate__gte This parameter allows to
query yes string (32) compare payment dates (gte
– greater than or equal).
paymentDate__lte This parameter allows to
query yes string (32) compare payment dates (lte
– less than or equal).
paymentDateHour This parameter shows the
query yes string (32) date and time when the
payment was made.
paymentDateHour__gt This parameter allows to
compare payment’s values of
query yes string (32)
date and time (gt – greater
than).
paymentDateHour__lt This parameter allows to
compare payment’s values of
query yes string (32)
date and time (lt – less
than).
paymentDateHour__gte This parameter allows to
compare payment’s values of
query yes string (32)
date and time (gte – greater
than or equal).
paymentDateHour__lte This parameter allows to
compare payment’s values of
query yes string (32)
date and time (lte – less than
or equal).
Note: The range between paymentDateHour__gte and paymentDateHour__lte dates cannot be more
than 1 month, and paymentDateHour__gte date in paymentDateHour__gte and paymentDateHour__lte
range cannot be older than 3 months.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 76 of 145
Proprietary and Confidential

If only paymentDateHour__gte is specified and it is older than 1 month, it will be automatically set to 1
month ago from the current date.

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 PlayersReport [ [
Inline Model 1 {
] "playerCode": "PL0001",
Inline Model 1 { "currency": "USD",
playerCode: string (32), "playedGames": 27182,
currency: string (3), "totalBets": 1216851546,
playedGames: number, "totalWins": 2851546,
totalBets: number, "totalJpWins": 15000,
totalWins: number, "totalFreebetWins": 2300,
totalJpWins: number, "GGR": 1546,
totalFreebetWins: number, "RTP": 0.93123741241,
GGR: number, "debits": 1500,
RTP: number, "credits": 10000
debits: number, }
credits: number ]
}
Note:
‘debits’ – is a total sum (in player’s currency) of player’s ‘transfer-in’ operations, which is applicable
for action games (such like fu-fish)
‘credits’ – is a total sum (in player’s currency) of ‘transfer-out’ (action games), tournament win,
GRC redeem operations, etc.
Please mind that action games are deprecated.
‘totalFreebetWins’ – is a total amount of money the player won with the Free Bets feature.
Debits and credits are not related to in-game bets and wins, but, as described above, they are the
result of operations that affect the player’s balance.

If any issues occur while getting the report, the System responds with the following
error codes:

HTTP Code Error Code Description


40 Validation error
One of the parents is
400 62
suspended
101 Not a brand

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206
execute the operation
404 51 Could not find entity

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 77 of 145
Proprietary and Confidential

5.19. Get List of Countries


Request: GET api.operatorapi.com/countries HTTP/1.1
The user can get a list of countries its operator can perform in.
The System responds to such requests according to the following schema:
Response

Code Schema Description


200 [ [
{ {
displayName: string (64), "displayName": "Bangladesh",
"code": "BD"
code: string (2) },
{
} "displayName": "China",
]
"code": "CN"
}
]

If any issues occur while retrieving a list of countries, the System responds with the
following error codes:

HTTP Code Error Code Description

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired


User doesn’t have permission to
403 206
execute the operation
404 51 Could not find entity

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 78 of 145
Proprietary and Confidential

5.20. Get List of Currencies


Request: GET api.operatorapi.com/currencies HTTP/1.1
The user can get a list of currencies available for its operator.
The System responds to such requests according to the following schema:
Response

Code Schema Description


200 [
{ [
displayName: string {
(64), "displayName": "US Dollar",
code: string (3) "code": "USD"
(ISO 4217) },
{
"displayName": "Chinese Yuan",
} "code": "CNY"
] }
]

If any issues occur while retrieving the list of currencies, the System responds with the
following error code

HTTP Code Error Code Description

204 Access token error

401 205 Access token has expired

792 Access Session is expired

403 206 Forbidden

404 51 Could not find entity

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 79 of 145
Proprietary and Confidential

5.21. Get List of Languages


Request: GET api.operatorapi.com/languages HTTP/1.1
The user can get a list of languages supported by its operator.
The System responds to such requests according to the following schema:
Response

Code Schema Description


200 [ [
{ {
name: string (32), "name": "English",
nativeName: string "nativeName": "English",
(32), "direction": "ltr",
direction: string "code": "en"
(3), }
code: string (2) (ISO ]
639-1)
}
]

If any issues occur while getting the list of languages, the System responds with the
following error codes:

HTTP Code Error Code Description


10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired


403 206 User doesn’t have permission to
execute the operation
404 51 Could not find entity

5.22. Get Jackpots


Request: GET api.operatorapi.com/jackpots HTTP/1.1

This method returns to the merchant and its brand a list of jackpots for the current
entity. Such list includes:
• Must Win Jackpots (MWJP)
• Active jackpots
• Ended jackpots that are displayed for 5 days
In order to get this information, the following parameters should be entered according
to the schema:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 80 of 145
Proprietary and Confidential

Parameters to enter

Name Located In Required Schema Notes


string Comma separated jackpot ids
jackpotIds query no
to return (default – all).
Comma separated game
codes, that belong to entity,
gameCodes query no string
for which jackpot instances
should be returned.

The System responds to such requests according to the following schema:

Response

Code Schema Example


200 [ [
{ {
id: string (32), "id": "sw_jackpot_id",
name: string (32), "name": "sw_jackpot_name",
currency: string (3), "currency": "EUR",
type: string (32), "type": "MWJP",
startDate: string (32), "startDate": "2022-02-23T12:45:42.324Z",
status: number, "status": 1,
endDate: string (32), "endDate": "2022-02-23T12:45:42.324Z",
poolsCount: number, "poolsCount": 3,
jackpotPools: Array [ "jackpotPools": [
{ {
poolId: string (32), "poolId": "small",
contributionPercent: number, "contributionPercent": 0.2,
initialSeed: number, "initialSeed": 10,
tickerAmount: number "tickerAmount": 1000
} }
] ]
} }
] ]
Note:
"type" parameter possible values are "Game Level" and "MWJP";
"status" parameter possible values are 1 – for active jackpot, 0 – for closed one, 1 will be returned
in most cases.

If any issues occur while returning the list of jackpots, the System responds with the
following error codes:

HTTP Code Error Code Description

403 2 Operation forbidden


500 1 JPN internal server error

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 81 of 145
Proprietary and Confidential

5.23. Promotions
All methods in this chapter can be used for managing Free Bets promotions.

5.23.1. Create a Promotion


Request: POST api.operatorapi.com/promo HTTP/1.1

This method can be used if the Operator decides to create and manage Free Bets via
FIS instead of their own system.

JSON Request example (Free Bets)

Schema Example

{ {
title: string (32), "title": "Quick freebet promo",
startDate: string (32), "startDate": "2018-12-
endDate: string (32), 10T15:00:00.000Z",
type: string (16), "endDate": "2018-12-
rewards: array [{ 10T16:00:00.000Z",
freebetAmount: number, "type": "freebet",
games: [{ "rewards": [{
gameCode: string (32), "freebetAmount": 15,
coins: [{ "games": [{
[Currency]: { coin: number } "gameCode": "sw_fazer6",
}] "coins": [{ "USD": { "coin":
}] 0.01 }}, {"CNY": { "coin": 0.1 } }]
}] }]
} }]
}

Parameter to enter

Name Located In Required Schema Notes

info body yes object Promotion parameters.

Info

Name Required Schema Notes

title yes string (32) The title of the promotion

status yes string | active or Assigns the specified status to the


inactive promotion
type yes string: freebet Defines the type of the promotion, for
example, freebet
conditions no object Conditions under which the promotion
will be created for the player.
Copyright © 2022 Skywind Holdings Ltd.
All Rights Reserved 82 of 145
Proprietary and Confidential

startDate yes string (32) Start date in ISO 8601 timestamp


(e.g. 2020-12-10T16:47:38.887Z)
startRewardOnGameOpen no boolean If true, starts the promo the moment
the game is launched.
timezone no string (32) Time zone according to which the
start and end date will be applied.
endDate yes string (32) End date in ISO 8601 timestamp (e.g.
2020-12-10T16:47:38.887Z)
description no string (32) The description of the promotion
intervalType no string (32) Promo calculation period. Possible
values: hourly | daily | weekly |
monthly
daysOfWeek no Array [string (3) ] Days of week when the promotion will
run. For example, [ "FRI", "SAT" ]

daysOfMonth no Array [string (2) ] Days of month when the promotion


will run. For example, [ "1", "2", "3",
"29", "30" ]

customerIds no Array [string (32) ] A comma-separated list of customer


IDs, to which the promotion will be
applied. For example, [ "p_code1",
"p_code2" ]

externalId no string (32) The ID assigned to the promo in the


Operator system. See note below the
table.
rewards yes Array The array for specifying the promotion
parameters for one or more promotion
types
expirationPeriod no number After the specified number of
days/hours from the start of the
promotion the Free Bets will expire.
expirationPeriodType no string | daily or The time unit that will be used for
hourly specifying the expirationPeriod
parameter above
games yes array List of codes of the games where the
promotion will run
freebetAmount yes number The number of free bets awarded to a
player in this promotion

Note: externalId parameter is used only in the cases when the Operator also needs to duplicate the
promo in their own system. The Operator should then specify the external ID in the request. This way
when Skywind sends a promo transaction to the Operator’s wallet, the Operator will receive it with
their external ID rather than the ID assigned by Skywind system.

Response

Code Schema Example


201 { {
title: string (32), "title": "Christmas promo",
status: string (32), "status": "active",
type: string (32), "type": "freebet",
conditions: { "conditions": {
"and": [ "and": [
null null
], ],
"or": [ "or": [

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 83 of 145
Proprietary and Confidential

null null
], ],
value: number, "value": 99,
operator: string (32), "operator": "<=",
valueField: string (32) "valueField":
}, "deposit_amount"
startDate: string (32), },
timezone: string (32), "startDate": "2019-12-
endDate: string (32), 23T15:00:00.000Z",
description: string (32), "startRewardOnGameOpen": false,
intervalType: string (32), "timezone":
daysOfWeek: Array [string "America/Los_Angeles",
(32)], "endDate": "2019-12-
daysOfMonth: Array [string 24T16:00:00.000Z",
(32)], "description": "Some
timeOfDay: string (32), description of this promo",
customerIds: Array [string "intervalType": "weekly",
(32)], "daysOfWeek": [
externalId: string (32), "FRI",
rewards: [ "SAT"
"Single reward type ],
should be used in this array. "daysOfMonth": [
So, use one and remove the "1",
others.", "2",
{ "3",
freebetAmount: 10, "29",
expirationPeriod: 5, "30"
expirationPeriodType: ],
daily, "timeOfDay": "12:30:00",
games: [ "customerIds": [
{ "p_code1",
gameCode: "p_code2"
string(32), ],
coins: [Currency]: "externalId": "extPromoId",
{ "coin": number }, "id": "pQ3513OE",
"createdUserId": "aZQ900OE",
} "createdUserName": "USER1",
] "updatedUserId": "aZQ900OE",
} "createdAt": "2019-12-
23T15:00:00.000Z",
"updatedAt": "2019-12-
23T16:00:00.000Z",
"everStarted": true,
"active": true,
"archived": true,
"brandId": "s0GBK8gK",
"owner": "operator",
"rewards": [
"Single reward type should be
used in this array. So, use one
and remove the others.",
{
"freebetAmount": 10,
"expirationPeriod": 5,
"expirationPeriodType":
"daily",
"games": [
{
"gameCode": "sw_gsxr",
"coins": [
{

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 84 of 145
Proprietary and Confidential

"USD": {
"coin": 0.01
}
},
{
"CNY": {
"coin": 0.1
}
}
]
},
{
"gameCode": "sw_er6f",
"coins": [
{
"USD": {
"coin": 0.2
}
},
{
"CNY": {
"coin": 0.3
}
}
]
}
]
}
]
}

If any issues occur while creating the promotion, the System responds with the
following error codes:

HTTP Code Error Code Description

400 40 Validation error

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206 execute the operation /
Forbidden

404 684 Referenced. Item is not found

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 85 of 145
Proprietary and Confidential

5.23.2. Add Promo Rewards for Player


Request: PUT api.operatorapi.com/players/{playerCode}/promo/{promoId} HTTP/1.1

This method enables the merchant to enable specified promotions for the specified
players.
JSON Request Example

Schema Example

{ {
amount: number, "amount": 10,
expirationPeriod: number, "expirationPeriod": 1,
expirationPeriodType: string "expirationPeriodType": "daily"
} }

Parameters to enter

Name Located In Required Schema Notes

amount body yes number Count of rewards to be


added to the player
(free bets etc.)

expirationPeriod body no number The interval during


which the reward is
prolonged (based on
expirationPeriodType)

expirationPeriodType body no string Time interval type:


hourly, daily, weekly,
monthly

playerCode path Yes string (32) The unique ID of player

promoId path yes string (32) Public ID of the


promotion

The System responds to this type of requests according to the following schema:
Response

Code Schema Example


200 [ [
{ {
promoId: string (32), "promoId": "W4RkGRen",
status: string, "status": "pending",
expireAt: string (32), "expireAt": "2019-12-
playerCode: string (32) 23T15:00:00.000Z",
} "playerCode": "PLAYER001"
] }
]

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 86 of 145
Proprietary and Confidential

If any issues occur while getting the promotions, the System responds with the
following error codes:

HTTP Code Error Code Description

40 Validation error

709 Player has no such promo


400 Can’t execute operation for
710
promo with its type

711 Promo is not in a valid state

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206 execute the operation /
Forbidden

5.23.3. Add Players to the Promotion

Request: POST api.operatorapi.com/promo/{promoId}/players HTTP/1.1


This method allows you to add up to 1 000 players per request to the existing
promotion.
Parameters to enter
Name Located In Required Schema Notes
promoId path yes string (32) The unique ID of the promotion

playerCodes body yes Array [string Array of player codes. The


(32) ] maximum number of players is 1
000

The System responds to the request according to the following schema:


Response

Code Schema Example


200 { {
playerCode1: string(32), "playerCode1": "OK",
playerCode2: string (32) "playerCode2": "Promotion
} already added"
}

If any issues occur while updating the promotion, the System responds with the
following error codes:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 87 of 145
Proprietary and Confidential

HTTP Code Error Code Description

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


206 execute the operation /
403 Forbidden
Can not update promo that is
706
not pending

404 680 Promotion not found

5.23.4. Get a Promotion by ID


Request: GET api.operatorapi.com/promo/{promoId} HTTP/1.1
This method enables the merchant to get information on a specific promotion by its
ID.
In order to get this information, the following parameters should be entered according
to the schema:
Parameters to enter

Name Located In Required Schema Notes

promoId path yes string The unique ID of the


promotion

includeTotals query no boolean | If true, the response


true or false will contain the ‘players
participated’ and ‘total
payout’ fields

The System responds to this type of requests according to the following schema:
Response

Code Schema Example


200 { {
title: string (32), "title": "Christmas promo",
status: string (32), "status": "active",
type: string (32), "type": "freebet",
conditions: { "conditions": {
"and": [ "and": [
{ {
"and": [ "and": [
null null
], ],

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 88 of 145
Proprietary and Confidential

"or": [ "or": [
null null
], ],
value: number, "value": 99,
operator: string "operator": "<=",
(32), "valueField":
valueField: "deposit_amount"
deposit_amount | }
deposit_count ],
} "or": [
{
startDate: string (32), "and": [
startRewardOnGameOpen: null
boolean, ],
timezone: string, "or": [
endDate: string, null
description: string, ],
intervalType: hourly | "value": 99,
daily | weekly | monthly "operator": "<=",
daysOfWeek: [string (3)], "valueField":
daysOfMonth: [string (2)], "deposit_amount"
timeOfDay: string, }
customerIds: [string], ],
externalId: string, "value": 99,
id: string, "operator": "<=",
createdUserId: string, "valueField":
createdUserName: string, "deposit_amount"
updatedUserId: string, },
createdAt: string, "startDate": "2019-12-
updatedAt: string, 23T15:00:00.000Z",
everStarted: boolean, "startRewardOnGameOpen": false,
active: boolean, "timezone":
archived: boolean, "America/Los_Angeles",
brandId: string, "endDate": "2019-12-
owner: string, 24T16:00:00.000Z",
rewards: [ "description": "Some
"Single reward type description of this promo",
should be used in this array. "intervalType": "weekly",
So, use one and remove the "daysOfWeek": [
others.", "FRI",
{ "SAT"
freebetAmount: number, ],
expirationPeriod: "daysOfMonth": [
number, "1",
expirationPeriodType: "2",
hourly | daily | weekly | "3",
monthly, "29",
games: [ "30"
{ ],
gameCode: string "timeOfDay": "12:30:00",
coins: [Currency]: "customerIds": [
{ "coin": number } "p_code1",
} "p_code2"
] ],
} "externalId": "extPromoId",
] "id": "pQ3513OE",
} "createdUserId": "aZQ900OE",
"createdUserName": "USER1",
"updatedUserId": "aZQ900OE",
"createdAt": "2019-12-
23T15:00:00.000Z",

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 89 of 145
Proprietary and Confidential

"updatedAt": "2019-12-
23T16:00:00.000Z",
"everStarted": true,
"active": true,
"archived": true,
"brandId": "s0GBK8gK",
"owner": "operator",
"rewards": [
"Single reward type should be
used in this array. So, use one
and remove the others.",
{
"freebetAmount": 10,
"expirationPeriod": 5,
"expirationPeriodType":
"daily",
"games": [
{
"gameCode": "sw_gsxr",
"coins": [
{
"USD": {
"coin": 0.01
}
},
{
"CNY": {
"coin": 0.1
}
}
]
},
{
"gameCode": "sw_er6f",
"coins": [
{
"USD": {
"coin": 0.2
}
},
{
"CNY": {
"coin": 0.3
}
}
]
}
]
}
]
}

If any issues occur while getting the promotions, the System responds with the
following error codes:

HTTP Code Error Code Description

10 Access Token is missing


401
204 Access token error

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 90 of 145
Proprietary and Confidential

HTTP Code Error Code Description

205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206 execute the operation /
Forbidden

404 680 Promotion not found

5.23.5. Get a List of Promotions


Request: GET api.operatorapi.com/promo HTTP/1.1
This method enables the merchant to get a list of promotions.
In order to get this information, the following parameters should be entered according
to the schema:
Parameters to enter

Name Located In Required Schema Notes

offset query no integer Number of items to be


skipped from the
beginning of the
selection (default – 0).
limit query no integer Number of items to
return (default – 20).
sortBy query no string (32) Sorting fields. Allowed
values are ‘code’, ‘title’,
‘providerTitle’,
‘providerCode’,
‘categoryList’.
sortOrder query no string (4) Sorting order: ASC or
DESC.
archived query no boolean | If specified, gets
true or false promotions with given
archived value (default
– false)
enabled query no boolean | If specified, gets
true or false promotions with the
enabled status
status query no string | active or If specified, get
inactive promotions with given
status.
state__in query no string | in_progress, List of promotion states.
pending, finished or
expired
startDate__gte query no string (32) Start date in ISO 8601
timestamp (e.g. 2016-
12-10T16:47:38.887Z);
gt – greater than.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 91 of 145
Proprietary and Confidential

startDate__lte query no string (32) Start date in ISO 8601


timestamp (e.g. 2016-
12-10T16:47:38.887Z);
lt-less than
endDate__gte query no string (32) End date in ISO 8601
timestamp (e.g. 2016-
12-10T16:47:38.887Z);
gt – greater than
endDate_ _lte query no string (32) End date in ISO 8601
timestamp (e.g. 2016-
12-10T16:47:38.887Z);
lt - less than
createdAt__gte query no string (32) Creation date in ISO
8601 timestamp greater
than or equal.
createdAt__lte query no string (32) Creation date in ISO
8601 timestamp less
than or equal.
createdAt__gt query no string (32) Creation date in ISO
8601 timestamp greater
than.
createdAt__lt query no string (32) Creation date in ISO
8601 timestamp less
than.
title__ contains query no string (32) This parameter
indicates that the
promo name contains
the specified text.
labelsId__in query no string (32) The response will
include the promotions
that include at least one
of the specified labels
type query no string The response will
include the promotions
of the specified types.
format query no string | csv The only available
format is CSV
includeTotals query no boolean | If true, the response
true or false will contain ‘total
participated’ and ‘total
payouts’ fields
includeGames query no boolean | If true, the response
true or false will return a game list
owner query no string (32) | Filters promotions by
skywind, operator the owner
externalId query no string (32) Returns a list of
promotions with the
specified externalId.

Note: externalId parameter is used only in the cases when the Operator also needs to duplicate the
promo in their own system. The Operator should then specify the external ID in the request. This way
when Skywind sends a promo transaction to the Operator’s wallet, the Operator will receive it with
their external ID rather than the ID assigned by Skywind system.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 92 of 145
Proprietary and Confidential

Response

Code Schema Example


200 [ [
{ {
id: string (32), "id": "pQ3513OE",
title: string (32), "title": "Christmas promo",
type: string (32), "type": "freebet",
status: Array [string "status": "inactive",
(32)], "state": "pending",
state: Array [string "brandId": "bRaNd0o1",
(32)] "brandPath": "ENT1:BRAND1",
brandId: string (32), "startDate": "2019-12-
brandPath: string (32), 23T15:00:00.000Z",
startDate: string (32), "endDate": "2019-12-
endDate: string (32), 24T16:00:00.000Z",
timezone: string (32), "timezone":
description: string (32), "America/Los_Angeles",
intervalType: string "description": "Some
(32), description of this promo",
daysOfWeek: Array [string "intervalType": "weekly",
(32)], "daysOfWeek": [
daysOfMonth: Array "FRI",
[string (32)], "SAT"
timeOfDay: string (32), ],
createdUserId: string "daysOfMonth": [
(32), "1",
createdDate: string (32), "2",
everStarted: boolean, "3",
} "29",
] "30"
],
"timeOfDay": "12:30:00",
"createdUserId": "aZQ900OE",
"createdDate": "2018-12-
23T16:00:00.000Z",
"everStarted": true,
"externalId": "extPromoId"
}
]

If any issues occur while getting the report, the System responds with the following
error codes:

HTTP Code Error Code Description

400 40 Validation error

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206 execute the operation /
Forbidden

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 93 of 145
Proprietary and Confidential

5.23.6. Delete Player from the Promotion


Request: DELETE api.operatorapi.com/players/{playerCode}/promo/{promoId}
HTTP/1.1
This method lets you delete the player from a promotion. If you need to delete a
player from the promotion in Finished and Running statuses, you must set the force
parameter to true.

Parameters to enter

Name Located In Required Schema Notes

force query yes* boolean Forces to reset the


promo for the specified
player regardless of the
promo status.

playerCode path yes string (32) The unique ID of the


player.

promoId path yes string (32) The unique ID of the


promotion.
*Note: if the force parameter isn’t sent in the request or is sent but set to false,
the player will be deleted from the promotion only if the promotion is in Pending
status.
Response

Code Example
204 Promo rewards for player was reset

If any issues occur while archiving the promotion, the System responds with the
following error codes:

HTTP Code Error Code Description

40 Validation error

709 Player has no such promo


400 Can’t execute operation for
710
promo with its type

711 Promo is not in a valid state

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 94 of 145
Proprietary and Confidential

HTTP Code Error Code Description


User doesn’t have permission to
403 206 execute the operation /
Forbidden

5.23.7. Archive a Promotion


Request: DELETE api.operatorapi.com/promo/{promoId} HTTP/1.1
This method enables the merchant to finish a specific promotion by specifying its ID.
This method can be used only for the promotions in Pending status.
In order to do this, the following parameters should be entered according to the
schema:
Parameters to enter

Name Located In Required Schema Notes

promoId path yes string The unique ID of the


promotion

includeTotals query no boolean | If true, the response


true or false will contain the ‘players
participated’ and ‘total
payout’ fields

The System responds to such requests with the following message:


Response

Code Example
204 Successfully archived promotion

If any issues occur while archiving the promotion, the System responds with the
following error codes:

HTTP Code Error Code Description

10 Access token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


206 execute the operation /
403 Forbidden
Can not update promo that is
706
not pending

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 95 of 145
Proprietary and Confidential

HTTP Code Error Code Description

404 680 Promotion not found

6. Round Finalization
In order to reduce the amount of unfinished games in the system, Skywind
recommends to enable an automatic round finalization – automatic closure of
the game rounds that are still open after the period of time that is
specified by the operator.

Round Finalization can also be referred to as Round Reconciliation and Round Auto-
closure.

From the game perspective, there are 3 types of round finalization, each game has
one finalization type assigned to it:

• Autoplay finalization – each remaining feature is randomly played out by the


server and the awarded prizes are paid out.
• Guaranteed payment finalization
• remaining feature with guaranteed prizes (for example, Cash Prize
Bonus – each next pick guarantees to award a prize) is randomly
played out by the server and the awarded prizes are paid out.
• remaining feature with non-guaranteed prizes (for example, Free
Games - each next free spin does not guarantee to award any prize) is
force finished (round is finished and remaining feature is not played out
by the server).
• None – the game does not support automatic finalization
(autoplay/guaranteed payment) or does not require finalization.

From the server side perspective, the operator can pick a period of time after which
the rounds are eligible for finalization (usually, the value is between hours and days)
and choose from the following solutions that are available for automatic round
finalization:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 96 of 145
Proprietary and Confidential

6.1. Offline Payment


Request: POST api.playerapi.com/api/credit HTTP/1.1
Request: POST api.playerapi.com/api/debit HTTP/1.1
In this case, the Skywind system will try to play out the remaining bonus feature for
the player (randomly) and pay them the prize. This approach is recommended in
case the operator supports payments for offline players (can accept payments with
expired cust_session_id).
For example, if a player left the game in the middle of a free spins round, and the
game supports auto-play finalization, the remaining free spins will be auto-played
and for each one of them an appropriate /credit and /debit (with 0-bet) requests will
be sent.
As another example, if the player played a cashpot game and some prize was left in
the cashpot, this money will be paid to the player during the automatic game
finalization.
Please, mind that 0-bets are bets generated for the free spin rounds, bonus rounds
or other player actions, such as the cashpot collection.
Note, that in the /credit requests which are sent during round finalization, the last
player’s "cust_session_id" is used (which may be expired) and additional field
"is_finalization_payment": true is added.
In case the offline payment request is sent to the operator wallet, the operator’s
system should validate the round of the player and if applicable validate that the
"cust_session_id" sent by Skywind, although it might be expired, is the same
token which was used in the corresponding/latter credit request.
In case the round has a pending transaction, this transaction will be retried as a part
of the finalization, but if the retry has failed, the round will stay open and not be
finalized.

Example of JSON Request

Example
{
… same fields as in 2.4.1 Debit customer
and 2.4.3. Credit Customer
"is_finalization_payment": true
}

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 97 of 145
Proprietary and Confidential

6.2. Round Statistics


Request: POST api.playerapi.com/api/resolve_round HTTP/1.1
In this case, Skywind will try to play out the remaining bonus feature for the player
(randomly) and instead of calling a payments API, it will calculate the total bet and
total win of the round (that is "round statistics") and send this data to the
/resolve_round endpoint. The operator will then align round results in their own
system according to Skywind round statistics. This option is more preferable as it can
also resolve pending payments which were not resolved as part of the online/offline
retry mechanism. For example, if there is a pending win in Skywind system (Skywind
does not know if the win transaction succeeded or failed on the operator side), with
the round statistics mechanism Skywind will consider the pending bet/win
transactions to be successful and add it to the total bet/win of the round. The
operator will need to reconcile the round in their system accordingly.

Note, that in /resolve_round request that is sent during round finalization, the latter
player’s "cust_session_id" is used (which may be expired), an additional field
"is_finalization_payment": true is added and "event_type" field for such
round finalization request will be set to "round-statistics".

Example of JSON Request

Example
{
"merch_id": "EB",
"merch_pwd": "SomePassword",
"cust_id": "1234",
"round_id": "3YAo10j3",
"game_id": 17733709,
"event_type": "round-statistics",
"game_code": "sw_mrmnky",
"total_bet": 1,
"total_win": 2,
"total_jp_contribution": 0.00001,
"trx_id": "trx",
"currency_code": "USD",
"timestamp": 1000000,
"game_status": "settled",
"is_finalization_payment": true,
"total_jp_win": 1500
}

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 98 of 145
Proprietary and Confidential

Response
Code Schema Example

200 { {
error_code: number, "error_code": 0,
error_msg: string, "balance": 2055.15
balance: number, }
free_bet_count: number (optional),
messages: Array (optional)
}

For Error Response details see Error Responses.

6.3. Force-Finish
Request: POST api.playerapi.com/api/resolve_round HTTP/1.1
Besides the two previous methods, there is also a less preferrable method of a so-
called force-finish round closure. It’s not recommended to use this method as it
closes the round as is, in a state where it was left by a player, which means that if a
player did not finish their free spins round or has a stuck win payment – it will ignore
those and just close the round.

Note: Although possible, this option is not recommended as a solution for


automated round closure and should be used only in cases when manual handling of
problematic rounds is needed.

Please note that when a round is force-finished (either by the automated process or
manually by our support team through our Back Office), a notification about the
round closure is not sent to the operator by default.

If a notification is required please contact our Support Team to enable this option.
Once enabled, when a round is force-finished, a round statistics request will be sent
to the resolve_round endpoint (which you should implement). The request will look
the same as the one described in 6.2 Round Statistics with the only difference of
"event_type" field value equaling "force-finish".

Example of JSON Request

Example
{
"merch_id": "EB",
"merch_pwd": "SomePassword",
"cust_id": "1234",
"round_id": "3YAo10j3",
"game_id": 17733709,
"event_type": "force-finish",
"game_code": "sw_mrmnky",

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 99 of 145
Proprietary and Confidential

"total_bet": 1,
"total_win": 2,
"total_jp_contribution": 0.00001,
"trx_id": "trx",
"currency_code": "USD",
"timestamp": 1000000,
"game_status": "settled",
"is_finalization_payment": true,
"total_jp_win": 1500
}

Response
Code Schema Example

200 { {
error_code: number, "error_code": 0,
error_msg: string, "balance": 2055.15
balance: number, }
free_bet_count: number (optional),
messages: Array (optional)
}

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 100 of 145
Proprietary and Confidential

APPENDIX 1
Test Account Provision
For testing purposes, the merchant should register at least 2 test customers (when
test_cust=true) manually in the merchant’s System. After the registration has been
performed, the merchant should send the provider the login details and passwords of
the test users.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 101 of 145
Proprietary and Confidential

APPENDIX 2
Reports API
To export the reports with increased limits by using the number of returned responses,
you can use a specific service. There are the available endpoints:

GET api.reportapi.com/v1/history/game
GET api.reportapi.com/v1/report/wallet/currency
GET api.reportapi.com/v1/report/players

Their patterns are fully identical with those methods, which are described in the
document, but their limits by the number of returned responses are incresed to
1 000 000.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 102 of 145
Proprietary and Confidential

APPENDIX 3
Jackpot Contribution Reports
Jackpot contribution is a part of stake taken to fund a jackpot pool. In fact, contribution
can be divided into parts in order to fund JP pool and seed.
There is a set of methods, which allows to return a report with a list of jackpot
contributions for a specified game by merchant and its brands.

1. Get Jackpot Contribution Report

Request: GET api.reportapi.com/report/jackpot/contributions HTTP/1.1


This method enables the merchant and its brand to get a report with a list of jackpot
contributions for a specified game. All amounts are converted in euro.
In order to get this information, the following parameters should be entered according
to the schema:
Parameters to enter
Name Located In Required Schema Notes

offset query no integer Number of items to be skipped


from the beginning of the
selection.

limit query no integer Number of items to return


(default – 20).
sortBy query no string (32) Sorting key. Allowed values are:

“brandId”,

“roundId”,

“playerCode”,

“gameCode”,

“currencyCode”,

“ts”,

“103venti”,

“finished”,

“bet”,

“win”,

“revenue”,

“isTest”
sortOrder query no string (4) Sorting order: ASC or DESC.
dateHour query yes string (32) This parameter shows the date
and time when the contribution
was made and it is always
required.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 103 of 145
Proprietary and Confidential

dateHour__gt query yes/no string (32) This parameter allows to


compare contribution’s values of
date and time (gt – greater
than).
dateHour__lt query yes/no string (32) This parameter allows to
compare contribution’s values of
date and time (lt – less than).
dateHour__gte query yes/no string (32) This parameter allows to
compare contribution’s values of
date and time (gte – greater
than or equal).
dateHour__lte query yes/no string (32) This parameter allows to
compare contribution’s values of
date and time (lte – less than or
equal).
gameCode query no string (32) Game’s code of a game that is
fetched.
gameCode__in query no string (64) Game’s code to search for,
separated by commas.

Note: The option ‘yes/no’ means that the operator needs to choose one of them.

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 [ [
{ {
dateHour: string (32), "dateHour": "2018-01-
gameCode: string (32), 03T17:00:00.000Z",
currency: string (3), "gameCode": "pt-allad-reel-
seedAmount: number, jp",
progressiveAmount: number, "сurrency": "USD",
totalBetAmount: number, "seedAmount": 12.5,
jpWinAmount: number, "progressiveAmount": 6.5,
totalBetCount: integer, "totalBetAmount": 6.5,
jpWinCount: integer, "jpWinAmount": 15146.6,
firstActivity: string (32), "totalBetCount": 120,
lastActivity: string (32), "jpWinCount": 2,
seedWin: number, "firstActivity": "2018-01-
progressiveWin: number 03T17:10:01.020Z",
} "lastActivity": "2018-01-
] 03T17:10:29.854Z",
"seedWin": 0,
"progressiveWin": 0
}
]

If any issues occur while getting the report, the System responds with the following
error codes:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 104 of 145
Proprietary and Confidential

HTTP Code Error Code Description


40 Validation Error
One of the parents is
400 62
suspended
101 Not a brand

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206
execute the operation
404 51 Could not find entity

2. Get Players’ Jackpot Contribution Report

Request: GET api.reportapi.com/report/jackpot/contributions/players HTTP/1.1


This method enables the merchant and its brand to get a report with a list of jackpot
contributions for a specified game and players. All amounts are available in euro and
player’s currency.
In order to get this information, the following parameters should be entered according
to the schema:
Parameters to enter
Name Located In Required Schema Notes

offset query no integer Number of items to be


skipped from the beginning
of the selection.

limit query no integer Number of items to return


(default – 20).
sortBy query no string (32) Sorting key. Allowed values
are:

“brandId”,

“roundId”,

“playerCode”,

“gameCode”,

“currencyCode”,

“ts”,

“105venti”,

“finished”,

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 105 of 145
Proprietary and Confidential

“bet”,

“win”,

“revenue”,

“isTest”
sortOrder query no string (4) Sorting order: ASC or DESC.
dateHour query yes string (32) This parameter shows the
date and time when the
contribution was made and it
is always required.
dateHour__gt query yes/no string (32) This parameter allows to
compare contribution’s
values of date and time (gt –
greater than).
dateHour__lt query yes/no string (32) This parameter allows to
compare contribution’s
values of date and time (lt –
less than).
dateHour__gte query yes/no string (32) This parameter allows to
compare contribution’s
values of date and time (gte
– greater than or equal).
dateHour__lte query yes/no string (32) This parameter allows to
compare contribution’s
values of date and time (lte –
less than or equal).
playerCode query no string (32) Player’s code of a player that
is fetched.
playerCode__in query no string (32) Player’s code to search for,
separated by commas.
gameCode query no string (32) Game’s code of a game that
is fetched.
gameCode__in query no string (64) Game’s code to search for,
separated by commas.
currency query no string (3) Player’s currency.
currency__in query no string (32) Currency to search for,
separated by commas.

Note: The option‘yes/no’ means that the operator needs to choose one of them.

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 [ [
{ {
dateHour: string (32), "dateHour": "2018-01-
playerCode: string (32), 03T17:00:00.000Z",
gameCode: string (32), "playerCode":
currency: string (3), "PL10032MOD01T2GROUP03",
jackpotId: string (32), "gameCode": "pt-allad-reel-
pool: string (255), jp",
seedAmount: number, "currency": "CNY",
progressiveAmount: number, "jackpotId": "OMQ-JP-TWO",
totalBetAmount: number, "pool": "Middle-amount",

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 106 of 145
Proprietary and Confidential

jpWinAmount: number, "seedAmount": 12.5,


jpCurrency: string (32), "progressiveAmount": 6.5,
seedAmountJpCurrency: number, "totalBetAmount": 6.5,
progressiveAmountJpCurrency: "jpWinAmount": 15146.6,
number, "jpCurrency": "EUR",
totalBetAmountJpCurrency: "seedAmountJpCurrency": 12.5,
number,
jpWinAmountJpCurrency: "progressiveAmountJpCurrency":
number, 6.5,
totalBetCount: integer, "totalBetAmountJpCurrency":
jpWinCount: integer, 6.5,
firstActivity: string (32), "jpWinAmountJpCurrency":
lastActivity: string (32), 15146.6,
seedWin: number, "totalBetCount": 120,
progressiveWin: number "jpWinCount": 2,
} "firstActivity": "2018-01-
] 03T17:10:01.020Z",
"lastActivity": "2018-01-
03T17:10:29.854Z",
"seedWin": 0,
"progressiveWin": 0
}
]

If any issues occur while getting the report, the System responds with the following
error codes:

HTTP Code Error Code Description


One of the parents is
62
400 suspended
101 Not a brand

10 Access Token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206
execute the operation
404 51 Could not find entity

3. Get Jackpot Contribution Logs


Request: GET api.reportapi.com/report/jackpot/contributions/logs HTTP/1.1
This method enables the user to return a list of jackpot contribution logs which are
sorted by trxDate.
In order to do this, the following information should be entered according to the
schema:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 107 of 145
Proprietary and Confidential

Parameters to enter
Name Located In Required Schema Notes

integer Number of items to be


skipped from the
offset query no
beginning of the
selection.
Number of items to
limit query no integer
return (default – 20).
Response’s format
format query no string | “csv”
(CSV).
This parameter allows to
compare contribution’s
trxDate_gt query yes string (32) values of trxDate (gt –
greater than).
This parameter allows to
compare contribution’s
trxDate_lt query yes string (32)
values of trxDate (lt –
less than).

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 [ [
{ {
gameCode: string (32), "gameCode": "pt-allad-reel-
gameId: string (32), jp",
roundId: string (32), "gameId": "pt-allad-reel-jp",
seedAmount: number, "roundId": "g6qQOB9X",
progressiveAmount: number, "seedAmount": 12.5,
currency: string (3), "progressiveAmount": 6.5,
currencyRate: number, "currency": "USD",
playerCode: string (32), "currencyRate": 0.92123,
insertedAt: string (32), "playerCode": test,
pool: string (255), "insertedAt": "2018-01-
betAmount: number, 03T17:00:00.000Z",
externalId: number "pool": "mega",
trxDate: string (32), "betAmount": 6.5,
jackpotId: string (32) "externalId": "123",
} "trxDate": "2018-01-
] 03T17:00:00.000Z",
"jackpotId": "FIRE-reel"
}
]

If any issues occur while returning the list of jackpot contribution logs, the System
responds with the following error codes:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 108 of 145
Proprietary and Confidential

HTTP Code Error Code Description


40 Validation error
One of the parents is
400 62
suspended
101 Not a brand

10 Access token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206
execute the operation

4. Get Jackpot Wins Logs


Request: GET api.reportapi.com/report/jackpot/contributions/wins HTTP/1.1
This method enables the user to return a list of jackpot wins logs which are sorted by
trxDate.
In order to do this, the following information should be entered according to the
schema:
Parameters to enter
Name Located In Required Schema Notes

integer Number of items to be


skipped from the
offset query no
beginning of the
selection.
Number of items to
limit query no integer
return (default – 20).
Response’s format
format query no string | “csv”
(CSV).
This parameter allows to
compare contribution’s
trxDate_gt query yes string (32)
values of trxDate (gt –
greater than).
This parameter allows to
compare contribution’s
trxDate_lt query yes string (32)
values of trxDate (lt –
less than).

The System responds to such requests according to the following schema:

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 109 of 145
Proprietary and Confidential

Response

Code Schema Example


200 [ [
{ {
gameCode: string (32), "gameCode": "pt-allad-reel-
gameId: string (32), jp",
roundId: string (32), "gameId": "pt-allad-reel-jp",
seedAmount: number, "roundId": "ni9Gav0",
progressiveAmount: number, "seedAmount": 12.5,
currency: string (3), "progressiveAmount": 6.5,
currencyRate: number, "currency": "USD",
playerCode: string (32), "currencyRate": 0.92123,
trxDate: string (32), "playerCode": "test",
jackpotId: string (32) "trxDate": "2018-01-
insertedAt: string (32), 03T17:00:00.000Z",
pool: string (255), "jackpotId": "FIRE-reel",
initialSeedAmount: 100, "pool": "mega",
externalId: number, "initialSeedAmount": 100,
eventId: number, "externalId":
totalSeedAmount: number, "enOQKQAJew8AAALDenOQKSmDW10",
totalProgressiveAmount: number, "eventID": 1,
winAmount: number, "totalSeedAmount": 12.5,
winAmountCurrency: number, "totalProgressiveAmount":
trxId: number 6.5,
} "winAmount": 6.5,
] "winAmountCurrency": 6.5,
"trxId": "123"
}
]

If any issues occur while returning the list of jackpot wins logs, the System responds
with the following error codes:

HTTP Code Error Code Description


40 Validation error
One of the parents is
400 62
suspended
101 Not a brand

10 Access token is missing

204 Access token error


401
205 Access token has expired

792 Access Session is expired

User doesn’t have permission to


403 206
execute the operation

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 110 of 145
Proprietary and Confidential

APPENDIX 4
Whitelist Solution
The Falcon System is using the Website’s Whitelisting to protect its content and
give the access to use it only for registered sites.
In order to be secured, Operator’s website has to use Falcon’s Website Whitelisting
Service, that will enable authorized sites to use Falcon System content. We achieve
that via setting a signed Site Cookie to a User’s client (browser). This process takes
place on an Operator’s website, when User enters it.
Falcon’s Website Whitelisting Service requires the operator to:
1) Provide the list of domains for Operator’s website and its mirrors
2) Add the JavaScript library to a page with the list of SW games, which is
provided by Skywind

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 111 of 145
Proprietary and Confidential

APPENDIX 5
CMA messages
This section describes the process of CMA (Competition & Markets Authority) bonus
message implementation. Messages are displayed to the player in the response of
money transactions. Messages can either be intrusive (blocking gameplay until the
action is taken) or non-intrusive (not blocking gameplay and other functionality). This
with a boolean type parameter nonIntrusive.

In order to do this, the following information should be entered according to the


schema:
Parameters to enter

Name Required Type Notes

Message type. Currently, can be


msgType yes string (64)
‘message’ only.
Message to present to player.
Can be both plain string or HTML
message yes string
code. Message must be
localized.
If specified and true, message
nonIntrusive no boolean can be shown in a non-intrusive
fashion. False by default.
Optional title string to use for
popup when presenting CMA
title no string message to player. If not
specified, default title is used. If
present, must be localized.

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 { {
error_code: string (32), "error_code": 0,
balance: number, "balance": 1295.43,
currency_code: string (3), "currency_code": "EUR",
messages: [ "messages": [
{ {
msgType: string (64), "msgType": "message",
message: string, "message": "You are now
nonIntrusive: boolean, starting to use your bonus
title: string funds",
}, "nonIntrusive": false,
{ "title": "Bonus message"
msgType: string (64), },
message: string, {
nonIntrusive: boolean, "msgType": "message",
title: string "message":
} ] "<p>Congratulations</p><p><b>You
} have reached your bonus wagering
threshold.</b></p><p>Your bonus
Copyright © 2022 Skywind Holdings Ltd.
All Rights Reserved 112 of 145
Proprietary and Confidential

funds are added to your main


balance</p>",
"nonIntrusive": true,
"title": "Bonus message"
}
]
}

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 113 of 145
Proprietary and Confidential

APPENDIX 6
Getting Critical Files from Games and Platform

This section describes the process reporting critical files (of platform/games) as a part
of the Italian regulation requirements. There is a set of methods which allows to
regenerate and get the list of critical files and their hashtags.

Note: Appendix 6 is used only by Italian operators.

1. Get List of Critical Files and their Hashes from Games

Request: POST api.criticalfilesapi.com/critical-files/games/info HTTP/1.1


This method enables the user to get the list of critical files and their hashes from the
game.
In order to do this, the following information should be entered according to the
schema:
Parameters to enter

Name Required Type Notes

Currently only italian is


regulation yes string (16)
possible.

games yes Array [string (32)] Array of game codes to get


list for. Leave array empty to
get list for all available
games.

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 { {
games: [ "games": [
{
{ "code": "sw_mrmnky",
code: string (64), "list": [
list: Array [string] {
}
] "lib/src/skywind/criticalFile1.js":
} "1F1AE2BE9DD2E98D63E"
},
{

"lib/src/skywind/criticalFile2.js":
"51B4EAC98AF84251C4E"
}
]

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 114 of 145
Proprietary and Confidential

}
]
}

If any issues occur while getting the list of critical files, the System responds with the
following error codes:

HTTP Code Error Code Description


400 40 Validation error

2. Get List of Critical Files and their Hashes from the


Platform

Request: POST api.criticalfilesapi.com/critical-files/platform/info HTTP/1.1


This method enables the user to get the list of critical files and their hashes from the
platform.
In order to do this, the following information should be entered according to the
schema:
Parameters to enter

Name Required Type Notes

Currently only italian is


regulation yes string (16)
possible.

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 { {
modules: [ "modules": [
{ {
name: string (64), "name": " module-name ",
list: Array [string] "list": [
} {
] "lib/src/skywind/criticalFile1.js":
} "1F1AE2BE9DD2E98D63E"
},
{
"lib/src/skywind/criticalFile2.js":
"51B4EAC98AF84251C4E"
}
]
}
]
}

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 115 of 145
Proprietary and Confidential

If any issues occur while getting the list of critical files, the System responds with the
following error codes:

HTTP Code Error Code Description


400 40 Validation error

3. Get List of Critical Files and Their Hashes from Games


for the Entity

Request: POST api.criticalfilesapi.com /entities/{path}/critical-files/games/info


HTTP/1.1
This method enables the user to get the list of critical files and their hashes from the
game for a specific entity.
In order to do this, the following information should be entered according to the
schema:
Parameters to enter

Name Required Type Notes

Currently only italian is


regulation yes string (16)
possible.

Business entity path that is


fetched from the business
path yes string (128)
structure and it is unique for
each entity.

games yes Array [string (32)] Array of game codes to get


list for. Leave array empty to
get list for all available
games.

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 { {
games: [ "games": [
{
{ "code": "sw_mrmnky",
code: string (64), "list": [
list: Array [string] {
}
] "lib/src/skywind/criticalFile1.js":
} "1F1AE2BE9DD2E98D63E"
},
{

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 116 of 145
Proprietary and Confidential

"lib/src/skywind/criticalFile2.js":
"51B4EAC98AF84251C4E"
}
]
}
]
}

If any issues occur while getting the list of critical files, the System responds with the
following error codes:

HTTP Code Error Code Description


400 40 Validation error

4. Get List of Critical Files and Their Hashes from the


Platform for the Entity

Request: POST api.criticalfilesapi.com /entities/{path}/critical-files/platform/info


HTTP/1.1
This method enables the user to get the list of critical files and their hashes from the
platform for a specific entity.
In order to do this, the following information should be entered according to the
schema:
Parameters to enter

Name Required Type Notes

Currently only italian is


regulation yes string (16)
possible.

Business entity path that is


fetched from the business
path yes string (128)
structure and it is unique
for each entity.

The System responds to such requests according to the following schema:


Response

Code Schema Example


200 { {
modules: [ " modules ": [
{ {
name: string (64), "name": " module-name ",
list: Array [string] "list": [
} {
] "lib/src/skywind/criticalFile1.js":
} "1F1AE2BE9DD2E98D63E"
},

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 117 of 145
Proprietary and Confidential

{
"lib/src/skywind/criticalFile2.js":
"51B4EAC98AF84251C4E"
}
]
}
]
}

If any issues occur while getting the list of critical files, the System responds with the
following error codes:

HTTP Code Error Code Description


400 40 Validation error

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 118 of 145
Proprietary and Confidential

APPENDIX 7
Retry Policy
Note: 'error code’ below stands for error_code field in response from operator’s
system (wallet)
Skywind seamless service employs a retry mechanism for the failed Credit and
Rollback requests sent from Skywind's wallet adapter to operator wallet.
▪ There are two requests that we retry in case of failure - /credit and /rollback
▪ We configure a sleep time between retries of failed requests, and configure
the 'overall allowed time for request' = initial (first) request time + time of
all retries
▪ Retry is made only if outcome of request is unclear: -1 error code from
operator’s wallet, unknown error code from operator or 5xx response
code/request timeout (note, that request timeout value is usually bigger
than 'overall allowed time for request', so after timeout there will be probably no
retry)
▪ Sleep time is doubled after each request failure
▪ In the case of retry failure, we will store a 'broken' payment on our side and
return an error back to the game (the player will see a popup with an error
message). Upon refreshing a game window or opening it in a new window, a new
attempt to conduct 'broken' payment will be made, and retry logic will be applied
again to a request that we send to operator.

Example
Below is the example of the flow with the following configurations:
• sleep time = 0.5 sec
• overall allowed time for request = 10 sec

1. We make the first /credit request to operator which returns -1 error code in 1
sec
2. We wait 0.5 sec and then make a new attempt to send a credit request that fails
with -1 error code in 2.5 sec. Overall request time now is 1 sec + 0.5 sec +
2.5 sec = 4 sec
3. We double sleep time (now 1 sec) and wait until it passes. New credit request
fails 3.5 secs after. Overall request time now is 4 sec + 1 sec + 3.5 sec =
8.5 sec
4. We double sleep time (now 2 sec) and see that 8.5 sec + 2 sec of sleep time will
exceed the ‘overall allowed time for request’ value of 10 sec. So we wait for
another 1.5 sec = 10 sec ('overall timeout') - 8.5 sec (current overall request
time) and make the last retry attempt.
5. Last credit request fails, we return an error to the game and the 'broken' payment
is saved in Skywind system.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 119 of 145
Proprietary and Confidential

6. The player sees an error popup and refreshes the game.


7. The game reloads, finds the 'broken' payment and attempts to conduct it – the
'retry' logic is applied again in this case.

Note 1: According to our policy, we do not cancel Credit and Rollback transactions,
but enforce player to refresh/restart game in order to make a new attempt to
conduct the broken payment.

Note 2: As we expect idempotency for all our transactions, meaning multiple


identical transaction requests must not multiply the result, we require that in the
case of receiving a duplicate transaction from us, you will respond with
error_code=1 (as stated in Error Responses section) and additionally put balance
into your response as if you were sending a response to the original request.

There are also Payment (Offline) Retransmissions and Finalization mechanisms that
can be configured in Skywind system for operators to help resolve broken payments
and close open rounds while the player is offline. For 'Offline Payments' the same
Retry logic will be applied to the requests that Skywind sends to the Operator's
wallet service.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 120 of 145
Proprietary and Confidential

APPENDIX 8
Offline payments (Retransmissions)

Operator can ask Skywind to configure offline payment retransmission – a special


feature for retrying broken payments when a player is offline.

The operator can ask Skywind to configure the following parameters in the operator
settings in the Back Office:
• 'minPaymentRetryTimeout' – a minimum time period in minutes after
which the system treats the player as absent/offline.
• ‘maxPaymentRetryAttempts' – the maximum number of attempts that the
system will make to try to restore the interrupted game session.

The first retry attempt is made after minPaymentRetryTimeout is reached. If the


first attempt fails, another attempt is made in 2 minutes, then 4 minutes and so on
until maxPaymentRetryAttempts is reached.

In case all attempts have failed, the round is kept to be considered 'broken' and to
have 'pending' payment status. A new retransmission attempt will be made if the
player comes back to the game or if in Skywind Backoffice system Skywind Support
will trigger a manual 'Retry Broken Payment' operation.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 121 of 145
Proprietary and Confidential

Document Version History


Version Date Author Change Description

1.0 21.10.2016 Guy Balteriski Initial Document Created

1.1 17.11.2016 Guy Balteriski IPM changes.

1.2 13.06.2017 Svetlana The methods’ description was


Avlasenko, restructured.
Stepan
Shklyanko

1.3 28.06.2017 Svetlana Responses and its examples were


Avlasenko, updated.
Stepan
Shklyanko

1.4 07.07.2017 Karina Added the game_group field to the


Sidorenko following methods’ responses:
• POST api.playerapi.com /api/validate_ticket

• POST api.playerapi.com/api/get_player

1.5 12.07.2017 Karina Added 0 and 1 Error description


Sidorenko Added the actual_bet_amount field
to the following method’s request:
• PUT api.playerapi.com/api/credit

1.6 13.07.2017 Svetlana Updated the following request and


Avlasenko examples:
• PUT on POST request in sections 2.2,
2.3, 2.4.
• platform=1 on platform=web
• string on string: “web” | “mobile”

1.7 31.07.2017 Svetlana Updated the field in Parameters


Avlasenko table:
• game_status yes on game_status no

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 122 of 145
Proprietary and Confidential

1.8 22.08.2017 Svetlana Added free_bet_coin and


Avlasenko free_bet_count fields to the
responses in Credit, Debit and
Rollback operations.

1.9 28.08.2017 George Kovrey Added section with Automated Tests


API

1.10 05.09.2017 Karina Added the actual_win_amount field


Sidorenko to the Transfer Out method’s
request
Added Lobby to the Game URL
Parameters

1.11 12.09.2017 Karina Added the Marketing Tools section


Sidorenko

1.12 13.09.2017 Karina Added the Free Bets flow in Seamless


Sidorenko Integration diagram

1.13 26.09.2017 Svetlana Updated the field with parameters for


Avlasenko response on Validate Ticket.
Added an error code with its
description.

1.14 04.10.2017 Svetlana Updated the fields with examples of


Avlasenko curl request.

1.15 05.10.2017 Svetlana Added the info that the methods


Avlasenko ‘transfer-in’ and ‘transfer-out’ use the
same account for all games.

1.16 09.10.2017 Svetlana Deleted the field ‘brand_id’ in


Avlasenko Parameters table for the chapter
2.1.1 Get Balance without Token.

1.17 12.10.2017 Svetlana Added error_code: number to all


Avlasenko methods.

1.18 16.10.2017 Svetlana Added “jp_win” to the chapters 2.3.0.


Alvasenko, Credit Customer, 2.3.1. Credit
Customer without Token, 2.3.2.
Stepan
Transfer out.
Shklyanko
“Customer Login Constraints” chapter
was deleted.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 123 of 145
Proprietary and Confidential

1.19 19.10.2017 Svetlana Added game_code: string to the


Avlasenko parameters’ table for game_balance
request.
1.20 27.10.2017 Svetlana Added IP definition to the Game URL
Avlasenko Parameters.

1.21 30.10.2017 Karina Added jp_win parameter to 2.3.0.


Sidorenko Credit Customer and 2.3.1. Credit
Customer without Token
1.22 04.11.2017 Svetlana Added APPENDIX 2 Game API
Avlasenko methods – Get List of Games and Get
Game Info.
1.23 09.11.2017 Svetlana Parameters’ tables for 2.2. Debit
Avlasenko Operations and 2.3. Credit Operations
were updated.
Added examples of limits to the
methods in APPENDIX 2.
1.24 21.11.2017 Svetlana Added length for parameters’ string
Avlasenko, to the following methods:
1.04. Validate Ticket, 2.1.0. Get
Stepan
Shklyanko Balance, 2.1.1. Get Balance
without token, 2.2.0. Debit
customer, 2.2.1. Transfer in,
2.3.0. Credit Customer, 2.3.1.
Credit Customer without
Token, 2.3.2. Transfer out,
2.4.0. Rollback Customer’s Bet
Transaction, 2.4.1. Rollback
without Token, 2.4.2. Get
Balance (Rollback Bet
Operations), 2.5. Get Player’s
Information, 3.0.0. Get Free
Bets, 3.0.1. Debit Customer
with Free Bets, 3.0.2. Credit
Customer with Free Bets, 5.
Game URL Parameters, 6.1.
Get Ticket, APPENDIX 2 (1. Get
List of Games, 2. Get Game
Info) parameters’ sections.

Added parameters’ descriptions to


APPENDIX 2 Game API chapter in the
fields Notes.
1.25 08.12.2017 Svetlana Added jpCurrency parameter for
Avlasenko APPENDIX 2 in 1. Get List of Games
and 2. 2. Get Game Info methods.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 124 of 145
Proprietary and Confidential

1.26 09.12.2017 Svetlana Added 7. Downloadable Lobby


Avlasenko chapter and its methods:
7.1. User Login;
7.2. Refresh Access Token
1.27 11.12.2017 Svetlana Added 7. Downloadable Lobby
Avlasenko section and its methods 7.1. User
Login, 7.2. Refresh Access Token.

Added description for


${api.terminalapi.com} in 1.1.
Descriptions chapter.

1.28 17.12.2017 Svetlana Terminal API: ${api.terminalapi.com}


Avlasenko was changed to Lobby API:
${api.lobbyapi.com}.

1.28.1 19.12.2017 Svetlana Syntactic error was corrected.


Avlasenko

1.29 11.01.2018 Svetlana Added APPENDIX 4 Jackpot


Avlasenko Contribution Report.

1.30 26.01.2018 Svetlana The chapter 7. Downloadable Lobby


Avlasenko was eliminated.

1.31 12.02.2018 Svetlana Added parameter left_amount in


Avlasenko 2.3.2. Transfer out chapter.

1.32 16.02.2018 Svetlana Added 5. Get Player Game URL and


Avlasenko 6. Get Game URL chapters.

1.33 20.02.2018 Svetlana Added string variants to choose for


Avlasenko game_status parameter: “settled”,
“freegame”, “bonusgame”.

1.34 28.02.2018 Svetlana Added ‘Report API’ methods:


Avlasenko 7. Get Game History,
8. Get Currency Report,
9. Get Player Report.
1.35 01.03.2018 Svetlana Added the description for Report API.
Avlasenko Updated the example in the method
7. Get Game History.
Fixed requests and examples of curl
throughout the whole document.
Updated the structure of the
document.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 125 of 145
Proprietary and Confidential

1.36 02.03.2018 Svetlana Added parameter dateHour with its


Avlasenko description to the methods in
APPENDIX 3 1. Get Jackpot
Contribution Report and 2. Get
Players’ Jackpot Contribution Report.
Changed Jackpot Report URL:
from
api.operatorapi.com/report/jackpot/
to api.reportapi.com/report/jackpot/
1.37 06.03.2018 Svetlana Updated the chapter 3. Marketing
Avlasenko Tools with the information about
Free Bets.
1.38 07.03.2018 Svetlana Added the chapter 3.1. Simple Free
Avlasenko Bets in BO.

1.39 14.03.2018 Svetlana Changed Global Management System


Avlasenko to Falcon Integration System.

1.40 20.03.2018 Svetlana Added 9. Get List of Countries, 10.


Avlasenko Get List of Currencies, 11. Get List of
Languages methods.
1.41 21.03.2018 Svetlana Added API flow to the chapter 5.
Avlasenko Falcon API and the document was
restructured.
1.42 22.03.2018 Svetlana Added the error ‘-6 – Invalid Free Bet’
Avlasenko to the chapter 5. Error Responses

1.43 27.03.2018 Svetlana Updated Jackpot Contribution Reports


Avlasenko with jpCurrency in responses.

1.44 11.04.2018 Svetlana Added APPENDIX 4 ‘Whitelist


Avlasenko Solution’;
Edited a typo in the parameter
126irsts.

1.45 19.04.2018 Svetlana The whole document was updated.


Avlasenko

1.46 20.04.2018 Svetlana Added the methods Get Jackpot


Avlasenko Contribution Logs and Get Jackpot
Wins Logs to the APPENDIX 3
Jackpot Contribution Reports.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 126 of 145
Proprietary and Confidential

1.47 24.04.2018 Svetlana Added note about player’s code that


Avlasenko the length of it should be at least 6
symbols and may consist of
characters from a-z, A-Z, 0-9,
including the _ (underscore) and –
(dash).

1.48 02.05.2018 Svetlana Added roundId parameter to the


Avlasenko response for methods 3. Get Jackpot
Contribution Logs and 4. Get Jackpot
Wins Logs in APPENDIX 4.

1.49 14.05.2018 Svetlana Updated the response in 5.8. Get


Avlasenko Game History method.

1.50 12.06.2018 Svetlana Added 5.1. Multi Domain part.


Avlasenko Edited the request for the method
5.10. Get Currency Report
Updated the Whitelist Solution
chapter.

1.51 21.06.2018 Svetlana The following updates were added:


Avlasenko - Note for game_group parameter in
the method 2.0. Validate Ticket;
- ‘ts’, ‘dateHour’ parameters was
changed on required;
- Parameter ‘game_status’ was
changed on ‘settled’;
- Notes for the method 5.9. Get Game
History;
- In the method 2.2.0. Debit
Customer the note for ‘event_type’
was updated;
- Descriptionsfor ‘merch_id’ and
‘merch_pwd’ parameters were
adeded.
- Added the method 5.10. Get Game
Event Details Visualisation

1.52 26.06.2018 Svetlana Added the method 5.10. Get Game


Avlasenko History Round Details

1.53 04.07.2018 Svetlana Added ‘seedWin’ and


Avlasenko ‘progressiveWin’ fields to the
responses in methods ‘Get Jackpot

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 127 of 145
Proprietary and Confidential

Contribution Report’ and ‘Get Player’s


Jackpot Contribution Report’
1.54 10.07.2018 Svetlana Added ‘error_msg’ to the response
Avlasenko for the method 2.3.0. Credit
Customer;
Updated the description for the
parameter ‘timestamp’;
Added a new note to the methods
2.1.0. Get Balance, 2.2.0. Debit
Customer, 2.3.0. Credit Customer,
2.4.0. Rollback Customer’s Bet
Transaction, 2.4.1. Rollback without
Token
3.7.0 13.07.2018 Svetlana Added new errors to the section
Avlasenko ‘Errors Responses’

3.7.1 02.08.2018 Svetlana Updated the required field for ‘ts’,


Avlasenko ‘firstTs’ , ‘paymentDate’,
‘paymentDateHour’ to ‘yes/no’ in the
methods 5.9. Get Game History,
5.13. Get Player Report
3.7.2 02.08.2018 Svetlana ‘Marketing Tools’ section was
Avlasenko removed

3.9 07.08.2018 Svetlana Edited all the inconsistencies.


Avlasenko

3.10 01.10.2018 Svetlana Added ts__gte and ts__lte


Avlasenko parameters to the method 4.9. Get
Game History
3.10.1 08.10.2018 Svetlana Fixed the typos in the endpoints
Avlasenko {reportsApiURL}/v1/report/player,
{reportsApiURL}/v1/history. The ending
‘s’ has been added to the player
{reportsApiURL}/v1/report/players, and
the ‘game’ ending has been added to
{reportsApiURL}/v1/history/game.

4.1.5 04.12.2018 Svetlana Added the parameters: isGRCGame,


Avlasenko jackpotTypes, transferEnabled,
isBonusCoinsSupported,
isFreebetSupported to the method 4.
Get List of Games
Added the note about regulatory
errors to the section 3. Error
responses.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 128 of 145
Proprietary and Confidential

4.2.4 18.01.2019 Svetlana Added the following methods:


Avlasenko 4.9.0. Get Game History from 3rd
Party Game Providers;
4.10.0. Get Game History
Details from 3rd Party Game
Providers
4.5.0. Get Tickers for all Jackpots
4.2.4.1 29.01.2019 Svetlana Added the value “bonus_coin” to the
Avlasenko parameter event_type for the methods
2.3.0. Credit Customer, 2.3.1. Credit
Customer without Token
4.2.4.2 08.02.2019 Svetlana Removed ‘ts’ parameter from the
Avlasenko method 4.9.0. Get Game History
from 3 rd Party Game Providers
4.3 18.02.2019 Svetlana Added the following parameters:
Avlasenko totalJpWin and totalContribution to
the methods 4.9. Get Game History,
4.10. Get Game History Round
Details, 2.5. Resolve round
4.3.1.3 25.02.2019 Svetlana Updated the table with the -7‘Round
Avlasenko not found’ error message

4.3.1.3.1 01.03.2019 Svetlana Added notes about BNS redemption


Avlasenko to the 4.10. Get Game History Round
Details method
4.3.1.3.2 04.03.2019 Svetlana Added response schema and
Avlasenko example to the 2.5. Resolve Round
method
4.3.4. 14.03.2019 Svetlana Updated the method 4.5.0. Get
Avlasenko Tickers of All Jackpots

4.3.5. 18.03.2019 Svetlana Added the description to the 2.5.


Avlasenko Resolve Round method about ‘Revert’
and ‘Close’ types
4.4. 02.04.2019 Svetlana Added the methods 4.11. Attempts
Avlasenko to Finish a Problematic Round and
4.12. Attempts to Revert a
Problematic Round
Added the ‘roundId’ parameter to the
following methods:
2.2.0. Debit Customer
2.2.1. Transfer in
2.3.0. Credit Customer
2.3.2. Transfer out

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 129 of 145
Proprietary and Confidential

4.5.4 11.04.2019 Svetlana Added the ‘ip’ parameter to the


Avlasenko method 4.8. Get Game URL
Added the ‘providerSpecificData’
parameter to the method ‘Get Game
History from 3rd Party Game
Providers’
4.6.2 18.04.2019 Svetlana The parameter ‘roundId’ has been
Avlasenko changed on ‘round_id’ in the Debit,
Credit methods
4.8 22.05.2019 Viktoria Added the parameters ‘credit’ and
Bukhtarevich ‘debit’ to
the responses in the methods 4.9.
Get Game History, 4.10. Get Game
History Round Details
Added the link for Error Response
details to the method 2.5. Resolve
Round
Added the error_code to the 2.5.
Resolve Round response
Updated the description for the
‘resolve_method’ parameter in the
method 2.5. Resolve Round
Updated the event_type option
bonus_coins to bonus_coin
Added the description for the credit’
and ‘debit’in the method 4.9. Get
Game History
4.10.6 30.05.2019 Svetlana Added the parameter ‘sessionId’ to
Avlasenko the method 4.9. Get Game History

4.12 18.06.2019 Svetlana Removed the parameter ‘sessionId’


Avlasenko from the method 4.9. Get Game
History
Added ‘debits’, ‘credits’ to the
response of Player Report
Added ‘Recovery type’ parameter to
game history report
Fixed all the inconsistencies in error
messages.
Added and described the method
4.11. Get Game Spins History for the
Brand
Added ts__gt and ts__lt parameters
to the method 4.11. Get Game Spins
History for the Brand
Updated the method 2.7. Get Ticket

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 130 of 145
Proprietary and Confidential

Added a note about an object to the


Basic Definitions section
4.12.1 05.07.2019 Svetlana Added the ‘jp_ids’ parameter to the
Avlasenko methods 2.3.0. Credit Customer and
Stepan 2.3.1. Credit Customer without Token
Shklyanko
Added regulatory error codes to the
section 3. Error responses
4.18 02.08.2019 Svetlana The playerCode has been added to the
Avlasenko response in the 4.11. Get Game Spin
History for the Brand method
4.19 02.08.2019 Svetlana Added Appendix 5 which describes
Avlasenko CMA Messages
Added parameter ‘messages’ to the
Debit, Credit and Get Balance
methods
4.21 28.08.2019 Svetlana Added the parameter round_id to the
Avlasenko 2.3.1. Credit Customer without Token
method

Added the description of parameters


types to the 4.11. Get Game Spin
History for the Brand method

Added ‘rci’ and ‘rce’ parameters and


theit description to the 2.0. Validate
Ticket method
4.22 21.11.2019 Svetlana Added the parameter round_id to the
Avlasenko 2.5. Resolve Round method

Changed the description of the


round_id parameter

Added the parameter promo_id to


the 2.2.0. Debit Customer and 2.3.0.
Credit Customer methods

Updated the description of the


method 2.5. Resolve Round

Added the table with the description


of the filters to the 4.9. Game History
method

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 131 of 145
Proprietary and Confidential

Added the parameter ‘bonus’ to the


‘2.2.0 Debit Customer’ and ‘2.3.0
Credit Customer’ methods
4.27 27.12.2019 Svetlana Changed/added the description for
Avlasenko event_type and sub_trx_type
parameters in methods ‘2.2.0 Debit
customer’ and ‘2.3.0 Credit customer’

The ‘2.2.0 Debit customer’ and ‘2.3.0


Credit customer’ methods have been
updated with the ‘tournament’
parameter

For supporting the redeem operation


in BNS mode, in the method 2.3.0.
Credit Customer:

Changed the value of the ‘event_type’


field from ‘bonus_coin’ to ‘bonus’

Added the
field sub_trx_type: ‘bonus_coin’.
(Sub-type of the promotion,
extendable (other sub-types will be
added in the future). ‘bonus_coin’ is
the bonus coin redeem operation. It
is used when the player does the
Bonus Coins redeem.)
4.28 23.01.2020 Svetlana The ‘2.2.0 Debit customer’ and ‘2.3.0
Avlasenko Credit customer’ methods have been
updated with the ‘tournament’
parameter

Changed game_id, game_code and


cust_id parameters as mandatory in
debit, credit, rollback,
get_balance and resolve_round
requests

Added the Appendix 6 ‘Getting Critical


Files’ for Italian operators

Updated the description for error


code: -7
4.29 24.01.2020 Viktoria Updated the descriptions of ‘credit’
Bukhtarevich parameter in the methods ‘4.9. Get
Game History’ and ‘4.11. Get Game
Copyright © 2022 Skywind Holdings Ltd.
All Rights Reserved 132 of 145
Proprietary and Confidential

Spin History for the Brand’ and


‘credits’ parameter in the method
‘4.16. Get Player Report’
4.32 10.03.2020 Viktoria ‘Marketing Tools’ section added
Buhtarevich
Removed methods 2.1.1. Get Balance
without Token; 2.3.1. Credit
Customer without Token; 2.4.1.
Rollback without Token and 2.6. Get
Player’s Information

Added the error ‘792 – Access Session


is expired’ to the chapters
3.1.0. Create Player
3.1.1. Create Simplified Promotion for
Adding Free Bets
3.1.2. Apply Free Bet Promotion to the
Player
5.4. Refresh Access Token
5.5. Get List of Games
5.6. Get Game Info
5.7. Get Player’s Game URL
5.8. Get Game URL
5.9. Get Game History
5.10. Get Game History Round Details
5.11. Get Game Spin History for the
Brand
5.12. Attempts to Finish a Problematic
Round
5.13. Attempts to Revert a
Problematic Round
5.14. Get Game Event Details
Visualisation
5.15. Get Currency Report
5.16. Get Player Report
5.17. Get List of Countries
5.18. Get List of Currencies
5.19. Get List of Languages

Appendix 3
1. Get Jackpot Contribution Report
2. Get Players’ Jackpot Contribution
Report
3. Get Jackpot Contribution Logs
4. Get Jackpot Wins Logs

Added sub_trx_type parameter value


‘shared_jp_prize’ to the methods

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 133 of 145
Proprietary and Confidential

2.2.0. Debit Customer and 2.3.0.


Credit Customer
4.33 12.03.2020 Viktoria Removed ‘language’ parameter from
Buhtarevich the response in the method 2.0.
Validate Ticket

Added a note for terminal users to the


method 2.0. Validate Ticket

Marked round_id parameter as


required in the methods 2.2.0. Debit
Customer, 2.2.1. Transfer in, 2.3.0.
Credit Customer, 2.3.1. Transfer out,
2.5. Resolve Round.

Updated descriptions for game_code,


game_id and round_id parameters in
all methods where these parameters
are used

Updated the list of errors in the


method 5.8. Get Game URL
4.34 20.03.2020 Viktoria Removed the method 2.5. Resolve
Buhtarevich Round

4.38 04.06.2020 Viktoria Changed the accessToken parameter


Buhtarevich data type from string (1024) to
varchar in response in method 5.3.
User Login and in request in method
5.4. Refresh Access Token

Added the optional jp_contribution


parameter to method 2.2.0. Debit
Customer

Added information on the jackpotIds


parameter format in the request in
method 5.5.0. Get tickers of All
Jackpots

Fixed the API endpoint in method


3.1.1. Create Simplified Promotion for
Adding Free Bets
4.39 16.06.2020 Viktoria Removed the ‘type’ parameter from
Buhtarevich the request in method 5.7. Get
Player’s Game URL

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 134 of 145
Proprietary and Confidential

Removed the method 3.1.0. Create


Player Request: POST
api.operatorapi.com/players
HTTP/1.1

Removed duplicate methods from


3.0. Marketing Tools
4.40 24.06.2020 Viktoria Removed the method 5.13. Attempts
Buhtarevich to Revert a Problematic Round

Added the Responsible Gaming errors


list and the descriptions of General
errors in the 4. Error Responses
section

Added method 5.12. Get Game


History Round Details Visualisation
4.41 21.07.2020 Viktoria Updated description of error_code 1:
Buhtarevich Duplicate transaction in 4. Error
Responses
4.42 20.08.2020 Viktoria Removed the ‘info’ parameter from
Buhtarevich the response and renamed
‘additionalProp1’ to ‘jackpot-1_1’ and
‘additionalProp2’ to ‘jackpot-1_2’ in
the response example in the method
5.5.0. Get Tickers for All Jackpots

HTTP Error Codes and Error codes


columns removed in 4. Error
Responses
4.43 26.08.2020 Stepan Added the information about 2 ways
Shklyanko to set up and manage Free Bets – via
FIS and on the Operator’s side – to
3.0. Free Bets

Added a note that 3.0.0. Get Free Bets


method has to be implemented only if
Free Bets are set up and managed on
the Operator’s side.

Redundant information removed from


3.0.1. Debit Customer with Free Bets
and 3.0.2. Credit Customer with Free
Bets

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 135 of 145
Proprietary and Confidential

Updated the method description and


the request scheme in 3.0.3. Create
Simplified Promotion for Adding Free
Bets

Updated the method description in


3.0.4. Apply Free Bet Promotion to the
Player
4.45 09.10.2020 Viktoria Removed the optional sub_trx_type
Buhtarevich parameter from the methods Debit
Customer and Credit Customer

Removed possible event_type


parameter value “bonus” from the
methods Debit Customer and Credit
Customer

Added method 2.3.1. Bonus Payment


(Credit a Customer With a Bonus Win)

Added aamsSessionId and


aamsParticipationCode
parameters to 5.7. Get Player’s Game
URL

Renamed 5.8. Get Game URL to 5.8.


Get Fun Mode (Anonymous) Game
URL

Updated the description of possible


game_type parameter values in Debit
Customer, Credit Customer, Transfer
In and Transfer Out.

Updated the description of possible


game_status parameter values in
Credit Customer and Transfer Out

Updated the description of jp_win


parameter in Credit Customer

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 136 of 145
Proprietary and Confidential

4.46 27.10.2020 Viktoria Removed method 5.13. Attempts to


Buhtarevich Finish a Problematic Round

Added examples of images received in


responses in methods 5.12 Get Game
History Round Details Visualisation
and 5.13. Get Game Event Details
Visualisation

Added information about the required


error_msg field for the cases when
the error code ≠ 0 to 4.0 Error
Responses

Added information on the supported


API request and response formats to
1.1. Description

4.47 20.11.2020 Viktoria The parameter cust_session_id


Buhtarevich has been marked as required in the
method 2.4. Rollback Customer’s Bet
Transaction.

A note about the cases when the


automatic rollback request is sent for
new integrations has been added to
the method 2.2.0. Debit Customer

cust_id parameter has been added


and trx_id parameter description
has been updated in the method 2.3.1
Bonus Payment.

4.48 23.11.2020 Viktoria 3.1.0 Bonus Payment method has


Buhtarevich been moved to 3.0 Marketing Tools
section

4.49 09.12.2020 Viktoria Added information about the access


Buhtarevich token expiration time for the BO user
to Refresh Access Token.

4.50 15.12.2020 Viktoria A note about an alternative


Buhtarevich authentication with merch_pwd
parameter instead of hash has been
added to 3.1.0. Bonus Payment

Hash parameter has been marked as


optional in 3.1.0 Bonus Payment

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 137 of 145
Proprietary and Confidential

curl requests have been replaced


with JSON requests in all POST, PUT
and DELETE methods.

Added an optional merch_pwd


parameter to 3.1.0 Bonus Payment

4.51 29.12.2020 Viktoria Added a note to Credit Customer and


Buhtarevich Rollback (Refund) Customer’s Bet
Transaction about the use of the retry
flow in the case of an unsuccessful
request.

Rollback (Refund) Customer’s Bet


Transaction has been updated with
the description of the cases when this
request is sent.

Appendix 7 Retry Policy has been


added.

Appendix 8 Offline Payments


(Retransmissions) has been added.
4.52 25.01.2021 Viktoria trx_id parameter has been added to
Buhtarevich the response schema in 3.1.0. Bonus
Payment

4.54 18.03.2021 Viktoria Added method Player Logout


Buhtarevich
Added domains, JSON request
example and the description of the
response parameters in Get Jackpot
Tickers.
4.55 23.03.2021 Viktoria Added method Add Players to the
Buhtarevich Promotion

4.55.3 25.03.2021 Viktoria Added a new promo_type parameter


Buhtarevich value – prize_win to Bonus
Payment.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 138 of 145
Proprietary and Confidential

4.56 31.03.2021 Viktoria Removed information about the


Buhtarevich possibility to use Get Balance, Credit
and Rollback operations without
session_id

Updated ‘Ticket usage in Seamless


Integration’ diagram in Introduction.

Amount and event_type descriptions


have been fixed in Debit Customer
4.58 04.05.2021 Viktoria Added an optional
Buhtarevich jp_total_contribution parameter
to Transfer Out.

Added a note about how the rollback


method should work in case there are
multiple transactioons in a round to
Rollback (Refund) Customer’s Bet
Transaction.

Added a note about the error the


merchant must send in the case they
receive a duplicate transaction
request from Falcon to Transactions,
Debit Customer, Credit Customer,
Rollback (Refund) Customer’s Bet
Transaction and Retry Policy.

Updated the description of the


‘Duplicate Transaction’ error in Error
Responses.

Updated the error number the


merchant must send in the case the
calculated hash code and the hash
value from the request don’t match in
Bonus Payment

Updated the description of the


promo_type parameter and marked it
as optional in Bonus Payment.
4.59 11.05.2021 Viktoria Updated the description of
Buhtarevich ‘settled’ game_status parameter
value in Credit Customer and Transfer
Out.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 139 of 145
Proprietary and Confidential

Updated the description of the


trx_id parameter in Debit Customer,
Credit Customer, Transfer In and
Transfer Out.

Added a note on the returned


information in Get Player’s Game URL.

Added a description about the


difference between Free Bets and
Free Games to Free Bets.

Added the description of


totalFreebetWins response
parameter in Get Player Report.

Added information that the round_id


value is case sensitive to in Debit
Customer, Credit Customer, Transfer
In,Transfer Out and Player Logout.
4.60 02.06.2021 Viktoria Added an optional parameter
Buhtarevich actual_bet_count to the request in
Transfer Out.

Added an optional promo_pid


parameter to the methods Debit
Customer, Credit Customer and Bonus
Payment.
4.61 11.06.2021 Viktoria Renamed Create Simplified Promotion
Buhtarevich for Adding Free Bets to Create a Free
Bets Promotion.

Updated the endpoint, the method


and the request example in Create a
Free Bets Promotion.

Added a note about the externalId


value being sent in the promo_id
field if it was specified during the
creation of the Bonus Coins promotion
to Bonus Payment.
4.70 19.10.2021 Viktoria Removed the deprecated method
Buhtarevich Apply Free Bet Promotion to the
Player PUT
api.operatorapi.com/players/{playerC
ode}/freebet/{promoId} HTTP/1.1

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 140 of 145
Proprietary and Confidential

Added a new section Promotions with


the following methods:

- Create a Promotion
- Add Promo Rewards for Player
- Update a Promotion (Only for
Bonus Coins Promotions)
- Add Players to the Promotion
- Get Promotion by ID
- Get a List of Promotions
- Delete Player From the
Promotion
- Archive a Promotion.

Added a note that Free Bets


promotions can be set up in Unified
Back Office system.

Added a note about the format of


date/time parameters in Falcon API.

Added method Refresh Session


Token.

Added a note about the possibility to


implement Refresh Session Token
method by the merchants that
require unique tokens for different
games to Validate Ticket.

Added an optional request parameter


platform to Get Balance.
4.71 02.11.2021 Viktoria Updated response example and
Buhtarevich schema in Get Jackpot Tickers.

Removed all references to Bonus


Coins tool.

4.74 14.12.2021 Stepan Added chapter Round Finalization.


Shklyanko
Updated chapter Transfer Methods –
Viktoria
added information on the type of
Buhtarevich
games where these methods are
used.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 141 of 145
Proprietary and Confidential

4.75 11.01.2022 Yevheniia Updated Error Codes in User Login.


Liashenko

4.76 18.01.2022 Yevheniia Added an optional sm_result request


Liashenko parameter to Credit Customer and
Transfer Out per the Portuguese
regulation requirements.
4.77 01.02.2022 Yevheniia Updated request example and schema
Liashenko in Create a Promotion.

4.78 22.02.2022 Yevheniia Added a required operation_ts


Liashenko request parameter to Debit Customer,
Transfer in, Credit Customer, Transfer
out, Rollback (Refund) Customer`s
Bet Transaction, Debit Customer with
Free Bets and Credit Customer with
Free Bets.

Added requirements for Get Ticket


method implementation.
4.79 09.03.2022 Yevheniia Removed an optional info request
Liashenko parameter; added required amount,
optional expirationPeriod and
expirationPeriodType request
parameters in Add Promo Rewards for
Player.
4.80 22.03.2022 Yevheniia Added a note about /debit request
Liashenko and 0-bet in Offline Payment.

Added Example of JSON Request and


Response in Force-Finish.

4.81 05.04.2022 Yevheniia Added more detailed description of


Liashenko Refresh Session Token method.

Added a note about bet amount


sending, free_bet_coin value to
Example of JSON Request in Debit
Customer with Free Bets.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 142 of 145
Proprietary and Confidential

4.82 19.04.2022 Yevheniia Removed Transfer Methods, Transfer


Liashenko in, Transfer out parts and moved
them to the ‘Skywind Arcade
Games Transfer Methods’
document.

Transfer operations and action games


were marked as deprecated in the
Response note in Get Game History,
Get Game Spin History for the Brand
and Get Player Report.

Removed ‘Action games events’ types


of parameters in Get Game Spin
History for the Brand.

Added more detailed description for


the timestamp request parameter in
Debit Customer and Credit Customer.

Added a note about 5xx response in


Appendix 7.
4.84 18.05.2022 Yevheniia Updated a description for cust_id
Liashenko request parameter in Get Balance,
Debit Customer, Credit Customer,
Rollback (Refund) Customer’s Bet
Transaction, Get Free Bets and
Bonus Payment (Credit a Customer
with a Bonus Win).

Added a required round_id request


parameter in Rollback (Refund)
Customer’s Bet Transaction.

Updated endpoints in APPENDIX 2.


4.86 14.06.2022 Yevheniia Added more detailes about rci and
Liashenko rce response parameters to the
note in Validate Ticket.

Updated the note in Error Responses.

Updated the response schema and


example in Get List of Games.

Added an optional
addAggregatedFinalLimits and
currency request parameters;

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 143 of 145
Proprietary and Confidential

updated the response schema and


example in Get Game Info.

Added an optional
includeSubBrands request
parameter; added a note about
ts__gte and ts__lte request
parameters possible date range in
Get Currency Report.

Added a note about


paymentDateHour_gte and
paymentDateHour_lte request
parameters possible date range in
Get Player Report.

Added the Get Jackpots method.

Updated endpoints in APPENDIX 2.


4.87 28.06.2022 Yevheniia Added an optional
Liashenko distribution_type request
parameter in Debit Customer, Credit
Customer and Bonus Payment (Credit
a Customer with a Bonus Win).

Added a note about the optionality of


merch_pwd parameter in Bonus
Payment (Credit a Customer with a
Bonus Win).

Updated the introduction about HTTP


status 200 in Error Responses.
4.88 12.07.2022 Yevheniia Marked the ticket request
Liashenko parameter as required (except for
the fun mode) in Get Player’s Game
URL.

4.89 26.07.2022 Yevheniia Added a note that the amount


Liashenko request parameter can have an
integer value in Debit Customer,
Credit Customer and Bonus Payment
(Credit a Customer with a Bonus
Win).

Added a note about hash calculation


in Bonus Payment (Credit a Customer
with a Bonus Win).

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 144 of 145
Proprietary and Confidential

Added the Get Game History Round


Details SmResult method.

4.90 09.08.2022 Oleg Belkin Added an optional operation_ts


request parameter in Bonus Payment
(Credit a Customer with a Bonus
Win).
4.91 23.08.2022 Oleg Belkin Added new Responsible Gaming
errors in the 4. Error Responses
section.
4.92 07.09.2022 Oleg Belkin Bug fixes.

4.93 20.09.2022 Oleg Belkin Bug fixes.

Copyright © 2022 Skywind Holdings Ltd.


All Rights Reserved 145 of 145

You might also like