apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    service.beta.openshift.io/inject-cabundle: "true"
  labels:
    app.kubernetes.io/name: devworkspace-controller
    app.kubernetes.io/part-of: devworkspace-operator
  name: devworkspacetemplates.workspace.devfile.io
spec:
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        caBundle: Cg==
        service:
          name: devworkspace-controller-manager-service
          namespace: devworkspace-controller
          path: /convert
          port: 443
      conversionReviewVersions:
      - v1
  group: workspace.devfile.io
  names:
    kind: DevWorkspaceTemplate
    listKind: DevWorkspaceTemplateList
    plural: devworkspacetemplates
    shortNames:
    - dwt
    singular: devworkspacetemplate
  scope: Namespaced
  versions:
  - deprecated: true
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: DevWorkspaceTemplate is the Schema for the devworkspacetemplates
          API
        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:
            type: object
          spec:
            description: Structure of the workspace. This is also the specification
              of a workspace template.
            properties:
              commands:
                description: Predefined, ready-to-use, workspace-related commands
                items:
                  oneOf:
                  - required:
                    - exec
                  - required:
                    - apply
                  - required:
                    - vscodeTask
                  - required:
                    - vscodeLaunch
                  - required:
                    - composite
                  - required:
                    - custom
                  properties:
                    apply:
                      description: "Command that consists in applying a given component
                        definition, typically bound to a workspace event. \n For 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 workspace POD, unless the component
                        has its `dedicatedPod` field set to `true`. \n When no `apply`
                        command exist for a given component, it is assumed the component
                        will be applied at workspace start by default."
                      properties:
                        attributes:
                          additionalProperties:
                            type: string
                          description: Optional map of free-form additional command
                            attributes
                          type: object
                        component:
                          description: Describes component that will be applied
                          type: string
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        id:
                          description: Mandatory identifier that allows referencing
                            this command in composite commands, from a parent, or
                            in events.
                          type: string
                        label:
                          description: Optional label that provides a label for this
                            command to be used in Editor UI menus for example
                          type: string
                      required:
                      - id
                      type: object
                    commandType:
                      description: Type of workspace command
                      enum:
                      - Exec
                      - Apply
                      - VscodeTask
                      - VscodeLaunch
                      - Composite
                      - Custom
                      type: string
                    composite:
                      description: Composite command that allows executing several
                        sub-commands either sequentially or concurrently
                      properties:
                        attributes:
                          additionalProperties:
                            type: string
                          description: Optional map of free-form additional command
                            attributes
                          type: object
                        commands:
                          description: The commands that comprise this composite command
                          items:
                            type: string
                          type: array
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        id:
                          description: Mandatory identifier that allows referencing
                            this command in composite commands, from a parent, or
                            in events.
                          type: string
                        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
                      required:
                      - id
                      type: object
                    custom:
                      description: Custom command whose logic is implementation-dependant
                        and should be provided by the user possibly through some dedicated
                        plugin
                      properties:
                        attributes:
                          additionalProperties:
                            type: string
                          description: Optional map of free-form additional command
                            attributes
                          type: object
                        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
                          x-kubernetes-embedded-resource: true
                          x-kubernetes-preserve-unknown-fields: true
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        id:
                          description: Mandatory identifier that allows referencing
                            this command in composite commands, from a parent, or
                            in events.
                          type: string
                        label:
                          description: Optional label that provides a label for this
                            command to be used in Editor UI menus for example
                          type: string
                      required:
                      - commandClass
                      - embeddedResource
                      - id
                      type: object
                    exec:
                      description: CLI Command executed in an existing component container
                      properties:
                        attributes:
                          additionalProperties:
                            type: string
                          description: Optional map of free-form additional command
                            attributes
                          type: object
                        commandLine:
                          description: "The actual command-line string \n Special
                            variables that can be used: \n  - `$PROJECTS_ROOT`: A
                            path where projects sources are mounted \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
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                            required:
                            - name
                            - value
                            type: object
                          type: array
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        hotReloadCapable:
                          description: "Whether the command is capable to reload itself
                            when source code changes. If set to `true` the command
                            won't be restarted and it is expected to handle file changes
                            on its own. \n Default value is `false`"
                          type: boolean
                        id:
                          description: Mandatory identifier that allows referencing
                            this command in composite commands, from a parent, or
                            in events.
                          type: string
                        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 Special variables that can be used: \n
                            \ - `${PROJECTS_ROOT}`: A path where projects sources
                            are mounted \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
                      required:
                      - id
                      type: object
                    vscodeLaunch:
                      description: "Command providing the definition of a VsCode launch
                        action \n Deprecated; removed in v1alpha2"
                      oneOf:
                      - required:
                        - uri
                      - required:
                        - inlined
                      properties:
                        attributes:
                          additionalProperties:
                            type: string
                          description: Optional map of free-form additional command
                            attributes
                          type: object
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        id:
                          description: Mandatory identifier that allows referencing
                            this command in composite commands, from a parent, or
                            in events.
                          type: string
                        inlined:
                          description: Inlined content of the VsCode configuration
                          type: string
                        locationType:
                          description: Type of Vscode configuration command location
                          enum:
                          - Uri
                          - Inlined
                          type: string
                        uri:
                          description: Location as an absolute of relative URI the
                            VsCode configuration will be fetched from
                          type: string
                      required:
                      - id
                      type: object
                    vscodeTask:
                      description: "Command providing the definition of a VsCode Task
                        \n Deprecated; removed in v1alpha2"
                      oneOf:
                      - required:
                        - uri
                      - required:
                        - inlined
                      properties:
                        attributes:
                          additionalProperties:
                            type: string
                          description: Optional map of free-form additional command
                            attributes
                          type: object
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        id:
                          description: Mandatory identifier that allows referencing
                            this command in composite commands, from a parent, or
                            in events.
                          type: string
                        inlined:
                          description: Inlined content of the VsCode configuration
                          type: string
                        locationType:
                          description: Type of Vscode configuration command location
                          enum:
                          - Uri
                          - Inlined
                          type: string
                        uri:
                          description: Location as an absolute of relative URI the
                            VsCode configuration will be fetched from
                          type: string
                      required:
                      - id
                      type: object
                  type: object
                type: array
              components:
                description: List of the workspace components, such as editor and
                  plugins, user-provided containers, or other types of components
                items:
                  oneOf:
                  - required:
                    - container
                  - required:
                    - kubernetes
                  - required:
                    - openshift
                  - required:
                    - volume
                  - required:
                    - plugin
                  - required:
                    - custom
                  properties:
                    componentType:
                      description: Type of component
                      enum:
                      - Container
                      - Kubernetes
                      - Openshift
                      - Volume
                      - Plugin
                      - Custom
                      type: string
                    container:
                      description: Allows adding and configuring workspace-related
                        containers
                      properties:
                        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 Defaults to an empty array,
                            meaning use whatever is defined in the image."
                          items:
                            type: string
                          type: array
                        command:
                          description: "The command to run in the dockerimage component
                            instead of the default one provided in the image. \n Defaults
                            to an empty array, meaning use whatever is defined in
                            the image."
                          items:
                            type: string
                          type: array
                        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 Default value is `false`"
                          type: boolean
                        endpoints:
                          items:
                            properties:
                              attributes:
                                additionalProperties:
                                  type: string
                                description: "Map of implementation-dependant string-based
                                  free-form attributes. \n Examples of Che-specific
                                  attributes: \n - cookiesAuthEnabled: \"true\" /
                                  \"false\", \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                type: object
                              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 workspace
                                  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 workspace POD, on a local address. \n Default
                                  value is `public`"
                                enum:
                                - public
                                - internal
                                - none
                                type: string
                              name:
                                type: string
                              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 Default value is `http`"
                                type: string
                              secure:
                                description: Describes whether the endpoint should
                                  be secured and protected by some authentication
                                  process
                                type: boolean
                              targetPort:
                                type: integer
                            required:
                            - name
                            type: object
                          type: array
                        env:
                          description: Environment variables used in this container
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                            required:
                            - name
                            - value
                            type: object
                          type: array
                        image:
                          type: string
                        memoryLimit:
                          type: string
                        mountSources:
                          type: boolean
                        name:
                          type: string
                        sourceMapping:
                          description: Optional specification of the path in the container
                            where project sources should be transferred/mounted when
                            `mountSources` is `true`. When omitted, the value of the
                            `PROJECTS_ROOT` environment variable is used.
                          type: string
                        volumeMounts:
                          description: List of volumes mounts that should be mounted
                            is this container.
                          items:
                            description: Volume that should be mounted to a component
                              container
                            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
                              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
                            required:
                            - name
                            type: object
                          type: array
                      required:
                      - name
                      type: object
                    custom:
                      description: Custom component whose logic is implementation-dependant
                        and should be provided by the user possibly through some dedicated
                        controller
                      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
                          x-kubernetes-embedded-resource: true
                          x-kubernetes-preserve-unknown-fields: true
                        name:
                          description: Mandatory name that allows referencing the
                            component in commands, or inside a parent
                          type: string
                      required:
                      - componentClass
                      - embeddedResource
                      - name
                      type: object
                    kubernetes:
                      description: Allows importing into the workspace the Kubernetes
                        resources defined in a given manifest. For example this allows
                        reusing the Kubernetes definitions used to deploy some runtime
                        components in production.
                      oneOf:
                      - required:
                        - uri
                      - required:
                        - inlined
                      properties:
                        endpoints:
                          items:
                            properties:
                              attributes:
                                additionalProperties:
                                  type: string
                                description: "Map of implementation-dependant string-based
                                  free-form attributes. \n Examples of Che-specific
                                  attributes: \n - cookiesAuthEnabled: \"true\" /
                                  \"false\", \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                type: object
                              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 workspace
                                  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 workspace POD, on a local address. \n Default
                                  value is `public`"
                                enum:
                                - public
                                - internal
                                - none
                                type: string
                              name:
                                type: string
                              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 Default value is `http`"
                                type: string
                              secure:
                                description: Describes whether the endpoint should
                                  be secured and protected by some authentication
                                  process
                                type: boolean
                              targetPort:
                                type: integer
                            required:
                            - name
                            type: object
                          type: array
                        inlined:
                          description: Inlined manifest
                          type: string
                        locationType:
                          description: Type of Kubernetes-like location
                          enum:
                          - Uri
                          - Inlined
                          type: string
                        name:
                          description: Mandatory name that allows referencing the
                            component in commands, or inside a parent
                          type: string
                        uri:
                          description: Location in a file fetched from a uri.
                          type: string
                      required:
                      - name
                      type: object
                    openshift:
                      description: Allows importing into the workspace the OpenShift
                        resources defined in a given manifest. For example this allows
                        reusing the OpenShift definitions used to deploy some runtime
                        components in production.
                      oneOf:
                      - required:
                        - uri
                      - required:
                        - inlined
                      properties:
                        endpoints:
                          items:
                            properties:
                              attributes:
                                additionalProperties:
                                  type: string
                                description: "Map of implementation-dependant string-based
                                  free-form attributes. \n Examples of Che-specific
                                  attributes: \n - cookiesAuthEnabled: \"true\" /
                                  \"false\", \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                type: object
                              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 workspace
                                  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 workspace POD, on a local address. \n Default
                                  value is `public`"
                                enum:
                                - public
                                - internal
                                - none
                                type: string
                              name:
                                type: string
                              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 Default value is `http`"
                                type: string
                              secure:
                                description: Describes whether the endpoint should
                                  be secured and protected by some authentication
                                  process
                                type: boolean
                              targetPort:
                                type: integer
                            required:
                            - name
                            type: object
                          type: array
                        inlined:
                          description: Inlined manifest
                          type: string
                        locationType:
                          description: Type of Kubernetes-like location
                          enum:
                          - Uri
                          - Inlined
                          type: string
                        name:
                          description: Mandatory name that allows referencing the
                            component in commands, or inside a parent
                          type: string
                        uri:
                          description: Location in a file fetched from a uri.
                          type: string
                      required:
                      - name
                      type: object
                    plugin:
                      description: "Allows importing a plugin. \n Plugins 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"
                      oneOf:
                      - required:
                        - uri
                      - required:
                        - id
                      - required:
                        - kubernetes
                      properties:
                        commands:
                          description: Overrides of commands encapsulated in a parent
                            devfile or a plugin. Overriding is done using a strategic
                            merge patch
                          items:
                            oneOf:
                            - required:
                              - exec
                            - required:
                              - apply
                            - required:
                              - vscodeTask
                            - required:
                              - vscodeLaunch
                            - required:
                              - composite
                            - required:
                              - custom
                            properties:
                              apply:
                                description: "Command that consists in applying a
                                  given component definition, typically bound to a
                                  workspace event. \n For 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 workspace POD, unless
                                  the component has its `dedicatedPod` field set to
                                  `true`. \n When no `apply` command exist for a given
                                  component, it is assumed the component will be applied
                                  at workspace start by default."
                                properties:
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: Optional map of free-form additional
                                      command attributes
                                    type: object
                                  component:
                                    description: Describes component that will be
                                      applied
                                    type: string
                                  group:
                                    description: Defines the group this command is
                                      part of
                                    properties:
                                      isDefault:
                                        description: Identifies the default command
                                          for a given group kind
                                        type: boolean
                                      kind:
                                        description: Kind of group the command is
                                          part of
                                        enum:
                                        - build
                                        - run
                                        - test
                                        - debug
                                        type: string
                                    required:
                                    - kind
                                    type: object
                                  id:
                                    description: Mandatory identifier that allows
                                      referencing this command in composite commands,
                                      from a parent, or in events.
                                    type: string
                                  label:
                                    description: Optional label that provides a label
                                      for this command to be used in Editor UI menus
                                      for example
                                    type: string
                                required:
                                - id
                                type: object
                              commandType:
                                description: Type of workspace command
                                enum:
                                - Exec
                                - Apply
                                - VscodeTask
                                - VscodeLaunch
                                - Composite
                                - Custom
                                type: string
                              composite:
                                description: Composite command that allows executing
                                  several sub-commands either sequentially or concurrently
                                properties:
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: Optional map of free-form additional
                                      command attributes
                                    type: object
                                  commands:
                                    description: The commands that comprise this composite
                                      command
                                    items:
                                      type: string
                                    type: array
                                  group:
                                    description: Defines the group this command is
                                      part of
                                    properties:
                                      isDefault:
                                        description: Identifies the default command
                                          for a given group kind
                                        type: boolean
                                      kind:
                                        description: Kind of group the command is
                                          part of
                                        enum:
                                        - build
                                        - run
                                        - test
                                        - debug
                                        type: string
                                    required:
                                    - kind
                                    type: object
                                  id:
                                    description: Mandatory identifier that allows
                                      referencing this command in composite commands,
                                      from a parent, or in events.
                                    type: string
                                  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
                                required:
                                - id
                                type: object
                              custom:
                                description: Custom command whose logic is implementation-dependant
                                  and should be provided by the user possibly through
                                  some dedicated plugin
                                properties:
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: Optional map of free-form additional
                                      command attributes
                                    type: object
                                  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
                                    x-kubernetes-embedded-resource: true
                                    x-kubernetes-preserve-unknown-fields: true
                                  group:
                                    description: Defines the group this command is
                                      part of
                                    properties:
                                      isDefault:
                                        description: Identifies the default command
                                          for a given group kind
                                        type: boolean
                                      kind:
                                        description: Kind of group the command is
                                          part of
                                        enum:
                                        - build
                                        - run
                                        - test
                                        - debug
                                        type: string
                                    required:
                                    - kind
                                    type: object
                                  id:
                                    description: Mandatory identifier that allows
                                      referencing this command in composite commands,
                                      from a parent, or in events.
                                    type: string
                                  label:
                                    description: Optional label that provides a label
                                      for this command to be used in Editor UI menus
                                      for example
                                    type: string
                                required:
                                - commandClass
                                - embeddedResource
                                - id
                                type: object
                              exec:
                                description: CLI Command executed in an existing component
                                  container
                                properties:
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: Optional map of free-form additional
                                      command attributes
                                    type: object
                                  commandLine:
                                    description: "The actual command-line string \n
                                      Special variables that can be used: \n  - `$PROJECTS_ROOT`:
                                      A path where projects sources are mounted \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
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  group:
                                    description: Defines the group this command is
                                      part of
                                    properties:
                                      isDefault:
                                        description: Identifies the default command
                                          for a given group kind
                                        type: boolean
                                      kind:
                                        description: Kind of group the command is
                                          part of
                                        enum:
                                        - build
                                        - run
                                        - test
                                        - debug
                                        type: string
                                    required:
                                    - kind
                                    type: object
                                  hotReloadCapable:
                                    description: "Whether the command is capable to
                                      reload itself when source code changes. If set
                                      to `true` the command won't be restarted and
                                      it is expected to handle file changes on its
                                      own. \n Default value is `false`"
                                    type: boolean
                                  id:
                                    description: Mandatory identifier that allows
                                      referencing this command in composite commands,
                                      from a parent, or in events.
                                    type: string
                                  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 Special variables that
                                      can be used: \n  - `${PROJECTS_ROOT}`: A path
                                      where projects sources are mounted \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
                                required:
                                - id
                                type: object
                              vscodeLaunch:
                                description: "Command providing the definition of
                                  a VsCode launch action \n Deprecated; removed in
                                  v1alpha2"
                                oneOf:
                                - required:
                                  - uri
                                - required:
                                  - inlined
                                properties:
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: Optional map of free-form additional
                                      command attributes
                                    type: object
                                  group:
                                    description: Defines the group this command is
                                      part of
                                    properties:
                                      isDefault:
                                        description: Identifies the default command
                                          for a given group kind
                                        type: boolean
                                      kind:
                                        description: Kind of group the command is
                                          part of
                                        enum:
                                        - build
                                        - run
                                        - test
                                        - debug
                                        type: string
                                    required:
                                    - kind
                                    type: object
                                  id:
                                    description: Mandatory identifier that allows
                                      referencing this command in composite commands,
                                      from a parent, or in events.
                                    type: string
                                  inlined:
                                    description: Inlined content of the VsCode configuration
                                    type: string
                                  locationType:
                                    description: Type of Vscode configuration command
                                      location
                                    enum:
                                    - Uri
                                    - Inlined
                                    type: string
                                  uri:
                                    description: Location as an absolute of relative
                                      URI the VsCode configuration will be fetched
                                      from
                                    type: string
                                required:
                                - id
                                type: object
                              vscodeTask:
                                description: "Command providing the definition of
                                  a VsCode Task \n Deprecated; removed in v1alpha2"
                                oneOf:
                                - required:
                                  - uri
                                - required:
                                  - inlined
                                properties:
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: Optional map of free-form additional
                                      command attributes
                                    type: object
                                  group:
                                    description: Defines the group this command is
                                      part of
                                    properties:
                                      isDefault:
                                        description: Identifies the default command
                                          for a given group kind
                                        type: boolean
                                      kind:
                                        description: Kind of group the command is
                                          part of
                                        enum:
                                        - build
                                        - run
                                        - test
                                        - debug
                                        type: string
                                    required:
                                    - kind
                                    type: object
                                  id:
                                    description: Mandatory identifier that allows
                                      referencing this command in composite commands,
                                      from a parent, or in events.
                                    type: string
                                  inlined:
                                    description: Inlined content of the VsCode configuration
                                    type: string
                                  locationType:
                                    description: Type of Vscode configuration command
                                      location
                                    enum:
                                    - Uri
                                    - Inlined
                                    type: string
                                  uri:
                                    description: Location as an absolute of relative
                                      URI the VsCode configuration will be fetched
                                      from
                                    type: string
                                required:
                                - id
                                type: object
                            type: object
                          type: array
                        components:
                          description: Overrides of components encapsulated in a plugin.
                            Overriding is done using a strategic merge patch. A plugin
                            cannot override embedded plugin components.
                          items:
                            oneOf:
                            - required:
                              - container
                            - required:
                              - kubernetes
                            - required:
                              - openshift
                            - required:
                              - volume
                            properties:
                              componentType:
                                description: Type of component override for a plugin
                                enum:
                                - Container
                                - Kubernetes
                                - Openshift
                                - Volume
                                type: string
                              container:
                                description: Configuration overriding for a Container
                                  component in a plugin
                                properties:
                                  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
                                      Defaults to an empty array, meaning use whatever
                                      is defined in the image."
                                    items:
                                      type: string
                                    type: array
                                  command:
                                    description: "The command to run in the dockerimage
                                      component instead of the default one provided
                                      in the image. \n Defaults to an empty array,
                                      meaning use whatever is defined in the image."
                                    items:
                                      type: string
                                    type: array
                                  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 Default value is `false`"
                                    type: boolean
                                  endpoints:
                                    items:
                                      properties:
                                        attributes:
                                          additionalProperties:
                                            type: string
                                          description: "Map of implementation-dependant
                                            string-based free-form attributes. \n
                                            Examples of Che-specific attributes: \n
                                            - cookiesAuthEnabled: \"true\" / \"false\",
                                            \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                          type: object
                                        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 workspace 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 workspace POD, on a local
                                            address. \n Default value is `public`"
                                          enum:
                                          - public
                                          - internal
                                          - none
                                          type: string
                                        name:
                                          type: string
                                        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 Default value
                                            is `http`"
                                          type: string
                                        secure:
                                          description: Describes whether the endpoint
                                            should be secured and protected by some
                                            authentication process
                                          type: boolean
                                        targetPort:
                                          type: integer
                                      required:
                                      - name
                                      type: object
                                    type: array
                                  env:
                                    description: Environment variables used in this
                                      container
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  image:
                                    type: string
                                  memoryLimit:
                                    type: string
                                  mountSources:
                                    type: boolean
                                  name:
                                    type: string
                                  sourceMapping:
                                    description: Optional specification of the path
                                      in the container where project sources should
                                      be transferred/mounted when `mountSources` is
                                      `true`. When omitted, the value of the `PROJECTS_ROOT`
                                      environment variable is used.
                                    type: string
                                  volumeMounts:
                                    description: List of volumes mounts that should
                                      be mounted is this container.
                                    items:
                                      description: Volume that should be mounted to
                                        a component container
                                      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
                                        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
                                      required:
                                      - name
                                      type: object
                                    type: array
                                required:
                                - name
                                type: object
                              kubernetes:
                                description: Configuration overriding for a Kubernetes
                                  component in a plugin
                                oneOf:
                                - required:
                                  - uri
                                - required:
                                  - inlined
                                properties:
                                  endpoints:
                                    items:
                                      properties:
                                        attributes:
                                          additionalProperties:
                                            type: string
                                          description: "Map of implementation-dependant
                                            string-based free-form attributes. \n
                                            Examples of Che-specific attributes: \n
                                            - cookiesAuthEnabled: \"true\" / \"false\",
                                            \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                          type: object
                                        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 workspace 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 workspace POD, on a local
                                            address. \n Default value is `public`"
                                          enum:
                                          - public
                                          - internal
                                          - none
                                          type: string
                                        name:
                                          type: string
                                        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 Default value
                                            is `http`"
                                          type: string
                                        secure:
                                          description: Describes whether the endpoint
                                            should be secured and protected by some
                                            authentication process
                                          type: boolean
                                        targetPort:
                                          type: integer
                                      required:
                                      - name
                                      type: object
                                    type: array
                                  inlined:
                                    description: Inlined manifest
                                    type: string
                                  locationType:
                                    description: Type of Kubernetes-like location
                                    enum:
                                    - Uri
                                    - Inlined
                                    type: string
                                  name:
                                    description: Mandatory name that allows referencing
                                      the component in commands, or inside a parent
                                    type: string
                                  uri:
                                    description: Location in a file fetched from a
                                      uri.
                                    type: string
                                required:
                                - name
                                type: object
                              openshift:
                                description: Configuration overriding for an OpenShift
                                  component in a plugin
                                oneOf:
                                - required:
                                  - uri
                                - required:
                                  - inlined
                                properties:
                                  endpoints:
                                    items:
                                      properties:
                                        attributes:
                                          additionalProperties:
                                            type: string
                                          description: "Map of implementation-dependant
                                            string-based free-form attributes. \n
                                            Examples of Che-specific attributes: \n
                                            - cookiesAuthEnabled: \"true\" / \"false\",
                                            \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                          type: object
                                        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 workspace 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 workspace POD, on a local
                                            address. \n Default value is `public`"
                                          enum:
                                          - public
                                          - internal
                                          - none
                                          type: string
                                        name:
                                          type: string
                                        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 Default value
                                            is `http`"
                                          type: string
                                        secure:
                                          description: Describes whether the endpoint
                                            should be secured and protected by some
                                            authentication process
                                          type: boolean
                                        targetPort:
                                          type: integer
                                      required:
                                      - name
                                      type: object
                                    type: array
                                  inlined:
                                    description: Inlined manifest
                                    type: string
                                  locationType:
                                    description: Type of Kubernetes-like location
                                    enum:
                                    - Uri
                                    - Inlined
                                    type: string
                                  name:
                                    description: Mandatory name that allows referencing
                                      the component in commands, or inside a parent
                                    type: string
                                  uri:
                                    description: Location in a file fetched from a
                                      uri.
                                    type: string
                                required:
                                - name
                                type: object
                              volume:
                                description: Configuration overriding for a Volume
                                  component in a plugin
                                properties:
                                  ephemeral:
                                    description: Ephemeral volumes are not stored
                                      persistently across restarts. Defaults to false
                                    type: boolean
                                  name:
                                    description: Mandatory name that allows referencing
                                      the Volume component in Container volume mounts
                                      or inside a parent
                                    type: string
                                  size:
                                    description: Size of the volume
                                    type: string
                                required:
                                - name
                                type: object
                            type: object
                          type: array
                        id:
                          description: Id in a registry that contains a Devfile yaml
                            file
                          type: string
                        importReferenceType:
                          description: type of location from where the referenced
                            template structure should be retrieved
                          enum:
                          - Uri
                          - Id
                          - Kubernetes
                          type: string
                        kubernetes:
                          description: Reference to a Kubernetes CRD of type DevWorkspaceTemplate
                          properties:
                            name:
                              type: string
                            namespace:
                              type: string
                          required:
                          - name
                          type: object
                        name:
                          description: Optional name that allows referencing the component
                            in commands, or inside a parent If omitted it will be
                            infered from the location (uri or registryEntry)
                          type: string
                        registryUrl:
                          type: string
                        uri:
                          description: Uri of a Devfile yaml file
                          type: string
                      type: object
                    volume:
                      description: Allows specifying the definition of a volume shared
                        by several other components
                      properties:
                        ephemeral:
                          description: Ephemeral volumes are not stored persistently
                            across restarts. Defaults to false
                          type: boolean
                        name:
                          description: Mandatory name that allows referencing the
                            Volume component in Container volume mounts or inside
                            a parent
                          type: string
                        size:
                          description: Size of the volume
                          type: string
                      required:
                      - name
                      type: object
                  type: object
                type: array
              events:
                description: Bindings of commands to events. Each command is referred-to
                  by its name.
                properties:
                  postStart:
                    description: Names of commands that should be executed after the
                      workspace 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.
                    items:
                      type: string
                    type: array
                  postStop:
                    description: Names of commands that should be executed after stopping
                      the workspace.
                    items:
                      type: string
                    type: array
                  preStart:
                    description: Names of commands that should be executed before
                      the workspace start. Kubernetes-wise, these commands would typically
                      be executed in init containers of the workspace POD.
                    items:
                      type: string
                    type: array
                  preStop:
                    description: Names of commands that should be executed before
                      stopping the workspace.
                    items:
                      type: string
                    type: array
                type: object
              parent:
                description: Parent workspace template
                oneOf:
                - required:
                  - uri
                - required:
                  - id
                - required:
                  - kubernetes
                properties:
                  commands:
                    description: Overrides of commands encapsulated in a parent devfile
                      or a plugin. Overriding is done using a strategic merge patch
                    items:
                      oneOf:
                      - required:
                        - exec
                      - required:
                        - apply
                      - required:
                        - vscodeTask
                      - required:
                        - vscodeLaunch
                      - required:
                        - composite
                      - required:
                        - custom
                      properties:
                        apply:
                          description: "Command that consists in applying a given
                            component definition, typically bound to a workspace event.
                            \n For 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 workspace POD, unless the component has its `dedicatedPod`
                            field set to `true`. \n When no `apply` command exist
                            for a given component, it is assumed the component will
                            be applied at workspace start by default."
                          properties:
                            attributes:
                              additionalProperties:
                                type: string
                              description: Optional map of free-form additional command
                                attributes
                              type: object
                            component:
                              description: Describes component that will be applied
                              type: string
                            group:
                              description: Defines the group this command is part
                                of
                              properties:
                                isDefault:
                                  description: Identifies the default command for
                                    a given group kind
                                  type: boolean
                                kind:
                                  description: Kind of group the command is part of
                                  enum:
                                  - build
                                  - run
                                  - test
                                  - debug
                                  type: string
                              required:
                              - kind
                              type: object
                            id:
                              description: Mandatory identifier that allows referencing
                                this command in composite commands, from a parent,
                                or in events.
                              type: string
                            label:
                              description: Optional label that provides a label for
                                this command to be used in Editor UI menus for example
                              type: string
                          required:
                          - id
                          type: object
                        commandType:
                          description: Type of workspace command
                          enum:
                          - Exec
                          - Apply
                          - VscodeTask
                          - VscodeLaunch
                          - Composite
                          - Custom
                          type: string
                        composite:
                          description: Composite command that allows executing several
                            sub-commands either sequentially or concurrently
                          properties:
                            attributes:
                              additionalProperties:
                                type: string
                              description: Optional map of free-form additional command
                                attributes
                              type: object
                            commands:
                              description: The commands that comprise this composite
                                command
                              items:
                                type: string
                              type: array
                            group:
                              description: Defines the group this command is part
                                of
                              properties:
                                isDefault:
                                  description: Identifies the default command for
                                    a given group kind
                                  type: boolean
                                kind:
                                  description: Kind of group the command is part of
                                  enum:
                                  - build
                                  - run
                                  - test
                                  - debug
                                  type: string
                              required:
                              - kind
                              type: object
                            id:
                              description: Mandatory identifier that allows referencing
                                this command in composite commands, from a parent,
                                or in events.
                              type: string
                            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
                          required:
                          - id
                          type: object
                        custom:
                          description: Custom command whose logic is implementation-dependant
                            and should be provided by the user possibly through some
                            dedicated plugin
                          properties:
                            attributes:
                              additionalProperties:
                                type: string
                              description: Optional map of free-form additional command
                                attributes
                              type: object
                            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
                              x-kubernetes-embedded-resource: true
                              x-kubernetes-preserve-unknown-fields: true
                            group:
                              description: Defines the group this command is part
                                of
                              properties:
                                isDefault:
                                  description: Identifies the default command for
                                    a given group kind
                                  type: boolean
                                kind:
                                  description: Kind of group the command is part of
                                  enum:
                                  - build
                                  - run
                                  - test
                                  - debug
                                  type: string
                              required:
                              - kind
                              type: object
                            id:
                              description: Mandatory identifier that allows referencing
                                this command in composite commands, from a parent,
                                or in events.
                              type: string
                            label:
                              description: Optional label that provides a label for
                                this command to be used in Editor UI menus for example
                              type: string
                          required:
                          - commandClass
                          - embeddedResource
                          - id
                          type: object
                        exec:
                          description: CLI Command executed in an existing component
                            container
                          properties:
                            attributes:
                              additionalProperties:
                                type: string
                              description: Optional map of free-form additional command
                                attributes
                              type: object
                            commandLine:
                              description: "The actual command-line string \n Special
                                variables that can be used: \n  - `$PROJECTS_ROOT`:
                                A path where projects sources are mounted \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
                              items:
                                properties:
                                  name:
                                    type: string
                                  value:
                                    type: string
                                required:
                                - name
                                - value
                                type: object
                              type: array
                            group:
                              description: Defines the group this command is part
                                of
                              properties:
                                isDefault:
                                  description: Identifies the default command for
                                    a given group kind
                                  type: boolean
                                kind:
                                  description: Kind of group the command is part of
                                  enum:
                                  - build
                                  - run
                                  - test
                                  - debug
                                  type: string
                              required:
                              - kind
                              type: object
                            hotReloadCapable:
                              description: "Whether the command is capable to reload
                                itself when source code changes. If set to `true`
                                the command won't be restarted and it is expected
                                to handle file changes on its own. \n Default value
                                is `false`"
                              type: boolean
                            id:
                              description: Mandatory identifier that allows referencing
                                this command in composite commands, from a parent,
                                or in events.
                              type: string
                            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 Special variables that can be used:
                                \n  - `${PROJECTS_ROOT}`: A path where projects sources
                                are mounted \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
                          required:
                          - id
                          type: object
                        vscodeLaunch:
                          description: "Command providing the definition of a VsCode
                            launch action \n Deprecated; removed in v1alpha2"
                          oneOf:
                          - required:
                            - uri
                          - required:
                            - inlined
                          properties:
                            attributes:
                              additionalProperties:
                                type: string
                              description: Optional map of free-form additional command
                                attributes
                              type: object
                            group:
                              description: Defines the group this command is part
                                of
                              properties:
                                isDefault:
                                  description: Identifies the default command for
                                    a given group kind
                                  type: boolean
                                kind:
                                  description: Kind of group the command is part of
                                  enum:
                                  - build
                                  - run
                                  - test
                                  - debug
                                  type: string
                              required:
                              - kind
                              type: object
                            id:
                              description: Mandatory identifier that allows referencing
                                this command in composite commands, from a parent,
                                or in events.
                              type: string
                            inlined:
                              description: Inlined content of the VsCode configuration
                              type: string
                            locationType:
                              description: Type of Vscode configuration command location
                              enum:
                              - Uri
                              - Inlined
                              type: string
                            uri:
                              description: Location as an absolute of relative URI
                                the VsCode configuration will be fetched from
                              type: string
                          required:
                          - id
                          type: object
                        vscodeTask:
                          description: "Command providing the definition of a VsCode
                            Task \n Deprecated; removed in v1alpha2"
                          oneOf:
                          - required:
                            - uri
                          - required:
                            - inlined
                          properties:
                            attributes:
                              additionalProperties:
                                type: string
                              description: Optional map of free-form additional command
                                attributes
                              type: object
                            group:
                              description: Defines the group this command is part
                                of
                              properties:
                                isDefault:
                                  description: Identifies the default command for
                                    a given group kind
                                  type: boolean
                                kind:
                                  description: Kind of group the command is part of
                                  enum:
                                  - build
                                  - run
                                  - test
                                  - debug
                                  type: string
                              required:
                              - kind
                              type: object
                            id:
                              description: Mandatory identifier that allows referencing
                                this command in composite commands, from a parent,
                                or in events.
                              type: string
                            inlined:
                              description: Inlined content of the VsCode configuration
                              type: string
                            locationType:
                              description: Type of Vscode configuration command location
                              enum:
                              - Uri
                              - Inlined
                              type: string
                            uri:
                              description: Location as an absolute of relative URI
                                the VsCode configuration will be fetched from
                              type: string
                          required:
                          - id
                          type: object
                      type: object
                    type: array
                  components:
                    description: Overrides of components encapsulated in a parent
                      devfile. Overriding is done using a strategic merge patch
                    items:
                      oneOf:
                      - required:
                        - container
                      - required:
                        - kubernetes
                      - required:
                        - openshift
                      - required:
                        - volume
                      - required:
                        - plugin
                      - required:
                        - custom
                      properties:
                        componentType:
                          description: Type of component
                          enum:
                          - Container
                          - Kubernetes
                          - Openshift
                          - Volume
                          - Plugin
                          - Custom
                          type: string
                        container:
                          description: Allows adding and configuring workspace-related
                            containers
                          properties:
                            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 Defaults
                                to an empty array, meaning use whatever is defined
                                in the image."
                              items:
                                type: string
                              type: array
                            command:
                              description: "The command to run in the dockerimage
                                component instead of the default one provided in the
                                image. \n Defaults to an empty array, meaning use
                                whatever is defined in the image."
                              items:
                                type: string
                              type: array
                            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 Default value
                                is `false`"
                              type: boolean
                            endpoints:
                              items:
                                properties:
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: "Map of implementation-dependant
                                      string-based free-form attributes. \n Examples
                                      of Che-specific attributes: \n - cookiesAuthEnabled:
                                      \"true\" / \"false\", \n - type: \"terminal\"
                                      / \"ide\" / \"ide-dev\","
                                    type: object
                                  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 workspace 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
                                      workspace POD, on a local address. \n Default
                                      value is `public`"
                                    enum:
                                    - public
                                    - internal
                                    - none
                                    type: string
                                  name:
                                    type: string
                                  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 Default
                                      value is `http`"
                                    type: string
                                  secure:
                                    description: Describes whether the endpoint should
                                      be secured and protected by some authentication
                                      process
                                    type: boolean
                                  targetPort:
                                    type: integer
                                required:
                                - name
                                type: object
                              type: array
                            env:
                              description: Environment variables used in this container
                              items:
                                properties:
                                  name:
                                    type: string
                                  value:
                                    type: string
                                required:
                                - name
                                - value
                                type: object
                              type: array
                            image:
                              type: string
                            memoryLimit:
                              type: string
                            mountSources:
                              type: boolean
                            name:
                              type: string
                            sourceMapping:
                              description: Optional specification of the path in the
                                container where project sources should be transferred/mounted
                                when `mountSources` is `true`. When omitted, the value
                                of the `PROJECTS_ROOT` environment variable is used.
                              type: string
                            volumeMounts:
                              description: List of volumes mounts that should be mounted
                                is this container.
                              items:
                                description: Volume that should be mounted to a component
                                  container
                                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
                                  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
                                required:
                                - name
                                type: object
                              type: array
                          required:
                          - name
                          type: object
                        custom:
                          description: Custom component whose logic is implementation-dependant
                            and should be provided by the user possibly through some
                            dedicated controller
                          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
                              x-kubernetes-embedded-resource: true
                              x-kubernetes-preserve-unknown-fields: true
                            name:
                              description: Mandatory name that allows referencing
                                the component in commands, or inside a parent
                              type: string
                          required:
                          - componentClass
                          - embeddedResource
                          - name
                          type: object
                        kubernetes:
                          description: Allows importing into the workspace the Kubernetes
                            resources defined in a given manifest. For example this
                            allows reusing the Kubernetes definitions used to deploy
                            some runtime components in production.
                          oneOf:
                          - required:
                            - uri
                          - required:
                            - inlined
                          properties:
                            endpoints:
                              items:
                                properties:
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: "Map of implementation-dependant
                                      string-based free-form attributes. \n Examples
                                      of Che-specific attributes: \n - cookiesAuthEnabled:
                                      \"true\" / \"false\", \n - type: \"terminal\"
                                      / \"ide\" / \"ide-dev\","
                                    type: object
                                  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 workspace 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
                                      workspace POD, on a local address. \n Default
                                      value is `public`"
                                    enum:
                                    - public
                                    - internal
                                    - none
                                    type: string
                                  name:
                                    type: string
                                  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 Default
                                      value is `http`"
                                    type: string
                                  secure:
                                    description: Describes whether the endpoint should
                                      be secured and protected by some authentication
                                      process
                                    type: boolean
                                  targetPort:
                                    type: integer
                                required:
                                - name
                                type: object
                              type: array
                            inlined:
                              description: Inlined manifest
                              type: string
                            locationType:
                              description: Type of Kubernetes-like location
                              enum:
                              - Uri
                              - Inlined
                              type: string
                            name:
                              description: Mandatory name that allows referencing
                                the component in commands, or inside a parent
                              type: string
                            uri:
                              description: Location in a file fetched from a uri.
                              type: string
                          required:
                          - name
                          type: object
                        openshift:
                          description: Allows importing into the workspace the OpenShift
                            resources defined in a given manifest. For example this
                            allows reusing the OpenShift definitions used to deploy
                            some runtime components in production.
                          oneOf:
                          - required:
                            - uri
                          - required:
                            - inlined
                          properties:
                            endpoints:
                              items:
                                properties:
                                  attributes:
                                    additionalProperties:
                                      type: string
                                    description: "Map of implementation-dependant
                                      string-based free-form attributes. \n Examples
                                      of Che-specific attributes: \n - cookiesAuthEnabled:
                                      \"true\" / \"false\", \n - type: \"terminal\"
                                      / \"ide\" / \"ide-dev\","
                                    type: object
                                  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 workspace 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
                                      workspace POD, on a local address. \n Default
                                      value is `public`"
                                    enum:
                                    - public
                                    - internal
                                    - none
                                    type: string
                                  name:
                                    type: string
                                  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 Default
                                      value is `http`"
                                    type: string
                                  secure:
                                    description: Describes whether the endpoint should
                                      be secured and protected by some authentication
                                      process
                                    type: boolean
                                  targetPort:
                                    type: integer
                                required:
                                - name
                                type: object
                              type: array
                            inlined:
                              description: Inlined manifest
                              type: string
                            locationType:
                              description: Type of Kubernetes-like location
                              enum:
                              - Uri
                              - Inlined
                              type: string
                            name:
                              description: Mandatory name that allows referencing
                                the component in commands, or inside a parent
                              type: string
                            uri:
                              description: Location in a file fetched from a uri.
                              type: string
                          required:
                          - name
                          type: object
                        plugin:
                          description: "Allows importing a plugin. \n Plugins 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"
                          oneOf:
                          - required:
                            - uri
                          - required:
                            - id
                          - required:
                            - kubernetes
                          properties:
                            commands:
                              description: Overrides of commands encapsulated in a
                                parent devfile or a plugin. Overriding is done using
                                a strategic merge patch
                              items:
                                oneOf:
                                - required:
                                  - exec
                                - required:
                                  - apply
                                - required:
                                  - vscodeTask
                                - required:
                                  - vscodeLaunch
                                - required:
                                  - composite
                                - required:
                                  - custom
                                properties:
                                  apply:
                                    description: "Command that consists in applying
                                      a given component definition, typically bound
                                      to a workspace event. \n For 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 workspace POD, unless the component has
                                      its `dedicatedPod` field set to `true`. \n When
                                      no `apply` command exist for a given component,
                                      it is assumed the component will be applied
                                      at workspace start by default."
                                    properties:
                                      attributes:
                                        additionalProperties:
                                          type: string
                                        description: Optional map of free-form additional
                                          command attributes
                                        type: object
                                      component:
                                        description: Describes component that will
                                          be applied
                                        type: string
                                      group:
                                        description: Defines the group this command
                                          is part of
                                        properties:
                                          isDefault:
                                            description: Identifies the default command
                                              for a given group kind
                                            type: boolean
                                          kind:
                                            description: Kind of group the command
                                              is part of
                                            enum:
                                            - build
                                            - run
                                            - test
                                            - debug
                                            type: string
                                        required:
                                        - kind
                                        type: object
                                      id:
                                        description: Mandatory identifier that allows
                                          referencing this command in composite commands,
                                          from a parent, or in events.
                                        type: string
                                      label:
                                        description: Optional label that provides
                                          a label for this command to be used in Editor
                                          UI menus for example
                                        type: string
                                    required:
                                    - id
                                    type: object
                                  commandType:
                                    description: Type of workspace command
                                    enum:
                                    - Exec
                                    - Apply
                                    - VscodeTask
                                    - VscodeLaunch
                                    - Composite
                                    - Custom
                                    type: string
                                  composite:
                                    description: Composite command that allows executing
                                      several sub-commands either sequentially or
                                      concurrently
                                    properties:
                                      attributes:
                                        additionalProperties:
                                          type: string
                                        description: Optional map of free-form additional
                                          command attributes
                                        type: object
                                      commands:
                                        description: The commands that comprise this
                                          composite command
                                        items:
                                          type: string
                                        type: array
                                      group:
                                        description: Defines the group this command
                                          is part of
                                        properties:
                                          isDefault:
                                            description: Identifies the default command
                                              for a given group kind
                                            type: boolean
                                          kind:
                                            description: Kind of group the command
                                              is part of
                                            enum:
                                            - build
                                            - run
                                            - test
                                            - debug
                                            type: string
                                        required:
                                        - kind
                                        type: object
                                      id:
                                        description: Mandatory identifier that allows
                                          referencing this command in composite commands,
                                          from a parent, or in events.
                                        type: string
                                      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
                                    required:
                                    - id
                                    type: object
                                  custom:
                                    description: Custom command whose logic is implementation-dependant
                                      and should be provided by the user possibly
                                      through some dedicated plugin
                                    properties:
                                      attributes:
                                        additionalProperties:
                                          type: string
                                        description: Optional map of free-form additional
                                          command attributes
                                        type: object
                                      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
                                        x-kubernetes-embedded-resource: true
                                        x-kubernetes-preserve-unknown-fields: true
                                      group:
                                        description: Defines the group this command
                                          is part of
                                        properties:
                                          isDefault:
                                            description: Identifies the default command
                                              for a given group kind
                                            type: boolean
                                          kind:
                                            description: Kind of group the command
                                              is part of
                                            enum:
                                            - build
                                            - run
                                            - test
                                            - debug
                                            type: string
                                        required:
                                        - kind
                                        type: object
                                      id:
                                        description: Mandatory identifier that allows
                                          referencing this command in composite commands,
                                          from a parent, or in events.
                                        type: string
                                      label:
                                        description: Optional label that provides
                                          a label for this command to be used in Editor
                                          UI menus for example
                                        type: string
                                    required:
                                    - commandClass
                                    - embeddedResource
                                    - id
                                    type: object
                                  exec:
                                    description: CLI Command executed in an existing
                                      component container
                                    properties:
                                      attributes:
                                        additionalProperties:
                                          type: string
                                        description: Optional map of free-form additional
                                          command attributes
                                        type: object
                                      commandLine:
                                        description: "The actual command-line string
                                          \n Special variables that can be used: \n
                                          \ - `$PROJECTS_ROOT`: A path where projects
                                          sources are mounted \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
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      group:
                                        description: Defines the group this command
                                          is part of
                                        properties:
                                          isDefault:
                                            description: Identifies the default command
                                              for a given group kind
                                            type: boolean
                                          kind:
                                            description: Kind of group the command
                                              is part of
                                            enum:
                                            - build
                                            - run
                                            - test
                                            - debug
                                            type: string
                                        required:
                                        - kind
                                        type: object
                                      hotReloadCapable:
                                        description: "Whether the command is capable
                                          to reload itself when source code changes.
                                          If set to `true` the command won't be restarted
                                          and it is expected to handle file changes
                                          on its own. \n Default value is `false`"
                                        type: boolean
                                      id:
                                        description: Mandatory identifier that allows
                                          referencing this command in composite commands,
                                          from a parent, or in events.
                                        type: string
                                      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 Special variables
                                          that can be used: \n  - `${PROJECTS_ROOT}`:
                                          A path where projects sources are mounted
                                          \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
                                    required:
                                    - id
                                    type: object
                                  vscodeLaunch:
                                    description: "Command providing the definition
                                      of a VsCode launch action \n Deprecated; removed
                                      in v1alpha2"
                                    oneOf:
                                    - required:
                                      - uri
                                    - required:
                                      - inlined
                                    properties:
                                      attributes:
                                        additionalProperties:
                                          type: string
                                        description: Optional map of free-form additional
                                          command attributes
                                        type: object
                                      group:
                                        description: Defines the group this command
                                          is part of
                                        properties:
                                          isDefault:
                                            description: Identifies the default command
                                              for a given group kind
                                            type: boolean
                                          kind:
                                            description: Kind of group the command
                                              is part of
                                            enum:
                                            - build
                                            - run
                                            - test
                                            - debug
                                            type: string
                                        required:
                                        - kind
                                        type: object
                                      id:
                                        description: Mandatory identifier that allows
                                          referencing this command in composite commands,
                                          from a parent, or in events.
                                        type: string
                                      inlined:
                                        description: Inlined content of the VsCode
                                          configuration
                                        type: string
                                      locationType:
                                        description: Type of Vscode configuration
                                          command location
                                        enum:
                                        - Uri
                                        - Inlined
                                        type: string
                                      uri:
                                        description: Location as an absolute of relative
                                          URI the VsCode configuration will be fetched
                                          from
                                        type: string
                                    required:
                                    - id
                                    type: object
                                  vscodeTask:
                                    description: "Command providing the definition
                                      of a VsCode Task \n Deprecated; removed in v1alpha2"
                                    oneOf:
                                    - required:
                                      - uri
                                    - required:
                                      - inlined
                                    properties:
                                      attributes:
                                        additionalProperties:
                                          type: string
                                        description: Optional map of free-form additional
                                          command attributes
                                        type: object
                                      group:
                                        description: Defines the group this command
                                          is part of
                                        properties:
                                          isDefault:
                                            description: Identifies the default command
                                              for a given group kind
                                            type: boolean
                                          kind:
                                            description: Kind of group the command
                                              is part of
                                            enum:
                                            - build
                                            - run
                                            - test
                                            - debug
                                            type: string
                                        required:
                                        - kind
                                        type: object
                                      id:
                                        description: Mandatory identifier that allows
                                          referencing this command in composite commands,
                                          from a parent, or in events.
                                        type: string
                                      inlined:
                                        description: Inlined content of the VsCode
                                          configuration
                                        type: string
                                      locationType:
                                        description: Type of Vscode configuration
                                          command location
                                        enum:
                                        - Uri
                                        - Inlined
                                        type: string
                                      uri:
                                        description: Location as an absolute of relative
                                          URI the VsCode configuration will be fetched
                                          from
                                        type: string
                                    required:
                                    - id
                                    type: object
                                type: object
                              type: array
                            components:
                              description: Overrides of components encapsulated in
                                a plugin. Overriding is done using a strategic merge
                                patch. A plugin cannot override embedded plugin components.
                              items:
                                oneOf:
                                - required:
                                  - container
                                - required:
                                  - kubernetes
                                - required:
                                  - openshift
                                - required:
                                  - volume
                                properties:
                                  componentType:
                                    description: Type of component override for a
                                      plugin
                                    enum:
                                    - Container
                                    - Kubernetes
                                    - Openshift
                                    - Volume
                                    type: string
                                  container:
                                    description: Configuration overriding for a Container
                                      component in a plugin
                                    properties:
                                      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 Defaults to
                                          an empty array, meaning use whatever is
                                          defined in the image."
                                        items:
                                          type: string
                                        type: array
                                      command:
                                        description: "The command to run in the dockerimage
                                          component instead of the default one provided
                                          in the image. \n Defaults to an empty array,
                                          meaning use whatever is defined in the image."
                                        items:
                                          type: string
                                        type: array
                                      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 Default value is `false`"
                                        type: boolean
                                      endpoints:
                                        items:
                                          properties:
                                            attributes:
                                              additionalProperties:
                                                type: string
                                              description: "Map of implementation-dependant
                                                string-based free-form attributes.
                                                \n Examples of Che-specific attributes:
                                                \n - cookiesAuthEnabled: \"true\"
                                                / \"false\", \n - type: \"terminal\"
                                                / \"ide\" / \"ide-dev\","
                                              type: object
                                            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 workspace
                                                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 workspace
                                                POD, on a local address. \n Default
                                                value is `public`"
                                              enum:
                                              - public
                                              - internal
                                              - none
                                              type: string
                                            name:
                                              type: string
                                            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 Default value
                                                is `http`"
                                              type: string
                                            secure:
                                              description: Describes whether the endpoint
                                                should be secured and protected by
                                                some authentication process
                                              type: boolean
                                            targetPort:
                                              type: integer
                                          required:
                                          - name
                                          type: object
                                        type: array
                                      env:
                                        description: Environment variables used in
                                          this container
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      image:
                                        type: string
                                      memoryLimit:
                                        type: string
                                      mountSources:
                                        type: boolean
                                      name:
                                        type: string
                                      sourceMapping:
                                        description: Optional specification of the
                                          path in the container where project sources
                                          should be transferred/mounted when `mountSources`
                                          is `true`. When omitted, the value of the
                                          `PROJECTS_ROOT` environment variable is
                                          used.
                                        type: string
                                      volumeMounts:
                                        description: List of volumes mounts that should
                                          be mounted is this container.
                                        items:
                                          description: Volume that should be mounted
                                            to a component container
                                          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
                                            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
                                          required:
                                          - name
                                          type: object
                                        type: array
                                    required:
                                    - name
                                    type: object
                                  kubernetes:
                                    description: Configuration overriding for a Kubernetes
                                      component in a plugin
                                    oneOf:
                                    - required:
                                      - uri
                                    - required:
                                      - inlined
                                    properties:
                                      endpoints:
                                        items:
                                          properties:
                                            attributes:
                                              additionalProperties:
                                                type: string
                                              description: "Map of implementation-dependant
                                                string-based free-form attributes.
                                                \n Examples of Che-specific attributes:
                                                \n - cookiesAuthEnabled: \"true\"
                                                / \"false\", \n - type: \"terminal\"
                                                / \"ide\" / \"ide-dev\","
                                              type: object
                                            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 workspace
                                                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 workspace
                                                POD, on a local address. \n Default
                                                value is `public`"
                                              enum:
                                              - public
                                              - internal
                                              - none
                                              type: string
                                            name:
                                              type: string
                                            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 Default value
                                                is `http`"
                                              type: string
                                            secure:
                                              description: Describes whether the endpoint
                                                should be secured and protected by
                                                some authentication process
                                              type: boolean
                                            targetPort:
                                              type: integer
                                          required:
                                          - name
                                          type: object
                                        type: array
                                      inlined:
                                        description: Inlined manifest
                                        type: string
                                      locationType:
                                        description: Type of Kubernetes-like location
                                        enum:
                                        - Uri
                                        - Inlined
                                        type: string
                                      name:
                                        description: Mandatory name that allows referencing
                                          the component in commands, or inside a parent
                                        type: string
                                      uri:
                                        description: Location in a file fetched from
                                          a uri.
                                        type: string
                                    required:
                                    - name
                                    type: object
                                  openshift:
                                    description: Configuration overriding for an OpenShift
                                      component in a plugin
                                    oneOf:
                                    - required:
                                      - uri
                                    - required:
                                      - inlined
                                    properties:
                                      endpoints:
                                        items:
                                          properties:
                                            attributes:
                                              additionalProperties:
                                                type: string
                                              description: "Map of implementation-dependant
                                                string-based free-form attributes.
                                                \n Examples of Che-specific attributes:
                                                \n - cookiesAuthEnabled: \"true\"
                                                / \"false\", \n - type: \"terminal\"
                                                / \"ide\" / \"ide-dev\","
                                              type: object
                                            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 workspace
                                                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 workspace
                                                POD, on a local address. \n Default
                                                value is `public`"
                                              enum:
                                              - public
                                              - internal
                                              - none
                                              type: string
                                            name:
                                              type: string
                                            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 Default value
                                                is `http`"
                                              type: string
                                            secure:
                                              description: Describes whether the endpoint
                                                should be secured and protected by
                                                some authentication process
                                              type: boolean
                                            targetPort:
                                              type: integer
                                          required:
                                          - name
                                          type: object
                                        type: array
                                      inlined:
                                        description: Inlined manifest
                                        type: string
                                      locationType:
                                        description: Type of Kubernetes-like location
                                        enum:
                                        - Uri
                                        - Inlined
                                        type: string
                                      name:
                                        description: Mandatory name that allows referencing
                                          the component in commands, or inside a parent
                                        type: string
                                      uri:
                                        description: Location in a file fetched from
                                          a uri.
                                        type: string
                                    required:
                                    - name
                                    type: object
                                  volume:
                                    description: Configuration overriding for a Volume
                                      component in a plugin
                                    properties:
                                      ephemeral:
                                        description: Ephemeral volumes are not stored
                                          persistently across restarts. Defaults to
                                          false
                                        type: boolean
                                      name:
                                        description: Mandatory name that allows referencing
                                          the Volume component in Container volume
                                          mounts or inside a parent
                                        type: string
                                      size:
                                        description: Size of the volume
                                        type: string
                                    required:
                                    - name
                                    type: object
                                type: object
                              type: array
                            id:
                              description: Id in a registry that contains a Devfile
                                yaml file
                              type: string
                            importReferenceType:
                              description: type of location from where the referenced
                                template structure should be retrieved
                              enum:
                              - Uri
                              - Id
                              - Kubernetes
                              type: string
                            kubernetes:
                              description: Reference to a Kubernetes CRD of type DevWorkspaceTemplate
                              properties:
                                name:
                                  type: string
                                namespace:
                                  type: string
                              required:
                              - name
                              type: object
                            name:
                              description: Optional name that allows referencing the
                                component in commands, or inside a parent If omitted
                                it will be infered from the location (uri or registryEntry)
                              type: string
                            registryUrl:
                              type: string
                            uri:
                              description: Uri of a Devfile yaml file
                              type: string
                          type: object
                        volume:
                          description: Allows specifying the definition of a volume
                            shared by several other components
                          properties:
                            ephemeral:
                              description: Ephemeral volumes are not stored persistently
                                across restarts. Defaults to false
                              type: boolean
                            name:
                              description: Mandatory name that allows referencing
                                the Volume component in Container volume mounts or
                                inside a parent
                              type: string
                            size:
                              description: Size of the volume
                              type: string
                          required:
                          - name
                          type: object
                      type: object
                    type: array
                  id:
                    description: Id in a registry that contains a Devfile yaml file
                    type: string
                  importReferenceType:
                    description: type of location from where the referenced template
                      structure should be retrieved
                    enum:
                    - Uri
                    - Id
                    - Kubernetes
                    type: string
                  kubernetes:
                    description: Reference to a Kubernetes CRD of type DevWorkspaceTemplate
                    properties:
                      name:
                        type: string
                      namespace:
                        type: string
                    required:
                    - name
                    type: object
                  projects:
                    description: Overrides of projects encapsulated in a parent devfile.
                      Overriding is done using a strategic merge patch.
                    items:
                      oneOf:
                      - required:
                        - git
                      - required:
                        - github
                      - required:
                        - zip
                      - required:
                        - custom
                      properties:
                        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:
                          description: Project's Custom source
                          properties:
                            embeddedResource:
                              type: object
                              x-kubernetes-embedded-resource: true
                              x-kubernetes-preserve-unknown-fields: true
                            projectSourceClass:
                              type: string
                          required:
                          - embeddedResource
                          - projectSourceClass
                          type: object
                        git:
                          description: Project's Git source
                          properties:
                            checkoutFrom:
                              description: Defines from what the project should be
                                checked out. Required if there are more than one remote
                                configured
                              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
                              type: object
                            remotes:
                              additionalProperties:
                                type: string
                              description: The remotes map which should be initialized
                                in the git project. Must have at least one remote
                                configured
                              type: object
                            sparseCheckoutDir:
                              description: Part of project to populate in the working
                                directory.
                              type: string
                          type: object
                        github:
                          description: Project's GitHub source
                          properties:
                            checkoutFrom:
                              description: Defines from what the project should be
                                checked out. Required if there are more than one remote
                                configured
                              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
                              type: object
                            remotes:
                              additionalProperties:
                                type: string
                              description: The remotes map which should be initialized
                                in the git project. Must have at least one remote
                                configured
                              type: object
                            sparseCheckoutDir:
                              description: Part of project to populate in the working
                                directory.
                              type: string
                          type: object
                        name:
                          description: Project name
                          type: string
                        sourceType:
                          description: Type of project source
                          enum:
                          - Git
                          - Github
                          - Zip
                          - Custom
                          type: string
                        zip:
                          description: Project's Zip source
                          properties:
                            location:
                              description: Zip project's source location address.
                                Should be file path of the archive, e.g. file://$FILE_PATH
                              type: string
                            sparseCheckoutDir:
                              description: Part of project to populate in the working
                                directory.
                              type: string
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                  registryUrl:
                    type: string
                  starterProjects:
                    description: Overrides of starter projects encapsulated in a parent
                      devfile Overriding is done using a strategic merge patch.
                    items:
                      oneOf:
                      - required:
                        - git
                      - required:
                        - github
                      - required:
                        - zip
                      - required:
                        - custom
                      properties:
                        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:
                          description: Project's Custom source
                          properties:
                            embeddedResource:
                              type: object
                              x-kubernetes-embedded-resource: true
                              x-kubernetes-preserve-unknown-fields: true
                            projectSourceClass:
                              type: string
                          required:
                          - embeddedResource
                          - projectSourceClass
                          type: object
                        description:
                          description: Description of a starter project
                          type: string
                        git:
                          description: Project's Git source
                          properties:
                            checkoutFrom:
                              description: Defines from what the project should be
                                checked out. Required if there are more than one remote
                                configured
                              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
                              type: object
                            remotes:
                              additionalProperties:
                                type: string
                              description: The remotes map which should be initialized
                                in the git project. Must have at least one remote
                                configured
                              type: object
                            sparseCheckoutDir:
                              description: Part of project to populate in the working
                                directory.
                              type: string
                          type: object
                        github:
                          description: Project's GitHub source
                          properties:
                            checkoutFrom:
                              description: Defines from what the project should be
                                checked out. Required if there are more than one remote
                                configured
                              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
                              type: object
                            remotes:
                              additionalProperties:
                                type: string
                              description: The remotes map which should be initialized
                                in the git project. Must have at least one remote
                                configured
                              type: object
                            sparseCheckoutDir:
                              description: Part of project to populate in the working
                                directory.
                              type: string
                          type: object
                        name:
                          description: Project name
                          type: string
                        sourceType:
                          description: Type of project source
                          enum:
                          - Git
                          - Github
                          - Zip
                          - Custom
                          type: string
                        zip:
                          description: Project's Zip source
                          properties:
                            location:
                              description: Zip project's source location address.
                                Should be file path of the archive, e.g. file://$FILE_PATH
                              type: string
                            sparseCheckoutDir:
                              description: Part of project to populate in the working
                                directory.
                              type: string
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                  uri:
                    description: Uri of a Devfile yaml file
                    type: string
                type: object
              projects:
                description: Projects worked on in the workspace, containing names
                  and sources locations
                items:
                  oneOf:
                  - required:
                    - git
                  - required:
                    - github
                  - required:
                    - zip
                  - required:
                    - custom
                  properties:
                    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:
                      description: Project's Custom source
                      properties:
                        embeddedResource:
                          type: object
                          x-kubernetes-embedded-resource: true
                          x-kubernetes-preserve-unknown-fields: true
                        projectSourceClass:
                          type: string
                      required:
                      - embeddedResource
                      - projectSourceClass
                      type: object
                    git:
                      description: Project's Git source
                      properties:
                        checkoutFrom:
                          description: Defines from what the project should be checked
                            out. Required if there are more than one remote configured
                          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
                          type: object
                        remotes:
                          additionalProperties:
                            type: string
                          description: The remotes map which should be initialized
                            in the git project. Must have at least one remote configured
                          type: object
                        sparseCheckoutDir:
                          description: Part of project to populate in the working
                            directory.
                          type: string
                      type: object
                    github:
                      description: Project's GitHub source
                      properties:
                        checkoutFrom:
                          description: Defines from what the project should be checked
                            out. Required if there are more than one remote configured
                          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
                          type: object
                        remotes:
                          additionalProperties:
                            type: string
                          description: The remotes map which should be initialized
                            in the git project. Must have at least one remote configured
                          type: object
                        sparseCheckoutDir:
                          description: Part of project to populate in the working
                            directory.
                          type: string
                      type: object
                    name:
                      description: Project name
                      type: string
                    sourceType:
                      description: Type of project source
                      enum:
                      - Git
                      - Github
                      - Zip
                      - Custom
                      type: string
                    zip:
                      description: Project's Zip source
                      properties:
                        location:
                          description: Zip project's source location address. Should
                            be file path of the archive, e.g. file://$FILE_PATH
                          type: string
                        sparseCheckoutDir:
                          description: Part of project to populate in the working
                            directory.
                          type: string
                      type: object
                  required:
                  - name
                  type: object
                type: array
              starterProjects:
                description: StarterProjects is a project that can be used as a starting
                  point when bootstrapping new projects
                items:
                  oneOf:
                  - required:
                    - git
                  - required:
                    - github
                  - required:
                    - zip
                  - required:
                    - custom
                  properties:
                    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:
                      description: Project's Custom source
                      properties:
                        embeddedResource:
                          type: object
                          x-kubernetes-embedded-resource: true
                          x-kubernetes-preserve-unknown-fields: true
                        projectSourceClass:
                          type: string
                      required:
                      - embeddedResource
                      - projectSourceClass
                      type: object
                    description:
                      description: Description of a starter project
                      type: string
                    git:
                      description: Project's Git source
                      properties:
                        checkoutFrom:
                          description: Defines from what the project should be checked
                            out. Required if there are more than one remote configured
                          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
                          type: object
                        remotes:
                          additionalProperties:
                            type: string
                          description: The remotes map which should be initialized
                            in the git project. Must have at least one remote configured
                          type: object
                        sparseCheckoutDir:
                          description: Part of project to populate in the working
                            directory.
                          type: string
                      type: object
                    github:
                      description: Project's GitHub source
                      properties:
                        checkoutFrom:
                          description: Defines from what the project should be checked
                            out. Required if there are more than one remote configured
                          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
                          type: object
                        remotes:
                          additionalProperties:
                            type: string
                          description: The remotes map which should be initialized
                            in the git project. Must have at least one remote configured
                          type: object
                        sparseCheckoutDir:
                          description: Part of project to populate in the working
                            directory.
                          type: string
                      type: object
                    name:
                      description: Project name
                      type: string
                    sourceType:
                      description: Type of project source
                      enum:
                      - Git
                      - Github
                      - Zip
                      - Custom
                      type: string
                    zip:
                      description: Project's Zip source
                      properties:
                        location:
                          description: Zip project's source location address. Should
                            be file path of the archive, e.g. file://$FILE_PATH
                          type: string
                        sparseCheckoutDir:
                          description: Part of project to populate in the working
                            directory.
                          type: string
                      type: object
                  required:
                  - name
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: false
  - name: v1alpha2
    schema:
      openAPIV3Schema:
        description: DevWorkspaceTemplate is the Schema for the devworkspacetemplates
          API
        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:
            type: object
          spec:
            description: Structure of the devworkspace. This is also the specification
              of a devworkspace template.
            properties:
              attributes:
                description: Map of implementation-dependant free-form YAML attributes.
                type: object
                x-kubernetes-preserve-unknown-fields: true
              commands:
                description: Predefined, ready-to-use, devworkspace-related commands
                items:
                  oneOf:
                  - required:
                    - exec
                  - required:
                    - apply
                  - required:
                    - composite
                  - required:
                    - custom
                  properties:
                    apply:
                      description: "Command that consists in applying a given component
                        definition, typically bound to a devworkspace event. \n For
                        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 When no `apply` command exist for a given component, it
                        is assumed the component will be applied at devworkspace start
                        by default."
                      properties:
                        component:
                          description: Describes component that will be applied
                          type: string
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        label:
                          description: Optional label that provides a label for this
                            command to be used in Editor UI menus for example
                          type: string
                      required:
                      - component
                      type: object
                    attributes:
                      description: Map of implementation-dependant free-form YAML
                        attributes.
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    commandType:
                      description: Type of devworkspace command
                      enum:
                      - Exec
                      - Apply
                      - Composite
                      - Custom
                      type: string
                    composite:
                      description: Composite command that allows executing several
                        sub-commands either sequentially or concurrently
                      properties:
                        commands:
                          description: The commands that comprise this composite command
                          items:
                            type: string
                          type: array
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        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
                      type: object
                    custom:
                      description: Custom command whose logic is implementation-dependant
                        and should be provided by the user possibly through some dedicated
                        plugin
                      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
                          x-kubernetes-embedded-resource: true
                          x-kubernetes-preserve-unknown-fields: true
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        label:
                          description: Optional label that provides a label for this
                            command to be used in Editor UI menus for example
                          type: string
                      required:
                      - commandClass
                      - embeddedResource
                      type: object
                    exec:
                      description: CLI Command executed in an existing component container
                      properties:
                        commandLine:
                          description: "The actual command-line string \n Special
                            variables that can be used: \n  - `$PROJECTS_ROOT`: A
                            path where projects sources are mounted as defined by
                            container component's sourceMapping. \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
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                            required:
                            - name
                            - value
                            type: object
                          type: array
                        group:
                          description: Defines the group this command is part of
                          properties:
                            isDefault:
                              description: Identifies the default command for a given
                                group kind
                              type: boolean
                            kind:
                              description: Kind of group the command is part of
                              enum:
                              - build
                              - run
                              - test
                              - debug
                              type: string
                          required:
                          - kind
                          type: object
                        hotReloadCapable:
                          description: "Whether the command is capable to reload itself
                            when source code changes. If set to `true` the command
                            won't be restarted and it is expected to handle file changes
                            on its own. \n Default 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 Special variables that can be used: \n
                            \ - `$PROJECTS_ROOT`: A path where projects sources are
                            mounted as defined by container component's sourceMapping.
                            \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
                      required:
                      - commandLine
                      - component
                      type: object
                    id:
                      description: Mandatory identifier that allows referencing this
                        command in composite commands, from a parent, or in events.
                      maxLength: 63
                      pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                      type: string
                  required:
                  - id
                  type: object
                type: array
              components:
                description: List of the devworkspace components, such as editor and
                  plugins, user-provided containers, or other types of components
                items:
                  oneOf:
                  - required:
                    - container
                  - required:
                    - kubernetes
                  - required:
                    - openshift
                  - required:
                    - volume
                  - required:
                    - plugin
                  - required:
                    - custom
                  properties:
                    attributes:
                      description: Map of implementation-dependant free-form YAML
                        attributes.
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    componentType:
                      description: Type of component
                      enum:
                      - Container
                      - Kubernetes
                      - Openshift
                      - Volume
                      - Plugin
                      - Custom
                      type: string
                    container:
                      description: Allows adding and configuring devworkspace-related
                        containers
                      properties:
                        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 Defaults to an empty array,
                            meaning use whatever is defined in the image."
                          items:
                            type: string
                          type: array
                        command:
                          description: "The command to run in the dockerimage component
                            instead of the default one provided in the image. \n Defaults
                            to an empty array, meaning use whatever is defined in
                            the image."
                          items:
                            type: string
                          type: array
                        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 Default value is `false`"
                          type: boolean
                        endpoints:
                          items:
                            properties:
                              attributes:
                                description: "Map of implementation-dependant string-based
                                  free-form attributes. \n Examples of Che-specific
                                  attributes: \n - cookiesAuthEnabled: \"true\" /
                                  \"false\", \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                type: object
                                x-kubernetes-preserve-unknown-fields: true
                              exposure:
                                default: public
                                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
                                  Default value is `public`"
                                enum:
                                - public
                                - internal
                                - none
                                type: string
                              name:
                                maxLength: 63
                                pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                type: string
                              path:
                                description: Path of the endpoint URL
                                type: string
                              protocol:
                                default: http
                                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 Default value is `http`"
                                enum:
                                - http
                                - https
                                - ws
                                - wss
                                - tcp
                                - udp
                                type: string
                              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:
                                type: integer
                            required:
                            - name
                            - targetPort
                            type: object
                          type: array
                        env:
                          description: "Environment variables used in this container.
                            \n The following variables are reserved and cannot be
                            overridden via env: \n  - `$PROJECTS_ROOT` \n  - `$PROJECT_SOURCE`"
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                            required:
                            - name
                            - value
                            type: object
                          type: array
                        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 Defaults to
                            true for all component types except plugins and components
                            that set `dedicatedPod` to true."
                          type: boolean
                        sourceMapping:
                          default: /projects
                          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.
                          items:
                            description: Volume that should be mounted to a component
                              container
                            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.
                                maxLength: 63
                                pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                type: string
                              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
                            required:
                            - name
                            type: object
                          type: array
                      required:
                      - image
                      type: object
                    custom:
                      description: Custom component whose logic is implementation-dependant
                        and should be provided by the user possibly through some dedicated
                        controller
                      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
                          x-kubernetes-embedded-resource: true
                          x-kubernetes-preserve-unknown-fields: true
                      required:
                      - componentClass
                      - embeddedResource
                      type: object
                    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.
                      oneOf:
                      - required:
                        - uri
                      - required:
                        - inlined
                      properties:
                        endpoints:
                          items:
                            properties:
                              attributes:
                                description: "Map of implementation-dependant string-based
                                  free-form attributes. \n Examples of Che-specific
                                  attributes: \n - cookiesAuthEnabled: \"true\" /
                                  \"false\", \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                type: object
                                x-kubernetes-preserve-unknown-fields: true
                              exposure:
                                default: public
                                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
                                  Default value is `public`"
                                enum:
                                - public
                                - internal
                                - none
                                type: string
                              name:
                                maxLength: 63
                                pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                type: string
                              path:
                                description: Path of the endpoint URL
                                type: string
                              protocol:
                                default: http
                                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 Default value is `http`"
                                enum:
                                - http
                                - https
                                - ws
                                - wss
                                - tcp
                                - udp
                                type: string
                              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:
                                type: integer
                            required:
                            - name
                            - targetPort
                            type: object
                          type: array
                        inlined:
                          description: Inlined manifest
                          type: string
                        locationType:
                          description: Type of Kubernetes-like location
                          enum:
                          - Uri
                          - Inlined
                          type: string
                        uri:
                          description: Location in a file fetched from a uri.
                          type: string
                      type: object
                    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.
                      maxLength: 63
                      pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                      type: string
                    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.
                      oneOf:
                      - required:
                        - uri
                      - required:
                        - inlined
                      properties:
                        endpoints:
                          items:
                            properties:
                              attributes:
                                description: "Map of implementation-dependant string-based
                                  free-form attributes. \n Examples of Che-specific
                                  attributes: \n - cookiesAuthEnabled: \"true\" /
                                  \"false\", \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                type: object
                                x-kubernetes-preserve-unknown-fields: true
                              exposure:
                                default: public
                                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
                                  Default value is `public`"
                                enum:
                                - public
                                - internal
                                - none
                                type: string
                              name:
                                maxLength: 63
                                pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                type: string
                              path:
                                description: Path of the endpoint URL
                                type: string
                              protocol:
                                default: http
                                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 Default value is `http`"
                                enum:
                                - http
                                - https
                                - ws
                                - wss
                                - tcp
                                - udp
                                type: string
                              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:
                                type: integer
                            required:
                            - name
                            - targetPort
                            type: object
                          type: array
                        inlined:
                          description: Inlined manifest
                          type: string
                        locationType:
                          description: Type of Kubernetes-like location
                          enum:
                          - Uri
                          - Inlined
                          type: string
                        uri:
                          description: Location in a file fetched from a uri.
                          type: string
                      type: object
                    plugin:
                      description: "Allows importing a plugin. \n Plugins 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"
                      oneOf:
                      - required:
                        - uri
                      - required:
                        - id
                      - required:
                        - kubernetes
                      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.
                          items:
                            oneOf:
                            - required:
                              - exec
                            - required:
                              - apply
                            - required:
                              - composite
                            properties:
                              apply:
                                description: "Command that consists in applying a
                                  given component definition, typically bound to a
                                  devworkspace event. \n For 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 When no `apply` command exist
                                  for a given component, it is assumed the component
                                  will be applied at devworkspace start by default."
                                properties:
                                  component:
                                    description: Describes component that will be
                                      applied
                                    type: string
                                  group:
                                    description: Defines the group this command is
                                      part of
                                    properties:
                                      isDefault:
                                        description: Identifies the default command
                                          for a given group kind
                                        type: boolean
                                      kind:
                                        description: Kind of group the command is
                                          part of
                                        enum:
                                        - build
                                        - run
                                        - test
                                        - debug
                                        type: string
                                    type: object
                                  label:
                                    description: Optional label that provides a label
                                      for this command to be used in Editor UI menus
                                      for example
                                    type: string
                                type: object
                              attributes:
                                description: Map of implementation-dependant free-form
                                  YAML attributes.
                                type: object
                                x-kubernetes-preserve-unknown-fields: true
                              commandType:
                                description: Type of devworkspace command
                                enum:
                                - Exec
                                - Apply
                                - Composite
                                type: string
                              composite:
                                description: Composite command that allows executing
                                  several sub-commands either sequentially or concurrently
                                properties:
                                  commands:
                                    description: The commands that comprise this composite
                                      command
                                    items:
                                      type: string
                                    type: array
                                  group:
                                    description: Defines the group this command is
                                      part of
                                    properties:
                                      isDefault:
                                        description: Identifies the default command
                                          for a given group kind
                                        type: boolean
                                      kind:
                                        description: Kind of group the command is
                                          part of
                                        enum:
                                        - build
                                        - run
                                        - test
                                        - debug
                                        type: string
                                    type: object
                                  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
                                type: object
                              exec:
                                description: CLI Command executed in an existing component
                                  container
                                properties:
                                  commandLine:
                                    description: "The actual command-line string \n
                                      Special variables that can be used: \n  - `$PROJECTS_ROOT`:
                                      A path where projects sources are mounted as
                                      defined by container component's sourceMapping.
                                      \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
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      type: object
                                    type: array
                                  group:
                                    description: Defines the group this command is
                                      part of
                                    properties:
                                      isDefault:
                                        description: Identifies the default command
                                          for a given group kind
                                        type: boolean
                                      kind:
                                        description: Kind of group the command is
                                          part of
                                        enum:
                                        - build
                                        - run
                                        - test
                                        - debug
                                        type: string
                                    type: object
                                  hotReloadCapable:
                                    description: "Whether the command is capable to
                                      reload itself when source code changes. If set
                                      to `true` the command won't be restarted and
                                      it is expected to handle file changes on its
                                      own. \n Default 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 Special variables that
                                      can be used: \n  - `$PROJECTS_ROOT`: A path
                                      where projects sources are mounted as defined
                                      by container component's sourceMapping. \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
                                type: object
                              id:
                                description: Mandatory identifier that allows referencing
                                  this command in composite commands, from a parent,
                                  or in events.
                                maxLength: 63
                                pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                type: string
                            required:
                            - id
                            type: object
                          type: array
                        components:
                          description: Overrides of components encapsulated in a parent
                            devfile or a plugin. Overriding is done according to K8S
                            strategic merge patch standard rules.
                          items:
                            oneOf:
                            - required:
                              - container
                            - required:
                              - kubernetes
                            - required:
                              - openshift
                            - required:
                              - volume
                            properties:
                              attributes:
                                description: Map of implementation-dependant free-form
                                  YAML attributes.
                                type: object
                                x-kubernetes-preserve-unknown-fields: true
                              componentType:
                                description: Type of component
                                enum:
                                - Container
                                - Kubernetes
                                - Openshift
                                - Volume
                                type: string
                              container:
                                description: Allows adding and configuring devworkspace-related
                                  containers
                                properties:
                                  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
                                      Defaults to an empty array, meaning use whatever
                                      is defined in the image."
                                    items:
                                      type: string
                                    type: array
                                  command:
                                    description: "The command to run in the dockerimage
                                      component instead of the default one provided
                                      in the image. \n Defaults to an empty array,
                                      meaning use whatever is defined in the image."
                                    items:
                                      type: string
                                    type: array
                                  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 Default value is `false`"
                                    type: boolean
                                  endpoints:
                                    items:
                                      properties:
                                        attributes:
                                          description: "Map of implementation-dependant
                                            string-based free-form attributes. \n
                                            Examples of Che-specific attributes: \n
                                            - cookiesAuthEnabled: \"true\" / \"false\",
                                            \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                          type: object
                                          x-kubernetes-preserve-unknown-fields: 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 Default value is `public`"
                                          enum:
                                          - public
                                          - internal
                                          - none
                                          type: string
                                        name:
                                          maxLength: 63
                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                          type: string
                                        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 Default value
                                            is `http`"
                                          enum:
                                          - http
                                          - https
                                          - ws
                                          - wss
                                          - tcp
                                          - udp
                                          type: string
                                        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:
                                          type: integer
                                      required:
                                      - name
                                      type: object
                                    type: array
                                  env:
                                    description: "Environment variables used in this
                                      container. \n The following variables are reserved
                                      and cannot be overridden via env: \n  - `$PROJECTS_ROOT`
                                      \n  - `$PROJECT_SOURCE`"
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      type: object
                                    type: array
                                  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 Defaults 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.
                                    items:
                                      description: Volume that should be mounted to
                                        a component container
                                      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.
                                          maxLength: 63
                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                          type: string
                                        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
                                      required:
                                      - name
                                      type: object
                                    type: array
                                type: object
                              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.
                                oneOf:
                                - required:
                                  - uri
                                - required:
                                  - inlined
                                properties:
                                  endpoints:
                                    items:
                                      properties:
                                        attributes:
                                          description: "Map of implementation-dependant
                                            string-based free-form attributes. \n
                                            Examples of Che-specific attributes: \n
                                            - cookiesAuthEnabled: \"true\" / \"false\",
                                            \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                          type: object
                                          x-kubernetes-preserve-unknown-fields: 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 Default value is `public`"
                                          enum:
                                          - public
                                          - internal
                                          - none
                                          type: string
                                        name:
                                          maxLength: 63
                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                          type: string
                                        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 Default value
                                            is `http`"
                                          enum:
                                          - http
                                          - https
                                          - ws
                                          - wss
                                          - tcp
                                          - udp
                                          type: string
                                        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:
                                          type: integer
                                      required:
                                      - name
                                      type: object
                                    type: array
                                  inlined:
                                    description: Inlined manifest
                                    type: string
                                  locationType:
                                    description: Type of Kubernetes-like location
                                    enum:
                                    - Uri
                                    - Inlined
                                    type: string
                                  uri:
                                    description: Location in a file fetched from a
                                      uri.
                                    type: string
                                type: object
                              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.
                                maxLength: 63
                                pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                type: string
                              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.
                                oneOf:
                                - required:
                                  - uri
                                - required:
                                  - inlined
                                properties:
                                  endpoints:
                                    items:
                                      properties:
                                        attributes:
                                          description: "Map of implementation-dependant
                                            string-based free-form attributes. \n
                                            Examples of Che-specific attributes: \n
                                            - cookiesAuthEnabled: \"true\" / \"false\",
                                            \n - type: \"terminal\" / \"ide\" / \"ide-dev\","
                                          type: object
                                          x-kubernetes-preserve-unknown-fields: 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 Default value is `public`"
                                          enum:
                                          - public
                                          - internal
                                          - none
                                          type: string
                                        name:
                                          maxLength: 63
                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                          type: string
                                        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 Default value
                                            is `http`"
                                          enum:
                                          - http
                                          - https
                                          - ws
                                          - wss
                                          - tcp
                                          - udp
                                          type: string
                                        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:
                                          type: integer
                                      required:
                                      - name
                                      type: object
                                    type: array
                                  inlined:
                                    description: Inlined manifest
                                    type: string
                                  locationType:
                                    description: Type of Kubernetes-like location
                                    enum:
                                    - Uri
                                    - Inlined
                                    type: string
                                  uri:
                                    description: Location in a file fetched from a
                                      uri.
                                    type: string
                                type: object
                              volume:
                                description: Allows specifying the definition of a
                                  volume shared by several other components
                                properties:
                                  ephemeral:
                                    description: Ephemeral volumes are not stored
                                      persistently across restarts. Defaults to false
                                    type: boolean
                                  size:
                                    description: Size of the volume
                                    type: string
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                        id:
                          description: Id in a registry that contains a Devfile yaml
                            file
                          type: string
                        importReferenceType:
                          description: type of location from where the referenced
                            template structure should be retrieved
                          enum:
                          - Uri
                          - Id
                          - Kubernetes
                          type: string
                        kubernetes:
                          description: Reference to a Kubernetes CRD of type DevWorkspaceTemplate
                          properties:
                            name:
                              type: string
                            namespace:
                              type: string
                          required:
                          - name
                          type: object
                        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 `regsitryURL`
                            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
                      type: object
                    volume:
                      description: Allows specifying the definition of a volume shared
                        by several other components
                      properties:
                        ephemeral:
                          description: Ephemeral volumes are not stored persistently
                            across restarts. Defaults to false
                          type: boolean
                        size:
                          description: Size of the volume
                          type: string
                      type: object
                  required:
                  - name
                  type: object
                type: array
              events:
                description: Bindings of commands to events. Each command is referred-to
                  by its name.
                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.
                    items:
                      type: string
                    type: array
                  postStop:
                    description: IDs of commands that should be executed after stopping
                      the devworkspace.
                    items:
                      type: string
                    type: array
                  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.
                    items:
                      type: string
                    type: array
                  preStop:
                    description: IDs of commands that should be executed before stopping
                      the devworkspace.
                    items:
                      type: string
                    type: array
                type: object
              parent:
                description: Parent devworkspace template
                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
                    x-kubernetes-preserve-unknown-fields: 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.
                    items:
                      oneOf:
                      - required:
                        - exec
                      - required:
                        - apply
                      - required:
                        - composite
                      properties:
                        apply:
                          description: "Command that consists in applying a given
                            component definition, typically bound to a devworkspace
                            event. \n For 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 When no `apply` command exist
                            for a given component, it is assumed the component will
                            be applied at devworkspace start by default."
                          properties:
                            component:
                              description: Describes component that will be applied
                              type: string
                            group:
                              description: Defines the group this command is part
                                of
                              properties:
                                isDefault:
                                  description: Identifies the default command for
                                    a given group kind
                                  type: boolean
                                kind:
                                  description: Kind of group the command is part of
                                  enum:
                                  - build
                                  - run
                                  - test
                                  - debug
                                  type: string
                              type: object
                            label:
                              description: Optional label that provides a label for
                                this command to be used in Editor UI menus for example
                              type: string
                          type: object
                        attributes:
                          description: Map of implementation-dependant free-form YAML
                            attributes.
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        commandType:
                          description: Type of devworkspace command
                          enum:
                          - Exec
                          - Apply
                          - Composite
                          type: string
                        composite:
                          description: Composite command that allows executing several
                            sub-commands either sequentially or concurrently
                          properties:
                            commands:
                              description: The commands that comprise this composite
                                command
                              items:
                                type: string
                              type: array
                            group:
                              description: Defines the group this command is part
                                of
                              properties:
                                isDefault:
                                  description: Identifies the default command for
                                    a given group kind
                                  type: boolean
                                kind:
                                  description: Kind of group the command is part of
                                  enum:
                                  - build
                                  - run
                                  - test
                                  - debug
                                  type: string
                              type: object
                            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
                          type: object
                        exec:
                          description: CLI Command executed in an existing component
                            container
                          properties:
                            commandLine:
                              description: "The actual command-line string \n Special
                                variables that can be used: \n  - `$PROJECTS_ROOT`:
                                A path where projects sources are mounted as defined
                                by container component's sourceMapping. \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
                              items:
                                properties:
                                  name:
                                    type: string
                                  value:
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                            group:
                              description: Defines the group this command is part
                                of
                              properties:
                                isDefault:
                                  description: Identifies the default command for
                                    a given group kind
                                  type: boolean
                                kind:
                                  description: Kind of group the command is part of
                                  enum:
                                  - build
                                  - run
                                  - test
                                  - debug
                                  type: string
                              type: object
                            hotReloadCapable:
                              description: "Whether the command is capable to reload
                                itself when source code changes. If set to `true`
                                the command won't be restarted and it is expected
                                to handle file changes on its own. \n Default 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 Special variables that can be used:
                                \n  - `$PROJECTS_ROOT`: A path where projects sources
                                are mounted as defined by container component's sourceMapping.
                                \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
                          type: object
                        id:
                          description: Mandatory identifier that allows referencing
                            this command in composite commands, from a parent, or
                            in events.
                          maxLength: 63
                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                          type: string
                      required:
                      - id
                      type: object
                    type: array
                  components:
                    description: Overrides of components encapsulated in a parent
                      devfile or a plugin. Overriding is done according to K8S strategic
                      merge patch standard rules.
                    items:
                      oneOf:
                      - required:
                        - container
                      - required:
                        - kubernetes
                      - required:
                        - openshift
                      - required:
                        - volume
                      - required:
                        - plugin
                      properties:
                        attributes:
                          description: Map of implementation-dependant free-form YAML
                            attributes.
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        componentType:
                          description: Type of component
                          enum:
                          - Container
                          - Kubernetes
                          - Openshift
                          - Volume
                          - Plugin
                          type: string
                        container:
                          description: Allows adding and configuring devworkspace-related
                            containers
                          properties:
                            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 Defaults
                                to an empty array, meaning use whatever is defined
                                in the image."
                              items:
                                type: string
                              type: array
                            command:
                              description: "The command to run in the dockerimage
                                component instead of the default one provided in the
                                image. \n Defaults to an empty array, meaning use
                                whatever is defined in the image."
                              items:
                                type: string
                              type: array
                            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 Default value
                                is `false`"
                              type: boolean
                            endpoints:
                              items:
                                properties:
                                  attributes:
                                    description: "Map of implementation-dependant
                                      string-based free-form attributes. \n Examples
                                      of Che-specific attributes: \n - cookiesAuthEnabled:
                                      \"true\" / \"false\", \n - type: \"terminal\"
                                      / \"ide\" / \"ide-dev\","
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: 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 Default
                                      value is `public`"
                                    enum:
                                    - public
                                    - internal
                                    - none
                                    type: string
                                  name:
                                    maxLength: 63
                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                    type: string
                                  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 Default
                                      value is `http`"
                                    enum:
                                    - http
                                    - https
                                    - ws
                                    - wss
                                    - tcp
                                    - udp
                                    type: string
                                  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:
                                    type: integer
                                required:
                                - name
                                type: object
                              type: array
                            env:
                              description: "Environment variables used in this container.
                                \n The following variables are reserved and cannot
                                be overridden via env: \n  - `$PROJECTS_ROOT` \n  -
                                `$PROJECT_SOURCE`"
                              items:
                                properties:
                                  name:
                                    type: string
                                  value:
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                            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 Defaults
                                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.
                              items:
                                description: Volume that should be mounted to a component
                                  container
                                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.
                                    maxLength: 63
                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                    type: string
                                  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
                                required:
                                - name
                                type: object
                              type: array
                          type: object
                        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.
                          oneOf:
                          - required:
                            - uri
                          - required:
                            - inlined
                          properties:
                            endpoints:
                              items:
                                properties:
                                  attributes:
                                    description: "Map of implementation-dependant
                                      string-based free-form attributes. \n Examples
                                      of Che-specific attributes: \n - cookiesAuthEnabled:
                                      \"true\" / \"false\", \n - type: \"terminal\"
                                      / \"ide\" / \"ide-dev\","
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: 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 Default
                                      value is `public`"
                                    enum:
                                    - public
                                    - internal
                                    - none
                                    type: string
                                  name:
                                    maxLength: 63
                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                    type: string
                                  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 Default
                                      value is `http`"
                                    enum:
                                    - http
                                    - https
                                    - ws
                                    - wss
                                    - tcp
                                    - udp
                                    type: string
                                  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:
                                    type: integer
                                required:
                                - name
                                type: object
                              type: array
                            inlined:
                              description: Inlined manifest
                              type: string
                            locationType:
                              description: Type of Kubernetes-like location
                              enum:
                              - Uri
                              - Inlined
                              type: string
                            uri:
                              description: Location in a file fetched from a uri.
                              type: string
                          type: object
                        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.
                          maxLength: 63
                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                          type: string
                        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.
                          oneOf:
                          - required:
                            - uri
                          - required:
                            - inlined
                          properties:
                            endpoints:
                              items:
                                properties:
                                  attributes:
                                    description: "Map of implementation-dependant
                                      string-based free-form attributes. \n Examples
                                      of Che-specific attributes: \n - cookiesAuthEnabled:
                                      \"true\" / \"false\", \n - type: \"terminal\"
                                      / \"ide\" / \"ide-dev\","
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: 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 Default
                                      value is `public`"
                                    enum:
                                    - public
                                    - internal
                                    - none
                                    type: string
                                  name:
                                    maxLength: 63
                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                    type: string
                                  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 Default
                                      value is `http`"
                                    enum:
                                    - http
                                    - https
                                    - ws
                                    - wss
                                    - tcp
                                    - udp
                                    type: string
                                  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:
                                    type: integer
                                required:
                                - name
                                type: object
                              type: array
                            inlined:
                              description: Inlined manifest
                              type: string
                            locationType:
                              description: Type of Kubernetes-like location
                              enum:
                              - Uri
                              - Inlined
                              type: string
                            uri:
                              description: Location in a file fetched from a uri.
                              type: string
                          type: object
                        plugin:
                          description: "Allows importing a plugin. \n Plugins 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"
                          oneOf:
                          - required:
                            - uri
                          - required:
                            - id
                          - required:
                            - kubernetes
                          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.
                              items:
                                oneOf:
                                - required:
                                  - exec
                                - required:
                                  - apply
                                - required:
                                  - composite
                                properties:
                                  apply:
                                    description: "Command that consists in applying
                                      a given component definition, typically bound
                                      to a devworkspace event. \n For 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 When no `apply` command exist for a given
                                      component, it is assumed the component will
                                      be applied at devworkspace start by default."
                                    properties:
                                      component:
                                        description: Describes component that will
                                          be applied
                                        type: string
                                      group:
                                        description: Defines the group this command
                                          is part of
                                        properties:
                                          isDefault:
                                            description: Identifies the default command
                                              for a given group kind
                                            type: boolean
                                          kind:
                                            description: Kind of group the command
                                              is part of
                                            enum:
                                            - build
                                            - run
                                            - test
                                            - debug
                                            type: string
                                        type: object
                                      label:
                                        description: Optional label that provides
                                          a label for this command to be used in Editor
                                          UI menus for example
                                        type: string
                                    type: object
                                  attributes:
                                    description: Map of implementation-dependant free-form
                                      YAML attributes.
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  commandType:
                                    description: Type of devworkspace command
                                    enum:
                                    - Exec
                                    - Apply
                                    - Composite
                                    type: string
                                  composite:
                                    description: Composite command that allows executing
                                      several sub-commands either sequentially or
                                      concurrently
                                    properties:
                                      commands:
                                        description: The commands that comprise this
                                          composite command
                                        items:
                                          type: string
                                        type: array
                                      group:
                                        description: Defines the group this command
                                          is part of
                                        properties:
                                          isDefault:
                                            description: Identifies the default command
                                              for a given group kind
                                            type: boolean
                                          kind:
                                            description: Kind of group the command
                                              is part of
                                            enum:
                                            - build
                                            - run
                                            - test
                                            - debug
                                            type: string
                                        type: object
                                      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
                                    type: object
                                  exec:
                                    description: CLI Command executed in an existing
                                      component container
                                    properties:
                                      commandLine:
                                        description: "The actual command-line string
                                          \n Special variables that can be used: \n
                                          \ - `$PROJECTS_ROOT`: A path where projects
                                          sources are mounted as defined by container
                                          component's sourceMapping. \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
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          type: object
                                        type: array
                                      group:
                                        description: Defines the group this command
                                          is part of
                                        properties:
                                          isDefault:
                                            description: Identifies the default command
                                              for a given group kind
                                            type: boolean
                                          kind:
                                            description: Kind of group the command
                                              is part of
                                            enum:
                                            - build
                                            - run
                                            - test
                                            - debug
                                            type: string
                                        type: object
                                      hotReloadCapable:
                                        description: "Whether the command is capable
                                          to reload itself when source code changes.
                                          If set to `true` the command won't be restarted
                                          and it is expected to handle file changes
                                          on its own. \n Default 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 Special variables
                                          that can be used: \n  - `$PROJECTS_ROOT`:
                                          A path where projects sources are mounted
                                          as defined by container component's sourceMapping.
                                          \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
                                    type: object
                                  id:
                                    description: Mandatory identifier that allows
                                      referencing this command in composite commands,
                                      from a parent, or in events.
                                    maxLength: 63
                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                    type: string
                                required:
                                - id
                                type: object
                              type: array
                            components:
                              description: Overrides of components encapsulated in
                                a parent devfile or a plugin. Overriding is done according
                                to K8S strategic merge patch standard rules.
                              items:
                                oneOf:
                                - required:
                                  - container
                                - required:
                                  - kubernetes
                                - required:
                                  - openshift
                                - required:
                                  - volume
                                properties:
                                  attributes:
                                    description: Map of implementation-dependant free-form
                                      YAML attributes.
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  componentType:
                                    description: Type of component
                                    enum:
                                    - Container
                                    - Kubernetes
                                    - Openshift
                                    - Volume
                                    type: string
                                  container:
                                    description: Allows adding and configuring devworkspace-related
                                      containers
                                    properties:
                                      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 Defaults to
                                          an empty array, meaning use whatever is
                                          defined in the image."
                                        items:
                                          type: string
                                        type: array
                                      command:
                                        description: "The command to run in the dockerimage
                                          component instead of the default one provided
                                          in the image. \n Defaults to an empty array,
                                          meaning use whatever is defined in the image."
                                        items:
                                          type: string
                                        type: array
                                      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 Default value is `false`"
                                        type: boolean
                                      endpoints:
                                        items:
                                          properties:
                                            attributes:
                                              description: "Map of implementation-dependant
                                                string-based free-form attributes.
                                                \n Examples of Che-specific attributes:
                                                \n - cookiesAuthEnabled: \"true\"
                                                / \"false\", \n - type: \"terminal\"
                                                / \"ide\" / \"ide-dev\","
                                              type: object
                                              x-kubernetes-preserve-unknown-fields: 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 Default
                                                value is `public`"
                                              enum:
                                              - public
                                              - internal
                                              - none
                                              type: string
                                            name:
                                              maxLength: 63
                                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                              type: string
                                            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 Default value
                                                is `http`"
                                              enum:
                                              - http
                                              - https
                                              - ws
                                              - wss
                                              - tcp
                                              - udp
                                              type: string
                                            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:
                                              type: integer
                                          required:
                                          - name
                                          type: object
                                        type: array
                                      env:
                                        description: "Environment variables used in
                                          this container. \n The following variables
                                          are reserved and cannot be overridden via
                                          env: \n  - `$PROJECTS_ROOT` \n  - `$PROJECT_SOURCE`"
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          type: object
                                        type: array
                                      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 Defaults 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.
                                        items:
                                          description: Volume that should be mounted
                                            to a component container
                                          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.
                                              maxLength: 63
                                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                              type: string
                                            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
                                          required:
                                          - name
                                          type: object
                                        type: array
                                    type: object
                                  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.
                                    oneOf:
                                    - required:
                                      - uri
                                    - required:
                                      - inlined
                                    properties:
                                      endpoints:
                                        items:
                                          properties:
                                            attributes:
                                              description: "Map of implementation-dependant
                                                string-based free-form attributes.
                                                \n Examples of Che-specific attributes:
                                                \n - cookiesAuthEnabled: \"true\"
                                                / \"false\", \n - type: \"terminal\"
                                                / \"ide\" / \"ide-dev\","
                                              type: object
                                              x-kubernetes-preserve-unknown-fields: 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 Default
                                                value is `public`"
                                              enum:
                                              - public
                                              - internal
                                              - none
                                              type: string
                                            name:
                                              maxLength: 63
                                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                              type: string
                                            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 Default value
                                                is `http`"
                                              enum:
                                              - http
                                              - https
                                              - ws
                                              - wss
                                              - tcp
                                              - udp
                                              type: string
                                            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:
                                              type: integer
                                          required:
                                          - name
                                          type: object
                                        type: array
                                      inlined:
                                        description: Inlined manifest
                                        type: string
                                      locationType:
                                        description: Type of Kubernetes-like location
                                        enum:
                                        - Uri
                                        - Inlined
                                        type: string
                                      uri:
                                        description: Location in a file fetched from
                                          a uri.
                                        type: string
                                    type: object
                                  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.
                                    maxLength: 63
                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                    type: string
                                  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.
                                    oneOf:
                                    - required:
                                      - uri
                                    - required:
                                      - inlined
                                    properties:
                                      endpoints:
                                        items:
                                          properties:
                                            attributes:
                                              description: "Map of implementation-dependant
                                                string-based free-form attributes.
                                                \n Examples of Che-specific attributes:
                                                \n - cookiesAuthEnabled: \"true\"
                                                / \"false\", \n - type: \"terminal\"
                                                / \"ide\" / \"ide-dev\","
                                              type: object
                                              x-kubernetes-preserve-unknown-fields: 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 Default
                                                value is `public`"
                                              enum:
                                              - public
                                              - internal
                                              - none
                                              type: string
                                            name:
                                              maxLength: 63
                                              pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                                              type: string
                                            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 Default value
                                                is `http`"
                                              enum:
                                              - http
                                              - https
                                              - ws
                                              - wss
                                              - tcp
                                              - udp
                                              type: string
                                            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:
                                              type: integer
                                          required:
                                          - name
                                          type: object
                                        type: array
                                      inlined:
                                        description: Inlined manifest
                                        type: string
                                      locationType:
                                        description: Type of Kubernetes-like location
                                        enum:
                                        - Uri
                                        - Inlined
                                        type: string
                                      uri:
                                        description: Location in a file fetched from
                                          a uri.
                                        type: string
                                    type: object
                                  volume:
                                    description: Allows specifying the definition
                                      of a volume shared by several other components
                                    properties:
                                      ephemeral:
                                        description: Ephemeral volumes are not stored
                                          persistently across restarts. Defaults to
                                          false
                                        type: boolean
                                      size:
                                        description: Size of the volume
                                        type: string
                                    type: object
                                required:
                                - name
                                type: object
                              type: array
                            id:
                              description: Id in a registry that contains a Devfile
                                yaml file
                              type: string
                            importReferenceType:
                              description: type of location from where the referenced
                                template structure should be retrieved
                              enum:
                              - Uri
                              - Id
                              - Kubernetes
                              type: string
                            kubernetes:
                              description: Reference to a Kubernetes CRD of type DevWorkspaceTemplate
                              properties:
                                name:
                                  type: string
                                namespace:
                                  type: string
                              type: object
                            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 `regsitryURL` 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
                          type: object
                        volume:
                          description: Allows specifying the definition of a volume
                            shared by several other components
                          properties:
                            ephemeral:
                              description: Ephemeral volumes are not stored persistently
                                across restarts. Defaults to false
                              type: boolean
                            size:
                              description: Size of the volume
                              type: string
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                  id:
                    description: Id in a registry that contains a Devfile yaml file
                    type: string
                  importReferenceType:
                    description: type of location from where the referenced template
                      structure should be retrieved
                    enum:
                    - Uri
                    - Id
                    - Kubernetes
                    type: string
                  kubernetes:
                    description: Reference to a Kubernetes CRD of type DevWorkspaceTemplate
                    properties:
                      name:
                        type: string
                      namespace:
                        type: string
                    required:
                    - name
                    type: object
                  projects:
                    description: Overrides of projects encapsulated in a parent devfile.
                      Overriding is done according to K8S strategic merge patch standard
                      rules.
                    items:
                      oneOf:
                      - required:
                        - git
                      - required:
                        - zip
                      properties:
                        attributes:
                          description: Map of implementation-dependant free-form YAML
                            attributes.
                          type: object
                          x-kubernetes-preserve-unknown-fields: 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:
                          description: Project's Git source
                          properties:
                            checkoutFrom:
                              description: Defines from what the project should be
                                checked out. Required if there are more than one remote
                                configured
                              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
                              type: object
                            remotes:
                              additionalProperties:
                                type: string
                              description: The remotes map which should be initialized
                                in the git project. Must have at least one remote
                                configured
                              type: object
                          type: object
                        name:
                          description: Project name
                          maxLength: 63
                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                          type: string
                        sourceType:
                          description: Type of project source
                          enum:
                          - Git
                          - Zip
                          type: string
                        zip:
                          description: Project's Zip source
                          properties:
                            location:
                              description: Zip project's source location address.
                                Should be file path of the archive, e.g. file://$FILE_PATH
                              type: string
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                  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 `regsitryURL` 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.
                    items:
                      oneOf:
                      - required:
                        - git
                      - required:
                        - zip
                      properties:
                        attributes:
                          description: Map of implementation-dependant free-form YAML
                            attributes.
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        description:
                          description: Description of a starter project
                          type: string
                        git:
                          description: Project's Git source
                          properties:
                            checkoutFrom:
                              description: Defines from what the project should be
                                checked out. Required if there are more than one remote
                                configured
                              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
                              type: object
                            remotes:
                              additionalProperties:
                                type: string
                              description: The remotes map which should be initialized
                                in the git project. Must have at least one remote
                                configured
                              type: object
                          type: object
                        name:
                          description: Project name
                          maxLength: 63
                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                          type: string
                        sourceType:
                          description: Type of project source
                          enum:
                          - Git
                          - Zip
                          type: string
                        subDir:
                          description: Sub-directory from a starter project to be
                            used as root for starter project.
                          type: string
                        zip:
                          description: Project's Zip source
                          properties:
                            location:
                              description: Zip project's source location address.
                                Should be file path of the archive, e.g. file://$FILE_PATH
                              type: string
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                  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:
                    additionalProperties:
                      type: string
                    description: Overrides of variables encapsulated in a parent devfile.
                      Overriding is done according to K8S strategic merge patch standard
                      rules.
                    type: object
                type: object
              projects:
                description: Projects worked on in the devworkspace, containing names
                  and sources locations
                items:
                  oneOf:
                  - required:
                    - git
                  - required:
                    - zip
                  - required:
                    - custom
                  properties:
                    attributes:
                      description: Map of implementation-dependant free-form YAML
                        attributes.
                      type: object
                      x-kubernetes-preserve-unknown-fields: 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:
                      description: Project's Custom source
                      properties:
                        embeddedResource:
                          type: object
                          x-kubernetes-embedded-resource: true
                          x-kubernetes-preserve-unknown-fields: true
                        projectSourceClass:
                          type: string
                      required:
                      - embeddedResource
                      - projectSourceClass
                      type: object
                    git:
                      description: Project's Git source
                      properties:
                        checkoutFrom:
                          description: Defines from what the project should be checked
                            out. Required if there are more than one remote configured
                          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
                          type: object
                        remotes:
                          additionalProperties:
                            type: string
                          description: The remotes map which should be initialized
                            in the git project. Must have at least one remote configured
                          type: object
                      required:
                      - remotes
                      type: object
                    name:
                      description: Project name
                      maxLength: 63
                      pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                      type: string
                    sourceType:
                      description: Type of project source
                      enum:
                      - Git
                      - Zip
                      - Custom
                      type: string
                    zip:
                      description: Project's Zip source
                      properties:
                        location:
                          description: Zip project's source location address. Should
                            be file path of the archive, e.g. file://$FILE_PATH
                          type: string
                      type: object
                  required:
                  - name
                  type: object
                type: array
              starterProjects:
                description: StarterProjects is a project that can be used as a starting
                  point when bootstrapping new projects
                items:
                  oneOf:
                  - required:
                    - git
                  - required:
                    - zip
                  - required:
                    - custom
                  properties:
                    attributes:
                      description: Map of implementation-dependant free-form YAML
                        attributes.
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    custom:
                      description: Project's Custom source
                      properties:
                        embeddedResource:
                          type: object
                          x-kubernetes-embedded-resource: true
                          x-kubernetes-preserve-unknown-fields: true
                        projectSourceClass:
                          type: string
                      required:
                      - embeddedResource
                      - projectSourceClass
                      type: object
                    description:
                      description: Description of a starter project
                      type: string
                    git:
                      description: Project's Git source
                      properties:
                        checkoutFrom:
                          description: Defines from what the project should be checked
                            out. Required if there are more than one remote configured
                          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
                          type: object
                        remotes:
                          additionalProperties:
                            type: string
                          description: The remotes map which should be initialized
                            in the git project. Must have at least one remote configured
                          type: object
                      required:
                      - remotes
                      type: object
                    name:
                      description: Project name
                      maxLength: 63
                      pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                      type: string
                    sourceType:
                      description: Type of project source
                      enum:
                      - Git
                      - Zip
                      - Custom
                      type: string
                    subDir:
                      description: Sub-directory from a starter project to be used
                        as root for starter project.
                      type: string
                    zip:
                      description: Project's Zip source
                      properties:
                        location:
                          description: Zip project's source location address. Should
                            be file path of the archive, e.g. file://$FILE_PATH
                          type: string
                      type: object
                  required:
                  - name
                  type: object
                type: array
              variables:
                additionalProperties:
                  type: string
                description: "Map of key-value variables used for string replacement
                  in the devfile. Values can can be referenced via {{variable-key}}
                  to replace the corresponding value in string fields in the devfile.
                  Replacement cannot be used for \n  - schemaVersion, metadata, parent
                  source \n  - element identifiers, e.g. command id, component name,
                  endpoint name, project name \n  - references to identifiers, e.g.
                  in events, a command's component, container's volume mount name
                  \n  - string enums, e.g. command group kind, endpoint exposure"
                type: object
            type: object
        type: object
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
