{
  "definitions": {
    "v2.3.0.Devfile": {
      "description": "Devfile describes the structure of a cloud-native devworkspace and development environment.",
      "type": "object",
      "title": "Devfile schema - Version 2.3.0",
      "required": [
        "schemaVersion"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "commands": {
          "description": "Predefined, ready-to-use, devworkspace-related commands",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.commands"
          }
        },
        "components": {
          "description": "List of the devworkspace components, such as editor and plugins, user-provided containers, or other types of components",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.components"
          }
        },
        "dependentProjects": {
          "description": "Additional projects related to the main project in the devfile, contianing names and sources locations",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.dependentProjects"
          }
        },
        "events": {
          "$ref": "#/definitions/v2.3.0.Devfile.events"
        },
        "metadata": {
          "$ref": "#/definitions/v2.3.0.Devfile.metadata"
        },
        "parent": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent"
        },
        "projects": {
          "description": "Projects worked on in the devworkspace, containing names and sources locations",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.projects"
          }
        },
        "schemaVersion": {
          "description": "Devfile schema version",
          "type": "string",
          "pattern": "^([2-9])\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$"
        },
        "starterProjects": {
          "description": "StarterProjects is a project that can be used as a starting point when bootstrapping new projects",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.starterProjects"
          }
        },
        "variables": {
          "description": "Map of key-value variables used for string replacement in the devfile. Values can be referenced via {{variable-key}} to replace the corresponding value in string fields in the devfile. Replacement cannot be used for\n\n - schemaVersion, metadata, parent source\n\n - element identifiers, e.g. command id, component name, endpoint name, project name\n\n - references to identifiers, e.g. in events, a command's component, container's volume mount name\n\n - string enums, e.g. command group kind, endpoint exposure",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.events": {
      "description": "Bindings of commands to events. Each command is referred-to by its name.",
      "type": "object",
      "properties": {
        "postStart": {
          "description": "IDs of commands that should be executed after the devworkspace is completely started. In the case of Che-Theia, these commands should be executed after all plugins and extensions have started, including project cloning. This means that those commands are not triggered until the user opens the IDE in his browser.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "postStop": {
          "description": "IDs of commands that should be executed after stopping the devworkspace.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "preStart": {
          "description": "IDs of commands that should be executed before the devworkspace start. Kubernetes-wise, these commands would typically be executed in init containers of the devworkspace POD.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "preStop": {
          "description": "IDs of commands that should be executed before stopping the devworkspace.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.metadata": {
      "description": "Optional metadata",
      "type": "object",
      "properties": {
        "architectures": {
          "description": "Optional list of processor architectures that the devfile supports, empty list suggests that the devfile can be used on any architecture",
          "type": "array",
          "uniqueItems": true,
          "items": {
            "description": "Architecture describes the architecture type",
            "type": "string",
            "enum": [
              "amd64",
              "arm64",
              "ppc64le",
              "s390x"
            ]
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes. Deprecated, use the top-level attributes field instead.",
          "type": "object",
          "additionalProperties": true
        },
        "description": {
          "description": "Optional devfile description",
          "type": "string"
        },
        "displayName": {
          "description": "Optional devfile display name",
          "type": "string"
        },
        "globalMemoryLimit": {
          "description": "Optional devfile global memory limit",
          "type": "string"
        },
        "icon": {
          "description": "Optional devfile icon, can be a URI or a relative path in the project",
          "type": "string"
        },
        "language": {
          "description": "Optional devfile language",
          "type": "string"
        },
        "name": {
          "description": "Optional devfile name",
          "type": "string"
        },
        "projectType": {
          "description": "Optional devfile project type",
          "type": "string"
        },
        "provider": {
          "description": "Optional devfile provider information",
          "type": "string"
        },
        "supportUrl": {
          "description": "Optional link to a page that provides support information",
          "type": "string"
        },
        "tags": {
          "description": "Optional devfile tags",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "version": {
          "description": "Optional semver-compatible version",
          "type": "string",
          "pattern": "^([0-9]+)\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$"
        },
        "website": {
          "description": "Optional devfile website",
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "v2.3.0.Devfile.parent": {
      "description": "Parent devworkspace template",
      "type": "object",
      "oneOf": [
        {
          "required": [
            "uri"
          ]
        },
        {
          "required": [
            "id"
          ]
        },
        {
          "required": [
            "kubernetes"
          ]
        }
      ],
      "properties": {
        "attributes": {
          "description": "Overrides of attributes encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "object",
          "additionalProperties": true
        },
        "commands": {
          "description": "Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.commands"
          }
        },
        "components": {
          "description": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.components"
          }
        },
        "dependentProjects": {
          "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.dependentProjects"
          }
        },
        "id": {
          "description": "Id in a registry that contains a Devfile yaml file",
          "type": "string"
        },
        "kubernetes": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.kubernetes"
        },
        "projects": {
          "description": "Overrides of projects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.projects"
          }
        },
        "registryUrl": {
          "description": "Registry URL to pull the parent devfile from when using id in the parent reference. To ensure the parent devfile gets resolved consistently in different environments, it is recommended to always specify the `registryUrl` when `id` is used.",
          "type": "string"
        },
        "starterProjects": {
          "description": "Overrides of starterProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.starterProjects"
          }
        },
        "uri": {
          "description": "URI Reference of a parent devfile YAML file. It can be a full URL or a relative URI with the current devfile as the base URI.",
          "type": "string"
        },
        "variables": {
          "description": "Overrides of variables encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "version": {
          "description": "Specific stack/sample version to pull the parent devfile from, when using id in the parent reference. To specify `version`, `id` must be defined and used as the import reference source. `version` can be either a specific stack version, or `latest`. If no `version` specified, default version will be used.",
          "type": "string",
          "pattern": "^(latest)|(([1-9])\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?)$"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.starterProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v2.3.0.Devfile.starterProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.starterProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.starterProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "oneOf": [
        {
          "required": [
            "git"
          ]
        },
        {
          "required": [
            "zip"
          ]
        }
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "description": {
          "description": "Description of a starter project",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v2.3.0.Devfile.starterProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "subDir": {
          "description": "Sub-directory from a starter project to be used as root for starter project.",
          "type": "string"
        },
        "zip": {
          "$ref": "#/definitions/v2.3.0.Devfile.starterProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.starterProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.projects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v2.3.0.Devfile.projects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.projects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.projects": {
      "type": "object",
      "required": [
        "name"
      ],
      "oneOf": [
        {
          "required": [
            "git"
          ]
        },
        {
          "required": [
            "zip"
          ]
        }
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v2.3.0.Devfile.projects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v2.3.0.Devfile.projects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.projects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.commands.items.composite"
        },
        "exec": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.container"
        },
        "image": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.openshift"
        },
        "volume": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.dependentProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.dependentProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.dependentProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.kubernetes": {
      "description": "Reference to a Kubernetes CRD of type DevWorkspaceTemplate",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.projects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.projects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.projects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.starterProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "description": {
          "description": "Description of a starter project",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.starterProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "subDir": {
          "description": "Sub-directory from a starter project to be used as root for starter project.",
          "type": "string"
        },
        "zip": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.starterProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.starterProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.starterProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.starterProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.starterProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.projects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.projects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.projects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.projects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.dependentProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.dependentProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.dependentProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.dependentProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 15,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 15,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 15,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.container.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.parent.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v2.3.0.Devfile.parent.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.parent.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.dependentProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v2.3.0.Devfile.dependentProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.dependentProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.dependentProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "oneOf": [
        {
          "required": [
            "git"
          ]
        },
        {
          "required": [
            "zip"
          ]
        }
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v2.3.0.Devfile.dependentProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v2.3.0.Devfile.dependentProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.dependentProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "required": [
        "image"
      ],
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string",
          "default": "/projects"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "required": [
        "imageName"
      ],
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "oneOf": [
        {
          "required": [
            "container"
          ]
        },
        {
          "required": [
            "kubernetes"
          ]
        },
        {
          "required": [
            "openshift"
          ]
        },
        {
          "required": [
            "volume"
          ]
        },
        {
          "required": [
            "image"
          ]
        }
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.container"
        },
        "image": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.openshift"
        },
        "volume": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name",
        "targetPort"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "default": "public",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 15,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "default": "http",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name",
        "targetPort"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "default": "public",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 15,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "default": "http",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v2.3.0.Devfile.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name",
        "targetPort"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "default": "public",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 15,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "default": "http",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.container.env": {
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "required": [
        "component"
      ],
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v2.3.0.Devfile.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v2.3.0.Devfile.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "required": [
        "commandLine",
        "component"
      ],
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2.3.0.Devfile.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v2.3.0.Devfile.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "oneOf": [
        {
          "required": [
            "exec"
          ]
        },
        {
          "required": [
            "apply"
          ]
        },
        {
          "required": [
            "composite"
          ]
        }
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v2.3.0.Devfile.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v2.3.0.Devfile.commands.items.composite"
        },
        "exec": {
          "$ref": "#/definitions/v2.3.0.Devfile.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v2.3.0.Devfile.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace": {
      "description": "DevWorkspace is the Schema for the devworkspaces API",
      "type": "object",
      "title": "DevWorkspace schema - Version 2.3.0",
      "properties": {
        "apiVersion": {
          "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
          "type": "string"
        },
        "kind": {
          "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
          "type": "string"
        },
        "metadata": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.metadata"
        },
        "spec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec"
        },
        "status": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.status"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.metadata": {
      "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
      "type": "object",
      "properties": {
        "annotations": {
          "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "creationTimestamp": {
          "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
          "type": "string",
          "format": "date-time"
        },
        "deletionGracePeriodSeconds": {
          "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
          "type": "integer",
          "format": "int64"
        },
        "deletionTimestamp": {
          "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
          "type": "string",
          "format": "date-time"
        },
        "finalizers": {
          "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order.  Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "x-kubernetes-list-type": "set"
        },
        "generateName": {
          "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency",
          "type": "string"
        },
        "generation": {
          "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.",
          "type": "integer",
          "format": "int64"
        },
        "labels": {
          "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "managedFields": {
          "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.metadata.managedFields"
          },
          "x-kubernetes-list-type": "atomic"
        },
        "name": {
          "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
          "type": "string"
        },
        "namespace": {
          "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces",
          "type": "string"
        },
        "ownerReferences": {
          "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.metadata.ownerReferences"
          },
          "x-kubernetes-list-map-keys": [
            "uid"
          ],
          "x-kubernetes-list-type": "map"
        },
        "resourceVersion": {
          "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency",
          "type": "string"
        },
        "selfLink": {
          "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.",
          "type": "string"
        },
        "uid": {
          "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec": {
      "description": "DevWorkspaceSpec defines the desired state of DevWorkspace",
      "type": "object",
      "required": [
        "started"
      ],
      "properties": {
        "contributions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions"
          }
        },
        "routingClass": {
          "type": "string"
        },
        "started": {
          "type": "boolean"
        },
        "template": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.status": {
      "description": "DevWorkspaceStatus defines the observed state of DevWorkspace",
      "type": "object",
      "required": [
        "devworkspaceId"
      ],
      "properties": {
        "conditions": {
          "description": "Conditions represent the latest available observations of an object's state",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.status.conditions"
          }
        },
        "devworkspaceId": {
          "description": "Id of the DevWorkspace",
          "type": "string"
        },
        "mainUrl": {
          "description": "Main URL for this DevWorkspace",
          "type": "string"
        },
        "message": {
          "description": "Message is a short user-readable message giving additional information about an object's state",
          "type": "string"
        },
        "phase": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.status.conditions": {
      "description": "DevWorkspaceCondition contains details for the current condition of this devworkspace.",
      "type": "object",
      "required": [
        "status",
        "type"
      ],
      "properties": {
        "lastTransitionTime": {
          "description": "Last time the condition transitioned from one status to another.",
          "type": "string",
          "format": "date-time"
        },
        "message": {
          "description": "Human-readable message indicating details about last transition.",
          "type": "string"
        },
        "reason": {
          "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
          "type": "string"
        },
        "status": {
          "description": "Phase is the status of the condition. Can be True, False, Unknown.",
          "type": "string"
        },
        "type": {
          "description": "Type is the type of the condition.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "commands": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.commands"
        },
        "components": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components"
        },
        "id": {
          "description": "Id in a registry that contains a Devfile yaml file",
          "type": "string"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "registryUrl": {
          "description": "Registry URL to pull the parent devfile from when using id in the parent reference. To ensure the parent devfile gets resolved consistently in different environments, it is recommended to always specify the `registryUrl` when `id` is used.",
          "type": "string"
        },
        "uri": {
          "description": "URI Reference of a parent devfile YAML file. It can be a full URL or a relative URI with the current devfile as the base URI.",
          "type": "string"
        },
        "version": {
          "description": "Specific stack/sample version to pull the parent devfile from, when using id in the parent reference. To specify `version`, `id` must be defined and used as the import reference source. `version` can be either a specific stack version, or `latest`. If no `version` specified, default version will be used.",
          "type": "string",
          "pattern": "^(latest)|(([1-9])\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?)$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template": {
      "description": "Structure of the devworkspace. This is also the specification of a devworkspace template.",
      "type": "object",
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "commands": {
          "description": "Predefined, ready-to-use, devworkspace-related commands",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands"
          }
        },
        "components": {
          "description": "List of the devworkspace components, such as editor and plugins, user-provided containers, or other types of components",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components"
          }
        },
        "dependentProjects": {
          "description": "Additional projects related to the main project in the devfile, contianing names and sources locations",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.dependentProjects"
          }
        },
        "events": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.events"
        },
        "parent": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent"
        },
        "projects": {
          "description": "Projects worked on in the devworkspace, containing names and sources locations",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.projects"
          }
        },
        "starterProjects": {
          "description": "StarterProjects is a project that can be used as a starting point when bootstrapping new projects",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.starterProjects"
          }
        },
        "variables": {
          "description": "Map of key-value variables used for string replacement in the devfile. Values can be referenced via {{variable-key}} to replace the corresponding value in string fields in the devfile. Replacement cannot be used for\n\n - schemaVersion, metadata, parent source\n\n - element identifiers, e.g. command id, component name, endpoint name, project name\n\n - references to identifiers, e.g. in events, a command's component, container's volume mount name\n\n - string enums, e.g. command group kind, endpoint exposure",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands.items.composite"
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands.items.custom"
        },
        "exec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.container"
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.custom"
        },
        "image": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.openshift"
        },
        "plugin": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin"
        },
        "volume": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.dependentProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.dependentProjects.items.custom"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.dependentProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.dependentProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.events": {
      "description": "Bindings of commands to events. Each command is referred-to by its name.",
      "type": "object",
      "properties": {
        "postStart": {
          "description": "IDs of commands that should be executed after the devworkspace is completely started. In the case of Che-Theia, these commands should be executed after all plugins and extensions have started, including project cloning. This means that those commands are not triggered until the user opens the IDE in his browser.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "postStop": {
          "description": "IDs of commands that should be executed after stopping the devworkspace.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "preStart": {
          "description": "IDs of commands that should be executed before the devworkspace start. Kubernetes-wise, these commands would typically be executed in init containers of the devworkspace POD.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "preStop": {
          "description": "IDs of commands that should be executed before stopping the devworkspace.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent": {
      "description": "Parent devworkspace template",
      "type": "object",
      "properties": {
        "attributes": {
          "description": "Overrides of attributes encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "object",
          "additionalProperties": true
        },
        "commands": {
          "description": "Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.commands"
          }
        },
        "components": {
          "description": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components"
          }
        },
        "dependentProjects": {
          "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.dependentProjects"
          }
        },
        "id": {
          "description": "Id in a registry that contains a Devfile yaml file",
          "type": "string"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.kubernetes"
        },
        "projects": {
          "description": "Overrides of projects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.projects"
          }
        },
        "registryUrl": {
          "description": "Registry URL to pull the parent devfile from when using id in the parent reference. To ensure the parent devfile gets resolved consistently in different environments, it is recommended to always specify the `registryUrl` when `id` is used.",
          "type": "string"
        },
        "starterProjects": {
          "description": "Overrides of starterProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.starterProjects"
          }
        },
        "uri": {
          "description": "URI Reference of a parent devfile YAML file. It can be a full URL or a relative URI with the current devfile as the base URI.",
          "type": "string"
        },
        "variables": {
          "description": "Overrides of variables encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "version": {
          "description": "Specific stack/sample version to pull the parent devfile from, when using id in the parent reference. To specify `version`, `id` must be defined and used as the import reference source. `version` can be either a specific stack version, or `latest`. If no `version` specified, default version will be used.",
          "type": "string",
          "pattern": "^(latest)|(([1-9])\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?)$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.projects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.projects.items.custom"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.projects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.projects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.starterProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.starterProjects.items.custom"
        },
        "description": {
          "description": "Description of a starter project",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.starterProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "subDir": {
          "description": "Sub-directory from a starter project to be used as root for starter project.",
          "type": "string"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.starterProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.starterProjects.items.custom": {
      "description": "Project's Custom source",
      "type": "object",
      "required": [
        "embeddedResource",
        "projectSourceClass"
      ],
      "properties": {
        "embeddedResource": {
          "type": "object",
          "additionalProperties": true
        },
        "projectSourceClass": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.starterProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.starterProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.starterProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.starterProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.projects.items.custom": {
      "description": "Project's Custom source",
      "type": "object",
      "required": [
        "embeddedResource",
        "projectSourceClass"
      ],
      "properties": {
        "embeddedResource": {
          "type": "object",
          "additionalProperties": true
        },
        "projectSourceClass": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.projects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.projects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.projects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.projects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.commands.items.composite"
        },
        "exec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.container"
        },
        "image": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.openshift"
        },
        "plugin": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin"
        },
        "volume": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.dependentProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.dependentProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.dependentProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.kubernetes": {
      "description": "Reference to a Kubernetes CRD of type DevWorkspaceTemplate",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.projects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.projects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.projects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.starterProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "description": {
          "description": "Description of a starter project",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.starterProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "subDir": {
          "description": "Sub-directory from a starter project to be used as root for starter project.",
          "type": "string"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.starterProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.starterProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.starterProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.starterProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.starterProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.projects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.projects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.projects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.projects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.dependentProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.dependentProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.dependentProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.dependentProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin": {
      "description": "Allows importing a plugin.\n\nPlugins are mainly imported devfiles that contribute components, commands and events as a consistent single unit. They are defined in either YAML files following the devfile syntax, or as `DevWorkspaceTemplate` Kubernetes Custom Resources",
      "type": "object",
      "properties": {
        "commands": {
          "description": "Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands"
          }
        },
        "components": {
          "description": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components"
          }
        },
        "id": {
          "description": "Id in a registry that contains a Devfile yaml file",
          "type": "string"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.kubernetes"
        },
        "registryUrl": {
          "description": "Registry URL to pull the parent devfile from when using id in the parent reference. To ensure the parent devfile gets resolved consistently in different environments, it is recommended to always specify the `registryUrl` when `id` is used.",
          "type": "string"
        },
        "uri": {
          "description": "URI Reference of a parent devfile YAML file. It can be a full URL or a relative URI with the current devfile as the base URI.",
          "type": "string"
        },
        "version": {
          "description": "Specific stack/sample version to pull the parent devfile from, when using id in the parent reference. To specify `version`, `id` must be defined and used as the import reference source. `version` can be either a specific stack version, or `latest`. If no `version` specified, default version will be used.",
          "type": "string",
          "pattern": "^(latest)|(([1-9])\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?)$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.composite"
        },
        "exec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container"
        },
        "image": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.openshift"
        },
        "volume": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.kubernetes": {
      "description": "Reference to a Kubernetes CRD of type DevWorkspaceTemplate",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.plugin.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.container.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.parent.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.parent.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.dependentProjects.items.custom": {
      "description": "Project's Custom source",
      "type": "object",
      "required": [
        "embeddedResource",
        "projectSourceClass"
      ],
      "properties": {
        "embeddedResource": {
          "type": "object",
          "additionalProperties": true
        },
        "projectSourceClass": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.dependentProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.dependentProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.dependentProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.dependentProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "required": [
        "image"
      ],
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string",
          "default": "/projects"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.custom": {
      "description": "Custom component whose logic is implementation-dependant and should be provided by the user possibly through some dedicated controller",
      "type": "object",
      "required": [
        "componentClass",
        "embeddedResource"
      ],
      "properties": {
        "componentClass": {
          "description": "Class of component that the associated implementation controller should use to process this command with the appropriate logic",
          "type": "string"
        },
        "embeddedResource": {
          "description": "Additional free-form configuration for this custom component that the implementation controller will know how to use",
          "type": "object",
          "additionalProperties": true
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "required": [
        "imageName"
      ],
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin": {
      "description": "Allows importing a plugin.\n\nPlugins are mainly imported devfiles that contribute components, commands and events as a consistent single unit. They are defined in either YAML files following the devfile syntax, or as `DevWorkspaceTemplate` Kubernetes Custom Resources",
      "type": "object",
      "properties": {
        "commands": {
          "description": "Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands"
          }
        },
        "components": {
          "description": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components"
          }
        },
        "id": {
          "description": "Id in a registry that contains a Devfile yaml file",
          "type": "string"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.kubernetes"
        },
        "registryUrl": {
          "description": "Registry URL to pull the parent devfile from when using id in the parent reference. To ensure the parent devfile gets resolved consistently in different environments, it is recommended to always specify the `registryUrl` when `id` is used.",
          "type": "string"
        },
        "uri": {
          "description": "URI Reference of a parent devfile YAML file. It can be a full URL or a relative URI with the current devfile as the base URI.",
          "type": "string"
        },
        "version": {
          "description": "Specific stack/sample version to pull the parent devfile from, when using id in the parent reference. To specify `version`, `id` must be defined and used as the import reference source. `version` can be either a specific stack version, or `latest`. If no `version` specified, default version will be used.",
          "type": "string",
          "pattern": "^(latest)|(([1-9])\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?)$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.composite"
        },
        "exec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container"
        },
        "image": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.openshift"
        },
        "volume": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.kubernetes": {
      "description": "Reference to a Kubernetes CRD of type DevWorkspaceTemplate",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.plugin.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name",
        "targetPort"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "default": "public",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "default": "http",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name",
        "targetPort"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "default": "public",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "default": "http",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name",
        "targetPort"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "default": "public",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "default": "http",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.container.env": {
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "required": [
        "component"
      ],
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands.items.custom": {
      "description": "Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin",
      "type": "object",
      "required": [
        "commandClass",
        "embeddedResource"
      ],
      "properties": {
        "commandClass": {
          "description": "Class of command that the associated implementation component should use to process this command with the appropriate logic",
          "type": "string"
        },
        "embeddedResource": {
          "description": "Additional free-form configuration for this custom command that the implementation component will know how to use",
          "type": "object",
          "additionalProperties": true
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands.items.custom.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "required": [
        "commandLine",
        "component"
      ],
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.template.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands.items.custom.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.template.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "oneOf": [
        {
          "required": [
            "exec"
          ]
        },
        {
          "required": [
            "apply"
          ]
        },
        {
          "required": [
            "composite"
          ]
        }
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.commands.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.commands.composite"
        },
        "exec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.commands.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "oneOf": [
        {
          "required": [
            "container"
          ]
        },
        {
          "required": [
            "kubernetes"
          ]
        },
        {
          "required": [
            "openshift"
          ]
        },
        {
          "required": [
            "volume"
          ]
        },
        {
          "required": [
            "image"
          ]
        }
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.container"
        },
        "image": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.openshift"
        },
        "volume": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.volume"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.kubernetes": {
      "description": "Reference to a Kubernetes CRD of type DevWorkspaceTemplate",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.openshift.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.components.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.container.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.container.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.components.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.commands.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.commands.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.commands.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.commands.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.commands.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.commands.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspace.spec.contributions.items.commands.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.commands.exec.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.commands.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.commands.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.spec.contributions.items.commands.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.metadata.managedFields": {
      "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
      "type": "object",
      "properties": {
        "apiVersion": {
          "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.",
          "type": "string"
        },
        "fieldsType": {
          "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"",
          "type": "string"
        },
        "fieldsV1": {
          "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.",
          "type": "object",
          "additionalProperties": true
        },
        "manager": {
          "description": "Manager is an identifier of the workflow managing these fields.",
          "type": "string"
        },
        "operation": {
          "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
          "type": "string"
        },
        "subresource": {
          "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.",
          "type": "string"
        },
        "time": {
          "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.",
          "type": "string",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspace.metadata.ownerReferences": {
      "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.",
      "type": "object",
      "required": [
        "apiVersion",
        "kind",
        "name",
        "uid"
      ],
      "properties": {
        "apiVersion": {
          "description": "API version of the referent.",
          "type": "string"
        },
        "blockOwnerDeletion": {
          "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.",
          "type": "boolean"
        },
        "controller": {
          "description": "If true, this reference points to the managing controller.",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
          "type": "string"
        },
        "name": {
          "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
          "type": "string"
        },
        "uid": {
          "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate": {
      "description": "DevWorkspaceTemplate is the Schema for the devworkspacetemplates API",
      "type": "object",
      "title": "DevWorkspaceTemplate schema - Version 2.3.0",
      "properties": {
        "apiVersion": {
          "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
          "type": "string"
        },
        "kind": {
          "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
          "type": "string"
        },
        "metadata": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.metadata"
        },
        "spec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.metadata": {
      "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
      "type": "object",
      "properties": {
        "annotations": {
          "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "creationTimestamp": {
          "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
          "type": "string",
          "format": "date-time"
        },
        "deletionGracePeriodSeconds": {
          "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
          "type": "integer",
          "format": "int64"
        },
        "deletionTimestamp": {
          "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
          "type": "string",
          "format": "date-time"
        },
        "finalizers": {
          "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order.  Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "x-kubernetes-list-type": "set"
        },
        "generateName": {
          "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency",
          "type": "string"
        },
        "generation": {
          "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.",
          "type": "integer",
          "format": "int64"
        },
        "labels": {
          "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "managedFields": {
          "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.metadata.managedFields"
          },
          "x-kubernetes-list-type": "atomic"
        },
        "name": {
          "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
          "type": "string"
        },
        "namespace": {
          "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces",
          "type": "string"
        },
        "ownerReferences": {
          "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.metadata.ownerReferences"
          },
          "x-kubernetes-list-map-keys": [
            "uid"
          ],
          "x-kubernetes-list-type": "map"
        },
        "resourceVersion": {
          "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency",
          "type": "string"
        },
        "selfLink": {
          "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.",
          "type": "string"
        },
        "uid": {
          "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec": {
      "description": "Structure of the devworkspace. This is also the specification of a devworkspace template.",
      "type": "object",
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "commands": {
          "description": "Predefined, ready-to-use, devworkspace-related commands",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands"
          }
        },
        "components": {
          "description": "List of the devworkspace components, such as editor and plugins, user-provided containers, or other types of components",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components"
          }
        },
        "dependentProjects": {
          "description": "Additional projects related to the main project in the devfile, contianing names and sources locations",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.dependentProjects"
          }
        },
        "events": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.events"
        },
        "parent": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent"
        },
        "projects": {
          "description": "Projects worked on in the devworkspace, containing names and sources locations",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.projects"
          }
        },
        "starterProjects": {
          "description": "StarterProjects is a project that can be used as a starting point when bootstrapping new projects",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.starterProjects"
          }
        },
        "variables": {
          "description": "Map of key-value variables used for string replacement in the devfile. Values can be referenced via {{variable-key}} to replace the corresponding value in string fields in the devfile. Replacement cannot be used for\n\n - schemaVersion, metadata, parent source\n\n - element identifiers, e.g. command id, component name, endpoint name, project name\n\n - references to identifiers, e.g. in events, a command's component, container's volume mount name\n\n - string enums, e.g. command group kind, endpoint exposure",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands.items.composite"
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands.items.custom"
        },
        "exec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.container"
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.custom"
        },
        "image": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.openshift"
        },
        "plugin": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin"
        },
        "volume": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.dependentProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.dependentProjects.items.custom"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.dependentProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.dependentProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.events": {
      "description": "Bindings of commands to events. Each command is referred-to by its name.",
      "type": "object",
      "properties": {
        "postStart": {
          "description": "IDs of commands that should be executed after the devworkspace is completely started. In the case of Che-Theia, these commands should be executed after all plugins and extensions have started, including project cloning. This means that those commands are not triggered until the user opens the IDE in his browser.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "postStop": {
          "description": "IDs of commands that should be executed after stopping the devworkspace.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "preStart": {
          "description": "IDs of commands that should be executed before the devworkspace start. Kubernetes-wise, these commands would typically be executed in init containers of the devworkspace POD.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "preStop": {
          "description": "IDs of commands that should be executed before stopping the devworkspace.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent": {
      "description": "Parent devworkspace template",
      "type": "object",
      "properties": {
        "attributes": {
          "description": "Overrides of attributes encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "object",
          "additionalProperties": true
        },
        "commands": {
          "description": "Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.commands"
          }
        },
        "components": {
          "description": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components"
          }
        },
        "dependentProjects": {
          "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.dependentProjects"
          }
        },
        "id": {
          "description": "Id in a registry that contains a Devfile yaml file",
          "type": "string"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.kubernetes"
        },
        "projects": {
          "description": "Overrides of projects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.projects"
          }
        },
        "registryUrl": {
          "description": "Registry URL to pull the parent devfile from when using id in the parent reference. To ensure the parent devfile gets resolved consistently in different environments, it is recommended to always specify the `registryUrl` when `id` is used.",
          "type": "string"
        },
        "starterProjects": {
          "description": "Overrides of starterProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.starterProjects"
          }
        },
        "uri": {
          "description": "URI Reference of a parent devfile YAML file. It can be a full URL or a relative URI with the current devfile as the base URI.",
          "type": "string"
        },
        "variables": {
          "description": "Overrides of variables encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "version": {
          "description": "Specific stack/sample version to pull the parent devfile from, when using id in the parent reference. To specify `version`, `id` must be defined and used as the import reference source. `version` can be either a specific stack version, or `latest`. If no `version` specified, default version will be used.",
          "type": "string",
          "pattern": "^(latest)|(([1-9])\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?)$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.projects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.projects.items.custom"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.projects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.projects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.starterProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "custom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.starterProjects.items.custom"
        },
        "description": {
          "description": "Description of a starter project",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.starterProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "subDir": {
          "description": "Sub-directory from a starter project to be used as root for starter project.",
          "type": "string"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.starterProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.starterProjects.items.custom": {
      "description": "Project's Custom source",
      "type": "object",
      "required": [
        "embeddedResource",
        "projectSourceClass"
      ],
      "properties": {
        "embeddedResource": {
          "type": "object",
          "additionalProperties": true
        },
        "projectSourceClass": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.starterProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.starterProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.starterProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.starterProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.projects.items.custom": {
      "description": "Project's Custom source",
      "type": "object",
      "required": [
        "embeddedResource",
        "projectSourceClass"
      ],
      "properties": {
        "embeddedResource": {
          "type": "object",
          "additionalProperties": true
        },
        "projectSourceClass": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.projects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.projects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.projects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.projects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.composite"
        },
        "exec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container"
        },
        "image": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.openshift"
        },
        "plugin": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin"
        },
        "volume": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.dependentProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.dependentProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.dependentProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.kubernetes": {
      "description": "Reference to a Kubernetes CRD of type DevWorkspaceTemplate",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.projects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "clonePath": {
          "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.projects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.projects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.starterProjects": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "description": {
          "description": "Description of a starter project",
          "type": "string"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.starterProjects.items.git"
        },
        "name": {
          "description": "Project name",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "subDir": {
          "description": "Sub-directory from a starter project to be used as root for starter project.",
          "type": "string"
        },
        "zip": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.starterProjects.items.zip"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.starterProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.starterProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.starterProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.starterProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.projects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.projects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.projects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.projects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.dependentProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.dependentProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.dependentProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.dependentProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin": {
      "description": "Allows importing a plugin.\n\nPlugins are mainly imported devfiles that contribute components, commands and events as a consistent single unit. They are defined in either YAML files following the devfile syntax, or as `DevWorkspaceTemplate` Kubernetes Custom Resources",
      "type": "object",
      "properties": {
        "commands": {
          "description": "Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands"
          }
        },
        "components": {
          "description": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components"
          }
        },
        "id": {
          "description": "Id in a registry that contains a Devfile yaml file",
          "type": "string"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.kubernetes"
        },
        "registryUrl": {
          "description": "Registry URL to pull the parent devfile from when using id in the parent reference. To ensure the parent devfile gets resolved consistently in different environments, it is recommended to always specify the `registryUrl` when `id` is used.",
          "type": "string"
        },
        "uri": {
          "description": "URI Reference of a parent devfile YAML file. It can be a full URL or a relative URI with the current devfile as the base URI.",
          "type": "string"
        },
        "version": {
          "description": "Specific stack/sample version to pull the parent devfile from, when using id in the parent reference. To specify `version`, `id` must be defined and used as the import reference source. `version` can be either a specific stack version, or `latest`. If no `version` specified, default version will be used.",
          "type": "string",
          "pattern": "^(latest)|(([1-9])\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?)$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.composite"
        },
        "exec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container"
        },
        "image": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.openshift"
        },
        "volume": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.kubernetes": {
      "description": "Reference to a Kubernetes CRD of type DevWorkspaceTemplate",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.plugin.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.parent.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.dependentProjects.items.custom": {
      "description": "Project's Custom source",
      "type": "object",
      "required": [
        "embeddedResource",
        "projectSourceClass"
      ],
      "properties": {
        "embeddedResource": {
          "type": "object",
          "additionalProperties": true
        },
        "projectSourceClass": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.dependentProjects.items.git": {
      "description": "Project's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.dependentProjects.items.git.checkoutFrom"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.dependentProjects.items.zip": {
      "description": "Project's Zip source",
      "type": "object",
      "properties": {
        "location": {
          "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.dependentProjects.items.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "required": [
        "image"
      ],
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string",
          "default": "/projects"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.custom": {
      "description": "Custom component whose logic is implementation-dependant and should be provided by the user possibly through some dedicated controller",
      "type": "object",
      "required": [
        "componentClass",
        "embeddedResource"
      ],
      "properties": {
        "componentClass": {
          "description": "Class of component that the associated implementation controller should use to process this command with the appropriate logic",
          "type": "string"
        },
        "embeddedResource": {
          "description": "Additional free-form configuration for this custom component that the implementation controller will know how to use",
          "type": "object",
          "additionalProperties": true
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "required": [
        "imageName"
      ],
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin": {
      "description": "Allows importing a plugin.\n\nPlugins are mainly imported devfiles that contribute components, commands and events as a consistent single unit. They are defined in either YAML files following the devfile syntax, or as `DevWorkspaceTemplate` Kubernetes Custom Resources",
      "type": "object",
      "properties": {
        "commands": {
          "description": "Overrides of commands encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands"
          }
        },
        "components": {
          "description": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components"
          }
        },
        "id": {
          "description": "Id in a registry that contains a Devfile yaml file",
          "type": "string"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.kubernetes"
        },
        "registryUrl": {
          "description": "Registry URL to pull the parent devfile from when using id in the parent reference. To ensure the parent devfile gets resolved consistently in different environments, it is recommended to always specify the `registryUrl` when `id` is used.",
          "type": "string"
        },
        "uri": {
          "description": "URI Reference of a parent devfile YAML file. It can be a full URL or a relative URI with the current devfile as the base URI.",
          "type": "string"
        },
        "version": {
          "description": "Specific stack/sample version to pull the parent devfile from, when using id in the parent reference. To specify `version`, `id` must be defined and used as the import reference source. `version` can be either a specific stack version, or `latest`. If no `version` specified, default version will be used.",
          "type": "string",
          "pattern": "^(latest)|(([1-9])\\.([0-9]+)\\.([0-9]+)(\\-[0-9a-z-]+(\\.[0-9a-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?)$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "apply": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.apply"
        },
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "composite": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.composite"
        },
        "exec": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.exec"
        },
        "id": {
          "description": "Mandatory identifier that allows referencing this command in composite commands, from a parent, or in events.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "attributes": {
          "description": "Map of implementation-dependant free-form YAML attributes.",
          "type": "object",
          "additionalProperties": true
        },
        "container": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container"
        },
        "image": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image"
        },
        "kubernetes": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.kubernetes"
        },
        "name": {
          "description": "Mandatory name that allows referencing the component from other elements (such as commands) or from an external devfile that may reference this component through a parent or a plugin.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "openshift": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.openshift"
        },
        "volume": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.volume"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.kubernetes": {
      "description": "Reference to a Kubernetes CRD of type DevWorkspaceTemplate",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container": {
      "description": "Allows adding and configuring devworkspace-related containers",
      "type": "object",
      "properties": {
        "annotation": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container.annotation"
        },
        "args": {
          "description": "The arguments to supply to the command running the dockerimage component. The arguments are supplied either to the default command provided in the image or to the overridden command.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command": {
          "description": "The command to run in the dockerimage component instead of the default one provided in the image.\n\nDefaults to an empty array, meaning use whatever is defined in the image.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cpuLimit": {
          "type": "string"
        },
        "cpuRequest": {
          "type": "string"
        },
        "dedicatedPod": {
          "description": "Specify if a container should run in its own separated pod, instead of running as part of the main development environment pod.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container.endpoints"
          }
        },
        "env": {
          "description": "Environment variables used in this container.\n\nThe following variables are reserved and cannot be overridden via env:\n\n - `$PROJECTS_ROOT`\n\n - `$PROJECT_SOURCE`",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container.env"
          }
        },
        "image": {
          "type": "string"
        },
        "memoryLimit": {
          "type": "string"
        },
        "memoryRequest": {
          "type": "string"
        },
        "mountSources": {
          "description": "Toggles whether or not the project source code should be mounted in the component.\n\nDefaults to true for all component types except plugins and components that set `dedicatedPod` to true.",
          "type": "boolean"
        },
        "sourceMapping": {
          "description": "Optional specification of the path in the container where project sources should be transferred/mounted when `mountSources` is `true`. When omitted, the default value of /projects is used.",
          "type": "string"
        },
        "volumeMounts": {
          "description": "List of volumes mounts that should be mounted is this container.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container.volumeMounts"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image": {
      "description": "Allows specifying the definition of an image for outer loop builds",
      "type": "object",
      "properties": {
        "autoBuild": {
          "description": "Defines if the image should be built during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "dockerfile": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image.dockerfile"
        },
        "imageName": {
          "description": "Name of the image for the resulting outerloop build",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.kubernetes": {
      "description": "Allows importing into the devworkspace the Kubernetes resources defined in a given manifest. For example this allows reusing the Kubernetes definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.kubernetes.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.openshift": {
      "description": "Allows importing into the devworkspace the OpenShift resources defined in a given manifest. For example this allows reusing the OpenShift definitions used to deploy some runtime components in production.",
      "type": "object",
      "properties": {
        "deployByDefault": {
          "description": "Defines if the component should be deployed during startup.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.openshift.endpoints"
          }
        },
        "inlined": {
          "description": "Inlined manifest",
          "type": "string"
        },
        "uri": {
          "description": "Location in a file fetched from a uri.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.volume": {
      "description": "Allows specifying the definition of a volume shared by several other components",
      "type": "object",
      "properties": {
        "ephemeral": {
          "description": "Ephemeral volumes are not stored persistently across restarts. Defaults to false",
          "type": "boolean"
        },
        "size": {
          "description": "Size of the volume",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.plugin.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.openshift.endpoints": {
      "type": "object",
      "required": [
        "name",
        "targetPort"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "default": "public",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "default": "http",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.kubernetes.endpoints": {
      "type": "object",
      "required": [
        "name",
        "targetPort"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "default": "public",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "default": "http",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.image.dockerfile": {
      "description": "Allows specifying dockerfile type build",
      "type": "object",
      "properties": {
        "args": {
          "description": "The arguments to supply to the dockerfile build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "buildContext": {
          "description": "Path of source directory to establish build context. Defaults to ${PROJECT_SOURCE} in the container",
          "type": "string"
        },
        "devfileRegistry": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.image.dockerfile.devfileRegistry"
        },
        "git": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.image.dockerfile.git"
        },
        "rootRequired": {
          "description": "Specify if a privileged builder pod is required.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "uri": {
          "description": "URI Reference of a Dockerfile. It can be a full URL or a relative URI from the current devfile as the base URI.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.image.dockerfile.devfileRegistry": {
      "description": "Dockerfile's Devfile Registry source",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "description": "Id in a devfile registry that contains a Dockerfile. The src in the OCI registry required for the Dockerfile build will be downloaded for building the image.",
          "type": "string"
        },
        "registryUrl": {
          "description": "Devfile Registry URL to pull the Dockerfile from when using the Devfile Registry as Dockerfile src. To ensure the Dockerfile gets resolved consistently in different environments, it is recommended to always specify the `devfileRegistryUrl` when `Id` is used.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.image.dockerfile.git": {
      "description": "Dockerfile's Git source",
      "type": "object",
      "required": [
        "remotes"
      ],
      "properties": {
        "checkoutFrom": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.components.items.image.dockerfile.git.checkoutFrom"
        },
        "fileLocation": {
          "description": "Location of the Dockerfile in the Git repository when using git as Dockerfile src. Defaults to Dockerfile.",
          "type": "string"
        },
        "remotes": {
          "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects & Image Component's Git source can only have at most one remote configured.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.image.dockerfile.git.checkoutFrom": {
      "description": "Defines from what the project should be checked out. Required if there are more than one remote configured",
      "type": "object",
      "properties": {
        "remote": {
          "description": "The remote name should be used as init. Required if there are more than one remote configured",
          "type": "string"
        },
        "revision": {
          "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.container.annotation": {
      "description": "Annotations that should be added to specific resources for this container",
      "type": "object",
      "properties": {
        "deployment": {
          "description": "Annotations to be added to deployment",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "service": {
          "description": "Annotations to be added to service",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.container.endpoints": {
      "type": "object",
      "required": [
        "name",
        "targetPort"
      ],
      "properties": {
        "annotation": {
          "description": "Annotations to be added to Kubernetes Ingress or Openshift Route",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "attributes": {
          "description": "Map of implementation-dependant string-based free-form attributes.\n\nExamples of Che-specific attributes:\n- cookiesAuthEnabled: \"true\" / \"false\",\n- type: \"terminal\" / \"ide\" / \"ide-dev\",",
          "type": "object",
          "additionalProperties": true
        },
        "exposure": {
          "description": "Describes how the endpoint should be exposed on the network.\n- `public` means that the endpoint will be exposed on the public network, typically through a K8S ingress or an OpenShift route.\n- `internal` means that the endpoint will be exposed internally outside of the main devworkspace POD, typically by K8S services, to be consumed by other elements running on the same cloud internal network.\n- `none` means that the endpoint will not be exposed and will only be accessible inside the main devworkspace POD, on a local address.\n\nDefault value is `public`",
          "type": "string",
          "default": "public",
          "enum": [
            "public",
            "internal",
            "none"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "Path of the endpoint URL",
          "type": "string"
        },
        "protocol": {
          "description": "Describes the application and transport protocols of the traffic that will go through this endpoint.\n- `http`: Endpoint will have `http` traffic, typically on a TCP connection. It will be automaticaly promoted to `https` when the `secure` field is set to `true`.\n- `https`: Endpoint will have `https` traffic, typically on a TCP connection.\n- `ws`: Endpoint will have `ws` traffic, typically on a TCP connection. It will be automaticaly promoted to `wss` when the `secure` field is set to `true`.\n- `wss`: Endpoint will have `wss` traffic, typically on a TCP connection.\n- `tcp`: Endpoint will have traffic on a TCP connection, without specifying an application protocol.\n- `udp`: Endpoint will have traffic on an UDP connection, without specifying an application protocol.\n\nDefault value is `http`",
          "type": "string",
          "default": "http",
          "enum": [
            "http",
            "https",
            "ws",
            "wss",
            "tcp",
            "udp"
          ]
        },
        "secure": {
          "description": "Describes whether the endpoint should be secured and protected by some authentication process. This requires a protocol of `https` or `wss`.",
          "type": "boolean"
        },
        "targetPort": {
          "description": "Port number to be used within the container component. The same port cannot be used by two different container components.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.container.env": {
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.components.items.container.volumeMounts": {
      "description": "Volume that should be mounted to a component container",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "The volume mount name is the name of an existing `Volume` component. If several containers mount the same volume name then they will reuse the same volume and will be able to access to the same files.",
          "type": "string",
          "maxLength": 63,
          "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
        },
        "path": {
          "description": "The path in the component container where the volume should be mounted. If not path is mentioned, default path is the is `/<name>`.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands.items.apply": {
      "description": "Command that consists in applying a given component definition, typically bound to a devworkspace event.\n\nFor example, when an `apply` command is bound to a `preStart` event, and references a `container` component, it will start the container as a K8S initContainer in the devworkspace POD, unless the component has its `dedicatedPod` field set to `true`.\n\nWhen no `apply` command exist for a given component, it is assumed the component will be applied at devworkspace start by default, unless `deployByDefault` for that component is set to false.",
      "type": "object",
      "required": [
        "component"
      ],
      "properties": {
        "component": {
          "description": "Describes component that will be applied",
          "type": "string"
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands.items.apply.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands.items.composite": {
      "description": "Composite command that allows executing several sub-commands either sequentially or concurrently",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that comprise this composite command",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands.items.composite.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "parallel": {
          "description": "Indicates if the sub-commands should be executed concurrently",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands.items.custom": {
      "description": "Custom command whose logic is implementation-dependant and should be provided by the user possibly through some dedicated plugin",
      "type": "object",
      "required": [
        "commandClass",
        "embeddedResource"
      ],
      "properties": {
        "commandClass": {
          "description": "Class of command that the associated implementation component should use to process this command with the appropriate logic",
          "type": "string"
        },
        "embeddedResource": {
          "description": "Additional free-form configuration for this custom command that the implementation component will know how to use",
          "type": "object",
          "additionalProperties": true
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands.items.custom.group"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands.items.exec": {
      "description": "CLI Command executed in an existing component container",
      "type": "object",
      "required": [
        "commandLine",
        "component"
      ],
      "properties": {
        "commandLine": {
          "description": "The actual command-line string\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        },
        "component": {
          "description": "Describes component to which given action relates",
          "type": "string"
        },
        "env": {
          "description": "Optional list of environment variables that have to be set before running the command",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands.items.exec.env"
          }
        },
        "group": {
          "$ref": "#/definitions/v1alpha2.DevWorkspaceTemplate.spec.commands.items.exec.group"
        },
        "hotReloadCapable": {
          "description": "Specify whether the command is restarted or not when the source code changes. If set to `true` the command won't be restarted. A *hotReloadCapable* `run` or `debug` command is expected to handle file changes on its own and won't be restarted. A *hotReloadCapable* `build` command is expected to be executed only once and won't be executed again. This field is taken into account only for commands `build`, `run` and `debug` with `isDefault` set to `true`.\n\nDefault value is `false`",
          "type": "boolean"
        },
        "label": {
          "description": "Optional label that provides a label for this command to be used in Editor UI menus for example",
          "type": "string"
        },
        "workingDir": {
          "description": "Working directory where the command should be executed\n\nSpecial variables that can be used:\n\n - `$PROJECTS_ROOT`: A path where projects sources are mounted as defined by container component's sourceMapping.\n\n - `$PROJECT_SOURCE`: A path to a project source ($PROJECTS_ROOT/<project-name>). If there are multiple projects, this will point to the directory of the first one.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands.items.exec.env": {
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands.items.exec.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands.items.custom.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands.items.composite.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.spec.commands.items.apply.group": {
      "description": "Defines the group this command is part of",
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "isDefault": {
          "description": "Identifies the default command for a given group kind",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of group the command is part of",
          "type": "string",
          "enum": [
            "build",
            "run",
            "test",
            "debug",
            "deploy"
          ]
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.metadata.managedFields": {
      "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
      "type": "object",
      "properties": {
        "apiVersion": {
          "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.",
          "type": "string"
        },
        "fieldsType": {
          "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"",
          "type": "string"
        },
        "fieldsV1": {
          "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.",
          "type": "object",
          "additionalProperties": true
        },
        "manager": {
          "description": "Manager is an identifier of the workflow managing these fields.",
          "type": "string"
        },
        "operation": {
          "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
          "type": "string"
        },
        "subresource": {
          "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.",
          "type": "string"
        },
        "time": {
          "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.",
          "type": "string",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "v1alpha2.DevWorkspaceTemplate.metadata.ownerReferences": {
      "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.",
      "type": "object",
      "required": [
        "apiVersion",
        "kind",
        "name",
        "uid"
      ],
      "properties": {
        "apiVersion": {
          "description": "API version of the referent.",
          "type": "string"
        },
        "blockOwnerDeletion": {
          "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.",
          "type": "boolean"
        },
        "controller": {
          "description": "If true, this reference points to the managing controller.",
          "type": "boolean"
        },
        "kind": {
          "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
          "type": "string"
        },
        "name": {
          "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
          "type": "string"
        },
        "uid": {
          "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "paths": {},
  "info": {
    "title": "Kubernetes",
    "version": ""
  },
  "swagger": "2.0"
}