Error codes (machine-readable)

В IOBackup клиенты (Panel Lite/CLI) должны опираться на error.code, а не на message.

Правила

Категории (0.17-fix.50)

JOB_*
VALIDATION_*
PROVIDER_*
SOURCE_*
DESTINATION_*
MANIFEST_*
ARTIFACT_*
RETENTION_*
VERIFY_*
HOOK_*
ENCRYPTION_*
STORAGE_*
SECURITY_*
TIMEOUT_*
CANCELLED_*
CONCURRENCY_*
CAPABILITY_*
CONFIG_*
AGENT_*
AUDIT_*
EXPORT_*
WEBHOOK_*
METADATA_*
FEATURE_UNSUPPORTED
METADATA_COMPACT_REQUIRES_OFFLINE

Central readiness warnings / codes (v0.50.8+, model + docs)

These appear in payloads, future structured events, or command error_code fields (not all are distinct HTTP error.code values today):

Audit event type strings (future emitters): server.sync.failed, server.sync.backpressure, config.received, config.applied, config.rejected, command.received, command.claimed, command.completed, command.failed, command.duplicate, enrollment.state_changed, agent.disabled_by_server, facts.refreshed, capabilities.refreshed — see internal/controlplane/audit_events.go and docs/features/central-agent/central-agent-foundation.md.

CLI process exit codes (iobackupctl, v0.52+)

These are Unix exit statuses, not the same as HTTP error.code strings:

See docs/reference/cli-standards.md.

Feature gates (0.17-fix.70)

Metadata maintenance (0.17-fix.60)

Примеры:

Пример

{
  "error": {
    "code": "CONCURRENCY_LOCKED",
    "message": "job is already running or locked",
    "details": {
      "lock_key": "***REDACTED***",
      "owner_run_id": "run_01J..."
    }
  }
}