Перейти к содержанию

gRPC

Протокол взаимодействия

Вся работа с T-Invest API ведётся по протоколу gRPC.

Документация gRPC

Одна из ключевых особенностей протокола — bidirectional streaming. Это особый режим работы, при котором открывается одно стрим-соединение, в которое оба участника взаимодействия могут отправлять сообщения. Это позволяет более гибко и оперативно реализовать работу.

Например, bidirectional streaming сервиса котировок в одном и том же соединении принимает сообщения об изменении статуса подписки и предоставляет различные виды биржевой информации — стаканы, свечи, поток обезличенных сделок и другие.

Авторизация

Для успешной работы с T-Invest API нужно передавать токен доступа в metadata каждого запроса.

Формат заголовка — Authorization: Bearer [токен доступа].

Пример запроса: Authorization: Bearer t.QtEo8ahkNFX4RTpbqp0u4z4GDZq27HzUp6AotJASBx7_DVqmqZMHfM2Cy7JmUjS80boI9eVg

Адреса сервиса

  • Продовый контур — invest-public-api.tinkoff.ru:443.
  • Песочница — sandbox-invest-public-api.tinkoff.ru:443.

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

trackingId запросов

Заголовок x-tracking-id добавляется во все ответы unary-методов T-Invest API.

Это уникальный UUID запроса, который нужен технической поддержке для разбора инцидентов. При обращении в службу технической поддержки обязательно указывайте x-tracking-id запроса — это ускорит решение вашего вопроса.

В рамках stream-соединений для сообщений управления статусом подписки x-tracking-id передаётся в виде выходного параметра.

Полный текст ошибки

Если при вызове метода T-Invest API происходит ошибка, в ответе возвращается параметр message. В нём можно посмотреть полный текст описания ошибки.

В Kreya текст ошибки можно посмотреть на вкладке Header в поле message.

AppName запросов

В запросы к T-Invest API можно добавлять служебный заголовок x-app-name — он нужен для сбора статистики по используемым инструментам.

Если вы разработчик SDK, рекомендуем использовать AppName формата <Ник в GitHub>.<Название репозитория> — например, user.tinkoffSDK.

Рекомендации по тестированию методов

Для тестирования работы T-Invest API можно использовать любой доступный gRPC-клиент.

Ниже приведены краткие инструкции по настройке двух наиболее популярных клиентов — Kreya и BloomRPC, а также ссылка на гайд по настройке встроенного gRPC-клиента IntelliJ от энтузиаста.

Kreya

Бесплатный gRPC-клиент с широким набором функционала и возможностей.

Скачать клиент

  1. После установки и запуска приложения в меню выберите ProjectImporters.

  2. Нажмите New importer. Укажите название источника данных и его тип — gRPC proto files.

  3. Нажмите Add proto directory и укажите папку со скачанными proto-контрактами сервиса T-Invest API. Также можно нажать Add proto files и выбрать все proto-файлы из папки вручную.

    Скачать актуальную версию контрактов T-Invest API

    Важно

    T-Invest API использует google.api.field_behavior-нотацию к полям контрактов. Скачайте field_behavior.proto и сохраните его в папке <contracts_dir>\google\api, где <contracts_dir> — папка с контрактами T-Invest API.

  4. Сохраните изменения и нажмите Back.

  5. Слева нажмите на папку Tinkoff. Укажите endpoint сервиса — https://invest-public-api.tinkoff.ru:443.

    Остальные настройки заполните как на скриншоте. Обратите внимание на блок Metadata: в нём нужно указать заголовок Authorization, в значении которого передаётся строка Bearer <токен доступа>.

    Как получить токен доступа

После этого можно выполнять запросы к сервису.

В Kreya можно посмотреть служебные заголовки ответа сервера:

  • x-ratelimit-limit — текущий лимит пользователя по данному методу;

  • x-ratelimit-remaining — количество оставшихся запросов данного типа в минуту;

  • x-ratelimit-reset — время в секундах до обнуления счётчика запросов.

Обновление proto-контрактов

Чтобы получить доступ к новому функионалу, который появился после обновления версии, нужно актуализировать proto-контракты.

Для этого заново скачайте контракты, замените скачанные файлы в папке проекта и нажмите Run all importers в левом верхнем углу приложения. Убедитесь, что все proto-контракты имеют актуальную версию.

Не храните бекапы и копии контрактов в одной папке с актуальными.

Если вы получили ошибку The referenced gRPC method is not imported., убедитесь, что вы очистили проект в Kreya от прошлых загруженных контрактов. Всегда проверяйте путь до папки с загружаемыми контрактами, полное наличие всех proto-файлов и их соответствие актуальной версии T-Invest API. Изменение proto-файлов повлечет за собой ошибку их прочтения у gRPS-клиентов.

Встроенный gRPS-клиент IntelliJ

Инструкция — использование встроенного gRPC-клиента IntelliJ