{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"661881db-46bf-410c-9618-3fb5327016f5","name":"CoinMargin Trade API","description":"In order to use Trade API, user will have to go through few simple steps:\n\n* API key\n* HMAC authorization header\n\n<br/>\n<h4>API key</h4>\n\nTo use Trade API, user will need to obtain API key and secret, which are passed to Trade API with every request.\nAPI keys can be generated in the CoinMargin user panel, under section 'API ACCESS'. Direct link to API key creation panel:<br/>\n<a href=\"http://coinmargin.com/user/api-access\">Create API key</a>\n<br/>\n<br/>\n<h4>HMAC authorization header</h4>\n\nOnce user obtained API key, it is all set up! Now, the only thing left is to form HMAC authorization header. Basically, this header consists of two parts: Basic auth and unique hash (\"Basic {{hash}}\"). Hash is generated from different variables. In order to form this header, user will need following variables:\n<br/>\n<br/>\n<pre><code>\nvar CLIENT_KEY = client_api_key; // key obtained from coinmargin\nvar SECRET_KEY = client_api_secret; // secret obtained from coinmargin\nvar TIMESTAMP = Math.floor(Date.now() / 1000) + 6; // timestamp in seconds\nvar NONCE = Math.floor(Math.random() * Math.floor(1000000)); // random nonce integer\nvar AUTH_TYPE = 'Basic'; // authorization type\n</code></pre>\n<br/>\nThe last variable, which is needed is request query string. Query string consists of all parameters from request url and body separated by '&' sign (for example: 'market=ltc-btc&offset=0'). Parameters from body (JSON), must also be passed in a form of 'price=1&amount=2':\n<br/>\n<br/>\n<pre><code>\nvar queryString = queryString + '&' + bodyString; // merge parameters from url and body\n</code></pre>\n<br/>\nFinally, user has to put all of the variables together and encode them:\n<br/>\n<br/>\n<pre><code>\nvar queryString = queryString + '&timestamp=' + TIMESTAMP + '&nonce=' + NONCE;\nvar hmacDigest = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(queryString, SECRET_KEY));\nvar authHeader = AUTH_TYPE + ' ' + btoa(CLIENT_KEY + ':' + hmacDigest);\n</code></pre>\n<br/>\n<b>That's it! User can now use variable 'authHeader' as header to communicate with trade API.</b>\n<br/>\n<br/>\n<hr>\n<br/>\n<br/>\n<i>Here is the complete example of HMAC authorization header in JS (it is included in Postman):\n<br/>\n\n```javascript\nfunction getQueryString(url, variables) {\n    for (let variable in variables) {\n        url = url.replace('{{' + variable +'}}', variables[variable]);\n    }\n    let arrSplit = url.split('?');\n    return arrSplit.length > 1 ? url.substring(url.indexOf('?')+1) : ''; \n}\n\nfunction jsonToQueryString(obj) {\n    return Object.keys(obj).map(function(key) {\n        return encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]);\n    }).join('&');\n}\n\nfunction getBodyString(data, variables) {\n    for (let variable in variables) {\n        data = data.replace('{{' + variable +'}}', variables[variable]);\n    }\n    obj = JSON.parse(data);\n    if (Object.keys(obj).length === 0) {\n        return '';\n    } else {\n        return jsonToQueryString(obj);\n    }\n}\n\nfunction getRandomInt(max) {\n  return Math.floor(Math.random() * Math.floor(max));\n}\n\nfunction getAuthHeader(request, postman) {\n    let CLIENT_KEY = postman.getEnvironmentVariable('apiKey');\n    let SECRET_KEY = postman.getEnvironmentVariable('apiSecret');\n    let AUTH_TYPE = 'Basic';\n    postman.setEnvironmentVariable('timestamp', Math.floor(Date.now() / 1000) + 6);\n    postman.setEnvironmentVariable('nonce', getRandomInt(1000000));\n    let variables = postman.__environment;\n\n    let queryString = getQueryString(request['url'], variables);\n    if (request['data'] && request['data'].length) {\n        let bodyString = getBodyString(request['data'], variables);\n        if (queryString) {\n            queryString = queryString + '&' + bodyString;\n        } else {\n            queryString = bodyString;\n        }\n    }\n\n    postman.setEnvironmentVariable('queryString',queryString);\n    let hmacDigest = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(queryString, SECRET_KEY));\n    let authHeader = AUTH_TYPE + ' ' + btoa(CLIENT_KEY + ':' + hmacDigest);\n    return authHeader;\n}\n\npostman.setEnvironmentVariable('hmacAuthHeader', getAuthHeader(request, postman));\n ```\n \n<br/>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"8795451","collectionId":"661881db-46bf-410c-9618-3fb5327016f5","publishedId":"SVmzvxMP","public":true,"publicUrl":"https://documenter-api.postman.tech/view/8795451/SVmzvxMP","privateUrl":"https://go.postman.co/documentation/8795451-661881db-46bf-410c-9618-3fb5327016f5","customColor":{"top-bar":"0C1539","right-sidebar":"151E47","highlight":"475FF3"},"documentationLayout":"classic-double-column","version":"8.10.1","publishDate":"2019-09-24T18:30:39.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[{"name":"coinmargin.com","id":"e7c95c8d-96c2-4746-a022-663d8a17ff75","owner":"8795451","values":[{"key":"apiKey","value":"9F6R88DF9O8WWCGWKWS8S4S08","enabled":true},{"key":"apiSecret","value":"513IYWRD94SGCWC0COC8WK8C0KWS80KKGKCKO48GKG8SO8GW4G","enabled":true},{"key":"host","value":"https://coinmargin.com","enabled":true},{"key":"version","value":"v1","enabled":true},{"key":"hmacAuthHeader","value":"Basic OUY2Ujg4REY5TzhXV0NHV0tXUzhTNFMwODplYTcyYzhjNWFmOGI5MzY3OWIxZjJiZTdiZjRkNzViZGU3ZWFlY2E1OWI3NmM4OWUxYjNmM2MyZTVlZTg2MmE3NDMyY2VjM2E5MGNmNGM0NzNlZTI0NTFmMmFkZGFiMzY3Nzg2Zjc1MDFiNjgzZjdjZmEwNTZmMzYxMmU5ZWVlMA==","enabled":true},{"key":"timestamp","value":"1550838976","enabled":true},{"key":"nonce","value":"693795","enabled":true},{"key":"market","value":"ltc-btc","enabled":true},{"key":"limit","value":"10","enabled":true},{"key":"order_id","value":"64","enabled":true},{"key":"sort","value":"asc","enabled":true},{"key":"offset","value":"0","enabled":true},{"key":"type","value":"limit","enabled":true},{"key":"price","value":"1","enabled":true},{"key":"amount","value":"2","enabled":true},{"key":"queryString","value":"","enabled":true}],"published":true}],"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":""},"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"},{"label":"coinmargin.com","value":"8795451-e7c95c8d-96c2-4746-a022-663d8a17ff75"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/SVmzvxMP"}