**Language / Язык:** [English](../api-versions.md) | [Русский](api-versions.md) # Версии API (PVE 6–9) Симулятор поставляет авторитетные импортированные контракты для четырёх мажорных версий Proxmox VE. Покрытие реестра обработчиков **100% проверено** для каждой: | Мажор | Исходная версия | Объявленных методов | Покрытие обработчиками | |---|---|---:|---:| | 6 | 6.4-15 | 504 | 100% | | 7 | 7.4-16 | 540 | 100% | | 8 | 8.4.5 | 605 | 100% | | 9 | 9.2.3 | 675 | 100% | Более старые мажорные версии переиспользуют текущие семантические обработчики плюс синонимы путей, зарегистрированные в `app/handlers/legacy_aliases.py` (например, исторические написания путей Ceph и backup). ## Холодный старт Задайте `CONTRACT_SNAPSHOT` путь к нормализованному снимку. Docker Compose по умолчанию закрепляет встроенную ревизию PVE **9.2.3**. `GET /api2/json/version` возвращает поля, производные от `source_version` **активного** снимка. ## Горячая замена (runtime) Просмотрите любой мажор в каталоге Web UI, затем **Apply as runtime**, или вызовите: ```http POST /ui/api/contract/apply?major=7 ``` Эффекты: - Маршруты `/api2/json` и `/api2/extjs` в памяти заменяются под блокировкой приложения. - `/version`, OpenAPI, метаданные реализации и состояние совместимости обновляются для нового мажора. - Изменение **локально для процесса** и **не сохраняется**. - Перезапуск восстанавливает `CONTRACT_SNAPSHOT`. Просмотр каталога (`GET /ui/api/catalog?major=N`) **сам по себе** не меняет runtime; меняет только apply. ### Рекомендации для клиентов - Явно закрепляйте мажор в CI (env холодного старта **или** apply + проверка `/version` перед набором тестов). - Горячая замена на лету может инвалидировать предположения клиента о схемах и путях — избегайте во время длинных прогонов Terraform/Ansible, если прогон не владеет переключением. - После apply перепроверьте `/admin/compatibility` для активного runtime. ## Режимы fallback `CONTRACT_FALLBACK` управляет поведением для необъявленных обработчиков: | Значение | Поведение | |---|---| | `error` (по умолчанию) | HTTP 501 с явным сообщением в стиле pending-handler | | `schema-default` | Синтез возвращаемого значения из схемы контракта | | `fixture` | Только fixture-данные, встроенные в контракт метода | При полном покрытии обработчиков активного контракта объявленные методы не должны попадать в fallback. Оставляйте `error`, чтобы регрессии оставались видимыми. ## Evidence vs реестр **Покрытие реестра** означает, что у каждого объявленного метода зарегистрирован семантический обработчик (нет систематического 501 для этого контракта). **Verified** в смысле этого проекта — мажорные версии прогоняются через наборы совместимости и автоматизацию на наличие обработчиков для 6–9. Многомерный evidence JSON может со временем расширяться для более глубоких edge-case заявлений; предпочитайте живой `/admin/compatibility`, когда процесс запущен. См. [Совместимость](compatibility.md).