सामान्य REST API जानकारी

  • बेस URL: https://api-adapter.backend.currency.com
  • बेस URL, डेमो अकाउंट: https://demo-api-adapter.backend.currency.com
  • सारे एन्डपॉइंट एक JSON ऑब्जेक्ट वापस करते हैं या array.
  • डेटा आरोही क्रम में लौटाया जाता है. सबसे पुराना पहला, सबसे नया आखिरी.
  • सभी समय और टाइमस्टैम्प संबंधित फील्ड मिलीसेकंड में हैं.
  • कम्पनी टोकन, टोकनाइज़्ड बॉन्ड, KARMA.cx टोकन और टोकनाइज़्ड एसेट को छोड़ के, हॉन्ग-कॉन्ग बाज़ारों के सभी टोकनाइज़्ड एसेट हमारे API के पहले वर्ज़न (v1) में उपलब्ध हैं. दूसरे API वर्ज़न (v2) में भी हॉन्ग-कॉन्ग के बाज़ार उपलब्ध हो गए.
  • API के अंदर लेवरेज ट्रेडिंग के लिए उपलब्ध एसेटों की सूची यहां मिल सकती है.
  • जब मार्केट, लिमिट या स्टॉप ऑर्डर सेट कर रहे हों और किसी खास टोकन के लिए ज़रूरत से बड़ी प्रिसिज़न नम्बरों की एक बड़ी राशि मेन्शन करे हों तो round_down सच है. अनुमत प्रिसिज़न exchangeInfo अनुरोध प्रतिक्रिया, quotePrecision पैरामीटर में पाई जा सकती है.
  • जब प्राइस पैरामीटर के लिए एक बड़ी राशि के प्रिसिज़न नम्बर मेन्शन कर रहे हों तो round_up logic इस्तेमाल होता है. अनुमत प्रिसिज़न exchangeInfo अनुरोध प्रतिक्रिया, quotePrecision पैरामीटर में पाई जा सकती है.

आवश्यक जानकारी प्राप्त करने के लिए, कृपया REST API भाग को Swagger के अंदर देखें.

Troubleshooting

HTTP रिटर्न कोड

  • HTTP 4XX रिटर्न कोड खराब रिक्वेस्टों के लिए इस्तेमाल किए जाते हैं; समस्या भेजने वाले की तरफ से हो रही है.
  • HTTP 403 रिटर्न कोड तब इस्तेमाल होता है जब WAF Limit (Web Application Firewall) का उल्लंघन किया गया हो.
  • HTTP 429 रिटर्न कोड तब इस्तेमाल होता है जब रिक्वेस्ट रेट लिमिट को तोड़ा जाता है.
  • HTTP 418 रिटर्न कोड तब इस्तेमाल होता है जब किसी IP को, 429 कोड प्राप्त करने के बाद भी, रिक्वेस्ट भेजना जारी रखने के लिए ऑटमैटिक्ली प्रतिबंधित किया जाता है.
  • HTTP 5XX रिटर्न कोड अंदरूनी एरर के लिए इस्तेमाल होते हैं; समस्या Currency.com की तरफ है. यह ज़रूरी है की इससे एक ऑपरेशन विफलता की रूप में न देखा जाए; निष्पादन की स्थिति UNKNOWN (यानी, अज्ञात) है और सफल हो सकती थी.

एरर कोड

  • कोई भी एंडपॉइंट एक एरर दे सकता है.

Payload का नमूना नीचे देखें:

जवाब:
{ "code": -1121, "msg": "Invalid symbol." }
  • कुछ खास एरर कोडों और मैसेजों को एरर कोड में परिभाषित किया गया है.

एन्डपॉइंट पर सामान्य जानकारी

  • GET एन्डपॉइंट के लिए, पैरामीटरों को एक क्वेरी स्ट्रिंग के रूप में भेजना होगा.
  • POST, PUT, और DELETE एन्डपॉइंटों के लिए, पैरामीटरों को एक क्वेरी स्ट्रिंग या रिक्वेस्ट बॉडी में कंटेंट टाइप ऐप्लिकेशन /x-www-form-urlencoded के साथ भेजना होगा. पैरामीटर किसी भी क्रम में भेजे जा सकते हैं.
  • पैरामीटर किसी भी क्रम में भेजे जा सकते हैं.
  • अगर एक पैरामीटर को दोनों क्वेरी स्ट्रिंग और रिक्वेस्ट बॉडी से भेजा गया है, तो क्वेरी स्ट्रिंग पैरामीटर इस्तेमाल किया जाएगा.

एन्डपॉइंट सुरक्षा का प्रकार

  • हर एन्डपॉइंट में एक सुरक्षा प्रकार होता है जो यह निर्धारित करता है कि आप इसके साथ कैसे इंटरैक्ट करेंगे. यह एन्डपॉइंट के NAME (यानी, नाम) के आगे दिया जाता है.
  • अगर कोई सुरक्षा प्रकार नहीं बताया गया है, तो मान लें कि सुरक्षा प्रकार NONE (यानी, कुछ भी नहीं है).
  • API-keys, X-MBX-APIKEY हेडर के माध्यम से REST API के ज़रिए पास किए जाते हैं.
  • API-keys और secret-keys केस सेंसिटिव होते हैं, (यानी b और B अलग हैं).
  • API-keys को सिर्फ कुछ प्रकार के सुरक्षित एन्डपॉइंटों तक पहुंचने के लिए कॉन्फ़िगर किया जा सकता है. उदाहरण के लिए, एक API-key का उपयोग सिर्फ TRADE (यानी, व्यापार) के लिए किया जा सकता है, जबकि दूसरी API-key TRADE रूटों को छोड़कर सब कुछ एक्सेस कर सकती है.
  • डिफ़ॉल्ट रूप से, API-key सभी सुरक्षित रूटों तक पहुंच सकती है.
सुरक्षा का प्रकारविवरण
NONEएन्डपॉइंट तक स्वतंत्र रूप से पहुंचा जा सकता है
TRADEएन्डपॉइंट को एक मान्य API-key और सिग्नेचर भेजने की आवश्यकता है
USER_DATAएन्डपॉइंट को एक मान्य API-key और सिग्नेचर भेजने की आवश्यकता है
USER_STREAMएन्डपॉइंट को एक मान्य API-key भेजने की आवश्यकता है
MARKET_DATAएन्डपॉइंट को एक मान्य API-key भेजने की आवश्यकता है
  • TRADE और USER_DATA एन्डपॉइंट SIGNED एन्डपॉइंट हैं.

SIGNED (TRADE, USER_DATA, और MARGIN) एंडपॉइंट सुरक्षा

  • SIGNED एंडपॉइंटों को क्वेरी स्ट्रिंग या अनुरोध संस्था में भेजे जाने के लिए एक अतिरिक्त पैरामीटर, सिग्नेचर की आवश्यकता होती है.
  • एंडपॉइंट HMAC SHA256 सिग्नेचर का उपयोग करते हैं. यह HMAC SHA256 सिग्नेचर एक कुंजी युक्त HMAC SHA256 कार्यवाही है. अपने secretKey को कुंजी के रूप में और totalParams को HMAC कार्यवाही के लिए वैल्यू के रूप में उपयोग करें.
  • यहसिग्नेचर केस-सेंसिटिव ((यानी b और B अलग हैं) नहीं है.
  • totalParams को क्वेरी स्ट्रिंग के रूप में परिभाषित किया गया है जिसे अनुरोध संस्था के साथ श्रेणीबद्ध किया गया है.

टाइमिंग सिक्योरिटी

  • एक SIGNED एंडपॉइंट भेजने के लिए एक पैरामीटर, टाइमस्टैम्प की भी ज़रूरत होती है, जो उस समय का मिलीसेकंड टाइमस्टैम्प होना चाहिए जब अनुरोध बनाया और भेजा गया था.
  • एक अतिरिक्त पैरामीटर, recvWindow, टाइमस्टैम्प के बाद मिलीसेकंड की संख्या निर्दिष्ट करने के लिए भेजा जा सकता है, जिसके लिए अनुरोध मान्य है. अगर recvWindow § नहीं भेजा जाता है, तो यह डिफॉल्ट रूप से 5000 हो जाता है.

लॉजिक कुछ इस प्रकार है:

if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) { // process request } else { // reject request }

गंभीर ट्रेडिंग में सारी बात टाइमिंग की है. नेटवर्क अस्थिर और अविश्वसनीय हो सकते हैं, जिसके कारण किसी अनुरोध को सर्वर तक पहुंचने में अलग-अलग समय लग सकता है. recvWindow के साथ, आप यह निर्दिष्ट कर सकते हैं कि अनुरोध को एक निश्चित संख्या के मिलीसेकंड के अंदर प्रॉसेस किया जाए या सर्वर द्वारा अस्वीकार किया जाए.

5000 या उससे कम के छोटे recvWindow का इस्तेमाल करने की सिफारिश की जाती है! अधिकतम 60,000 से ज़्यादा नहीं हो सकता!

SIGNED एन्डपॉइंट उदाहरण POST /api/v1/order के लिए

यहां देखें एक कदम-दर-कदम उदाहरण की कैसे एक मान्य साइन किए गए पेलोड को Linux कमांड लाइन पर भेजा जा सकता है echo, openssl, और curl का इस्तेमाल करके.

Keyवैल्यू
apiKeyvmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
secretKeyNhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
पैरामीटरवैल्यू
सिम्बलLTC/BTC
साइडBUY
प्रकारLIMIT
timeInforceGTC
quantity1
कीमत0,1
recvWindow5000
टाइमस्टैम्प1499827319559

कृपया ध्यान दें कि '/' जैसे कुछ सिम्बलों को url एन्कोडेड किया जाना चाहिए और निम्नलिखित कॉम्बिनेशन में बदल देना चाहिए '%2F'.

पहला उदाहरण: एक रिक्वेस्ट बॉडी के रूप में

requestBody:

symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559

HMAC SHA256 signature

[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50

curl command:

(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order' -d
'symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'

दूसरा उदाहरण: एक क्वेरी स्ट्रिंग के रूप में

queryString:

symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559

HMAC SHA256 signature:

[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50

curl command:

(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order?symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'

SIGNED एन्डपॉइंट उदाहरण POST /api/v1/order
के लिए (लेवरेज ट्रेडिंग मोड)

यहां एक कदम-दर-कदम उदाहरण दिया गया है कि कैसे echo, openssl और curl का उपयोग करके Linux कमांड लाइन से एक वैध सिग्नेचर पेलोड भेजा जाए.

Keyवैल्यू
apiKeyvmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
secretKeyNhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
पैरामीटरवैल्यू
सिम्बलBTC/USD_LEVERAGE
साइडBUY
प्रकारMARKET
timeInforceGTC
quantity0.01
quantity2
accountId2376109060084932
takeProfit8000
stopLoss6000
recvWindow60000
टाइमस्टैम्प1586942164000

कृपया ध्यान दें कि '/' जैसे कुछ सिम्बलों को url एन्कोडेड किया जाना चाहिए और निम्नलिखित कॉम्बिनेशन में बदल देना चाहिए '%2F'.

पहला उदाहरण: एक रिक्वेस्ट बॉडी के रूप में

requestBody:

symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000

HMAC SHA256 signature

[linux]$ echo -n
"symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b

curl command:

(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order' -d
'symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000&signature=05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b'

दूसरा उदाहरण: एक क्वेरी स्ट्रिंग के रूप में

queryString:

symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000

HMAC SHA256 signature:

[linux]$ echo -n
"symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b

curl command:

(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order?symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000&timestamp=1586942164000&signature=05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b

शब्दावली

  • बेस एसेट उस एसेट को रेफर करता है जो किसी सिम्बल की क्वांटिटी है.
  • क्वोट एसेट उस एसेट को रेफर करता है जो किसी सिम्बल की कीमत है.

ENUM परिभाषाएं

ऑर्डर स्टेटस (स्टेटस):

  • NEW
  • FILLED
  • CANCELED
  • REJECTED

ऑर्डर प्रकार (orderTypes, प्रकार):

  • लिमिट
  • बाज़ार
  • स्टॉप

ऑर्डर साइड (साइड):

  • BUY
  • SELL

टाइम इन फोर्स (timeInForce):

  • GTC
  • IOC
  • FOK

क्लाइन/कैंडलस्टिक चार्ट इंटर्वल:
मि -> मिनट; घं -> घंटे; दि -> दिन; ह -> हफ्ते

  • 1मि
  • 5मि
  • 15मि
  • 30मि
  • 1घं
  • 4घं
  • 1दि
  • 1ह

/klines प्रकार का पैरामीटर:

  • हाइकेन-एशी