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

Покрытие API и deprecation

Swagger/OpenAPI-файлы в docs/avito/api/ считаются upstream source of truth. docs/avito/inventory.md связывает каждую HTTP-операцию с доменным объектом SDK, публичным методом, типами запроса/ответа и deprecation metadata.

flowchart LR
    spec[docs/avito/api/*.json] --> sync[check_spec_inventory_sync.py]
    inventory[docs/avito/inventory.md] --> sync
    inventory --> coverage[check_inventory_coverage.py]
    inventory --> reference[Generated reference]
    sdk[avito/* public API] --> coverage

Почему нужны оба источника

OpenAPI описывает upstream API. Inventory описывает, где эта операция живёт в SDK. Если операция есть в spec, но отсутствует в inventory, пользователь не найдёт её в SDK. Если операция есть в inventory, но отсутствует в spec, inventory устарел или описывает неподтверждённый контракт.

Deprecated metadata

Для deprecated-операций inventory хранит deprecated_since, replacement и removal_version. Эти поля нужны сразу в трёх местах: runtime DeprecationWarning, reference warning и changelog/release notes.

Deprecated-страница в reference не заменяет runtime warning. Если символ устарел, пользователь должен получить предупреждение при вызове, а не только при чтении сайта.

Гейты

check_spec_inventory_sync.py сверяет operation-level coverage: документ, раздел, HTTP method и path. check_inventory_coverage.py сверяет связь inventory с публичной SDK-поверхностью и sanity deprecation-полей.

Страница для пользователя: покрытие API. Карта операций: operations reference.