Общая информация о REST API
- Базовый URL: https://api-adapter.dzengi.com
- Базовый URL, демо-аккаунт: https://demo-api-adapter.dzengi.com
- Все эндпоинты возвращают либо данные в формате JSON, либо диапазон.
- Данные возвращаются согласно следующему принципу: сначала самые ранние, затем последние.
- Все поля со значением времени и относящиеся ко временным рамкам отображаются в миллисекундах.
- В настоящий момент все имеющиеся на платформе токенизированные активы, за исключением токенизированных облигаций, токенов компаний и токенизированных акций гонконгского рынка доступны для запросов через API в его первой версии (v1). Вторая версия API (v2) позволяет осуществлять запросы, касающиеся токенизированных акций гонконгского рынка.
- Список токенизированных активов, доступных для торговли в режиме "торговля с левереджем" через API в его первой версии (v1) можно найти здесь.
- При выставлении рыночных, лимитных или стоп-заявок для параметра quantity присуща логика round_down в случае упоминания большего количества знаков после запятой, чем предусмотрено для данного токена. Допустимое количество знаков после запятой можно найти в ответе на запрос exchangeInfo, параметр quotePrecision.
- В случае параметра price и наличия большего количества знаков после запятой, чем это допустимо для данного токена, логика round_up является определяющей. Допустимое количество знаков после запятой можно найти в ответе на запрос exchangeInfo, параметр quotePrecision.
Пожалуйста, обратитесь к нашему Swagger API, раздел REST API для получения нужной вам информации.
Устранение неполадок
Код состояния HTTP
- Код состояния HTTP 4XX используется в случае запросов, носящих вредоносный характер; проблема находится на стороне отправителя.
- Код состояния HTTP 403 используется в случае превышения WAF (Web Application Firewall) лимита.
- Код состояния HTTP 429 используется в случае превышения лимита направляемых запросов.
- Код состояния HTTP 418 используется в случае, если IP является автоматически заблокированным по причине продолжения направления запросов после получения кода 429.
- Код состояния HTTP 5XX используется в случае возникновения внутренних ошибок; проблема находится на стороне Dzengi.com. Важно! Данная ошибка НЕ означает, что операция не была совершена успешно. Статус исполнения НЕИЗВЕСТЕН и может быть успешным.
Коды ошибок
- Любой эндпоинт может вернуть ERROR.
Пример:
{
"code": -1121,
"msg": "Invalid symbol."
}
- Специфические коды ошибок и сообщения определены в отдельном разделе.
Общая информация об эндпоинтах
- Для методов
GETпараметры должны быть направлены в видеquery string. - Для методов
POST,PUT, иDELETEпараметры должны быть направлены в видеquery stringилиrequest bodyс содержанием типаapplication/x-www-form-urlencoded. Вы можете миксовать параметры междуquery stringилиrequest bodyв случае наличия такой необходимости. - Параметры могут быть направлены в любом порядке.
- Если параметры направлены как в виде
query string, так и в видеrequest body, то будет использован параметрquery string
Тип безопасности эндпоинта
- Каждый эндпоинт содержит тип безопасности, который определяет способ общения с ним. Он указан рядом с NAME эндпоинта. Если тип безопасности не обозначен, значит предполагается, что он имеет значение NONE.
- API ключи передаются в REST API через заголовок
X-MBX-APIKEY. - API ключи и секретные ключи зависят от конкретных условий.
- API ключи могут быть сконфигурированы таким образом, чтобы обладать доступом только к определенным видам безопасных эндпоинтов. Например, один API ключ может использовать только для TRADE (торговли), в то время как иной API ключ может предоставить доступ ко всему функционалу, исключая TRADE (торговлю).
- Дефолтно API ключи могут предоставить доступ ко всему функционалу.
| Тип безопасности | Описание |
|---|---|
NONE | Доступ к эндпоинту открыт. |
TRADE | Эндпоинт требует отправки валидного API ключа и подписи. |
USER_DATA | Эндпоинт требует отправки валидного API ключа и подписи. |
USER_STREAM | Эндпоинт требует отправки валидного API ключа. |
MARKET_DATA | Эндпоинт требует отправки валидного API ключа. |
- Эндпоинты
TRADEиUSER_DATAявляютсяSIGNEDэндпоинтами.
Безопасность эндпоинта SIGNED (TRADE, USER_DATA, и MARGIN)
SIGNEDзапросы требуют наличие дополнительного параметра,signature, для отправки вquery stringилиrequest body.- Эндпоинты используют подписи вида
HMAC SHA256.HMAC SHA256 signatureявляется подписанной ключомHMAC SHA256операцией. Используйте ВашsecretKeyв качестве ключа иtotalParamsв качестве значения для операции вида HMAC. signatureне зависит от конкретных условий.totalParamsопределяется какquery stringсвязанный сrequest body.
Безопасность тайминга
SIGNEDзапросы также требуют отправку параметра,timestamp, который измеряется в миллисекундах и обозначает время, когда была создана и отправлена заявка.- Дополнительный параметр,
recvWindow, может быть отправлен для уточнения количества миллисекунд (послеtimestamp), в течение которых запрос считается валидным. ЕслиrecvWindowне отправлен, то дефолтное значение является следующим: 5000.
Логика является следующей:
if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow)
{
// process request
}
else
{
// reject request
}
Торговля полностью зависит от времени. Соединение с сетью может быть нестабильным или же ненадежным, что может привести к запросам, которые занимают различные промежутки времени прежде, чем достигнут сервера. С recvWindow Вы можете обозначить, что запрос должен быть обработан в течение определенного количества миллисекунд, в противном случае запрос должен быть отклонен сервером.
Рекомендуется использовать маленькое значение recvWindow (5000 или менее). Значение не может быть больше 60 000.
Пример SIGNED эндпоинта для POST /api/v1/order
Пошаговый пример того, как направлять валидные подписанные данные через командную строку Linux с использованием echo, openssl и curl.
| Ключ | Значение |
|---|---|
apiKey | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
secretKey | NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j |
| Параметр | Значение |
|---|---|
symbol | LTC/BTC |
side | BUY |
type | LIMIT |
timeInforce | GTC |
quantity | 1 |
price | 0,1 |
recvWindow | 5000 |
timestamp | 1499827319559 |
Просим Вас заметить, что некоторые символы должны иметь формат urlencode. Например символ “/” будет записан как “%2F”.
requestBody:
symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
HMAC SHA256 signature
[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=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.dzengi.com/api/v1/order' -d
'symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'
queryString:
symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
HMAC SHA256 signature:
[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=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.dzengi.com/api/v1/order?symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'
Пример SIGNED эндпоинта для POST /api/v1/order (режим “торговля с левереджем”)
Пошаговый пример того, как направлять валидные подписанные данные через командную строку Linux с использованием echo, openssl и curl.
| Ключ | Значение |
|---|---|
apiKey | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
secretKey | NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j |
| Параметр | Значение |
|---|---|
symbol | BTC/USD_LEVERAGE |
side | BUY |
type | MARKET |
timeInforce | GTC |
quantity | 0.01 |
leverage | 2 |
accountId | 2376109060084932 |
takeProfit | 8000 |
stopLoss | 6000 |
recvWindow | 60000 |
timestamp | 1586942164000 |
Просим Вас заметить, что некоторые символы должны иметь формат urlencode. Например символ “/” будет записан как “%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×tamp=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×tamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.dzengi.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×tamp=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×tamp=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×tamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.dzengi.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×tamp=1586942164000&signature=05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b
Терминология
base assetотносится к активу, который являетсяquantityсимвола.quote assetотносится к активу, который являетсяpriceсимвола.
Определения ENUM
Статус заявки (status):
- NEW
- FILLED
- CANCELED
- REJECTED
Типы заявок (orderTypes, type):
- LIMIT
- MARKET
- STOP
Направление заявки (side):
- BUY
- SELL
Срок действия (timeInForce):
- GTC
- IOC
- FOK
Периоды / интервалы свечей на графиках:
m -> минуты; h -> часы; d -> дни; w -> недели
- 1m
- 5m
- 15m
- 30m
- 1h
- 4h
- 1d
- 1w
параметр 'type' /klines:
- heikin-ashi