Аутентификация
Как передать токен с запросом, что он разрешает и что делать, если запрос отклонён.
Каждый запрос несёт токен терминала. Токен разрешает всё, что может окно терминала, включая постановку заявок.
Передать токен
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 и не localhost | 403 forbidden | Использовать 127.0.0.1 |
| У токена нет права этого вызова | 403 forbidden_scope | Проверить meta().scopes и обновить терминал |
Клиенты выбрасывают ApiError с тем же кодом. Все коды есть в разделе
Ошибки.
Заменить токен
Нажмите Перевыпустить токен в Settings App → Общие → Local API.
Прежний токен перестаёт работать сразу: запросы получают 401, а открытые
стримы закрываются с кодом 1001.
У терминала один токен, поэтому новый токен нужен каждой программе, которая работает с API.
Беречь токен
Храните токен в окружении программы, которой он нужен, или в хранилище секретов. Не держите его в исходном коде, в закоммиченных конфигах и в чатах. Если токен утёк, перевыпустите его.
API никогда не возвращает ключи бирж, даже в замаскированном виде.