Job YAML schema

Машинный чертёж: schemas/job.schema.json (JSON Schema 2020-12). Документ человекочитаемого формата остаётся каноничным в docs/reference/job-format-v1.md.

Согласованность с валидацией

Coverage status

JSON Schema сейчас — skeleton. Он покрывает базовую структуру и ряд foundation-полей, но не гарантирует полную эквивалентность Go-валидации.

Full schema validation CI is planned for 0.18.1.

Ключевые узлы

Узел Описание
metadata.job_id Уникальный идентификатор job (slug).
metadata.job_uid Не задавать в submit — только read-only в ответах API.
metadata.labels Рекомендуемое место для tenant/project/env до появления first-class полей.
spec.operation {type, strategy} — в v1 исполняется только backup + full по сути.
spec.repository single_artifact / iobackup исполняется; прочие комбинации — reserved.
spec.resources / spec.concurrency / spec.conditions Foundation — см. docs/reference/job-format-v1.md.
spec.policies retention, verify, encryption, validation, immutability, …
spec.logging / spec.data Classification / redaction hints (0.17-fix.50).
spec.notifications.webhooks[].payload Поля format/template — reserved/future.
spec.tasks[] task_id, required, resources, source/destination, hooks (feature gate).
policies.retention Поддерживает dry_run, keep_days/keep_last, см. docs/features/retention/retention-behavior.md.
policies.verify after_run, limit_per_task.
notifications.webhooks Проверка конфликтующих секретов в auth-блоке (job/validate_secrets.go).

Примеры

Регенерация примеров: любой YAML из examples/*.yaml (кроме future/) должен проходить iobackupctl job validate при подготовке CI в будущем.