Professional Documents
Culture Documents
Skywind Seamless Integration Guide - EU v.4.93
Skywind Seamless Integration Guide - EU v.4.93
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.
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
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.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.
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.
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
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).
Example
{
"ticket": "aXc2!f",
"merch_id": "gcxMerch",
"merch_pwd": "merchPassword"
}
Response
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",
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.
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_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.
200 { {
error_code: 0, "error_code": 0,
new_cust_session_id: string "new_cust_session_id": "NewSessionId"
(64) }
}
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).
Example
{
"merch_id": "EB",
"cust_id": "1234",
"merch_pwd": "SoMEpassw",
"cust_session_id": "SoMeSeSsionId",
"game_code": "slot_game_1"
}
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)
}
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
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.
merch_id yes string (32) This parameter refers to the merchant’s ID (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.
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.
currency_code yes string (3) This parameter shows the kind of currency that
is used in the debit operation.
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.
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”.
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.
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.
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"
}
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)
}
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.
• 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.
merch_id yes string (32) This parameter refers to the merchant’s ID (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.
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.
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.
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.
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.
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.
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#"
}
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)
}
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.
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.
trx_id yes string (32) This is the original trx ID of the bet.
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
}
200 { {
error_code: number, "error_code": 0,
balance: number, "balance": 2055.15,
trx_id: string, "trx_id": "1345"
free_bet_count: number (optional) }
}
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.
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
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
}
200 { {
error_code: number "error_code": 0
} }
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
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.
"currency_code": "USD"
}
200 { {
ticket: string "ticket": "UQ2hd9awiohdbahiwddawd"
} }
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.
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.
Below is an approximate flow for Free Bets flow in FIS and Operator systems when
they are managed by the Operator.
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.
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
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
} }
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
}
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
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.
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.
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:
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.
timestamp yes BigInteger The date and time of the credit transaction.
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.
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:
200 { {
error_code: number, "error_code": 0,
error_msg: string, "balance": 2055.15,
balance: number, "trx_id": "1345"
trx_id: string }
}
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
-302 Bet Limit Was Exceeded The bet limit for this player session has
been exceeded. This error is the
extension of -3 error.
-5 Insufficient free bets Balance Returned when the number of free bets
for the player is 0.
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.
-1507 The bet amount you selected exceeds your loss limit for today
-1509 The bet amount you selected exceeds your loss limit for this week
-1511 The bet amount you selected exceeds your loss limit for this month
-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
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.
{
"name": "example"
}
{
"name": "example",
}
Pay attention, that Skywind system always returns data related to time and dates in
UTC time zone.
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.
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:
After the user logs in, they are given the following permissions:
• 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
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:
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:
If any issues occur while refreshing the login information, the System responds with
the following error codes:
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
If any issues occur while getting a list of games, the System responds with the
following error codes:
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.
Parameters to enter
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
Response parameters
Name Description
The type of the jackpot defining its properties such as the properties of the
jackpotType
pools within this jackpot.
If any issues occur while getting the jackpot info, the System responds with the
following error codes:
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
The System responds to the parameters entered according to the following schema:
Response
If any issues occur while getting the game info, the System responds with the following
error codes:
40 Validation error
One of the parents has been
400 62
suspended
101 Not a brand
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
The System responds to the parameters entered according to the following schema:
Response
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:
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
The System responds to the parameters entered according to the following schema:
Response
If any issues occur while retrieving the game URL, the System responds with the
following error codes:
“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.
The System responds to the parameters entered according to the following schema:
Response
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.
If any issues occur while retrieving the game history, the System responds with the
following error codes:
“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.
The System responds to the parameters entered according to the following schema:
Response
If any issues occur while getting external win/bet history, the System responds with
the following error codes:
If any issues occur while getting game round details, the System responds with the
following error codes:
The System responds to the parameters entered according to the following schema:
Response
If any issues occur while getting game round details, the System responds with the
following error codes:
11 Token is missed
13 Token is expired
“brandId”,
“roundId”,
“playerCode”,
“gameCode”,
“currencyCode”,
“firstTs”,
“finished”,
“bet”,
“win”,
“isTest”
sortOrder query no string | “ASC” or Sorting order: ASC or DESC.
“DESC”
• 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
‘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:
40 Validation error
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
The System responds to the parameters entered according to the following schema:
Response
If any issues occur while getting game round details, the System responds with the
following error codes:
Below is the example of the image available via the URL in the response:
If any issues occur while getting game round details, the System responds with the
following error codes:
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
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:
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.
If any issues occur while getting the report, the System responds with the following
error codes:
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
Located Notes
Name Required Schema
In
format query no string (8) Response’s format (CSV).
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.
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.
If any issues occur while getting the report, the System responds with the following
error codes:
If any issues occur while retrieving a list of countries, the System responds with the
following error codes:
If any issues occur while retrieving the list of currencies, the System responds with the
following error code
If any issues occur while getting the list of languages, the System responds with the
following error codes:
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:
Parameters to enter
Response
If any issues occur while returning the list of jackpots, the System responds with the
following error codes:
5.23. Promotions
All methods in this chapter can be used for managing Free Bets promotions.
This method can be used if the Operator decides to create and manage Free Bets via
FIS instead of their own system.
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
Info
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
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": [
{
"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:
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
The System responds to this type of requests according to the following schema:
Response
If any issues occur while getting the promotions, the System responds with the
following error codes:
40 Validation error
If any issues occur while updating the promotion, the System responds with the
following error codes:
The System responds to this type of requests according to the following schema:
Response
"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",
"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:
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
If any issues occur while getting the report, the System responds with the following
error codes:
Parameters to enter
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:
40 Validation error
Code Example
204 Successfully archived promotion
If any issues occur while archiving the promotion, the System responds with the
following error codes:
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:
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:
Example
{
… same fields as in 2.4.1 Debit customer
and 2.4.3. Credit Customer
"is_finalization_payment": true
}
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
{
"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
}
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)
}
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.
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
{
"merch_id": "EB",
"merch_pwd": "SomePassword",
"cust_id": "1234",
"round_id": "3YAo10j3",
"game_id": 17733709,
"event_type": "force-finish",
"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
}
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)
}
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.
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.
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.
“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.
Note: The option ‘yes/no’ means that the operator needs to choose one of them.
If any issues occur while getting the report, the System responds with the following
error codes:
“brandId”,
“roundId”,
“playerCode”,
“gameCode”,
“currencyCode”,
“ts”,
“105venti”,
“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.
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.
If any issues occur while getting the report, the System responds with the following
error codes:
Parameters to enter
Name Located In Required Schema Notes
If any issues occur while returning the list of jackpot contribution logs, the System
responds with the following error codes:
Response
If any issues occur while returning the list of jackpot wins logs, the System responds
with the following error codes:
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
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.
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.
"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:
If any issues occur while getting the list of critical files, the System responds with the
following error codes:
"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:
{
"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:
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.
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.
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.
APPENDIX 8
Offline payments (Retransmissions)
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.
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.
• POST api.playerapi.com/api/get_player
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
Appendix 3
1. Get Jackpot Contribution Report
2. Get Players’ Jackpot Contribution
Report
3. Get Jackpot Contribution Logs
4. Get Jackpot Wins Logs
- 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 an optional
addAggregatedFinalLimits and
currency request parameters;
Added an optional
includeSubBrands request
parameter; added a note about
ts__gte and ts__lte request
parameters possible date range in
Get Currency Report.