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

Аутентификация

Как передать токен с запросом, что он разрешает и что делать, если запрос отклонён.

Каждый запрос несёт токен терминала. Токен разрешает всё, что может окно терминала, включая постановку заявок.

Передать токен

curl -H "Authorization: Bearer $SPECTRE_LOCAL_API_TOKEN" http://127.0.0.1:48180/v1/meta

Токен — это spt_ и 64 шестнадцатеричных символа. Он передаётся только в заголовке Authorization: Bearer: и в HTTP-запросах, и в рукопожатии WebSocket. Токен в URL не принимается.

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

Узнать, что разрешает токен

meta = terminal.meta()
print(meta.scopes)

Вызову нужно право своего раздела, и у токена есть все права. Отдельного переключателя для торговли нет: переключатель Local API — единственный.

ПравоЧто разрешает
market:readЧитать рыночные данные. Открывать стрим.
connections:readЧитать подключения.
account:readЧитать заявки, позиции, балансы, исполнения и плечо.
trading:writeСтавить и снимать заявки и триггерные заявки. Закрывать позиции. Задавать плечо и режим маржи.
workspace:readЧитать раскладку.
workspace:writeОткрывать, закрывать и выбирать стеки, вкладки и окна.
settings:readЧитать настройки.
settings:writeМенять настройки.

Право на чтение покрывает и топики стрима своего раздела. meta() и health() работают с любым действующим токеном. Более старый терминал перечисляет только те права, которые у него есть.

Когда запрос отклонён

Что происходитЧто вы получитеЧто делать
Токена нет, токен неверный или API выключен401 unauthorizedСкопировать текущий токен и проверить, что API включён
В запросе есть заголовок Origin, как у страниц браузера403 forbiddenВызывать из скрипта или программы
Адрес — не 127.0.0.1 и не localhost403 forbiddenИспользовать 127.0.0.1
У токена нет права этого вызова403 forbidden_scopeПроверить meta().scopes и обновить терминал

Клиенты выбрасывают ApiError с тем же кодом. Все коды есть в разделе Ошибки.

Заменить токен

Нажмите Перевыпустить токен в Settings App → Общие → Local API. Прежний токен перестаёт работать сразу: запросы получают 401, а открытые стримы закрываются с кодом 1001.

У терминала один токен, поэтому новый токен нужен каждой программе, которая работает с API.

Беречь токен

Храните токен в окружении программы, которой он нужен, или в хранилище секретов. Не держите его в исходном коде, в закоммиченных конфигах и в чатах. Если токен утёк, перевыпустите его.

API никогда не возвращает ключи бирж, даже в замаскированном виде.

На этой странице