# 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" } ] } ```