Контракты
API и ошибки
Внешний доступ проверяется до предметной операции.
Contracts: packages/contracts/proto; generated clients создаются штатным генератором. Public HTTP/Connect требует policy соответствующего метода, bearer/ownership для закрытого доступа, payload validation и idempotency для действий.
Feature: Внешняя финансовая команда ledger
Scenario: Внешняя финансовая команда ledger
Given запрос пришел по public Connect
When участник вызывает CreateOperation
Then возвращается PermissionDenied
And internal Kafka не становится публичным обходом| Класс результата | Действие клиента |
|---|---|
| Unauthenticated | Восстановить легитимную сессию |
| PermissionDenied | Не повторять с чужим actor; проверить роль/основание |
| InvalidArgument | Исправить данные |
| ResourceExhausted/429 | Соблюдать Retry-After, не менять XFF ради обхода |
| Unavailable/timeout | Проверить прежнюю операцию до нового idempotencyKey |
| Pending | Следить за той же operation, не объявлять success |
Internal Kafka не защищен public bearer автоматически; его security boundary — сеть, topics, schema и доверенная identity источника. Подпись.