3.2 KiB
Подключение T-Bank
Авторизованный пользователь управляет одним подключением к T-Bank Invest в настройках. Токен вводится только в поле пароля, отправляется в backend для проверки и больше не отображается.
sequenceDiagram
participant F as Frontend
participant B as Backend
participant T as T-Bank gRPC
participant D as SQLite
F->>B: PUT /api/v1/tbank-connection (Bearer, token)
B->>T: GetAccounts(OPEN) over TLS
T-->>B: счета или ошибка проверки
B->>D: сохранить шифротекст AES-256-GCM
B-->>F: { connected, connectedAt }
API
GET /api/v1/tbank-connectionвозвращает{ connected: false, connectedAt: null }или статус подключенного аккаунта.PUT /api/v1/tbank-connectionпринимает{ token }, проверяет его черезGetAccountsи создает или заменяет подключение.DELETE /api/v1/tbank-connectionидемпотентен и возвращает204.connectedAt- метка времени RFC 3339 в UTC. Ответы и ошибки API никогда не содержат токен.
INVALID_TBANK_TOKEN означает, что T-Bank отклонил аутентификацию или права доступа. TBANK_UNAVAILABLE означает временную ошибку, превышение лимита, ожидание в очереди или другую ошибку внешнего сервиса.
Configuration and limits
TOKEN_ENCRYPTION_KEY- закодированный в base64 32-байтный ключ AES-256-GCM; обязателен при запуске.TBANK_GRPC_ENDPOINTпо умолчанию имеет значениеinvest-public-api.tbank.ru:443.TBANK_RATE_LIMIT_PER_SECONDпо умолчанию имеет значение5.TBANK_CA_CERT_PATH- необязательный путь к корневому CA-сертификату PEM для сетей с TLS-инспекцией; проверка TLS остается включенной.
FIFO-ограничитель на экземпляр запускает не более 5 запросов в секунду и принимает не более 50 ожидающих вызовов. Для UNAVAILABLE, DEADLINE_EXCEEDED и RESOURCE_EXHAUSTED выполняется одна повторная попытка через секунду. Deadline каждой попытки - 10 секунд.
MVP limits
Реализована только проверка токена. Счета, портфели, кэш метаданных инструментов, ротация ключа, распределенное ограничение запросов и сериализация параллельного обновления подключения отложены. Вендорные protobuf-контракты взяты из references/moex-vibe; при необходимости обновляйте их вручную по официальной документации T-Bank Invest API.