{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/zarf-package-configuration/latest.json",
  "description": "ZarfPackage the top-level structure of a Zarf config file.",
  "x-lintel": {
    "source": "https://www.schemastore.org/zarf.json",
    "sourceSha256": "cf9b336bd7492f6a15369fc5ee8a212caac1123c27b3576d0fd3d81e313d8748",
    "fileMatch": [
      "**/zarf.yaml",
      "**/zarf.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "apiVersion": {
      "type": "string",
      "enum": [
        "zarf.dev/v1alpha1"
      ],
      "description": "The API version of the Zarf package."
    },
    "kind": {
      "type": "string",
      "enum": [
        "ZarfInitConfig",
        "ZarfPackageConfig"
      ],
      "description": "The kind of Zarf package.",
      "default": "ZarfPackageConfig"
    },
    "metadata": {
      "$ref": "#/$defs/ZarfMetadata",
      "description": "Package metadata."
    },
    "build": {
      "$ref": "#/$defs/ZarfBuildData",
      "description": "Zarf-generated package build data."
    },
    "components": {
      "items": {
        "$ref": "#/$defs/ZarfComponent"
      },
      "type": "array",
      "minItems": 1,
      "description": "List of components to deploy in this package."
    },
    "constants": {
      "items": {
        "$ref": "#/$defs/Constant"
      },
      "type": "array",
      "description": "Constant template values applied on deploy for K8s resources."
    },
    "variables": {
      "items": {
        "$ref": "#/$defs/InteractiveVariable"
      },
      "type": "array",
      "description": "Variable template values applied on deploy for K8s resources."
    }
  },
  "required": [
    "kind",
    "components"
  ],
  "patternProperties": {
    "^x-": {}
  },
  "$defs": {
    "Constant": {
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Z0-9_]+$",
          "description": "The name to be used for the constant"
        },
        "value": {
          "type": "string",
          "description": "The value to set for the constant during deploy"
        },
        "description": {
          "type": "string",
          "description": "A description of the constant to explain its purpose on package create or deploy confirmation prompts"
        },
        "autoIndent": {
          "type": "boolean",
          "description": "Whether to automatically indent the variable's value (if multiline) when templating. Based on the number of chars before the start of ###ZARF_CONST_."
        },
        "pattern": {
          "type": "string",
          "description": "An optional regex pattern that a constant value must match before a package can be created."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "description": "Constant are constants that can be used to dynamically template K8s resources or run in actions.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "DeprecatedZarfComponentScripts": {
      "properties": {
        "showOutput": {
          "type": "boolean",
          "description": "Show the output of the script during package deployment."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "Timeout in seconds for the script."
        },
        "retry": {
          "type": "boolean",
          "description": "Retry the script if it fails."
        },
        "prepare": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Scripts to run before the component is added during package create."
        },
        "before": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Scripts to run before the component is deployed."
        },
        "after": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Scripts to run after the component successfully deploys."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "DeprecatedZarfComponentScripts are scripts that run before or after a component is deployed.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "InteractiveVariable": {
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Z0-9_]+$",
          "description": "The name to be used for the variable"
        },
        "sensitive": {
          "type": "boolean",
          "description": "Whether to mark this variable as sensitive to not print it in the log"
        },
        "autoIndent": {
          "type": "boolean",
          "description": "Whether to automatically indent the variable's value (if multiline) when templating. Based on the number of chars before the start of ###ZARF_VAR_."
        },
        "pattern": {
          "type": "string",
          "description": "An optional regex pattern that a variable value must match before a package deployment can continue."
        },
        "type": {
          "type": "string",
          "enum": [
            "raw",
            "file"
          ],
          "description": "Changes the handling of a variable to load contents differently (i.e. from a file rather than as a raw variable - templated files should be kept below 1 MiB)"
        },
        "description": {
          "type": "string",
          "description": "A description of the variable to be used when prompting the user a value"
        },
        "default": {
          "type": "string",
          "description": "The default value to use for the variable"
        },
        "prompt": {
          "type": "boolean",
          "description": "Whether to prompt the user for input for this variable"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name"
      ],
      "description": "InteractiveVariable is a variable that can be used to prompt a user for more information",
      "patternProperties": {
        "^x-": {}
      }
    },
    "NamespacedObjectKindReference": {
      "properties": {
        "apiVersion": {
          "type": "string",
          "description": "API Version of the resource"
        },
        "kind": {
          "type": "string",
          "description": "Kind of the resource"
        },
        "namespace": {
          "type": "string",
          "description": "Namespace of the resource"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "apiVersion",
        "kind",
        "namespace",
        "name"
      ],
      "description": "NamespacedObjectKindReference is a reference to a specific resource in a namespace using its kind and API version.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "Shell": {
      "properties": {
        "windows": {
          "type": "string",
          "description": "(default 'powershell') Indicates a preference for the shell to use on Windows systems (note that choosing 'cmd' will turn off migrations like touch -> New-Item)",
          "examples": [
            "powershell",
            "cmd",
            "pwsh",
            "sh",
            "bash",
            "gsh"
          ]
        },
        "linux": {
          "type": "string",
          "description": "(default 'sh') Indicates a preference for the shell to use on Linux systems",
          "examples": [
            "sh",
            "bash",
            "fish",
            "zsh",
            "pwsh"
          ]
        },
        "darwin": {
          "type": "string",
          "description": "(default 'sh') Indicates a preference for the shell to use on macOS systems",
          "examples": [
            "sh",
            "bash",
            "fish",
            "zsh",
            "pwsh"
          ]
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "Shell represents the desired shell to use for a given command",
      "patternProperties": {
        "^x-": {}
      }
    },
    "Variable": {
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Z0-9_]+$",
          "description": "The name to be used for the variable"
        },
        "sensitive": {
          "type": "boolean",
          "description": "Whether to mark this variable as sensitive to not print it in the log"
        },
        "autoIndent": {
          "type": "boolean",
          "description": "Whether to automatically indent the variable's value (if multiline) when templating. Based on the number of chars before the start of ###ZARF_VAR_."
        },
        "pattern": {
          "type": "string",
          "description": "An optional regex pattern that a variable value must match before a package deployment can continue."
        },
        "type": {
          "type": "string",
          "enum": [
            "raw",
            "file"
          ],
          "description": "Changes the handling of a variable to load contents differently (i.e. from a file rather than as a raw variable - templated files should be kept below 1 MiB)"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name"
      ],
      "description": "Variable represents a variable that has a value set programmatically",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfBuildData": {
      "properties": {
        "terminal": {
          "type": "string",
          "description": "The machine name that created this package."
        },
        "user": {
          "type": "string",
          "description": "The username who created this package."
        },
        "architecture": {
          "type": "string",
          "description": "The architecture this package was created on."
        },
        "timestamp": {
          "type": "string",
          "description": "The timestamp when this package was created."
        },
        "version": {
          "type": "string",
          "description": "The version of Zarf used to build this package."
        },
        "migrations": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Any migrations that have been run on this package."
        },
        "registryOverrides": {
          "description": "Any registry domains that were overridden on package create when pulling images.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "differential": {
          "type": "boolean",
          "description": "Whether this package was created with differential components."
        },
        "differentialPackageVersion": {
          "type": "string",
          "description": "Version of a previously built package used as the basis for creating this differential package."
        },
        "differentialMissing": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of components that were not included in this package due to differential packaging."
        },
        "lastNonBreakingVersion": {
          "type": "string",
          "description": "The minimum version of Zarf that does not have breaking package structure changes."
        },
        "flavor": {
          "type": "string",
          "description": "The flavor of Zarf used to build this package."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "terminal",
        "user",
        "architecture",
        "timestamp",
        "version"
      ],
      "description": "ZarfBuildData is written during the packager.Create() operation to track details of the created package.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfChart": {
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the chart within Zarf; note that this must be unique and does not need to be the same as the name in the chart repo."
        },
        "version": {
          "type": "string",
          "description": "The version of the chart to deploy; for git-based charts this is also the tag of the git repo by default (when not using the '@' syntax for 'repos')."
        },
        "url": {
          "type": "string",
          "description": "The URL of the OCI registry, chart repository, or git repo where the helm chart is stored.",
          "examples": [
            "OCI registry: oci://ghcr.io/stefanprodan/charts/podinfo",
            "helm chart repo: https://stefanprodan.github.io/podinfo",
            "git repo: https://github.com/stefanprodan/podinfo (note the '@' syntax for 'repos' is supported here too)"
          ]
        },
        "repoName": {
          "type": "string",
          "description": "The name of a chart within a Helm repository (defaults to the Zarf name of the chart)."
        },
        "gitPath": {
          "type": "string",
          "description": "(git repo only) The sub directory to the chart within a git repo.",
          "examples": [
            "charts/your-chart"
          ]
        },
        "localPath": {
          "type": "string",
          "description": "The path to a local chart's folder or .tgz archive."
        },
        "namespace": {
          "type": "string",
          "description": "The namespace to deploy the chart to."
        },
        "releaseName": {
          "type": "string",
          "description": "The name of the Helm release to create (defaults to the Zarf name of the chart)."
        },
        "noWait": {
          "type": "boolean",
          "description": "Whether to not wait for chart resources to be ready before continuing."
        },
        "valuesFiles": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of local values file paths or remote URLs to include in the package; these will be merged together when deployed."
        },
        "variables": {
          "items": {
            "$ref": "#/$defs/ZarfChartVariable"
          },
          "type": "array",
          "description": "[alpha] List of variables to set in the Helm chart."
        },
        "schemaValidation": {
          "type": "boolean",
          "description": "Whether or not to validate the values.yaml schema, defaults to true. Necessary in the air-gap when the JSON Schema references resources on the internet."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name"
      ],
      "description": "ZarfChart defines a helm chart to be deployed.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfChartVariable": {
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Z0-9_]+$",
          "description": "The name of the variable."
        },
        "description": {
          "type": "string",
          "description": "A brief description of what the variable controls."
        },
        "path": {
          "type": "string",
          "description": "The path within the Helm chart values where this variable applies."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name",
        "description",
        "path"
      ],
      "description": "ZarfChartVariable represents a variable that can be set for a Helm chart overrides.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponent": {
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9\\-]*$",
          "description": "The name of the component."
        },
        "description": {
          "type": "string",
          "description": "Message to include during package deploy describing the purpose of this component."
        },
        "default": {
          "type": "boolean",
          "description": "Determines the default Y/N state for installing this component on package deploy."
        },
        "required": {
          "type": "boolean",
          "description": "Do not prompt user to install this component."
        },
        "only": {
          "$ref": "#/$defs/ZarfComponentOnlyTarget",
          "description": "Filter when this component is included in package creation or deployment."
        },
        "group": {
          "type": "string",
          "description": "[Deprecated] Create a user selector field based on all components in the same group. This will be removed in Zarf v1.0.0. Consider using 'only.flavor' instead."
        },
        "import": {
          "$ref": "#/$defs/ZarfComponentImport",
          "description": "Import a component from another Zarf package."
        },
        "manifests": {
          "items": {
            "$ref": "#/$defs/ZarfManifest"
          },
          "type": "array",
          "description": "Kubernetes manifests to be included in a generated Helm chart on package deploy."
        },
        "charts": {
          "items": {
            "$ref": "#/$defs/ZarfChart"
          },
          "type": "array",
          "description": "Helm charts to install during package deploy."
        },
        "dataInjections": {
          "items": {
            "$ref": "#/$defs/ZarfDataInjection"
          },
          "type": "array",
          "description": "Datasets to inject into a container in the target cluster."
        },
        "files": {
          "items": {
            "$ref": "#/$defs/ZarfFile"
          },
          "type": "array",
          "description": "Files or folders to place on disk during package deployment."
        },
        "images": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of OCI images to include in the package."
        },
        "repos": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of git repos to include in the package."
        },
        "scripts": {
          "$ref": "#/$defs/DeprecatedZarfComponentScripts",
          "description": "[Deprecated] (replaced by actions) Custom commands to run before or after package deployment. This will be removed in Zarf v1.0.0."
        },
        "actions": {
          "$ref": "#/$defs/ZarfComponentActions",
          "description": "Custom commands to run at various stages of a package lifecycle."
        },
        "healthChecks": {
          "items": {
            "$ref": "#/$defs/NamespacedObjectKindReference"
          },
          "type": "array",
          "description": "List of resources to health check after deployment"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name"
      ],
      "description": "ZarfComponent is the primary functional grouping of assets to deploy by Zarf.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentAction": {
      "properties": {
        "mute": {
          "type": "boolean",
          "description": "Hide the output of the command during package deployment (default false)."
        },
        "maxTotalSeconds": {
          "type": "integer",
          "description": "Timeout in seconds for the command (default to 0, no timeout for cmd actions and 300, 5 minutes for wait actions)."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Retry the command if it fails up to given number of times (default 0)."
        },
        "dir": {
          "type": "string",
          "description": "The working directory to run the command in (default is CWD)."
        },
        "env": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Additional environment variables to set for the command."
        },
        "cmd": {
          "type": "string",
          "description": "The command to run. Must specify either cmd or wait for the action to do anything."
        },
        "shell": {
          "$ref": "#/$defs/Shell",
          "description": "(cmd only) Indicates a preference for a shell for the provided cmd to be executed in on supported operating systems."
        },
        "setVariable": {
          "type": "string",
          "pattern": "^[A-Z0-9_]+$",
          "description": "[Deprecated] (replaced by setVariables) (onDeploy/cmd only) The name of a variable to update with the output of the command. This variable will be available to all remaining actions and components in the package. This will be removed in Zarf v1.0.0."
        },
        "setVariables": {
          "items": {
            "$ref": "#/$defs/Variable"
          },
          "type": "array",
          "description": "(onDeploy/cmd only) An array of variables to update with the output of the command. These variables will be available to all remaining actions and components in the package."
        },
        "description": {
          "type": "string",
          "description": "Description of the action to be displayed during package execution instead of the command."
        },
        "wait": {
          "$ref": "#/$defs/ZarfComponentActionWait",
          "description": "Wait for a condition to be met before continuing. Must specify either cmd or wait for the action. See the 'zarf tools wait-for' command for more info."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "ZarfComponentAction represents a single action to run during a zarf package operation.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentActionDefaults": {
      "properties": {
        "mute": {
          "type": "boolean",
          "description": "Hide the output of commands during execution (default false)."
        },
        "maxTotalSeconds": {
          "type": "integer",
          "description": "Default timeout in seconds for commands (default to 0, no timeout)."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Retry commands given number of times if they fail (default 0)."
        },
        "dir": {
          "type": "string",
          "description": "Working directory for commands (default CWD)."
        },
        "env": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Additional environment variables for commands."
        },
        "shell": {
          "$ref": "#/$defs/Shell",
          "description": "(cmd only) Indicates a preference for a shell for the provided cmd to be executed in on supported operating systems."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "ZarfComponentActionDefaults sets the default configs for child actions.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentActionSet": {
      "properties": {
        "defaults": {
          "$ref": "#/$defs/ZarfComponentActionDefaults",
          "description": "Default configuration for all actions in this set."
        },
        "before": {
          "items": {
            "$ref": "#/$defs/ZarfComponentAction"
          },
          "type": "array",
          "description": "Actions to run at the start of an operation."
        },
        "after": {
          "items": {
            "$ref": "#/$defs/ZarfComponentAction"
          },
          "type": "array",
          "description": "Actions to run at the end of an operation."
        },
        "onSuccess": {
          "items": {
            "$ref": "#/$defs/ZarfComponentAction"
          },
          "type": "array",
          "description": "Actions to run if all operations succeed."
        },
        "onFailure": {
          "items": {
            "$ref": "#/$defs/ZarfComponentAction"
          },
          "type": "array",
          "description": "Actions to run if all operations fail."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "ZarfComponentActionSet is a set of actions to run during a zarf package operation.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentActionWait": {
      "properties": {
        "cluster": {
          "$ref": "#/$defs/ZarfComponentActionWaitCluster",
          "description": "Wait for a condition to be met in the cluster before continuing. Only one of cluster or network can be specified."
        },
        "network": {
          "$ref": "#/$defs/ZarfComponentActionWaitNetwork",
          "description": "Wait for a condition to be met on the network before continuing. Only one of cluster or network can be specified."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "ZarfComponentActionWait specifies a condition to wait for before continuing",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentActionWaitCluster": {
      "properties": {
        "kind": {
          "type": "string",
          "description": "The kind of resource to wait for.",
          "examples": [
            "Pod",
            "Deployment"
          ]
        },
        "name": {
          "type": "string",
          "description": "The name of the resource or selector to wait for.",
          "examples": [
            "podinfo",
            "app=podinfo"
          ]
        },
        "namespace": {
          "type": "string",
          "description": "The namespace of the resource to wait for."
        },
        "condition": {
          "type": "string",
          "description": "The condition or jsonpath state to wait for; defaults to exist, a special condition that will wait for the resource to exist.",
          "examples": [
            "Ready",
            "Available"
          ]
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "kind",
        "name"
      ],
      "description": "ZarfComponentActionWaitCluster specifies a condition to wait for before continuing",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentActionWaitNetwork": {
      "properties": {
        "protocol": {
          "type": "string",
          "enum": [
            "tcp",
            "http",
            "https"
          ],
          "description": "The protocol to wait for."
        },
        "address": {
          "type": "string",
          "description": "The address to wait for.",
          "examples": [
            "localhost:8080",
            "1.1.1.1"
          ]
        },
        "code": {
          "type": "integer",
          "description": "The HTTP status code to wait for if using http or https.",
          "examples": [
            200,
            404
          ]
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "protocol",
        "address"
      ],
      "description": "ZarfComponentActionWaitNetwork specifies a condition to wait for before continuing",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentActions": {
      "properties": {
        "onCreate": {
          "$ref": "#/$defs/ZarfComponentActionSet",
          "description": "Actions to run during package creation."
        },
        "onDeploy": {
          "$ref": "#/$defs/ZarfComponentActionSet",
          "description": "Actions to run during package deployment."
        },
        "onRemove": {
          "$ref": "#/$defs/ZarfComponentActionSet",
          "description": "Actions to run during package removal."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "ZarfComponentActions are ActionSets that map to different zarf package operations.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentImport": {
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the component to import from the referenced zarf.yaml."
        },
        "path": {
          "type": "string",
          "description": "The path to the directory containing the zarf.yaml to import."
        },
        "url": {
          "type": "string",
          "pattern": "^oci://.*$",
          "description": "[beta] The URL to a Zarf package to import via OCI."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "ZarfComponentImport structure for including imported Zarf components.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentOnlyCluster": {
      "properties": {
        "architecture": {
          "type": "string",
          "enum": [
            "amd64",
            "arm64"
          ],
          "description": "Only create and deploy to clusters of the given architecture."
        },
        "distros": {
          "items": {
            "type": "string",
            "examples": [
              "k3s",
              "eks"
            ]
          },
          "type": "array",
          "description": "A list of kubernetes distros this package works with (Reserved for future use)."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "ZarfComponentOnlyCluster represents the architecture and K8s cluster distribution to filter on.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfComponentOnlyTarget": {
      "properties": {
        "localOS": {
          "type": "string",
          "enum": [
            "linux",
            "darwin",
            "windows"
          ],
          "description": "Only deploy component to specified OS."
        },
        "cluster": {
          "$ref": "#/$defs/ZarfComponentOnlyCluster",
          "description": "Only deploy component to specified clusters."
        },
        "flavor": {
          "type": "string",
          "description": "Only include this component when a matching '--flavor' is specified on 'zarf package create'."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "description": "ZarfComponentOnlyTarget filters a component to only show it for a given local OS and cluster.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfContainerTarget": {
      "properties": {
        "namespace": {
          "type": "string",
          "description": "The namespace to target for data injection."
        },
        "selector": {
          "type": "string",
          "description": "The K8s selector to target for data injection.",
          "examples": [
            "app=data-injection"
          ]
        },
        "container": {
          "type": "string",
          "description": "The container name to target for data injection."
        },
        "path": {
          "type": "string",
          "description": "The path within the container to copy the data into."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "namespace",
        "selector",
        "container",
        "path"
      ],
      "description": "ZarfContainerTarget defines the destination info for a ZarfData target",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfDataInjection": {
      "properties": {
        "source": {
          "type": "string",
          "description": "Either a path to a local folder/file or a remote URL of a file to inject into the given target pod + container."
        },
        "target": {
          "$ref": "#/$defs/ZarfContainerTarget",
          "description": "The target pod + container to inject the data into."
        },
        "compress": {
          "type": "boolean",
          "description": "Compress the data before transmitting using gzip. Note: this requires support for tar/gzip locally and in the target image."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "source",
        "target"
      ],
      "description": "ZarfDataInjection is a data-injection definition.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfFile": {
      "properties": {
        "source": {
          "type": "string",
          "description": "Local folder or file path or remote URL to pull into the package."
        },
        "shasum": {
          "type": "string",
          "description": "(files only) Optional SHA256 checksum of the file."
        },
        "target": {
          "type": "string",
          "description": "The absolute or relative path where the file or folder should be copied to during package deploy."
        },
        "executable": {
          "type": "boolean",
          "description": "(files only) Determines if the file should be made executable during package deploy."
        },
        "symlinks": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of symlinks to create during package deploy."
        },
        "extractPath": {
          "type": "string",
          "description": "Local folder or file to be extracted from a 'source' archive."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "source",
        "target"
      ],
      "description": "ZarfFile defines a file to deploy.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfManifest": {
      "properties": {
        "name": {
          "type": "string",
          "description": "A name to give this collection of manifests; this will become the name of the dynamically-created helm chart."
        },
        "namespace": {
          "type": "string",
          "description": "The namespace to deploy the manifests to."
        },
        "files": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of local K8s YAML files or remote URLs to deploy (in order)."
        },
        "kustomizeAllowAnyDirectory": {
          "type": "boolean",
          "description": "Allow traversing directory above the current directory if needed for kustomization."
        },
        "kustomizations": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of local kustomization paths or remote URLs to include in the package."
        },
        "noWait": {
          "type": "boolean",
          "description": "Whether to not wait for manifest resources to be ready before continuing."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name"
      ],
      "description": "ZarfManifest defines raw manifests Zarf will deploy as a helm chart.",
      "patternProperties": {
        "^x-": {}
      }
    },
    "ZarfMetadata": {
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9\\-]*$",
          "description": "Name to identify this Zarf package."
        },
        "description": {
          "type": "string",
          "description": "Additional information about this package."
        },
        "version": {
          "type": "string",
          "description": "Generic string set by a package author to track the package version (Note: ZarfInitConfigs will always be versioned to the CLIVersion they were created with)."
        },
        "url": {
          "type": "string",
          "description": "Link to package information when online."
        },
        "image": {
          "type": "string",
          "description": "An image URL to embed in this package (Reserved for future use in Zarf UI)."
        },
        "uncompressed": {
          "type": "boolean",
          "description": "Disable compression of this package."
        },
        "architecture": {
          "type": "string",
          "description": "The target cluster architecture for this package.",
          "examples": [
            "arm64",
            "amd64"
          ]
        },
        "yolo": {
          "type": "boolean",
          "description": "Yaml OnLy Online (YOLO): True enables deploying a Zarf package without first running zarf init against the cluster. This is ideal for connected environments where you want to use existing VCS and container registries."
        },
        "authors": {
          "type": "string",
          "description": "Comma-separated list of package authors (including contact info).",
          "examples": [
            "Doug &#60;hello@defenseunicorns.com&#62;&#44; Pepr &#60;hello@defenseunicorns.com&#62;"
          ]
        },
        "documentation": {
          "type": "string",
          "description": "Link to package documentation when online."
        },
        "source": {
          "type": "string",
          "description": "Link to package source code when online."
        },
        "vendor": {
          "type": "string",
          "description": "Name of the distributing entity, organization or individual."
        },
        "aggregateChecksum": {
          "type": "string",
          "description": "Checksum of a checksums.txt file that contains checksums all the layers within the package."
        },
        "annotations": {
          "description": "Annotations contains arbitrary metadata about the package.\nUsers are encouraged to follow OCI image-spec <https://github.com/opencontainers/image-spec/blob/main/annotations.md>",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "allowNamespaceOverride": {
          "type": "boolean",
          "description": "AllowNamespaceOverride controls whether a package's namespace may be overridden."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name"
      ],
      "description": "ZarfMetadata lists information about the current ZarfPackage.",
      "patternProperties": {
        "^x-": {}
      }
    }
  },
  "additionalProperties": false
}
