{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Syncpoint Template",
  "description": "Provisioning template for syncpoint",
  "type": "object",
  "required": ["name", "steps"],
  "properties": {
    "name": {
      "type": "string",
      "description": "Template name.",
      "minLength": 1
    },
    "description": {
      "type": "string",
      "description": "Template description."
    },
    "backup": {
      "type": "string",
      "description": "Backup name to restore automatically after provisioning."
    },
    "sudo": {
      "type": "boolean",
      "description": "Whether sudo privilege is required. If true, requests sudo authentication before execution."
    },
    "steps": {
      "type": "array",
      "description": "List of provisioning steps. At least 1 step required.",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["name", "command"],
        "properties": {
          "name": {
            "type": "string",
            "description": "Step name.",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "Step description."
          },
          "command": {
            "type": "string",
            "description": "Shell command to execute.",
            "minLength": 1
          },
          "skip_if": {
            "type": "string",
            "description": "Skip this step if this command exits with code 0."
          },
          "continue_on_error": {
            "type": "boolean",
            "description": "Continue to next step even if this fails. Default: false."
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
