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

Покрытие API и deprecation

Swagger/OpenAPI-файлы в docs/avito/api/ считаются upstream source of truth. Строгие проверки сначала обновляют этот каталог из публичного Avito developer portal, затем строят Swagger binding report через binding discovery на публичных SDK-методах. Справочник reference строится из публичной поверхности SDK, а страницы покрытия и карты операций генерируются из этого report.

flowchart LR
    spec[docs/avito/api/*.json] --> bindings[Swagger operation bindings]
    bindings --> sdk[avito/* public API]
    bindings --> report[Swagger binding report]
    report --> reference[Generated reference]
    sdk --> warnings[Runtime warnings]

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

OpenAPI описывает upstream API. Reference описывает публичный SDK-контракт, с которым работает пользователь. Если операция есть в spec, но отсутствует в публичной поверхности SDK, пользователь не найдёт её в документации и не сможет вызвать через фасад.

Deprecated metadata

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

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

Legacy policy

Operation-level deprecated: true в Swagger означает, что публичный SDK binding обязан иметь deprecated=True и legacy=True. Такой binding разрешён только для операции, которая действительно помечена deprecated в Swagger.

Для deprecated binding публичный метод SDK должен быть обёрнут через deprecated_method(...), чтобы при вызове был runtime DeprecationWarning с deprecated_since, replacement и removal_version. legacy=True для non-deprecated операции запрещён без отдельного allowlist-исключения с причиной и датой удаления.

Гейты

Публичная поверхность проверяется contract-тестами и сборкой reference-документации. make swagger-coverage скачивает свежие Swagger files, запускает strict binding validation и полный contract suite. Deprecated-символы должны сохранять runtime warning, а не только пометку в документации.

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

Подробная механика discovery, strict lint, JSON report и SwaggerFakeTransport описана в Swagger binding subsystem.