0% found this document useful (0 votes)
20 views79 pages

API Integration Specification Guide

Uploaded by

kundaniguru
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views79 pages

API Integration Specification Guide

Uploaded by

kundaniguru
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

API Integration Specification

Table of Contents

Table of Contents.........................................................................................................................2
Version Control............................................................................................................................ 4
1. API Overview............................................................................................................................6
1.1 Seamless Wallet API......................................................................................................... 6
1.2 Fund Transfer API..............................................................................................................6
1.3 Integration API................................................................................................................... 7
1.3.1 Free Round Feature Integration API.........................................................................7
1.4 Player ID............................................................................................................................ 8
1.5 Game Session................................................................................................................... 8
1.5.1 Bet and Game Result................................................................................................8
1.5.2 Transaction IDs......................................................................................................... 8
2. Integration API......................................................................................................................... 9
2.1 API Documentation..........................................................................................................10
2.1.1 POST GetGameList................................................................................................ 10
2.1.2 POST GameLogin...................................................................................................11
2.1.3 POST GetTransactionDetails..................................................................................13
2.1.4 POST GetDaySummary..........................................................................................14
2.1.5 POST KickPlayer.................................................................................................... 16
2.1.6 POST GetUnfinishRound........................................................................................17
2.1.7 POST CancelRound............................................................................................... 19
2.1.8 POST GetRoundDetails..........................................................................................20
2.2 Demo Launch Game........................................................................................................22
2.2.1 GetGameList and GameLogin method................................................................... 22
2.2.2 GET GameList........................................................................................................ 22
2.2.3 GET LaunchGame.................................................................................................. 23
2.3 Free Round Feature Integration API................................................................................23
2.3.1 POST CreateFreeRound........................................................................................ 23
2.3.2 POST CancelFreeRound........................................................................................ 25
2.3.3 POST GetFreeRoundInfoByPlayer......................................................................... 26
2.3.4 POST GetFreeRoundGames..................................................................................28
2.3.5 POST GetFreeRoundDetails.................................................................................. 30
3. Seamless Wallet Integration API.......................................................................................... 33
3.1 Game Opening Method................................................................................................... 33
3.2 API Documentation..........................................................................................................34
3.2.1 POST GetBalance.................................................................................................. 34
3.2.2 POST Bet................................................................................................................35
3.2.3 POST GameResult................................................................................................. 37
3.2.4 POST Rollback....................................................................................................... 39
3.2.5 POST CashBonus...................................................................................................41
3.2.7 POST BuyIn............................................................................................................ 43
3.2.8 POST BuyOut......................................................................................................... 45
3.2.9 POST UpdateGameResult......................................................................................47
3.3 Flow of placing bets for seamless....................................................................................50
4. Fund Transfer Wallet Integration API...................................................................................51
4.1 Game Opening Method................................................................................................... 51
4.2 API Documentation..........................................................................................................52
4.2.1 POST CreatePlayer................................................................................................ 52
4.2.2 POST CheckBalance.............................................................................................. 53
4.2.3 POST Deposit......................................................................................................... 54
4.2.4 POST Withdraw...................................................................................................... 55
4.2.5 POST PullLog......................................................................................................... 57
4.2.6 POST FlagLog........................................................................................................ 59
4.2.7 POST PullLogByTimestamp................................................................................... 60
4.3 Transaction Log Pulling Mechanism................................................................................ 64
4.4 Log Pulling by Timestamp Mechanism............................................................................ 65
5. Reconciliation........................................................................................................................ 67
5.1 Bet Transaction................................................................................................................67
5.2 Rollback Transaction....................................................................................................... 67
5.3 Game Result Transaction................................................................................................ 67
5.4 Bonus Transaction........................................................................................................... 67
6. MD5 Hashing.......................................................................................................................... 69
6.1 For C#..............................................................................................................................69
6.2 For Javascript.................................................................................................................. 70
6.3 For PHP........................................................................................................................... 70
6.4 For Python....................................................................................................................... 70
6.5 For Bash.......................................................................................................................... 71
6.6 For Ruby.......................................................................................................................... 71
6.7 For Java...........................................................................................................................72
6.8 For Swift...........................................................................................................................73
6.9 For Kotlin......................................................................................................................... 73
7. Appendix................................................................................................................................ 75
7.1 Supported Language Code..............................................................................................75
7.2 Supported Currency Code............................................................................................... 76
7.3 Status / Error Code.......................................................................................................... 77
7.3.1 Status Code from Provider......................................................................................77
7.3.2 Status Code from Operator.....................................................................................78
7.4 Game Type (Game Category)......................................................................................... 78
7.5 Game Result Type........................................................................................................... 78
7.6 Rollback Type.................................................................................................................. 79
Version Control
Version Description Modified by Date

V1.0 -First Release Jack 12 Jan 2023

V2.0 -Remove buyin, buyout, pushedresult operator API WL 28 Feb 2023


-GetGameList response format updated

V2.1 Update ReturnStatus code from Provider WL 14 Mar 2023

V2.2 -Add game login sequence diagram Jack 19 May 2023


-Add bet result sequence diagram

V2.3 -Add GetTransactionDetails Provider API WL 29 May 2023


-Return Duplicate Transaction Response Status code on Deposit
and Withdraw API

V2.4 -Update Supported Currency Code Jery 5 June 2023

V2.5 -Update md5 hashing detail implementation Jack 12 June 2023

V3.0 -Combine both seamless and fund transfer into 1 documentation Jack 21/08/2023
-Create section for 3 different purposes API (Generic, Seamless
and Fund Transfer)
-Add missing information about game session behaviour,
transaction id uniqueness, player id requirement, etc.
-Update auth token field in game login, and other seamless
callback request
-Add day summary API
-Add sequence diagram and details step for log pulling
mechanism
-Add reconciliation definition

V3.1 -Add demo games integration method 2.2 - Jack 05/09/2023


-Add environment ip address for whitelisting

V3.2 -Add Free Round Feature API - WL 07/09/2023

V3.2.1 -Update Free Round Feature API GetFreeRoundGames Response - WL 19/09/2023

V3.2.2 -Add 2.2.2 GET GameList, GET request to retrieve demo only All Wallet Jack 29/09/2023
gamelist
-Add 7.5 Game Result Type and 7.6 Rollback Type

V3.2.3 -CashBonusAPI tranId type change to String(25) Seamless Jack 06/10/2023

V3.3.1 -Add 2.1.5 POST KickPlayer API to kick player from game All Wallet Jack 16/10/2023
-Add 2.1.6 POST GetUnfinishedRound
-Add 2.1.7 POST CancelRound

V3.3.2 -Remove AuthToken request field on Seamless API (GameResult, Seamless WL 03/11/2023
Rollback, and CashBonus)

V3.3.3 -Add 2.1.8 GetRoundDetails All Wallet WL 17/11/2023

V3.3.4 -Modify 2.1.8 GetRoundDetails Response All Wallet WL 12/12/2023

V3.3.4 -Modify 2.1.8 GetRoundDetails Response All Wallet WL 12/12/2023

v3.3.5 -Modify 2.1.6 GetUnfinishRound Response All Wallet Kai Neng 18/12/2023
v3.3.6 -Add 4.2.7 PullLogByTimestamp Transfer Jack 09/01/2024
-Add 4.4 Log Pulling by Timestamp Mechanism

v3.3.7 -Modify 2.1.8 GetRoundDetails Response All Wallet KB 17/01/2024


-Modify 2.3.5 GetFreeRoundDetails Response
-Modify 3.2.2 Bet Response
-Modify 3.2.3 GameResult Response
-Modify 3.2.4 Rollback Response
-Modify 3.2.5 CashBonus Response
-Modify 3.2.7 BuyIn Response
-Modify 3.2.8 BuyOut Response
-Modify 3.2.3 UpdateGameResult Response
-Modify 4.2.5 PullLog Response
-Modify 4.2.7 PullLogByTimestamp Response

v3.3.8 -Add RoundType on 3.2.3 GameResult Request All Wallet WL 18/01/2024


-Add RoundType on 4.2.5 PullLog, 4.2.7 PullLogByTimestamp
Response
1. API Overview
1.1 Seamless Wallet API
Operator is expected to seamlessly integrate the Wallet Integration API into their platform. As a game
provider for online casinos, operators will be responsible for invoking the provided methods whenever
players place bets or achieve wins. This interaction with the API ensures that player balances are
accurately updated in accordance with their gaming activity.

Method / Endpoint / Description Status


Function

GetBalance This function facilitates the retrieval of a player's current balance. Required

Bet Checks if the player has enough funds and subtracts money from the player's Required
balance. Returns the value of updated balance.

GameResult Completion of a game round, the winning amount is added to the player's Required
balance, reflecting the conclusion of gameplay. The updated balance value is
returned.

Rollback In the event of a bet cancellation due to an unfinished game, this method Required
refunds the player's balance.

CashBonus Implemented in provider campaigns, tournaments, and cash drops, this method Required
informs the operator about a player's bonus winnings, leading to an increase in
the balance.
**REMARK: These APIs are exclusively intended for seamless wallet integration.

1.2 Fund Transfer API


The operator is empowered to leverage this API for facilitating fund transfers to players' balances within
the Game Provider's wallet ecosystem.

Method / Endpoint / Description Status


Function

CreatePlayer This method allows registering a new player on the provider system. Optional

-The functionality is now deemed optional, as the CheckBalance and


GameLogin methods will inherently generate a player profile within the
provider's system if one does not already exist.

CheckBalance This method can get the current balance of the player in the provider system. Required

Deposit This method transfers funds into the player's balance within the provider Required
system.

Withdraw This method transfers funds out of the player’s balance within the provider Required
system.

PullLog Using this method, the operator gains the capability to retrieve players betting Optional
logs for fund transfer wallets..

FlagLog Using this method, the operator gains the capability to flag retrieved records, Optional
This action serves to prevent return of identical sets of betting logs when
invoking the PullLog method.
**REMARK: These APIs are exclusively intended for fund transfer wallet integration.

1.3 Integration API


The Integration API provides a set of versatile methods that enable Operators to access the provider's
game list, initiate game launches, retrieve statistics, and perform other related actions.

Method / Endpoint / Description Status


Function

GetGameList Through this method, the operator gains the capability to retrieve a Optional
collection of accessible games from the provider's system.

GameLogin The operator invokes this method to obtain the game launch link. Required

GetTransactionDetails The operator employs this method to procure a report link presenting Optional
comprehensive transaction details by utilising the game result id.

GetDaySummary This method is designed to furnish a summarised overview of daily Optional


transactions, categorised by currency.

KickPlayer The operator invokes this method to temporary kick player from continuing Optional
playing the game

GetUnfinishRound The operator invokes this method to retrieve list of unfinished game rounds Optional
held by player

CancelRound This method is designed to allow operators to cancel a game round based Optional
on its round ID.

1.3.1 Free Round Feature Integration API


The Free Round Feature API is a marketing tool used by operators to offer players free gameplay
sessions. Operators create and manage these sessions to attract and retain players, customise
promotions, and monitor their impact on the platform. This feature helps boost player engagement and
loyalty.

Method / Endpoint / Description Status


Function

CreateFreeRound Operators may utilise this method to grant players complimentary rounds in Optional
a variety of games.

CancelFreeRound Method that enables operators to revoke or nullify a previously granted free Optional
round.

GetFreeRoundInfoByPlayer This method allows operators to access detailed information about player's Optional
free rounds, aiding in better player management and engagement.

GetFreeRoundGames Retrieve a list of game information that are eligible for free rounds. Optional

GetFreeRoundDetails Retrieve all transaction information for a specific free round. Optional
1.4 Player ID
Player ID (PlayerId parameter) is a unique identifier of the user within the operator system. Before
sending to the provider any gaming related request operator must create it first and store it somewhere
inside the operator system. If a player is new and its account does not exist in the provider system it will
be created automatically on the base of the data sent by the operator server in the (CreatePlayer,
GameLogin) request. If a player account already exists in the provider database it will be updated with the
request data if necessary. Player id received in the provider system will be sent with all subsequent
requests to the operator system.

The provider's system Player Id field has a character limit of 50. It's advised to avoid sending more
characters than the specified limit.

1.5 Game Session

1.5.1 Bet and Game Result


In the context of the bet and game result methods, each game round will encompass a solitary instance of
a bet, game result, or refund for the bet.

1.5.2 Transaction IDs


The Transaction ID, utilised in bets, game results and cash bonuses, maintains its uniqueness across the
entirety of the provider's gaming system.
2. Integration API
This collection comprises a set of versatile APIs that empower operators to execute actions within the
provider's system. These APIs operate as HTTPS listeners, monitoring incoming POST requests to
specific URLs, as delineated by the corresponding request mappings below.

All requests and responses are in JSON format

All request should contain header “Content-Type: application/json”


HTTP Methods : POST

Operator ID, secret key will be provided by provider for both production and test environments

The HTTPs service URL will be furnished by the provider for both production and test
environments. It takes the form of:

[Link] service domain>/api/opgateway/v1/op/<method>


or
[Link] service domain>/api/opgateway/v1/op/<path>/<method>
[Link] service domain>/api/opgateway/v1/op/<path>/<path>/<method>

The Integration HTTP Service is securely protected.

- Requests to the service should not be initiated from player browsers (end-users).
- IP addresses must be supplied to the provider for the purpose of whitelisting.
2.1 API Documentation

2.1.1 POST GetGameList


Request path: POST /GetGameList

Through this method, the operator gains the capability to retrieve a collection of accessible games from
the provider's system.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(200 MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey) Required


) (Please refer MD5 hashing function)

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745"
}

Response parameters
Name Type Description

Status Integer Status code

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Game Array Game object array (Object field please refer following table)

continue.. Response parameters (Object Game)


Name Type Description

GameCode String(50) Unique code of the game within the provider system

GameType Integer Game type


(Please refer Game Type)
GameName String(50) English game name / description

ImageUrl String(100 Indicates the URL from which the English version of the game image should be
) retrieved.

HasDemo Bool Indicates that this game is applicable for demo play

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Game": [
{
"GameCode": "10000",
"GameName": "Game name 001",
"GameType": 1,
"ImageUrl": "[Link]
"HasDemo": true
},
{
"GameCode": "10001",
"GameName": "Game name 002",
"GameType": 1,
"ImageUrl": "[Link]
"HasDemo": false
},

]
}

2.1.2 POST GameLogin


Request path: POST /GameLogin

The operator invokes this method to obtain the game launch link.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.
Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required
PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player’s Username from Operator (alphanumeric, normal symbol only & Required
no space allowed. (A-z, A-Z, 0-9, . _ $ - ?)

Ip String(50) Player Ip address, only support IPv4 Required

GameCode String(50) Unique Code of the game. Required

Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar Required
(Please refer Currency Code Table)

Lang String(5) Player language ISO code (Eg: en-us) Optional


(Please refer Language Code Table)

RedirectUrl String(100 Back Lobby button Redirect Url Optional


)

AuthToken String(500 The AuthToken serves to authenticate and validate a player's game Optional
) session. This token is added to callback requests made to the operator's
system, facilitating seamless execution on GetBalance, Bet and BuyIn
callback operations.

DisplayName String(50) (Deprecated) Player display name Optional

PlayerBalance Decimal (Deprecated) Player current balance Optional

LaunchDemo Bool Indicate this game login should return demo launch URL. Default will be Optional
false

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001",
"Ip": "[Link]",
"GameCode": "10001",
"Currency": "MYR",
"Lang": "en-us",
"RedirectUrl": "[Link]
"AuthToken":
"0rV2LzVUoLKCM3tbLvTkZW6ElA9jFkrhrm18ABouI27aG2gnEusTiMUfTLe0c1UxwWWBbkErK9qTKhCHxU
svCJUKjSywChcIz11Kx2vkdNwsdT1oU3PIUgZ8dyWQUQeiucw9E0odMvXpFYo3ub",
"LaunchDemo": false
}

Response parameters
Name Type Description
Status Integer Status code

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Url String(200 Game URL for player to launch the game


0)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Url": "[Link]
}

2.1.3 POST GetTransactionDetails


Request path: POST /GetTransactionDetails

The operator uses this method to obtain a report link that provides comprehensive transaction details by
utilising the game result id. Launching the URL in any supported browser will display the game's
transaction information.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey) Required


(Please refer MD5 hashing function)

TranId String(50) Transaction Id to view transaction details (ResultId, in GameResult, or Required


TranId in PullLog API)

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"TranId": "23250644"
}

Response parameters
Name Type Description

Status Integer Status code

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Url String(200 URL for open Transaction Details


0)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Url": "[Link]
}

2.1.4 POST GetDaySummary


Request path: POST /GetDaySummary

This method is designed to furnish a summarised overview of daily transactions, categorised by currency.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey) Required


(Please refer MD5 hashing function)

Date DateTime UTC DateTime Required


Example of JSON request
JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"Date": "2023-08-18T00:00:00Z"
}

Response parameters
Name Type Description

Status Integer Status code

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Trans Array Transaction object array (Object field please refer following table)

continue.. Response parameters (Object Trans)


Name Type Description

CurrencyCode String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

Turnover Decimal Turnover amount (Eg: 12345678.1234)

ValidTurnover Decimal Valid turnover amount (Eg: 12345678.1234)

Payout Decimal Payout amount (Eg: 12345678.1234)

WinLose Decimal Winlose amount (Payout - Turnover), can be negative value (-ve)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Trans": [
{
"CurrencyCode": "MYR",
"Turnover": 1.00,
"ValidTurnover": 1.00,
"Payout": 1.80,
"WinLose": 0.80
},
{
"CurrencyCode": "THB",
"Turnover": 1.00,
"ValidTurnover": 1.00,
"Payout": 1.80,
"WinLose": 0.80
},

]
}

2.1.5 POST KickPlayer


Request path: POST /KickPlayer

Operators can utilise the KickPlayer method to temporarily kick players from continuing to play the game.
Please note that players are still able to login and continue playing the game in the next session.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}

2.1.6 POST GetUnfinishRound


Request path: POST /GetUnfinishRound

Operators can utilise the GetUnfinishedRound method to retrieve a list of unfinished rounds held by
players. Unfinished rounds are determined by the absence of a generated result for the particular round.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Rounds Array List of unfinished rounds

continue.. Response parameters (Object Rounds)


Name Type Description

RoundId String(50) Unique id for the round

GameId String(30) Unique id for the game

GameName String(50) Unique name for the game

Turnover Decimal Turnover Amount (Eg: 12345678.1234)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Rounds": [
{
"RoundId": "100000000",
“GameId” : “10000”,
“GameName” : “GameName 000”,
“Turnover” : 1.00
},
{
"RoundId": "100000001",
“GameId” : “10001”,
“GameName” : “GameName 001”,
“Turnover” : 1.00
},
],
}

2.1.7 POST CancelRound


Request path: POST /CancelRound

Operators can use the CancelRound method to cancel rounds being held by players. Settled rounds
cannot be cancelled.

In the scenario where players may hold rounds to obtain maximum benefits from certain promotions,
operators may integrate these methods to retrieve a list of these held rounds and take necessary actions.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required

RoundId String(50) Unique id for the round Required

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001",
"RoundId": "100000001"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)


**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}

2.1.8 POST GetRoundDetails


Request path: POST /GetRoundDetails

Retrieve comprehensive information about a specific round. It provides detailed insights into various
aspects of a round, including the round has settled, has voided and the details of the round.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

RoundId Long Unique id for the round Required

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"RoundId": "100000001"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

HasSettle Boolean Indicate the round is fully settled

HasVoid Boolean Indicate the round is voided

RoundDetails Object RoundDetails object (Object field please refer following table)

continue.. Response parameters (Object RoundDetails)


Name Type Description

RoundId Long Unique id for the round

RoundTranDT String(50) DateTime for the round

ResultId Long Unique id for the result Noted: NULL if the round is unsettled or voided.

ResultTranDT String(50) DateTime for the result Noted: NULL if the round is unsettled or voided.

PlayerId String(50) PlayerId for the round

GameCode String(50) GameCode for the round

BetAmount Decimal Total BetAmount for the round

Payout Decimal Total Payout for the round Noted: NULL if the round is unsettled or voided.

ProviderTimeZone String Provider side Time Zone

ProviderRoundTran DateTime DateTime for the round based on ProviderTimeZone


DT

ProviderResultTran DateTime DateTime for the result based on ProviderTimeZone


DT

Example of JSON response


JSON

{
"HasSettle": true,
"HasVoid": false,
"RoundDetails": {
"RoundId": 109850647,
"RoundTranDT": "2023-11-17 04:07:20",
"ResultId": 109850648,
"ResultTranDT": "2023-11-17 04:07:20",
"PlayerId": "UUDemoGuest3",
"GameCode": "10014",
"BetAmount": -200,
"Payout": 0,
“ProviderTimeZone”: “Singapore Standard Time”,
“ProviderRoundTranDT”: "2023-11-17T12:07:20.000+08:00"
“ProviderResultTranDT”: "2023-11-17T12:07:20.000+08:00"
},
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2023-11-17 04:08:42"
}

2.2 Demo Launch Game


There are two Different Methods to Launch a Demo Game from the Provider System.

Each of these methods offers distinct advantages and may be chosen based on the operator's strategy,
target audience, and technical capabilities. The choice of method can impact user engagement and
accessibility, so it's important for operators to consider their specific goals when implementing demo
game launch options.

2.2.1 GetGameList and GameLogin method

By utilising the "HasDemo" Field in the 2.1.1 GetGameList Method, operators can determine whether to
display a demo hyperlink or button that redirects players to the demo game.

To initiate a demo game session, operators can utilise the "LaunchDemo" Boolean Field in the 2.1.2
GameLogin Field to specify that this game login is for a demo session. It will trigger an "Invalid Game"
error if the game does not have a demo version available.

2.2.2 GET GameList


Request path: GET /demo/GameList?opId={opid}&lang={lang}

Operators can construct URLs based on the format described above and use them to retrieve supported
gamelist for demo play

Query Strings parameters


Name Type Description Status

opId String(20) Operator Id Required

Lang String(5) Player language ISO code (Eg: en-us) Optional


(Please refer Language Code Table)

Response please refer to 2.1.1 POST GetGameList response parameters.


2.2.3 GET LaunchGame
Request path: GET
/demo/LaunchGame?opId={opid}&currency={currency}&gameCode={gameCode}&redirectUrl={redirectUrl
}&lang={lang}

Operators can construct URLs based on the format described above and use them to redirect players
directly to demo games.

Query Strings parameters


Name Type Description Status

opId String(20) Operator Id Required

Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar Required
(Please refer Currency Code Table)

GameCode String(50) Unique Code of the game. (Pass 0 will return LobbyURL instead or Required
GameURL)

RedirectUrl String(100 Back Lobby button Redirect Url Optional


)

Lang String(5) Player language ISO code (Eg: en-us) Optional


(Please refer Language Code Table)

2.3 Free Round Feature Integration API


The Free Round Feature API is a marketing tool used by operators to offer players free gameplay
sessions. Operators create and manage these sessions to attract and retain players, customise
promotions, and monitor their impact on the platform. This feature helps boost player engagement and
loyalty.

2.3.1 POST CreateFreeRound


Request path: POST /CreateFreeRound

Operators may utilise this method to grant players complimentary rounds in a variety of games.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)
PlayerId String(50) Player Id in operator system Required

GameCode String(50) Unique code of the game, it indicates which game the player will access Required

RoundType Integer Specifies the category or type of the round that is being created. Required

TotalRound Integer Specifies the total number of rounds that the player will receive as part of Required
the free round offer

BetValue Integer The value of a bet or wager associated with each round Required

LineBet Decimal The bet amount per line or payline Required

ReferenceId String Parameter that can be used to reference or link the free round creation Required
request to a specific transaction or event

MaxWinAmount Decimal Specifies the highest total winnings a player can achieve during their Free Required
Round session.

ExpiryInterval Integer Specifies the duration of time in days for which the Free Round session Optional
remains valid and accessible to the player. (Noted: When this parameter is
not provided in the API request, the system will typically apply a default
value as part of its settings)

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32",
"PlayerId": "Player001",
"GameCode": "10001",
"RoundType": 1,
"TotalRound": 10,
"BetValue": 1,
"LineBet": 0.1,
"ReferenceId": "test",
"MaxWinAmount": 100.00,
"ExpiryInterval": 1
}

Response parameters
Name Type Description

Status Integer Status code

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

FreeRoundId Long Identifier associated with the created free round, allowing the operator to reference and
manage it.

ExpiryTimeStamp Long Indicates the Unix timestamp when the free round will expire or become unavailable

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"FreeRoundId": 123,
"ExpiryTimeStamp": 1694023495
}

2.3.2 POST CancelFreeRound


Request path: POST /CancelFreeRound

Method that enables operators to revoke or nullify a previously granted free round.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required

FreeRoundId Long Identifier associated with the created free round, allowing the operator to Required
reference and manage it.

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32",
"PlayerId": "Player001",
"FreeRoundId": 123
}
Response parameters
Name Type Description

Status Integer Status code

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}

2.3.3 POST GetFreeRoundInfoByPlayer


Request path: POST /GetFreeRoundInfoByPlayer

This method allows operators to access detailed information about player's free rounds, aiding in better
player management and engagement.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32",
"PlayerId": "Player001"
}

Response parameters
Name Type Description

Status Integer Status code

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

FreeRoundInfos Array FreeRoundInfo object array (Object field please refer following table)

continue.. Response parameters (Object FreeRoundInfos)


Name Type Description

FreeRoundId Long Identifier associated with the created free round, allowing the operator to reference and
manage it.

GameCode String(50) Unique code of the game, it indicates which game the player will access

ExpiryTimeStamp Long Indicates the Unix timestamp when the free round will expire or become unavailable

RoundType Integer Specifies the category or type of the round that is being created.

BetValue Integer The value of a bet or wager associated with each round

LineBet Decimal The bet amount per line or payline

CurrentRound Integer Specifies the current round within the free round gameplay, It indicates how many
rounds have been played.

TotalRound Integer Specifies the total number of rounds that the player will receive as part of the free round
offer

TotalWin Decimal Represents the cumulative winnings amount by the player using this free round.

Status Integer Status of the free round.

Register = 0
OnGoing = 1
Completed = 2
Claimed = 3
Cancelled = 400
Expired = 500

Example of JSON response


JSON

{
"FreeRoundInfos": [
{
"FreeRoundId": 123,
"GameCode": "10001",
"ExpiryTimeStamp": 1694023495,
"RoundType": 1,
"BetValue": 1,
"LineBet": 0.1,
"CurrentRound": 0,
"TotalRound": 10,
"TotalWin": 0,
"Status": 0
}
],
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}

2.3.4 POST GetFreeRoundGames


Request path: POST /GetFreeRoundGames

Retrieve a list of game information that are eligible for free rounds.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey) Required


(Please refer MD5 hashing function)

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32"
}

Response parameters
Name Type Description

Status Integer Status code

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Games Array Game object array (Object field please refer following table)

continue.. Response parameters (Object Games)


Name Type Description

GameCode String(50) Unique code of the game

GameName String(50) Name of the game

TotalLine Integer Total line of the game

AvailableRoundType Array AvailableRoundType object array (Object field please refer following table)

AvailableBetValue Array of Integer Available bet values for the game

AvailableLineBet Array AvailableLineBet object array (Object field please refer following table)

continue.. Response parameters (Object AvailableRoundType)


Name Type Description

RoundType Integer Identifier for the round type

RoundTypeName String(50) Label for the round type, providing a description of what each type represents

continue.. Response parameters (Object AvailableLineBet)


Name Type Description

Currency String(50) Currency Code

LineBets Array of Decimal Available line bet for the currency

Example of JSON response


JSON

{
"Games": [
{
"GameCode": "10050",
"GameName": "Blessing of Tu",
"TotalLine": 40,
"AvailableRoundType": [
{
"RoundType": 1,
"RoundTypeName": "Normal"
}
],
"AvailableBetValue": [
1
],
"AvailableLineBet": [
{
"Currency": "MYR",
"LineBets": [
0.005,
0.01,
0.02,
0.03,
0.04,
0.05
]
}
]
}
],
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2023-09-19 12:27:17"
}

2.3.5 POST GetFreeRoundDetails


Request path: POST /GetFreeRoundDetails

Retrieve all transaction information for a specific free round.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required


FreeRoundId Long Free Round Id Required

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32",
"PlayerId": "Player001",
"FreeRoundId": 123
}

Response parameters
Name Type Description

Status Integer Status code

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Trans Array FreeRoundDetailsInfo object array (Object field please refer following table)

IsMaxWin Bool To indicate if the round has reached max win

MaxWinAmount Decimal Nullable, max win amount for this free round

continue.. Response parameters (Object FreeRoundDetailsInfo)


Name Type Description

TranDateTime DateTime Date time of the free round transaction

GameId Integer Game Id of the game played for this free round

GameName String Name of the game played for this free round

Turnover Decimal Turnover amount (Eg: 12345678.1234)

Payout Decimal Payout amount (Eg: 12345678.1234)

**Can be 0 (‘ZERO’) value if the round doesn’t generate payout

WinLose Decimal WinLose amount (ValidTurnover - Payout)

RoundType String Type of the Round played (Normal or Buy Free Spin)

TranId Long Transaction Id of the Free Round detail

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Date time of the free round transaction based on ProviderTimeZone
Example of JSON response
JSON

{
"Trans": [
{
"TranDateTime": "2023-09-19T14:25:59.4518465",
"GameId": 10050,
"GameName": “Game Name”,
"Turnover": 40,
"Payout": 0,
"WinLose": 40,
"RoundType": “Normal”,
"TranId": 1223,
"ProviderTimeZone":"Singapore Standard Time",
"ProviderTranDt":""2023-09-19T22:25:59.451+08:00"
}
],
"IsMaxWin": true,
"MaxWinAmount": 50,
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2023-09-30 09:41:37"
}
3. Seamless Wallet Integration API
This collection encompasses a suite of seamless APIs designed for the provider's gaming platform to
establish connections with players' wallets.

All requests and responses are in JSON format

All request will contain header “Content-Type: application/json”


HTTP Methods : POST

Operator ID, secret key will be provided by provider for both production and test environments

The HTTPs service URL should be provided by the Operator for the production and test
environments.

The Integration HTTP Service is securely protected.

- Service requests originate exclusively from provider servers via multiple proxied machines.
- IP addresses will be furnished for whitelisting purposes.

Please whitelist these IP for according to the specific environment to allow provider outbound API
request to reach operator’s system

UAT
-[Link]

PROD
-[Link]
-[Link]
-[Link]

3.1 Game Opening Method


The operator can obtain a valid game launch URL through the Integration API 2.2 GameLogin method.
This launch URL is applicable for opening the game in any supported web browser or webview.
3.2 API Documentation

3.2.1 POST GetBalance


Request path: POST /GetBalance

This function facilitates the retrieval of a player's current balance.

Request parameters
Name Type Description

OperatorId String(20) Operator Id

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + PlayerId)


(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system

Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

AuthToken String(500 The AuthToken serves to authenticate and validate a player's game session. This token
) is added when the operator initiates gamelogin with AuthToken.

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"AuthToken":
"0rV2LzVUoLKCM3tbLvTkZW6ElA9jFkrhrm18ABouI27aG2gnEusTiMUfTLe0c1UxwWWBbkErK9qTKhCHxU
svCJUKjSywChcIz11Kx2vkdNwsdT1oU3PIUgZ8dyWQUQeiucw9E0odMvXpFYo3ub"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer operator Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)


**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Balance Decimal Player’s available balance (eg: 1233.5000)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}

3.2.2 POST Bet


Request path: POST /Bet

Checks if the player has enough funds and subtracts money from the player's balance. Returns the value
of updated balance.

Important: The call is idempotent, i.e. sending a bet again with the same BetId only creates one transaction. Operator’s
system must not process the same transaction which has the same BetId twice.

Request parameters
Name Type Description

OperatorId String(20) Operator Id

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.

Signature String(50) MD5 (FunctionName + BetId + RequestDateTime + OperatorId + SecretKey + PlayerId)


(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system

Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

RoundId Long Unique round id of the game round, multiple players may share the same round id

BetId Long Unique bet transaction id of the game round on provider system

**Use this value to ensure transaction uniqueness

GameCode String(50) Unique Code of the game.

GameType String(50) Game Type in string. (Eg: Slots / Arcade)


(Please refer Game Type)

BetAmount Decimal Bet amount (Eg: 12345678.1234)

**Use this value to update player balance

ExchangeRate Decimal Exchange rate (Eg: 1.0000)

TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.

**This is the actual date and time when the bets were placed, verified within the
provider's game system.

AuthToken String(500 The AuthToken serves to authenticate and validate a player's game session. This token
) is added when the operator initiates gamelogin with AuthToken.

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Actual Transaction DateTime based on ProviderTimeZone

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"RoundId": 438664,
"BetId": 438665,
"BetAmount": 0.2000,
"ExchangeRate": 1.0000,
"GameCode": "10000",
"GameType": “Slots”,
"TranDateTime": "2014-09-30 14:16:32",
"AuthToken":
"0rV2LzVUoLKCM3tbLvTkZW6ElA9jFkrhrm18ABouI27aG2gnEusTiMUfTLe0c1UxwWWBbkErK9qTKhCHxU
svCJUKjSywChcIz11Kx2vkdNwsdT1oU3PIUgZ8dyWQUQeiucw9E0odMvXpFYo3ub",
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer operator Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)


**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

OldBalance Decimal Player’s balance before deduct bet amount (eg: 1233.5000)

NewBalance Decimal Player’s balance after deducted bet amount (eg: 1233.5000)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 98.0000
}

3.2.3 POST GameResult


Request path: POST /GameResult

Completion of a game round, the winning amount is added to the player's balance, reflecting the
conclusion of gameplay. The updated balance value is returned.

Important: The call is idempotent, i.e. sending the result again with the same ResultId creates only one
[Link]’s system must not process the same transaction which has the same ResultId twice.

Request parameters
Name Type Description

OperatorId String(20) Operator Id

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Signature String(50) MD5 (FunctionName + ResultId + RequestDateTime + OperatorId + SecretKey +


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system

Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

ResultId Long Unique result transaction id of the game round on provider system

**Use this value to ensure transaction uniqueness


**Apply this TranId in the 2.1.3 GetTransactionDetails method to access a
comprehensive view of the game's transaction details.
BetId Long Unique bet transaction id of the game round on provider system

RoundId Long Unique round id of the game round, multiple players may share the same round id

GameCode String(50) Unique Code of the game.

GameType String(50) Game Type in string. (Eg: Slots / Arcade)


(Please refer Game Type)

GameName String(50) English game name / description

ResultType Integer Game Result Type:


(Please refer Game Result Type)

BetAmount Decimal Bet amount (Eg: 12345678.1234)

ValidBetAmount Decimal Valid Bet amount (Eg: 12345678.1234)

Payout Decimal Payout (Eg: 12345678.1234)

**Can be 0 (‘ZERO’) value if the round doesn’t generate payout


**Use this value to update player balance

WinLose Decimal Winlose amount (Payout - Turnover)

**Can be negative value (-ve)

ExchangeRate Decimal Exchange rate (Eg: 1.0000)

TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.

**This is the actual date and time when the bets were placed, verified within the
provider's game system.

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Actual Transaction DateTime based on ProviderTimeZone

RoundType Integer Round Type:


(Please refer RoundType)

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"ResultId": 438666,
"BetId": 438665,
"RoundId": 438664,
"GameCode": "10000",
"GameType": “Slots”,
"GameName": "Game 001",
"ResultType": 0,
"BetAmount": 0.2000,
"ValidBetAmount": 0.2000,
"Payout": 0.0000,
"WinLose": -0.2000,
"ExchangeRate": 1.0000,
"TranDateTime": "2014-09-30 14:16:32",
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00",
"RoundType": 0
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer operator Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

OldBalance Decimal Player’s balance before add payout (eg: 1233.5000)

NewBalance Decimal Player’s balance after added payout (eg: 1233.5000)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 102.0000
}

3.2.4 POST Rollback


Request path: POST /Rollback

In the event of a bet cancellation due to an unfinished game, this method refunds the player's balance.

Important: The call is idempotent, i.e. sending the rollback again with the same BetId creates only one
[Link]’s system must not process the same rollback transaction which has the same BetId twice.
Request parameters
Name Type Description

OperatorId String(20) Operator Id

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.

Signature String(50) MD5 (FunctionName + BetId + RequestDateTime + OperatorId + SecretKey + PlayerId)


(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system

Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

RoundId Long Unique round id of the game round, multiple players may share the same round id

BetId Long Unique bet transaction id of the game round on provider system

**Use this value to ensure transaction uniqueness

GameCode String(50) Unique Code of the game.

GameType String(50) Game Type in string. (Eg: Slots / Arcade)


(Please refer Game Type)

BetAmount Decimal Bet amount (Eg: 12345678.1234)

**Use this value to update player balance

ExchangeRate Decimal Exchange rate (Eg: 1.0000)

TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.

**This is the actual date and time when the bets were placed, verified within the
provider's game system.

RollbackType Integer Rollback Type


(Please refer Rollback Type)

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Actual Transaction DateTime based on ProviderTimeZone

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"RoundId": 438664,
"BetId": 438665,
"BetAmount": 0.2000,
"ExchangeRate": 1.0000,
"GameCode": "10000",
"GameType": “Slots”,
"TranDateTime": "2014-09-30 14:16:32",
"RollbackType": 1,
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer operator Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

OldBalance Decimal Player’s balance before deduct bet amount (eg: 1233.5000)

NewBalance Decimal Player’s balance after deducted bet amount (eg: 1233.5000)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 98.0000
}

3.2.5 POST CashBonus


Request path: POST /CashBonus

Implemented in provider campaigns, tournaments, and cash drops, this method informs the operator
about a player's bonus winnings, leading to an increase in the balance.

Important: The call is idempotent, i.e. sending the bonus again with the same TranId creates only one
[Link]’s system must not process the same transaction which has the same TranId twice.
Request parameters
Name Type Description

OperatorId String(20) Operator Id

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.

Signature String(50) MD5 (FunctionName + TranId + RequestDateTime + OperatorId + SecretKey +


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system

Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

TranId String(25) Unique transaction id of the bonus on provider system

**Use this value to ensure transaction uniqueness

BonusId String(50) Unique bonus codes represent different bonus types.

BonusName String(50) Cash bonus Reward Name

Payout Decimal Payout amount (Eg: 12345678.1234)

**Use this value to update player balance

ExchangeRate Decimal Exchange rate (Eg: 1.0000)

TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.

**This is the actual date and time when the bets were placed, verified within the
provider's game system.

Result String(100 Cash bonus result in string


)

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Actual Transaction DateTime based on ProviderTimeZone

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"TranId": 438665,
"BonusId": "TNN2023",
"BonusName": “Tournament 2023”,
"Payout": 200.0000,
"ExchangeRate": 1.0000,
"TranDateTime": "2014-09-30 14:16:32",
"Result": “1st place”,
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer operator Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

OldBalance Decimal Player’s balance before add payout amount (eg: 1233.5000)

NewBalance Decimal Player’s balance after added payout amount (eg: 1233.5000)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 200.0000
}

3.2.7 POST BuyIn


Request path: POST /BuyIn

Checks if the player has enough funds and subtracts money from the player's balance. Returns the value
of updated balance.

Important: The call is idempotent, i.e. sending a bet again with the same BetId only creates one transaction. Operator’s
system must not process the same transaction which has the same BetId twice.

Request parameters
Name Type Description

OperatorId String(20) Operator Id

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.

Signature String(50) MD5 (FunctionName + SessionId + RequestDateTime + OperatorId + SecretKey +


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system

Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

SessionId Long Unique transaction id of the game round on provider system

**Use this value to ensure transaction uniqueness

GameCode String(50) Unique Code of the game.

Amount Decimal BuyIn amount (Eg: 12345678.1234)

**Use this value to update player balance

TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.

**This is the actual date and time when the bets were placed, verified within the
provider's game system.

AuthToken String(500 The AuthToken serves to authenticate and validate a player's game session. This token
) is added when the operator initiates gamelogin with AuthToken.

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Actual Transaction DateTime based on ProviderTimeZone

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"SessionId": 438665,
"GameCode": "10000",
"Amount": 0.2000,
"TranDateTime": "2014-09-30 14:16:32",
"AuthToken":
"0rV2LzVUoLKCM3tbLvTkZW6ElA9jFkrhrm18ABouI27aG2gnEusTiMUfTLe0c1UxwWWBbkErK9qTKhCHxU
svCJUKjSywChcIz11Kx2vkdNwsdT1oU3PIUgZ8dyWQUQeiucw9E0odMvXpFYo3ub",
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer operator Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

OldBalance Decimal Player’s balance before deduct bet amount (eg: 1233.5000)

NewBalance Decimal Player’s balance after deducted bet amount (eg: 1233.5000)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 98.0000
}

3.2.8 POST BuyOut


Request path: POST /Buyout

Completion of a game round, the winning amount is added to the player's balance, reflecting the
conclusion of gameplay. The updated balance value is returned.

Important: The call is idempotent, i.e. sending the result again with the same ResultId creates only one
[Link]’s system must not process the same transaction which has the same ResultId twice.

Request parameters
Name Type Description

OperatorId String(20) Operator Id


RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Signature String(50) MD5 (FunctionName + TranId + RequestDateTime + OperatorId + SecretKey + PlayerId)


(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system

Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

TranId Long Unique result transaction id of the game round on provider system

**Use this value to ensure transaction uniqueness

SessionId Long Unique transaction id of the game round on provider system

GameCode String(50) Unique Code of the game.

Payout Decimal Payout (Eg: 12345678.1234)

**Can be 0 (‘ZERO’) value if the round doesn’t generate payout


**Use this value to update player balance

TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.

**This is the actual date and time when the bets were placed, verified within the
provider's game system.

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Actual Transaction DateTime based on ProviderTimeZone

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"TranId": 438666,
"SessionId": 438665,
"GameCode": "10000",
"Payout": 0.2000,
"TranDateTime": "2014-09-30 14:16:32",
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}

Response parameters
Name Type Description
Status Integer Status code
(Please refer operator Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

OldBalance Decimal Player’s balance before add payout (eg: 1233.5000)

NewBalance Decimal Player’s balance after added payout (eg: 1233.5000)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 102.0000
}

3.2.9 POST UpdateGameResult


Request path: POST /UpdateGameResult

Completion of a game round, the bet details will be returned and won't affect the player's balance.

Important: The call is idempotent, i.e. sending the result again with the same ResultId creates only one
[Link]’s system must not process the same transaction which has the same ResultId twice.

Request parameters
Name Type Description

OperatorId String(20) Operator Id

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Signature String(50) MD5 (FunctionName + ResultId + RequestDateTime + OperatorId + SecretKey +


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system


Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar
(Please refer Currency Code Table)

ResultId Long Unique result transaction id of the game round on provider system

**Use this value to ensure transaction uniqueness


**Apply this TranId in the 2.1.3 GetTransactionDetails method to access a
comprehensive view of the game's transaction details.

SessionId Long Unique transaction id of the game round on provider system

GameCode String(50) Unique Code of the game.

TotalAmount Decimal Bet amount (Eg: 12345678.1234)

TotalPayout Decimal Payout (Eg: 12345678.1234)

**Can be 0 (‘ZERO’) value if the round doesn’t generate payout

TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.

**This is the actual date and time when the bets were placed, verified within the
provider's game system.

isRoundEnd Boolean False(Betid Round Ongoing), True(Betid Round Completed)

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Actual Transaction DateTime based on ProviderTimeZone

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"ResultId": 438666,
"SessionId": 438665,
"GameCode": "10000",
"TotalAmount": 0.2000,
"TotalPayout": 0.0000,
"TranDateTime": "2014-09-30 14:16:32",
"isRoundEnd": false,
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer operator Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}
3.3 Flow of placing bets for seamless
In the provider's seamless integration system, a bet undergoes a series of steps before generating results
for players. The process begins with the player placing a bet, followed by the provider system initiating the
3.2.1 GetBalance method to verify if the player has sufficient funds. If the player's balance is adequate,
the provider system then triggers the 3.2.2 Bet method. Upon successful deduction of the balance, the
provider system generates the result for the bet round and proceeds to settle with the operator system
using the 3.2.3 GameResult method.

Finally, the player views the outcome of the bet round on their screen.

Throughout the seamless integration process, the operator system carries the responsibility of ensuring
that balances are accurately updated using the fields specified in the respective APIs. Additionally, the
operator system must guarantee that idempotent calls are not processed more than once, to prevent
unintended duplications. Transaction uniqueness can be confirmed using the transaction id defined within
the transactional APIs.
4. Fund Transfer Wallet Integration API
The operator is empowered to leverage this API for facilitating fund transfers to players' balances within
the Game Provider's wallet ecosystem.

All requests and responses are in JSON format

All request should contain header “Content-Type: application/json”


HTTP Methods : POST

Operator ID, secret key will be provided by provider for both production and test environments

The HTTPs service URL will be furnished by the provider for both production and test
environments. It takes the form of:

[Link] service domain>/api/opgateway/v1/op/<method>


or
[Link] service domain>/api/opgateway/v1/op/<path>/<method>
[Link] service domain>/api/opgateway/v1/op/<path>/<path>/<method>

The Integration HTTP Service is securely protected.

- Requests to the service should not be initiated from player browsers (end-users).
- IP addresses must be supplied to the provider for the purpose of whitelisting.

4.1 Game Opening Method


The operator can obtain a valid game launch URL through the Integration API 2.2 GameLogin method.
This launch URL is applicable for opening the game in any supported web browser or webview.
4.2 API Documentation

4.2.1 POST CreatePlayer


Request path: POST /CreatePlayer
**This API will be deprecated soon
**2.2 GameLogin or 4.3 CheckBalance methods will inherently generate a player profile within the provider's system if one
does not already exist.

The CreatePlayer method for operators to establish new player accounts within the provider's system.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}

4.2.2 POST CheckBalance


Request path: POST /CheckBalance

Operators can utilise the CheckBalance method to ascertain a player's balance within the provider's
system.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)


**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

CurrentBalance Decimal Current balance in the account (Eg: 12345678.1234)

Currency String(3) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"CurrentBalance": 0.00,
"Currency": "MYR"
}

4.2.3 POST Deposit


Request path: POST /Deposit

The Deposit method, provided by the provider, enables operators to add funds to a player's account
within the provider's system.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required

Amount String(50) Amount to deposit into player’s FundTransfer account (Eg: Required
12345678.1234)

**The provider's system accommodates up to four decimal units.


**Only positive numbers are permitted. The provider's system will
reject any incoming API calls with negative amounts.

ReferenceId String(50) Unique transaction id from operator side Required

**The ReferenceId must be unique within the operator's system. Any


duplicate reference id sent from the operator's system will be
rejected by the provider's system.
Example of JSON request
JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001",
"Amount": "100.00",
"ReferenceId": "13311511"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

CurrentBalance Decimal Current balance in the account (Eg: 12345678.1234)

Currency String(3) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"CurrentBalance": 0.00,
"Currency": "MYR"
}

4.2.4 POST Withdraw


Request path: POST /Withdraw

Operators can leverage the Withdraw method to initiate fund withdrawals from a player's account within
the provider's system.

Request parameters
Name Type Description Status
OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey + Required


PlayerId)
(Please refer MD5 hashing function)

PlayerId String(50) Player Id in operator system Required

Amount String(50) Amount to withdraw from player’s FundTransfer account (Eg: Required
12345678.1234)

**The provider's system accommodates up to four decimal units.


**Only positive numbers are permitted. The provider's system will
reject any incoming API calls with negative amounts.

ReferenceId String(50) Unique transaction id from operator side Required

**The ReferenceId must be unique within the operator's system. Any


duplicate reference id sent from the operator's system will be
rejected by the provider's system.

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001",
"Amount": "100.00",
"ReferenceId": "13311511"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

CurrentBalance Decimal Current balance in the account (Eg: 12345678.1234)

Currency String(3) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar


(Please refer Currency Code Table)
Example of JSON response
JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"CurrentBalance": 0.00,
"Currency": "MYR"
}

4.2.5 POST PullLog


Request path: POST /PullLog

Using this method, the operator gains the capability to retrieve players betting logs for fund transfer
wallets.
**For detailed implementation guidance, please consult section 4.3 Transaction Log Pulling Mechanism of the
documentation.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey) Required


(Please refer MD5 hashing function)

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745"
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description


ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Logs Array Transaction object array (Object field please refer following table)

**Each API call will yield a maximum of 1000 transactions.

continue.. Response parameters (Object Logs)


Name Type Description

TranId Long Unique Id for this transaction on provider system

**Apply this TranId in the 2.1.3 GetTransactionDetails method to access a


comprehensive view of the game's transaction details.

PlayerId String(50) Player Id in operator system

Turnover Decimal Turnover amount (Eg: 12345678.1234)

ValidTurnover Decimal Valid turnover amount (Eg: 12345678.1234)

Payout Decimal Payout amount (Eg: 12345678.1234)

**Can be 0 (‘ZERO’) value if the round doesn’t generate payout

WinLose Decimal Winlose amount (Payout - Turnover)

**Can be negative value (-ve)

TranDt DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider side.

**This is the actual date and time when the bets were placed, verified within the
provider's game system.

TranType Integer Transaction type


(Please refer Transaction Type)

GameCode String(50) Unique code of the game within the provider system

GameType Integer Game type


(Please refer Game Type)

GameName String(50) English game name / description

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Transaction Finance/Billing DateTime based on ProviderTimeZone

RoundType Integer Round type


(Please refer Round Type)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Logs": [
{
"TranId": 133133134,
"PlayerId": "DemoPlayer",
"Turnover": 3.60,
"ValidTurnover": 3.60,
"Payout": 1.80,
"WinLose": -1.80,
"TranDt": "2020-10-10 09:30:00",
"TranType": 0,
"GameCode": "1000",
"GameType": 1,
"GameName": "Slots Game Name",
“ProviderTimeZone”: “Singapore Standard Time”,
“ProviderTranDt”: "2024-01-02T14:55:26.1212204+08:00",
“RoundType”: 0
},

]
}

4.2.6 POST FlagLog


Request path: POST /FlagLog

Using this method, the operator gains the capability to flag retrieved records, This action serves to
prevent return of identical sets of betting logs when invoking the PullLog method.
**For detailed implementation guidance, please consult section 4.3 Transaction Log Pulling Mechanism of the
documentation.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.

Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey) Required


(Please refer MD5 hashing function)

TransactionIds Long[] List of pulled transaction IDs Required

**Limited to a maximum of 1000 transaction IDs.

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"TransactionIds": [133123, 133124, …]
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}

4.2.7 POST PullLogByTimestamp


Request path: POST /PullLogByTimestamp

Using this method, the operator gains the capability to retrieve players betting logs for fund transfer
wallets according to utc+0 timestamp.
**For detailed implementation guidance, please consult section 4.4 Log Pulling by Timestamp Mechanism of the
documentation.

Request parameters
Name Type Description Status

OperatorId String(20) Operator Id Required

RequestDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss) Required

**Using current UTC+0 datetime, this field is exclusively intended for


MD5 hashing and validation purposes. Please refrain from utilising it
for transactional records.
Signature String(50) MD5 (FunctionName + RequestDateTime + OperatorId + SecretKey) Required
(Please refer MD5 hashing function)

FromTs Integer UTC timestamp Required

**Maximum 300 seconds (5 minutes) of betting logs will be return


from API

Page Integer Determine which page to pull Required

**Start with 1

Example of JSON request


JSON

{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"FromTs": 1691500000,
"Page": 1
}

Response parameters
Name Type Description

Status Integer Status code


(Please refer provider Error / Status Code Table)

Description String(50) Status description

ResponseDateTime String(50) UTC datetime (yyyy-MM-dd HH:mm:ss)

**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.

FromTs Integer Indicate current transaction logs is from and to which timestamp range

ToTs Integer Indicate current transaction logs is from and to which timestamp range

Logs Array Transaction object array (Object field please refer following table)

**Each API call will yield a maximum of 1000 transactions.

continue.. Response parameters (Object Logs)


Name Type Description

TranId Long Unique Id for this transaction on provider system

**Apply this TranId in the 2.1.3 GetTransactionDetails method to access a


comprehensive view of the game's transaction details.

PlayerId String(50) Player Id in operator system

Turnover Decimal Turnover amount (Eg: 12345678.1234)


ValidTurnover Decimal Valid turnover amount (Eg: 12345678.1234)

Payout Decimal Payout amount (Eg: 12345678.1234)

**Can be 0 (‘ZERO’) value if the round doesn’t generate payout

WinLose Decimal Winlose amount (Payout - Turnover)

**Can be negative value (-ve)

TranDt DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider side.

**This is the actual date and time when the bets were placed, verified within the
provider's game system.

TranType Integer Transaction type


(Please refer Transaction Type)

GameCode String(50) Unique code of the game within the provider system

GameType Integer Game type


(Please refer Game Type)

GameName String(50) English game name / description

ProviderTimeZone String Provider side Time Zone

ProviderTranDt DateTime Transaction Finance/Billing DateTime based on ProviderTimeZone

RoundType Integer Round type


(Please refer Round Type)

Example of JSON response


JSON

{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"FromTs": 1691500000,
"ToTs": 1791500000,
"Logs": [
{
"TranId": 133133134,
"PlayerId": "DemoPlayer",
"Turnover": 3.60,
"ValidTurnover": 3.60,
"Payout": 1.80,
"WinLose": -1.80,
"TranDt": "2020-10-10 09:30:00",
"TranType": 0,
"GameCode": "1000",
"GameType": 1,
"GameName": "Slots Game Name",
“ProviderTimeZone”: “Singapore Standard Time”,
“ProviderTranDt”: "2024-01-02T14:55:26.1212204+08:00",
“RoundType”: 0
},

]
}
4.3 Transaction Log Pulling Mechanism
The Fund Transfer wallet provides a log-pulling method through the 4.2.5 PullLog and 4.2.6 FlagLog
methods. These methods facilitate the retrieval of players' betting logs. While optional, operators are
mandated to implement them to receive player betting logs. This process involves a series of steps that
must be followed accurately to ensure the correct acquisition of the betting logs.

Step 1:
Operator initiates the process of fetching betting logs by invoking the PullLog API.

Step 2:
Provider's system returns a maximum of 1000 unflagged betting logs.

Step 3:
Operator receives the betting logs and subsequently performs internal processes, which may involve
inserting or summarising transactions.

Step 4:
Operator initiates the FlagLog process to mark transactions within the provider's system as flagged or
processed. This action helps prevent the re-pulling of the same transactions during subsequent retrieval
attempts.

If the operator encounters difficulty in processing certain transactions, they have the option to exclude
those transactions from insertion in the FlagLog method. This choice allows the transactions to be
retrieved once more during the subsequent pull process.

Step 5:
Upon successful execution of the FlagLog method by the provider's system, the operator's system may
proceed to repeat step 1: initiating the PullLog API. This facilitates the retrieval of the next batch of
transactions.
It is recommended that the operator considers waiting for an additional 5-10 seconds before initiating the
next PullLog if the method returns fewer than 1000 betting logs. This practice assists in alleviating the
load on the provider's system.

4.4 Log Pulling by Timestamp Mechanism


The Fund Transfer wallet provides a log-pulling by timestamp method through the 4.2.7
PullLogByTimestamp. This method facilitates the retrieval of players' betting logs from specific
timestamps. While optional, operators are mandated to implement them to receive player betting logs.
This process involves a series of steps that must be followed accurately to ensure the correct acquisition
of the betting logs.

Step 1:
Operator initiates the process of fetching betting logs by invoking the PullLogByTimestamp API.

Step 2:
Provider's system returns a maximum of 1000 unflagged betting logs.

Step 3:
Operator receives the betting logs and subsequently performs internal processes, which may involve
inserting or summarising transactions.

Step 4:
Operator should check whether the transaction array has more than 0 entries, indicating the possibility of
additional betting logs on subsequent pages. If true, the operator should initiate the API again by
incrementing the Page by 1.

It is recommended that the operator considers waiting for an additional 5-10 seconds before initiating the
next PullLogByTimestamp if the method returns 0 betting logs. This practice assists in alleviating the load
on the provider's system.
5. Reconciliation
If a request times out because of internet connection problems, or contains relevant error code (refer
status / error codes), then the provider system will follow a process described below, to reconcile the
action.

Important: In scenarios where the Operator encounters retry API calls within the reconciliation process, it is imperative to
ensure that transactions with the same reference id or transaction id are not processed more than once. The Operator can
implement the use of appropriate error codes to halt the reconciliation process effectively.

5.1 Bet Transaction


When the placement of a bet encounters a failure, the provider system will initiate a rollback. It's important
to note that no reconciliation process is applied to Bet transactions in such cases.

5.2 Rollback Transaction


Upon failing to receive an appropriate response from the operator system after several (3) attempts, a
rollback request will be enqueued in the background transaction queue. The reconciliation process
commences from this point.

Additionally, the operator system will periodically receive rollback requests once every hour,
autonomously and independently of ongoing game sessions. This periodicity ensures the accurate
delivery of such transactions.

The operator system retains the capability to reply with either a "rollback success" confirmation or an error
message such as "transaction not found," indicating that the provider system has effectively terminated
the transaction.

5.3 Game Result Transaction


Once the game result is generated within the provider's system, there's a chance that the game result or
settlement transaction could face difficulties in reaching the operator system. In case of such
occurrences, the system will make three (3) retry attempts before routing these transactions to the
reconciliation process.

It's imperative to recognize that settled transactions are irreversible and cannot be cancelled. The
provider's system is equipped with an autonomous job that engages in continuous retry attempts,
happening every hour, to ensure the successful delivery of game result transactions to the operator
system.

5.4 Bonus Transaction


The bonus transaction requests will undergo similar retry mechanisms as described earlier for game
result transactions.
6. MD5 Hashing
6.1 For C#
c#

using System;
using [Link];
using [Link];

class Program
{
static void Main()
{
string functionName = "GameLogin";
string requestDateTime = "2023-06-09 12:34:56";
string operatorId = "op1";
string secretKey = "ABC123";
string playerId = "player123";

// Concatenate the values


string stringToHash = functionName + requestDateTime + operatorId + secretKey + playerId;

// Create an instance of the MD5 class


MD5 md5 = [Link]();

// Compute the hash as a byte array


byte[] hashBytes = [Link]([Link](stringToHash));

// Convert the byte array to a hexadecimal string


StringBuilder sb = new StringBuilder();
for (int i = 0; i < [Link]; i++)
{
[Link](hashBytes[i].ToString("x2")); // "x2" formats each byte as a two-digit hexadecimal number
}

string hash = [Link]();

[Link](hash);
}
}
6.2 For Javascript
javascript

const functionName = "GameLogin";


const requestDateTime = "2023-06-09 12:34:56";
const operatorId = "op1";
const secretKey = "ABC123";
const playerId = "player123";

// Concatenate the values


const stringToHash = functionName + requestDateTime + operatorId + secretKey + playerId;

// Generate the MD5 hash


const hash = md5(stringToHash);

[Link](hash);

6.3 For PHP


php

<?php
$functionName = "GameLogin";
$requestDateTime = "2023-06-09 12:34:56";
$operatorId = "op1";
$secretKey = "ABC123";
$playerId = "player123";

// Concatenate the values


$stringToHash = $functionName . $requestDateTime . $operatorId . $secretKey . $playerId;

// Generate the MD5 hash


$hash = md5($stringToHash);

echo $hash;
?>

6.4 For Python


python

import hashlib

functionName = "GameLogin"
requestDateTime = "2023-06-09 12:34:56"
operatorId = "op1"
secretKey = "ABC123"
playerId = "player123"

# Concatenate the values


stringToHash = functionName + requestDateTime + operatorId + secretKey + playerId

# Generate the MD5 hash


hash = hashlib.md5([Link]()).hexdigest()

print(hash)

6.5 For Bash


bash

#!/bin/bash

functionName="GameLogin"
requestDateTime="2023-06-09 12:34:56"
operatorId="op1"
secretKey="ABC123"
playerId="player123"

stringToHash="${functionName}${requestDateTime}${operatorId}${secretKey}${playerId}"

# Generate the MD5 hash


hash=$(echo -n "$stringToHash" | md5sum | cut -d' ' -f1)

echo $hash

6.6 For Ruby


ruby

require 'digest/md5'

function_name = "GameLogin"
request_date_time = "2023-06-09 12:34:56"
operator_id = "op1"
secret_key = "ABC123"
player_id = "player123"
# Concatenate the values
string_to_hash = function_name + request_date_time + operator_id + secret_key + player_id

# Generate the MD5 hash


hash_value = Digest::[Link](string_to_hash)

puts hash_value

6.7 For Java


java

import [Link];
import [Link];

public class HashGenerator {

public static void main(String[] args) throws NoSuchAlgorithmException {


String functionName = "GameLogin";
String requestDateTime = "2023-06-09 12:34:56";
String operatorId = "op1";
String secretKey = "ABC123";
String playerId = "player123";

// Concatenate the values


String stringToHash = functionName + requestDateTime + operatorId + secretKey + playerId;

// Generate the MD5 hash


String hashValue = generateMD5Hash(stringToHash);

[Link](hashValue);
}

public static String generateMD5Hash(String input) throws NoSuchAlgorithmException {


MessageDigest md = [Link]("MD5");
byte[] bytes = [Link]([Link]());
StringBuilder result = new StringBuilder();

for (byte b : bytes) {


[Link]([Link]("%02x", b));
}

return [Link]();
}
}
6.8 For Swift
swift

import Foundation
import CommonCrypto

func generateMD5Hash(_ input: String) -> String {


let data = [Link](using: .utf8)!
var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))

_ = [Link] { bytes in
CC_MD5([Link], CC_LONG([Link]), &digest)
}

return [Link] { String(format: "%02hhx", $0) }.joined()


}

let functionName = "GameLogin"


let requestDateTime = "2023-06-09 12:34:56"
let operatorId = "op1"
let secretKey = "ABC123"
let playerId = "player123"

// Concatenate the values


let stringToHash = functionName + requestDateTime + operatorId + secretKey + playerId

// Generate the MD5 hash


let hashValue = generateMD5Hash(stringToHash)

print(hashValue)

6.9 For Kotlin


kotlin

import [Link]

fun generateMD5Hash(input: String): String {


val bytes = [Link]()
val md5 = [Link]("MD5")
val digest = [Link](bytes)
return [Link]("") { "%02x".format(it) }
}

fun main() {
val functionName = "GameLogin"
val requestDateTime = "2023-06-09 12:34:56"
val operatorId = "op1"
val secretKey = "ABC123"
val playerId = "player123"

// Concatenate the values


val stringToHash = "$functionName$requestDateTime$operatorId$secretKey$playerId"

// Generate the MD5 hash


val hashValue = generateMD5Hash(stringToHash)

println(hashValue)
}
7. Appendix
7.1 Supported Language Code
Language Language Code

English en-us

Chinese (simplified) zh-cn

Chinese (traditional) zh-tw

Thai th-th

Vietnamese vi-vn

Tagalog (Philippines) fil-ph

Indonesian id-id

Malay ml-my

Burmese (Myanmar) my-mm

Khmer (Cambodia) km-kh

Japanese ja-jp

Korean ko-kr

Hindu (India) hi-in

Bengali (Bangladesh) bn-bl

Nepal ne-ne

Urdu (Pakistan) ur-pk

Sri Lanka si-sl

Portuguese pt-pt

German de-de

Spanish es-es

Maltese mt-mt

Swedish sv-se

Finnish fi-fl

Norwegian nb-no

Irish ga-ie

Dutch nl-nl

Danish da-dk
7.2 Supported Currency Code
Currency Code Description

MYR Malaysia Ringgit

THB Thai Baht

SGD Singapore Dollar

USD United States Dollar

VND Vietnamese Dong

VNK Vietnamese Dong (Truncated 1 VNK : 1000 VND)

IDR Indonesian Rupiah

IDK Indonesian Rupiah (Truncated 1 IDK : 1000 IDR)

MMK Myanmar Kyat

MK1 Myanmar Kyat (Truncated 1 MK1 : 100 MMK)

HKD Hong Kong Dollar

BDT Bangladeshi Taka

RMB RenMinBi

INR Indian Rupee

PKR Pakistani Rupee

AUD Australian Dollar

KRW Korean Won

KRK Korean Won (Truncated 1 KRK = 100 KRW)

LAK Laotian Kip

LKK Laotian Kip (Truncated 1 LKK = 1000 LAK)

NPR Nepalese Rupee

PHP Philippine Peso

TWD Taiwan Dollar

KHR Cambodian riel

CAD Canadian Dollar

BRL Brazilian Real

NGN Nigeria Naira

BND Brunei Dollar

EUR Euro
JPY Japan Yen

GBP Great Britain Pound

SEK Swidish Krona

NOK Norwegian Krone

DKK Danish Krone

MKK Myanmar Kyat (Truncated 1 MKk : 1000 MMK)

AED UAE Dirham

CHF Swiss Franc

LKR Sri Lankan Rupee

NZD New Zealand Rollar

RUB Russian Ruble

TRY Turkish Lira

ZAR South African Rand

MXN Mexican Peso

MNT Mongolian Tugrik


** Any special currency request, please liaise with the Provider Team.

7.3 Status / Error Code

7.3.1 Status Code from Provider


Status Code Description

200 OK

400 Bad Request

403 Forbidden Access

503 Service Maintenance

900401 Invalid Operator ID

900402 Invalid Player

900403 Invalid Signature

900404 Invalid Game Id

900408 Invalid TranID

900500 Internal Server Error


(Applied to any other errors/situations which are not in the list)
7.3.2 Status Code from Operator
Status Code Description

200 OK

900404 Invalid player / password. Please try again

900405 Operator ID Error

900406 Incoming Request Info Incomplete

900407 Invalid Signature

900409 Duplicate Transaction

900415 Bet Transaction Not Found

900416 Player Inactive

900605 Insufficient Balance

900500 Internal Server Error

800401 Max Payout Reached

**The operator can employ this error code to signify that a player has attained the maximum
winning limit on the operator's platform.

7.4 Game Type (Game Category)


Game Type Game Type in String

0 Others

1 Slots

2 Arcade

3 Table

4 Event

5 Mini Game

6 Fish Arcade

101 Cash Bonus (Deprecated)

7.5 Game Result Type


Game Type Game Type in String

0 Single / Quick Game Round Result


7.6 Rollback Type
Game Type Game Type in String

1 Single / Quick Game Refund

7.7 Round Type


Round Type Round Type in String

0 Normal Round

1 Buy FreeSpin/Feature Round

You might also like