{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"6f98ab52-8351-4cf8-9470-d54a564ddf66","name":"GAP","description":"### **Document Overview**\n\nThis document describes an integrated system which enables the GAP backend to integrate with online operators. It includes integrating new game providers, financial transactions, login calls and launch protocols used.\n\n### Integration Overview\n\nThis GAP Casino is a B2B system which allows shops and online operators to offer games to their clients through their existing systems. A simple call to “open game” will generate the GAP casino system start up by activating the operator to open a game or Lobby. Once open, the user may navigate freely throughout the Casino system and play any game while tracking his balance. Four simple API calls allow the casino to credit and debit the player’s account in real time using seamless wallet integration. All the financial calls are monitored and managed by the GAP casino system to ensure no financial transaction is lost.\n\n### **Protocol**\n\nThe integration uses Http's POST communications based on Json message type. The operator must use HTTPS to communicate with our server, but we need to configure it in advance.\n\n### **Security**\n\nWe are having multiple level of security checks\n\n1. IP White Listing: Operator and GAP must whitelist the other entity IPs on their servers and receive any kind of requests over these configured IPs only and rest of the messages/requests will be rejected/discarded.\n    \n\n1. Signature Check based on the RSA Key shared between GAP and operator: Operator and GAP will generate private and public key pair respectively and public key will be shared to other entity. Message/Request will be signed with the private key generated and sent to other entity and the same message will be verified with the public key received (by offline) and will decode the message.\n    \n\n1. HTTP over secure\n    \n\n### **Requirements**\n\n- Things required from operator side for integration\n    \n    - All Games API requests have to be signed by Operator.\n        \n    - Operator server ip - All requests to originate from this ip to us, not from client side\n        \n    - Operator server endpoint url - This is where GAP shall send requests for balance/debit/credit/rollback\n        \n    - Operator’s public key which was generated for signing and verification purpose\n        \n- Things GAP shall provide\n    \n    - All Wallet API requests have to be signed by GAP.\n        \n    - All Wallet API request must be practiced and verified by the Operator.\n        \n    - GAP server url – production url\n        \n    - GAP server endpoint url - This is where operator shall send requests for initial session login, getgames, etc…\n        \n    - GAP public key - After Operator shares their key\n        \n\n### **Request Signing and Verification**\n\n- Before the integration, the Operator generates a private/public key pair, and provides the public key to GAP.\n    \n- Both parties should verify all requests will be signed with RSA-SHA256.\n    \n- The integration transmit formation is Json. And is encoded by UTF-8.\n    \n\n- The Operator generates a private/public key pair and sends the public key to GAP.\n    \n- Similarly GAP sends its public key to the Operator.\n    \n- The body of all requests will be signed with RSA-SHA256 using the respective private key and encoded to BASE64.\n    \n- The signature will be placed in the “Signature” header.\n    \n- The Operator needs to verify all Wallet API requests using the public key provided by GAP.\n    \n\n- GAP verifies all Games API requests using the public key provided by the Operator.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"16659590","team":5074717,"collectionId":"6f98ab52-8351-4cf8-9470-d54a564ddf66","publishedId":"2s93eYVC8e","public":true,"publicUrl":"https://docs.dreamdelhi.com","privateUrl":"https://go.postman.co/documentation/16659590-6f98ab52-8351-4cf8-9470-d54a564ddf66","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"0047B3"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/0d852003-ee0c-4a91-a66b-3dc704e3f7a1/R0FQTElHSFQucG5n","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"0047B3"}},{"name":"light","logo":"https://content.pstmn.io/0d852003-ee0c-4a91-a66b-3dc704e3f7a1/R0FQTElHSFQucG5n","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"0047B3"}}]}},"version":"8.10.0","publishDate":"2025-02-07T10:08:04.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/0d852003-ee0c-4a91-a66b-3dc704e3f7a1/R0FQTElHSFQucG5n","logoDark":"https://content.pstmn.io/0d852003-ee0c-4a91-a66b-3dc704e3f7a1/R0FQTElHSFQucG5n"}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://dreamdelhi.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://docs.dreamdelhi.com/view/metadata/2s93eYVC8e"}