Перейти к основному содержимому

Частые вопросы и ответы

подсказка

Вопроса нет в списке или информация кажется неполной? Свяжитесь с нами в Telegram!

Общие вопросы

API доступно для всех?

В первую очередь API предназначено для клиентов торговой системы АЛОР Брокер, в связи с чем запросы к нему требуют авторизации от имени определённого торгового аккаунта. Если Вы не являетесь клиентом Брокера, мы можем предоставить доступ к Тестовому контуру системы, на котором можно проверить возможности API в симуляционной среде. Кроме того, часть запросов к Боевому контуру системы допускает выполнение без авторизации, но в ответ система будет возвращать информацию, бывшую актуальной 15 минут назад.

Я вижу операции от моего имени, которые я не выполнял. Что происходит?

Наиболее вероятной причиной является получение третьими лицами доступа к Вашим авторизационным токенам. В таком случае рекомендуем:

  • Отозвать все ранее выписанные Refresh токены, чтобы прервать текущий доступ к торговой системе от Вашего имени

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

  • Сменить пароль от учётной записи клиента АЛОР Брокер, чтобы исключить возможность привязки Вашего торгового аккаунта к сторонней учётной записи разработчика

Также рекомендуем усилить общие меры безопасности в отношении конфиденциальных данных во избежание повторной утечки.

Третьи лица получили доступ к моим токенам. Что делать?

Механизм авторизации предполагает возможность отзыва токенов, бывших скомпрометированными или утративших применение. При этом отозвать можно только Refresh токен. Если был скомпрометирован Access токен, для его блокировки потребуется отозвать Refresh токен, использовавшийся при создании. Если достоверно неизвестно, какой из токенов был скомпрометирован, рекомендуем отозвать все токены и создать новые после принятия мер по повышению безопасности конфиденциальных данных.


Авторизация

Как авторизуются запросы?

Для авторизации выполняемых запросов доступны два механизма:

  • Для клиентов торговой системы, отправляющих запросы от своего имени напрямую к API, доступен ручной механизм получения Refresh и Access токенов JWT: Механизм авторизации, предназначенный для пользователей, взаимодействующих с API напрямую. При использовании этого механизма необходимо самостоятельно запрашивать актуальные Refresh и Access токены, используемые в запросах для подтверждения прав доступа к ресурсам

  • OAuth 2.0: Механизм авторизации, предназначенный для подключения сторонних приложений, через которые пользователи будут от своего имени взаимодействовать с API торговой системы. В подключаемом приложении должен быть предусмотрен механизм передачи пользовательских авторизационных данных сервису OAuth для подтверждения прав доступа к ресурсам

При этом оба механизма авторизации используют информацию о задействованном торговом аккаунте, от имени которого выполняются запросы к API

Сколько авторизационных токенов можно создать одновременно?

Со стороны системы нет ограничений по количеству одновременно активных Refresh и Access токенов. Тем не менее, при использовании системы авторизации рекомендуется руководствоваться принципами добросовестного использования системы и не допускать действий, способных нарушить работоспособность системы.

Например, при выполнении множества операций с API ежесекундно не стоит запрашивать новый Access токен для каждой из них. Вместо этого рекомендуем использовать один экземпляр Access токена, обновляемый за несколько минут до истечения его срока действия.

Какой у токенов срок жизни? Они бессрочны?

Из соображений безопасности срок жизни токенов ограничен:

  • Для выписываемого Refresh токена — 1 год

  • Для Access токена — 30 минут

Как настроить права доступа к API для токенов?

При авторизации запросов с помощью механизма JWT нет возможности настроить права доступа — держатель токена всегда имеет полный доступ к API системы.

Ограничить права доступа возможно только для приложений, подключаемых к сервису авторизации OAuth 2.0. При этом заданные настройки будут распространяться на всех пользователей приложения.


Контуры системы

Какие контуры системы доступны?

В торговой системе АЛОР Брокер пользователям доступны два эксплуатационных контура:

  • Боевой контур — среда промышенной эксплуатации системы, предоставляющая доступ к реальным биржевым данным и использующая настоящие портфели и позиции в них. Этот контур предназначен для работы с биржами и заключения настоящих сделок.

  • Тестовый контур — среда опытной эксплуатации системы, использующая в своей работе симуляционные данные и игровые портфели. Задача этого контура — предоставить пользователям площадку для тестирования запросов к API и основанного на них кода приложений.

Как получить доступ к нужному контуру?

Чтобы получить доступ к Боевому контуру, необходимо быть клиентом торговой системы АЛОР Брокер и ознакомиться со способами получения авторизационных токенов. В этом может помочь руководство по быстрому старту для Боевого контура.

Для Тестового контура тоже существует руководство по быстрому старту. Разница в том, что для работы с этим контуром не обязательно быть клиентом торговой системы, достаточно запросить тестовый торговый аккаунт, от имени которого будет выполняться авторизация выполняемых запросов.

Не могу выставить заявку на тестовом контуре, хотя торги на бирже открыты. В чём дело?

Тестовый контур работает по собственному расписанию торгов, которое может отличаться от настоящего расписания биржи. Кроме того, некоторые функции тестового контура могут быть недоступны в связи с проводимыми работами. Повторите отправку запроса позднее.

Я вчера активно торговал в тестовом контуре, а сегодня все мои заявки и сделки пропали! Что происходит?

Так и должно быть.

Тестовый контур представляет собой симуляционную среду, предназначенную для тестирования API. При начале нового торгового дня все предыдущие результаты аннулируются, давая возможность продолжить тесты.


Работа с HTTP API

Можно ли использовать HTTP API без авторизации?

Ряд запросов можно выполнить без авторизации, однако их приоритет в обработке будет ниже в сравнении с авторизованными запросами. Кроме того, в ответ на неавторизованный запрос сервер возвращает данные, бывшие актуальными 15 минут назад.

Сколько запросов можно выполнить за одну минуту?

Со стороны системы нет каких-либо определённых ограничений на количество одновременно выполняемых запросов.

Тем не менее, при отправке запросов стоит учитывать принципы добросовестного использования и не допускать действий, способных нарушить работу торговой системы или повлиять на других клиентов Брокера. К таким действиям относятся:

  • Частое (несколько раз в секунду) выполнение запросов на получение больших объёмов данных

  • Частое (несколько раз в секунду) выполнение дублирующих друг друга однотипных запросов

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

предупреждение

В случае обнаружения признаков недобросовестного использования Брокер оставляет за собой право временно приостановить обработку запросов от допустившего нежелательные действия пользователя до выяснения обстоятельств и устранения причин произошедшего.


Работа с WebSocket API

Можно ли использовать WebSocket API без авторизации?

Нет. Все запросы, выполняемые к WebSocket API, должны быть авторизованы. Если у Вас нет возможности или желания использовать торговый аккаунт с настоящими портфелями и позициями, Вы можете запросить тестовый торговый аккаунт для доступа к симуляционной среде Тестового контура.

Как авторизуются запросы к WebSocket API?

Как и с запросами к HTTP API, авторизация WebSocket запросов осуществляется путём передачи системе актуального Access токена. Способ передачи зависит от используемого интерфейса:

  • Для интерфейса /ws Access токен указывается в каждом отправляемом запросе в качестве значения параметра token в теле сообщения

  • Для интерфейса /cws авторизация выполняется отдельным запросом с кодом операции authorize и Access токеном в качестве значения параметра token в теле сообщения

Таким образом, для интерфейса /ws авторизация происходит для каждого запроса отдельно, тогда как для интерфейса /cws авторизуется само соединение, за счёт чего все последующие запросы также считаются авторизованными.

Время действия авторизации

Из соображений безопасности время жизни Access токена ограничено и составляет 30 минут с момента создания. По истечении этого времени любой запрос, использующий токен с истёкшим сроком, будет считаться неавторизованным. Это же относится и к запросам, выполняемым через интерфейс /cws — после истечения срока действия токена соединение остаётся активным, но перестаёт считаться авторизованным. Чтобы вновь авторизовать соединение, повторите запрос с кодом операции authorize и новым Access токеном.

Сколько соединений можно установить одновременно?

Со стороны системы нет каких-либо определённых ограничений на количество одновременно активных соединений.

Тем не менее, при создании новых соединений стоит учитывать принципы добросовестного использования и не допускать действий, способных нарушить работу торговой системы или повлиять на других клиентов Брокера. Из соображений добросовестного использования рекомендуется ограничить количество соединений до следующих значений:

  • До 10 соединений для управления подписками на получение биржевой информации

  • До 1 соединения для управления заявками

предупреждение

В случае обнаружения признаков недобросовестного использования Брокер оставляет за собой право временно приостановить обработку запросов от допустившего нежелательные действия пользователя до выяснения обстоятельств и устранения причин произошедшего.

Сколько подписок можно создать в рамках одного соединения? Одно соединение — одна подписка?

Со стороны системы нет каких-либо определённых ограничений на количество подписок, действующих в рамках одного соединения.

При этом стоит учитывать, что со стороны API для каждого соединения существует ограничение размера буфера необработанных сообщений в размере 5000 записей. Когда ПО, установившее соединение с торговой системой, не успевает обрабатывать получаемые сообщения и буфер переполняется, соединение будет разорвано по инициативе системы и пользователю будет временно (от нескольких минут до двух часов) ограничена возможность создания новых подписок.

Рекомендуем предусмотреть в используемом ПО механизмы переподключения, переподписки и оперативной записи поступающих сообщений в собственное хранилище перед передачей их на последующую обработку.

Что происходит с подписками при разрыве соединения? Восстановятся ли они после создания нового соединения?

При разрыве соединения все установленные в рамках него подписки отменяются и их придётся восстанавливать вручную.

Можно ли перенести подписку из одного соединения в другое?

Зависит от того, что подразумевается под переносом.

Каждое WebSocket-соединение представляет собой отдельный сеанс обмена данными, изолированный от прочих аналогичных. Для одного WebSocket-соединения не существует подписок, действующих в рамках прочих аналогичных соединений.

Таким образом, если речь идёт о создании аналогичной подписки в новом соединении, то это возможно. Если же речь идёт именно о переносе подписки из одного соединения в другое (автоматическая отмена подписки в старом соединении и создание подписки с теми же параметрами в новом соединении), то такой сценарий не предусмотрен со стороны API и должен быть реализован в клиентском ПО.