# Проверка runtime OpenAPI ## Назначение Проверка сравнивает OpenAPI, сформированный настроенным backend-приложением, с описанием API, на котором основан frontend. Backend остаётся единственным источником исполняемого HTTP-контракта; frontend-клиент является производным. Причины выбора описаны в [ADR 002](../adr/002-nest-generated-openapi-contract.md). Эта проверка подтверждает согласованность публичного контракта, но не заменяет проверки каждого приложения и наблюдаемого HTTP-поведения. ## Выбор и направление изменения Изменением контракта считается изменение маршрута, входного или выходного поля, статуса либо формы ошибки. Внутреннее изменение представления без изменения API не требует нового описания контракта. Направление согласования: публичный API backend → OpenAPI → производное описание и типизированный клиент frontend. Две независимо редактируемые версии контракта создавали бы риск расхождения. Перед изменением, влияющим на совместимость, учитываются существующие потребители и сохранность данных. Семантика запросов и ошибок описана в [HTTP API](../architecture/http-api.md). ## Границы и результат Сравнение выполняется на границе настроенного приложения, нормализует порядок ключей JSON-объектов и сохраняет порядок массивов. Оно не обновляет сравниваемые описания и клиент автоматически и не обращается к T-Bank или другим внешним источникам. Несовпадение указывает на рассогласование контракта. Равенство схем не доказывает фактическую работу валидации, авторизации, статусов, cookie и обработки ошибок: для этого нужны наблюдения полного HTTP-потока. Согласованность описаний и функциональная корректность — разные доказательства. ## Ограничение e2e Сравнение OpenAPI не запускает сквозные проверки с миграциями базы. Известная ошибка движка миграций и условие пересмотра описаны в [сквозной проверке](verification.md#известное-ограничение-сквозной-проверки).