# Slotfactory-website API Spec
## /GetGameByIDByFE
**Method**:POST
**headers**:None
**Form**
| Name | Type | |
|--------|--------|------|
| GameID | Number | Must |
| Site | Number | Must |
**Example**
Input
```
{"Site": 1,"GameID":289}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"Game": [
{
"GameID": 289,
"LanguageID": 4,
"Description": "",
"GameName": "GodAnubis",
"DisplayName": "God Anubis",
"Image": "https://stag-wb.slotfactory.com/uploadImages/GodAnubis.png",
"PublishedTime": "2019-04-23 01:50:18",
"CreatedTime": "2019-04-23 01:50:18",
"LastmodifiedTime": "2019-04-23 01:50:18",
"Status": 1,
"Click": 0,
"Site": 1,
"SupportLanguageIDs": "1",
"Theme": "1",
"MaxWins": 0,
"RawXReels": "",
"Lines": "",
"Abstract": "",
"Volatility": "",
"BannerImageURL": "http://laravel.test:8000/uploadImages/1567136224.png",
"PromotURL": "http://laravel.test:8000/uploadImages/1567136224.png", // will has this attr if is promot game,
"BaseGameVideoURL": "http://www.youtube.com",
"FeatureGameVideoURL": "http://www.google.com"
"GameDisplayBehaviorType": 1 // will give if need show game video
}
]
}
```
## /GetGameListByFE
**Method**:POST
**headers**:None
**Form**
| Name | Type | |
|------------|--------|---------------|
| GameName | string | Must/nullable |
| LanguageID | Number | Must |
| Site | Number | Must |
**Example**
Input
```
{"GameName":"","LanguageID":1,"Site":1}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"GameList": [
{
"GameID": 379,
"LanguageID": 1,
"Description": "<p>ffff</p>\n<p>ffff</p>",
"GameName": "AlienFarmInvasion",
"DisplayName": "ffff",
"Image": "http://laravel.test:8000/uploadImages/1567135139.png",
"BannerImageURL": "http://laravel.test:8000/uploadImages/1567136224.png",
"PublishedTime": "2019-08-30 11:16:56",
"CreatedTime": "2019-08-30 03:19:13",
"LastmodifiedTime": "2019-08-30 03:19:13",
"Status": 1,
"Click": 0,
"Site": 1,
"SupportLanguageIDs": "[1,2,3,4]",
"Theme": "ffff",
"Volatility": "ffff",
"MaxWins": 0,
"RawXReels": "ffff",
"Lines": "ffff",
"Abstract": "ffff"
},
{
"GameID": 378,
"LanguageID": 1,
"Description": "<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>",
"GameName": "Bingo",
"DisplayName": "JUST TEST",
"Image": "http://laravel.test:8000/uploadImages/1567134945.png",
"PublishedTime": "2019-08-30 11:10:26",
"CreatedTime": "2019-08-30 03:15:55",
"LastmodifiedTime": "2019-08-30 03:15:55",
"Status": 1,
"Click": 0,
"Site": 1,
"SupportLanguageIDs": "[1,2,3,4]",
"Theme": "dark",
"Volatility": "3/5",
"MaxWins": 23,
"RawXReels": "3x5",
"Lines": "15 lines",
"Abstract": "JUST TEST JUST TEST JUST TEST",
"BannerImageURL": "http://laravel.test:8000/uploadImages/1567136224.png",
"PromotURL": "http://laravel.test:8000/uploadImages/1567136224.png" // will has this attr if it is promot game.
},
...
]
}
```
## /GetMarqueeListByFE
**Method**:POST
**headers**:None
**Form**
| Name | Type | |
|------------|--------|---------------|
| LanguageID | Number | Must |
| Site | Number | Must |
**Example**
Input
```
{"LanguageID":1,"Site":1}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"MarqueeList": [
{
"ID": 1,
"LanguageID": 1,
"Message": "我是跑馬燈我是跑馬燈1",
"PublishedTime": "2019-04-06 01:15:22",
"ExpiredTime": "2019-04-06 01:15:22",
"CreatedTime": "2019-04-06 01:15:22",
"LastmodifiedTime": "2019-04-15 02:40:28",
"HyperLink": "http://laravel.test:8000/uploadImages/1567136224.png",
"Status": 1,
"SortID": 9,
"Site": 1
},
...
]
}
```
## /GetNewsByIDByFE
**Method**:POST
**headers**:None
**Form**
| Name | Type | |
|------------|--------|---------------|
| ID | Number | Must |
**Example**
Input
```
{"ID":30}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"News": [
{
"ID": 30,
"LanguageID": 4,
"CategoryID": 0,
"Title": "日本語021",
"Content": "<p>日本語021</p>",
"PublishedTime": "2019-04-09 02:04:35",
"ExpiredTime": "2019-04-09 02:04:58",
"CreatedTime": "2019-04-09 02:04:58",
"LastmodifiedTime": "2019-04-09 02:05:19",
"Status": 1,
"Image": "https://wpimg.wallstcn.com/4c69009c-0fd4-4153-b112-6cb53d1cf943",
"IsGame": 0,
"Tags": "日本語02,日本語01",
"Site": 1,
"Abstract": "",
"Click": 0,
"IsFeature": null
}
]
}
```
## /GetNewsListByFE
**Method**:POST
**headers**:None
**Form**
| Name | Type | |
|------------|--------|---------------|
| LanguageID | Number | Must |
| Site | Number | Must |
| Keyword | string | Must/nullable |
**Example**
Input
```
{"LanguageID":1,"Site":1,"Keyword":"g0"}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"NewsList": [
{
"ID": 21,
"LanguageID": 1,
"CategoryID": 0,
"Title": "eng05",
"Content": "<p>eng05</p>",
"PublishedTime": "2019-04-08 07:03:41",
"ExpiredTime": "2019-04-08 07:03:58",
"CreatedTime": "2019-04-08 07:03:58",
"LastmodifiedTime": "2019-04-19 04:59:38",
"Status": 0,
"Image": "http://stag-wb.slotfactory.com/uploadImages/1555675165.jpeg",
"IsGame": 0,
"Tags": "",
"Site": 1,
"Abstract": "",
"Click": 0,
"IsFeature": null
},
...
]
}
```
## /Login
**Method**:POST
**headers**:None
**Form**
| Name | Type | |
|--------------|--------|----------------------------------------|
| **Site** | Number | Login Site **(Must)**. |
| MTW | Number | If given, Login with Multiwallet mode. |
| AccountID | string | nullable if logout given. |
| Password | string | nullable if logout given. |
**Example**
#### *login*
Input
```
{"AccountID":"fe_test01","Password":"PJ2rsLL2"}
```
Output
```
{"StatusCode": 0, "StatusDescription": "Success", "Token":"....", "ID": 123456789012345}
```
#### *login with mtw*
Input
```
{"AccountID":"fe_test02","Password":"md5(PJ2rsLL2)","MTW":1}
```
Output
```
{"StatusCode": 0, "StatusDescription": "Success", "Token":"...."}
```
## /Logout
**Method**:POST
**headers**:
| Name | Type | |
|--------------|--------|----------------|
| Authorization| string | Must |
**Form**:None
**Example**
Input
```
None
```
Output
```
Success
```
## /SendMail
**Method**:POST
**headers**:None
**Form**
| Name | Type | |
|-----------------|--------|------|
| ContactName | string | Must |
| ContactEmail | string | Must |
| ContactTel | string | Must |
| ContactMessage | string | Must |
| Subject | string | Must |
| Country | string | Must |
| Company | string | Must |
**Example**
Input
```
{
"Subject":"Test Subject",
"Country":"USD",
"Company":"Taiwan",
"contactName":"Test Subject",
"contactEmail":"test@slotfactory.com",
"contactTel":"0987654321",
"contactMessage":"This is atest message.\n Can use \\n to split line."
}
```
Output
```
{
"status": "Success",
"StatusCode": 0
}
```
## /GetGame
**Method**:POST
**headers**:
| Name | Type | |
|--------------|--------|----------------|
| Authorization| string | Must |
**Form**
| Name | Type | |
|------------|--------|------|
| Site | Number | Must **(new)** |
| GameName | string | Must |
| Locale | Number | Must |
| Mode | Number | Must |
| IsMobile | boolean| Must |
**Example**
Input
```
{"Site": 1,"GameName":"SushiSlot","Locale":1,"Mode":0, "IsMobile": true}
```
Output
```
{
"status": "Success",
"message": "http://stag-wa.slotfactory.com/launch/?gn=SushiSlot&lb=192.168.1.199:8080&lc=en&fr=1"
}
```
## /banners/list
**Method**:POST
**headers**:None
**Form**
| Name | Type | |
|------------|--------|------|
| Site | Number | Must |
| LanguageID | Number | Must |
**Example**
Input
```
{"LanguageID":1,"Site":1}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"List": [
{
"ID": 5,
"PublishedTime": "2019-08-20T10:25:46Z",
"Site": 1,
"LanguageID": 1,
"Order": 2,
"ImageWeb": "http://laravel.test:8000/uploadImages/1566296763.png",
"ImageMobile": "http://laravel.test:8000/uploadImages/1566296781.png"
},
{
"ID": 3,
"PublishedTime": "2019-08-20T09:43:39Z",
"Site": 1,
"LanguageID": 1,
"Order": 2,
"ImageWeb": "http://laravel.test:8000/uploadImages/1566294241.png",
"ImageMobile": "http://laravel.test:8000/uploadImages/1566294248.jpeg"
},
...
]
}
```
## /Cmwallet
**Method**:POST
**headers**:
| Name | Type | |
|--------------|--------|----------------|
| HMAC | string | Must |
**Example**
#### *Login*
**Form**
| Name | Type | |
|------------|--------|---------------|
| Action | string | Login |
| AccountID | string | Must |
| GameName | string | Must |
| AuthToken | string | Must |
| PlayerIP | string | Must/nullable |
| Timestamp | string | Must/nullable |
| SessionID | string | Must/nullable |
Input
```
{"Action":"Login","AccountID":"fe_test02","GameName":"SushiSlot","AuthToken":"5d63f4824ad77","PlayerIP":"","Timestamp":"","SessionID":""}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": 'Success proccessed',
"FirstName": "",
"LastName": "",
"DateOfBirth": "",
"CountryID": "",
"CurrencyID": "",
"Balance": "",
"AuthToken": "",
}
```
#### *Play*
**Form**
| Name | Type | |
|--------------|----------|---------------|
| Action | string | Play |
| AccountID | string | Must |
| GameName | string | Must |
| AuthToken | string | Must |
| PlayerIP | string | Must/nullable |
| Timestamp | string | Must/nullable |
| SessionID | string | Must/nullable |
| RoundID | string | Must |
| BetAmount | Number | Must |
| WinAmount | string | Must |
| GambleGames | boolean | Must |
Input
```
{"Action":"Play","AccountID":"fe_test02","GameName":"SushiSlot","AuthToken":"5d63f4824ad77","PlayerIP":"","Timestamp":"","SessionID":"","RoundID":"","BetAmount":10000,"WinAmount":100,"GambleGames":false}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"RoundID": "",
"Balance": 11571227352670
}
```
#### *RewardBonus*
**Form**
| Name | Type | |
|--------------------|--------|---------------|
| Action | string | RewardBonus |
| AccountID | string | Must |
| GameName | string | Must |
| AuthToken | string | Must |
| PlayerIP | string | Must/nullable |
| Timestamp | string | Must/nullable |
| SessionID | string | Must/nullable |
| RoundID | string | Must |
| WinAmount | Number | Must |
| Type | string | Must |
| FreeGames | boolean| Must |
| FreeGamePlayed | Number | Must |
| FreeGameRemaining | Number | Must |
Input
```
{
"Action":"RewardBonus",
"AccountID":"fe_test02",
"GameName":"SushiSlot",
"AuthToken":"5d63f4824ad77",
"PlayerIP":"",
"Timestamp":"",
"SessionID":"",
"RoundID":"",
"WinAmount":100,
"Type": "",
"FreeGames":false,
"FreeGamePlayed":1000,
"FreeGameRemaining":100
}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"RoundID": "",
"Balance": 11571227352670
}
```
## /GetBalanceAPI
**Method**:POST
**headers**:
| Name | Type | |
|--------------|--------|----------------|
| HMAC | string | Must |
**Example**
**Form**
| Name | Type | |
|------------|--------|---------------|
| Action | string | GetBalance |
| AccountID | string | Must |
| GameName | string | Must |
| AuthToken | string | Must |
| PlayerIP | string | Must/nullable |
| Timestamp | string | Must/nullable |
Input
```
{"Action":"GetBalance","AccountID":"fe_test02","GameName":"SushiSlot","AuthToken":"5d63f4824ad77","PlayerIP":"","Timestamp":""}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"RoundID": "",
"Balance": 11571227352670
}
```
## /Closewallet
**Method**:POST
**headers**:
| Name | Type | |
|--------------|--------|----------------|
| HMAC | string | Must |
| Authorization| string | Must |
**Example**
**Form**
| Name | Type | |
|-----------------|--------|---------------|
|Action | string | "Closewallet" |
|Site | Number | Must **(New)** |
|AccountID | string | Must |
|LicenseeName | string | **will be deprecated** |
|GameName | string | Must |
|WithdrawalAmount | string | Must |
Input
```
{"Action":"Closewallet","AccountID":"fe_test02","GameName":"SushiSlot","LicenseeName":"MTW1","WithdrawalAmount":"10000"}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"Balance" => 10000,
"WalletTransactionID" => "",
"Active" => 0,
}
```
## /MtwAPI
**Method**:POST
**headers**:
| Name | Type | |
|--------------|--------|----------------|
| Authorization| string | Must |
**Example**
#### *CreatePlayer*
**Form**
| Name | Type | |
|------------|-------------|---------------|
| Action | string | "CreatePlayer"|
| Site | Number |Must **(New)** |
| AccountID | string | Must |
| Password | MD5(string) | Must |
| GameName | string | Must/nullable |
|LicenseeName| string | **will be Deprecated**|
| CountryID | string | Must |
| CurrencyID | string | Must |
Input
```
{"Action":"CreatePlayer","AccountID":"fe_test02","Password":"45744abdd1699a8cc87e71a8870dd61c","GameName":"","LicenseeName":"MTW1","CountryID":"USA","CurrencyID":"USD"}
```
Output
```
{ "status": "Success", "message": "" }
```
#### *GetPlayer*
**Form**
| Name | Type | |
|------------|-------------|---------------|
| Action | string | "GetPlayer" |
| AccountID | string | Must |
Input
```
{"Action":"GetPlayer","AccountID":"Les1234567890"}
```
Output
```
{
"status": "Success",
"message": {
"AccountID": "Les1234567890",
"Balance": 100000
}
}
```
#### *Deposit*
**Form**
| Name | Type | |
|-------------|---------|---------------|
| Action | string | "Deposit" |
| Site | Number |Must **(New)** |
| GameName | string | Must |
|DepositAmount| Number | Must |
Input
```
{"Action":"Deposit","AccountID":"Les1234567890","LicenseeName":"MTW1","GameName":"SushiSlot","DepositAmount":10000}
```
Output
```
{
"status": "Success",
"message": {
"AuthToken": "3362f90c-f141-4492-aa95-29a46a333eb9",
"Balance": 10000,
"StatusDescription": "",
"WalletTransactionId": "13ac4188-0383-49e8-a402-2491b702ad5f",
"Active": false,
"StatusCode": 0
}
}
```
#### *GetGameUrl*
**Form**
| Name | Type | |
|-------------|---------|---------------|
| Action | string | "GetGameUrl" |
| Site | Number |Must **(New)** |
| AccountID | string | Must |
|LicenseeName | string | **will be deprecated** |
| GameName | string | Must |
Input
```
{"Action":"GetGameUrl","AccountID":"Les1234567890","LicenseeName":"MTW1","GameName":"SushiSlot"}
```
Output
```
{
"headers": {},
"original": {
"status": "Success",
"message": "http://stag-wa.slotfactory.com/launch/?gn=SushiSlot&ln=MTW1&ad=Les1234567890&at=3362f90c-f141-4492-aa95-29a46a333eb9"
},
"exception": null
}
```
#### *GetGameOfMonth*
**Form**
| Name | Type | |
|-------------|---------|------|
| LanguageID | Number | Must |
| Site | Number | Must |
Input
```
{"LanguageID":1,"Site":1}
```
Output
```
{
"StatusCode": 0,
"StatusDescription": "Success proccessed",
"GetGameOfMonth": [
{
"Site": 1,
"LanguageID": 1,
"GameID": 378,
"PromotURL": "http://laravel.test:8000/uploadImages/1567136224.png",
"Description": "<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>\n<p>JUST TEST JUST TEST JUST TEST</p>",
"GameName": "Bingo",
"DisplayName": "JUST TEST",
"Image": "http://laravel.test:8000/uploadImages/1567134945.png",
"PublishedTime": "2019-08-30 11:10:26",
"CreatedTime": "2019-08-30 03:15:55",
"LastmodifiedTime": "2019-08-30 03:15:55",
"Status": 1,
"Click": 0,
"SupportLanguageIDs": "[1,2,3,4]",
"Theme": "dark",
"Volatility": "3/5",
"MaxWins": 23,
"RawXReels": "3x5",
"Lines": "15 lines",
"Abstract": "JUST TEST JUST TEST JUST TEST"
}
]
}
```