Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

423 lines (280 sloc) 15.2 KB

API BITZLATO EXCHANGE

Ниже список API методов, которые помогут написать своего торгового бота. ВАЖНО: список методов, параметры и формат данных могут меняться пока биржа в режиме бета-тестирования.

Общее описание

ВАЖНО: Любая величина, представляющая собой количество криптовалюты, всегда передаётся как строка! Точностью операций с деньгами управляет сервер.

ВНИМАНИЕ: все GET-параметры (идущие после ?) являются опциональными, для параметров limit и skip на сервере при необходимости должны использоваться значения по умолчанию (предположительно, 100 и 0 соответственно, но может зависеть от типа запроса).

Все маршруты, начинающиеся на /api/market/v1/public/ являются публичными и обрабатываются без контроля доступа. Маршруты, начинающиеся на /api/market/v1/private/:userId/, требуют аутентификации и проверки того, что переданный токен доступа принадлежит пользователю userId.

Получение информации о пользователе

Позволяет получить userId для дальнейшего использования

GET /api/auth/whoami

{
    name: ...,
    userId: ...,
}
  • name - Nickname пользователя
  • userId - числовой идентификатор пользователя

Валютные пары

GET /api/market/v1/public/pairs/

Получение списка валютных пар.

Формат ответа:

[
  {
    id: ...,
    label: ...,
    status: ...,
    price: {
      min: ...,
      max: ...,
      last: ...
    },
    volume: {
      base: ...,
      quote: ...
    },
    priceChange: ...,
  },
  ....
]

Формат описания валютной пары совпадает с форматом ответа маршрута GET /api/market/v1/public/pairs/:id.

GET /api/market/v1/public/pairs/:id

Получение информации о валютной паре с идентификатором id.

Формат ответа:

{
  id: ...,
  label: ...,
  status: ...,
  price: {
    min: ...,
    max: ...,
    last: ...
  },
  volume: {
    base: ...,
    quote: ...
  },
  priceChange: ...,
}
  • id - идентификатор валютной пары в формате :(base)-:(quote), где base - это базовая валюта, а quote - котируемая валюта

  • label - отображаемое наименование валютной пары, может совпадать с id, но может и отличаться

  • status - статус валютной пары, возможные значения: active, frozen

  • price - информация о биржевом курс по данной валютной паре

  • price.min - максимальная цена за последние 24 часа

  • price.max - минимальная цена за последние 24 часа

  • price.last - цена последней сделки

  • volume - объём торгов по данной валютной паре за последние 24 часа

  • volume.base - объём в базовой валюте

  • volume.quote - объём в котируемой валюте

  • priceChange - изменение цены за 24 часа, знак является индикатором направление изменения

Работа с публичными ордерами

GET /api/market/v1/public/orders/:pair/:offerType

Получение списка активных (открытых) ордеров.

Результат должен быть отсортирован по цене:

для bid от наибольшего к наименьшему

для ask от наименьшего к наибольшему

Параметры запроса:

  • pair - идентификатор валютной пары

  • offerType - тип ордера, возможные варианты: bid или ask

Формат ответа:

{
  data: [
    {
      id: ...,
      pair: ...,
      offerType: ...,
      amount: ...,
      price: ...
    },
    ...
  ],
  maxCount: ...

}

  • data - массив с описаниями ордеров, которые должные быть отсортированы по data.price: в случае bid по возрастанию, а в случае ask по убыванию.

  • data.pair - идентификатор валютной пары

  • data.offerType - тип ордера, возможные варианты: bid или ask

  • data.amount - размер ордера в базовой валюте

  • data.price - цена базовой валюты в котируемой

  • maxCount - максимальное колличество записей, которое может вернуть сервер (фактическое колличество может быть меньше)

GET /api/market/v1/public/trades/:pair/

Получение списка последних сделок (см. order_logs). Параметры запроса:

  • :pair - идентификатор валютной пары

Формат ответа:

{
  data: [
    {
      id: ...,
      amount: {
         base: ...,
         quote: ...
      },
      price: ...,
      date: ...,
      type: ...
    },
    ...
  ],
  maxCount: ...
}
  • data - массив с описаниями последних сделок

  • data.id - идентификатор сделки

  • data.amount - описание размера сделки

  • data.amount.base - размер сделки в базовой валюте

  • data.amount.quote - размер сделки в котируемой валюте

  • data.price - цена базовой валюты в котируемой

  • data.date - дата совершения сделки

  • data.side - тип сделки sell или buy определяется по типу более нового ордера

  • maxCount - максимальное колличество записей, которое может вернуть сервер (фактическое колличество может быть меньше)

Работа с собственными ордерами

GET /api/market/v1/private/:userId/orders/:orderId

Получение описания собственного ордера

{
  id: ...,
  pair: ...,
  isActive: ...,
  offerType: ...,
  amount: {
    origin: ...,
    matched: ...,
    rest: ...
  },
  price: ...,
  fee: ...,
  status: ...,
  created: ...
}
  • id - идентификатор ордера

  • pair - идентификатор валютной пары

  • isActive - булев признак того, что ордер активен

  • status - описание статус обработки ордера

  • offerType - тип ордера, возможные варианты: bid или ask

  • price - цена базовой валюты в котируемой

  • amount - описание размера ордера в базовой валюте

  • amount.origin - размер, указанный при создании ордера

  • amount.matched - суммарный размер сделок, совершённых по ордеру

  • amount.rest - сколько осталось до закрытия ордера

DELETE /api/market/v1/private/:userId/orders/:orderId

Отмена ордера.

GET /api/market/v1/private/:userId/orders/?pair=:pair&limit=:limit&skip=:skip

  • pair - идентификатор валютной пары

  • limit - ограничение на количество возвращаемых записей

  • skip - количество записей, которые необходимо пропустить

Получение списка собственных ордеров. Формат ответа:

{
  data: [
    {
      ...
    }
  ],
  total: ...
}
  • data - список описаний ордеров, в формате совпадающем с форматом ответа маршрута GET /api/market/v1/private/:userId/orders/:orderId

  • total - общее количество ордеров, удовлетворяющих условиям фильтрации

POST /api/market/v1/private/:userId/orders/

Создание нового ордера.

Формат запроса:

{
  pair: ...,
  offerType: ...,
  amount: ...,
  price: ...
}
  • pair - идентификатор валютной пары

  • offerType - тип ордера, возможные варианты: bid или ask

  • price - цена базовой валюты в котируемой

  • amount - описание размера ордера в базовой валюте

Формат ответа совпадает с форматом ответа маршрута GET /api/market/v1/private/:userId/orders/:orderId.

POST /api/market/v1/private/:userId/orders/idle

Позволяет оценить результат создание ордера без его фактического создания.

Формат запроса совпадает с форматом запроса маршрута POST /api/market/v1/private/:userId/orders/.

Формат ответа совпадает с форматом ответа маршрута GET /api/market/v1/private/:userId/orders/:orderId за исключением поля id, которое не может быть определено.

GET /api/market/v1/private/:userId/trades/?orderId=:orderId&pair=:pair&limit=:limit&skip=:skip

Получение истории собственных сделок. Возможные параметры запроса:

  • orderId - идентификатор ордера

  • pair - идентификатор валютной пары

  • limit - ограничение на количество возвращаемых записей

  • skip - количество записей, которые необходимо пропустить

Формат ответа:

{
  data: [
    {
      id: ...,
      pair: ...,
      action: ...,
      amount: {
         base: ...,
         quote: ...
      },
      price: ...,
      date: ...,
      side: ...,
      fee: ...
    }
  ],
  total: ...
}
  • data - массив описаний совершенных сделок

  • data.id - идентификатор сделки

  • data.pair - идентификатор валютной пары

  • data.action - тип действия, возможные варианты: bid или ask

  • data.amount - описание размера сделки

  • data.amount.base - размер сделки в базовой валюте

  • data.amount.quote - размер сделки в котируемой валюте

  • data.price - цена базовой валюты в котируемой

  • data.date - дата совершения сделки

  • data.side - тип сделки sell или buy определяется по типу более нового ордера

  • data.fee - размер комиссии по сделке. Комиссия всегда указывается в той валюте, которую получил пользователь в результате проведения сделки

  • total - общее количество ордеров, удовлетворяющих условиям фильтрации

Статистика

GET /api/market/v1/public/stats/candlestick/:pair?after=:after&before=:before&width=:width

Получение данных для отображения "японских свечей".

Параметры запроса:

  • pair - идентификатор валютной пары

  • after - ограничение по времени снизу на запрашиваемые данные.

  • before - ограничение по времени сверху на запрашиваемые данные, значение по-умолчанию - текущий момент

  • width - ширина интервала, возможные значения: 1h (один час), 1d (один день). В будущем возможно добавление других значений (см. binance). Значение по умолчанию - 1h.

В случае, когда количество запрашиваемых свеч ((before - after)/width) больше 200 (любой разумной цифры, записанной в конфигурационном файле) - возвращать ошибку 400 Bad Request.

Значения after и before должны округляться в меньшую и большую сторону соответственно по границам интервалов. Например, если в запросе width=1h, а after=19:10 (на самом деле в запросе будет unix-time), то в качестве первой "свечи" необходимо возвращать ту, которая начинается в 19:00.

Формат ответа:

[
  {
    date: ...,
    price: {
      open: ...,
      close: ...,
      high: ...,
      low: ...
    },
    volume: {
      base: ...,
      quote: ...
    }
  },
  ...
]

В массиве находиться список описаний "свечей" со следующими полями:

  • date - дата "создания свечи", начало интервала времени, соответствующего данной свече

  • price - данные о цене базовой валюты в котируемой в течении интервала

  • price.open - в начале интервала

  • price.close - в конце интервала

  • price.hight - максимум за интервал

  • price.low - минимум за интервал

  • volume - данные об обороте за интервал

  • volume.base - в базовой валюте

  • volume.quote - в котируемой валюте

You can’t perform that action at this time.