Машинный чертёж: schemas/job.schema.json (JSON Schema
2020-12). Документ человекочитаемого формата остаётся каноничным в
docs/reference/job-format-v1.md.
POST /api/v1/jobs/validate и CLI
iobackupctl job validate используют
Go-валидацию (job.Validate,
job.ValidateStrict, preflight.Run) — это
источник истины для полей, которые JSON Schema пока описывает
частично.JSON Schema сейчас — skeleton. Он покрывает базовую структуру и ряд foundation-полей, но не гарантирует полную эквивалентность Go-валидации.
metadata.job_id,
metadata.labels, spec.operation,
spec.tasks[].task_id, базовая структура
source/destination,
destination.write_policy.spec.resources, spec.concurrency,
spec.conditions, spec.logging,
spec.data,
spec.notifications.webhooks[].policy — схема допускает
широкий формат, точные правила задаёт
job.Validate/ValidateStrict.source.type=filesystem_incremental,
spec.operation.strategy != full,
spec.repository content-addressed модели,
hooks/encryption/immutability enforcement — см.
docs/internal/roadmap/status-matrix.md.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). |
examples/*.yaml (без
metadata.job_uid).examples/future/* —
не использовать для job submit без правок;
ожидайте коды SOURCE_UNSUPPORTED /
HOOKS_UNSUPPORTED / …Регенерация примеров: любой YAML из examples/*.yaml
(кроме future/) должен проходить
iobackupctl job validate при подготовке CI в будущем.