---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.5
  name: applicationrevisions.core.oam.dev
spec:
  group: core.oam.dev
  names:
    categories:
    - oam
    kind: ApplicationRevision
    listKind: ApplicationRevisionList
    plural: applicationrevisions
    shortNames:
    - apprev
    singular: applicationrevision
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    - jsonPath: .metadata.annotations['app\.oam\.dev\/publishVersion']
      name: PUBLISH_VERSION
      type: string
    - jsonPath: .status.succeeded
      name: SUCCEEDED
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: ApplicationRevision is the Schema for the ApplicationRevision
          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: ApplicationRevisionSpec is the spec of ApplicationRevision
            properties:
              application:
                description: Application records the snapshot of the created/modified
                  Application
                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:
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      finalizers:
                        items:
                          type: string
                        type: array
                      labels:
                        additionalProperties:
                          type: string
                        type: object
                      name:
                        type: string
                      namespace:
                        type: string
                    type: object
                  spec:
                    description: ApplicationSpec is the spec of Application
                    properties:
                      components:
                        items:
                          description: ApplicationComponent describe the component
                            of application
                          properties:
                            dependsOn:
                              items:
                                type: string
                              type: array
                            externalRevision:
                              description: ExternalRevision specified the component
                                revisionName
                              type: string
                            inputs:
                              description: StepInputs defines variable input of WorkflowStep
                              items:
                                description: InputItem defines an input variable of
                                  WorkflowStep
                                properties:
                                  from:
                                    type: string
                                  parameterKey:
                                    type: string
                                required:
                                - from
                                type: object
                              type: array
                            name:
                              type: string
                            outputs:
                              description: StepOutputs defines output variable of
                                WorkflowStep
                              items:
                                description: OutputItem defines an output variable
                                  of WorkflowStep
                                properties:
                                  name:
                                    type: string
                                  valueFrom:
                                    type: string
                                required:
                                - name
                                - valueFrom
                                type: object
                              type: array
                            properties:
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            scopes:
                              additionalProperties:
                                type: string
                              description: |-
                                scopes in ApplicationComponent defines the component-level scopes
                                the format is <scope-type:scope-instance-name> pairs, the key represents type of `ScopeDefinition` while the value represent the name of scope instance.
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            traits:
                              description: Traits define the trait of one component,
                                the type must be array to keep the order.
                              items:
                                description: ApplicationTrait defines the trait of
                                  application
                                properties:
                                  properties:
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  type:
                                    type: string
                                required:
                                - type
                                type: object
                              type: array
                            type:
                              type: string
                          required:
                          - name
                          - type
                          type: object
                        type: array
                      policies:
                        description: |-
                          Policies defines the global policies for all components in the app, e.g. security, metrics, gitops,
                          multi-cluster placement rules, etc.
                          Policies are applied after components are rendered and before workflow steps are executed.
                        items:
                          description: AppPolicy defines a global policy for all components
                            in the app.
                          properties:
                            name:
                              description: Name is the unique name of the policy.
                              type: string
                            properties:
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            type:
                              description: Type is the type of the policy
                              type: string
                          required:
                          - type
                          type: object
                        type: array
                      workflow:
                        description: |-
                          Workflow defines how to customize the control logic.
                          If workflow is specified, Vela won't apply any resource, but provide rendered output in AppRevision.
                          Workflow steps are executed in array order, and each step:
                          - will have a context in annotation.
                          - should mark "finish" phase in status.conditions.
                        properties:
                          mode:
                            description: WorkflowExecuteMode defines the mode of workflow
                              execution
                            properties:
                              steps:
                                description: Steps is the mode of workflow steps execution
                                type: string
                              subSteps:
                                description: SubSteps is the mode of workflow sub
                                  steps execution
                                type: string
                            type: object
                          ref:
                            type: string
                          steps:
                            items:
                              description: WorkflowStep defines how to execute a workflow
                                step.
                              properties:
                                dependsOn:
                                  description: DependsOn is the dependency of the
                                    step
                                  items:
                                    type: string
                                  type: array
                                if:
                                  description: If is the if condition of the step
                                  type: string
                                inputs:
                                  description: Inputs is the inputs of the step
                                  items:
                                    description: InputItem defines an input variable
                                      of WorkflowStep
                                    properties:
                                      from:
                                        type: string
                                      parameterKey:
                                        type: string
                                    required:
                                    - from
                                    type: object
                                  type: array
                                meta:
                                  description: Meta is the meta data of the workflow
                                    step.
                                  properties:
                                    alias:
                                      type: string
                                  type: object
                                mode:
                                  description: Mode is only valid for sub steps, it
                                    defines the mode of the sub steps
                                  nullable: true
                                  type: string
                                name:
                                  description: Name is the unique name of the workflow
                                    step.
                                  type: string
                                outputs:
                                  description: Outputs is the outputs of the step
                                  items:
                                    description: OutputItem defines an output variable
                                      of WorkflowStep
                                    properties:
                                      name:
                                        type: string
                                      valueFrom:
                                        type: string
                                    required:
                                    - name
                                    - valueFrom
                                    type: object
                                  type: array
                                properties:
                                  description: Properties is the properties of the
                                    step
                                  type: object
                                  x-kubernetes-preserve-unknown-fields: true
                                subSteps:
                                  items:
                                    description: WorkflowStepBase defines the workflow
                                      step base
                                    properties:
                                      dependsOn:
                                        description: DependsOn is the dependency of
                                          the step
                                        items:
                                          type: string
                                        type: array
                                      if:
                                        description: If is the if condition of the
                                          step
                                        type: string
                                      inputs:
                                        description: Inputs is the inputs of the step
                                        items:
                                          description: InputItem defines an input
                                            variable of WorkflowStep
                                          properties:
                                            from:
                                              type: string
                                            parameterKey:
                                              type: string
                                          required:
                                          - from
                                          type: object
                                        type: array
                                      meta:
                                        description: Meta is the meta data of the
                                          workflow step.
                                        properties:
                                          alias:
                                            type: string
                                        type: object
                                      name:
                                        description: Name is the unique name of the
                                          workflow step.
                                        type: string
                                      outputs:
                                        description: Outputs is the outputs of the
                                          step
                                        items:
                                          description: OutputItem defines an output
                                            variable of WorkflowStep
                                          properties:
                                            name:
                                              type: string
                                            valueFrom:
                                              type: string
                                          required:
                                          - name
                                          - valueFrom
                                          type: object
                                        type: array
                                      properties:
                                        description: Properties is the properties
                                          of the step
                                        type: object
                                        x-kubernetes-preserve-unknown-fields: true
                                      timeout:
                                        description: Timeout is the timeout of the
                                          step
                                        type: string
                                      type:
                                        description: Type is the type of the workflow
                                          step.
                                        type: string
                                    required:
                                    - type
                                    type: object
                                  type: array
                                timeout:
                                  description: Timeout is the timeout of the step
                                  type: string
                                type:
                                  description: Type is the type of the workflow step.
                                  type: string
                              required:
                              - type
                              type: object
                            type: array
                        type: object
                    required:
                    - components
                    type: object
                  status:
                    description: AppStatus defines the observed state of Application
                    properties:
                      appliedResources:
                        description: AppliedResources record the resources that the  workflow
                          step apply.
                        items:
                          description: ClusterObjectReference defines the object reference
                            with cluster.
                          properties:
                            apiVersion:
                              description: API version of the referent.
                              type: string
                            cluster:
                              type: string
                            creator:
                              type: string
                            fieldPath:
                              description: |-
                                If referring to a piece of an object instead of an entire object, this string
                                should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                For example, if the object reference is to a container within a pod, this would take on a value like:
                                "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                the event) or if no container name is specified "spec.containers[2]" (container with
                                index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                referencing a part of an object.
                              type: string
                            kind:
                              description: |-
                                Kind of the referent.
                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                              type: string
                            name:
                              description: |-
                                Name of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            namespace:
                              description: |-
                                Namespace of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                              type: string
                            resourceVersion:
                              description: |-
                                Specific resourceVersion to which this reference is made, if any.
                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                              type: string
                            uid:
                              description: |-
                                UID of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        type: array
                      components:
                        description: Components record the related Components created
                          by Application Controller
                        items:
                          description: ObjectReference contains enough information
                            to let you inspect or modify the referred object.
                          properties:
                            apiVersion:
                              description: API version of the referent.
                              type: string
                            fieldPath:
                              description: |-
                                If referring to a piece of an object instead of an entire object, this string
                                should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                For example, if the object reference is to a container within a pod, this would take on a value like:
                                "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                the event) or if no container name is specified "spec.containers[2]" (container with
                                index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                referencing a part of an object.
                              type: string
                            kind:
                              description: |-
                                Kind of the referent.
                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                              type: string
                            name:
                              description: |-
                                Name of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            namespace:
                              description: |-
                                Namespace of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                              type: string
                            resourceVersion:
                              description: |-
                                Specific resourceVersion to which this reference is made, if any.
                                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                              type: string
                            uid:
                              description: |-
                                UID of the referent.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        type: array
                      conditions:
                        description: Conditions of the resource.
                        items:
                          description: A Condition that may apply to a resource.
                          properties:
                            lastTransitionTime:
                              description: |-
                                LastTransitionTime is the last time this condition transitioned from one
                                status to another.
                              format: date-time
                              type: string
                            message:
                              description: |-
                                A Message containing details about this condition's last transition from
                                one status to another, if any.
                              type: string
                            reason:
                              description: A Reason for this condition's last transition
                                from one status to another.
                              type: string
                            status:
                              description: Status of this condition; is it currently
                                True, False, or Unknown?
                              type: string
                            type:
                              description: |-
                                Type of this condition. At most one of each condition type may apply to
                                a resource at any point in time.
                              type: string
                          required:
                          - lastTransitionTime
                          - reason
                          - status
                          - type
                          type: object
                        type: array
                      latestRevision:
                        description: LatestRevision of the application configuration
                          it generates
                        properties:
                          name:
                            type: string
                          revision:
                            format: int64
                            type: integer
                          revisionHash:
                            description: RevisionHash record the hash value of the
                              spec of ApplicationRevision object.
                            type: string
                        required:
                        - name
                        - revision
                        type: object
                      observedGeneration:
                        description: The generation observed by the application controller.
                        format: int64
                        type: integer
                      policy:
                        description: |-
                          PolicyStatus records the status of policy
                          Deprecated This field is only used by EnvBinding Policy which is deprecated.
                        items:
                          description: |-
                            PolicyStatus records the status of policy
                            Deprecated
                          properties:
                            name:
                              type: string
                            status:
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            type:
                              type: string
                          required:
                          - name
                          - type
                          type: object
                        type: array
                      services:
                        description: Services record the status of the application
                          services
                        items:
                          description: ApplicationComponentStatus record the health
                            status of App component
                          properties:
                            cluster:
                              type: string
                            details:
                              additionalProperties:
                                type: string
                              type: object
                            env:
                              type: string
                            healthy:
                              type: boolean
                            message:
                              type: string
                            name:
                              type: string
                            namespace:
                              type: string
                            scopes:
                              items:
                                description: ObjectReference contains enough information
                                  to let you inspect or modify the referred object.
                                properties:
                                  apiVersion:
                                    description: API version of the referent.
                                    type: string
                                  fieldPath:
                                    description: |-
                                      If referring to a piece of an object instead of an entire object, this string
                                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                      For example, if the object reference is to a container within a pod, this would take on a value like:
                                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                      the event) or if no container name is specified "spec.containers[2]" (container with
                                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                      referencing a part of an object.
                                    type: string
                                  kind:
                                    description: |-
                                      Kind of the referent.
                                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                    type: string
                                  name:
                                    description: |-
                                      Name of the referent.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                  namespace:
                                    description: |-
                                      Namespace of the referent.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                                    type: string
                                  resourceVersion:
                                    description: |-
                                      Specific resourceVersion to which this reference is made, if any.
                                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                                    type: string
                                  uid:
                                    description: |-
                                      UID of the referent.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                    type: string
                                type: object
                                x-kubernetes-map-type: atomic
                              type: array
                            traits:
                              items:
                                description: ApplicationTraitStatus records the trait
                                  health status
                                properties:
                                  details:
                                    additionalProperties:
                                      type: string
                                    type: object
                                  healthy:
                                    type: boolean
                                  message:
                                    type: string
                                  type:
                                    type: string
                                required:
                                - healthy
                                - type
                                type: object
                              type: array
                            workloadDefinition:
                              description: WorkloadDefinition is the definition of
                                a WorkloadDefinition, such as deployments/apps.v1
                              properties:
                                apiVersion:
                                  type: string
                                kind:
                                  type: string
                              required:
                              - apiVersion
                              - kind
                              type: object
                          required:
                          - healthy
                          - name
                          type: object
                        type: array
                      status:
                        description: ApplicationPhase is a label for the condition
                          of an application at the current time
                        type: string
                      workflow:
                        description: Workflow record the status of workflow
                        properties:
                          appRevision:
                            type: string
                          contextBackend:
                            description: ObjectReference contains enough information
                              to let you inspect or modify the referred object.
                            properties:
                              apiVersion:
                                description: API version of the referent.
                                type: string
                              fieldPath:
                                description: |-
                                  If referring to a piece of an object instead of an entire object, this string
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                                type: string
                              resourceVersion:
                                description: |-
                                  Specific resourceVersion to which this reference is made, if any.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                                type: string
                              uid:
                                description: |-
                                  UID of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          endTime:
                            format: date-time
                            nullable: true
                            type: string
                          finished:
                            type: boolean
                          message:
                            type: string
                          mode:
                            type: string
                          startTime:
                            format: date-time
                            type: string
                          status:
                            description: WorkflowRunPhase is a label for the condition
                              of a WorkflowRun at the current time
                            type: string
                          steps:
                            items:
                              description: WorkflowStepStatus record the status of
                                a workflow step, include step status and subStep status
                              properties:
                                firstExecuteTime:
                                  description: FirstExecuteTime is the first time
                                    this step execution.
                                  format: date-time
                                  type: string
                                id:
                                  type: string
                                lastExecuteTime:
                                  description: LastExecuteTime is the last time this
                                    step execution.
                                  format: date-time
                                  type: string
                                message:
                                  description: A human readable message indicating
                                    details about why the workflowStep is in this
                                    state.
                                  type: string
                                name:
                                  type: string
                                phase:
                                  description: WorkflowStepPhase describes the phase
                                    of a workflow step.
                                  type: string
                                reason:
                                  description: A brief CamelCase message indicating
                                    details about why the workflowStep is in this
                                    state.
                                  type: string
                                subSteps:
                                  items:
                                    description: StepStatus record the base status
                                      of workflow step, which could be workflow step
                                      or subStep
                                    properties:
                                      firstExecuteTime:
                                        description: FirstExecuteTime is the first
                                          time this step execution.
                                        format: date-time
                                        type: string
                                      id:
                                        type: string
                                      lastExecuteTime:
                                        description: LastExecuteTime is the last time
                                          this step execution.
                                        format: date-time
                                        type: string
                                      message:
                                        description: A human readable message indicating
                                          details about why the workflowStep is in
                                          this state.
                                        type: string
                                      name:
                                        type: string
                                      phase:
                                        description: WorkflowStepPhase describes the
                                          phase of a workflow step.
                                        type: string
                                      reason:
                                        description: A brief CamelCase message indicating
                                          details about why the workflowStep is in
                                          this state.
                                        type: string
                                      type:
                                        type: string
                                    required:
                                    - id
                                    type: object
                                  type: array
                                type:
                                  type: string
                              required:
                              - id
                              type: object
                            type: array
                          suspend:
                            type: boolean
                          suspendState:
                            type: string
                          terminated:
                            type: boolean
                        required:
                        - finished
                        - mode
                        - suspend
                        - terminated
                        type: object
                    type: object
                type: object
              componentDefinitions:
                additionalProperties:
                  description: ComponentDefinition is the Schema for the componentdefinitions
                    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:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        finalizers:
                          items:
                            type: string
                          type: array
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        name:
                          type: string
                        namespace:
                          type: string
                      type: object
                    spec:
                      description: ComponentDefinitionSpec defines the desired state
                        of ComponentDefinition
                      properties:
                        childResourceKinds:
                          description: ChildResourceKinds are the list of GVK of the
                            child resources this workload generates
                          items:
                            description: A ChildResourceKind defines a child Kubernetes
                              resource kind with a selector
                            properties:
                              apiVersion:
                                description: APIVersion of the child resource
                                type: string
                              kind:
                                description: Kind of the child resource
                                type: string
                              selector:
                                additionalProperties:
                                  type: string
                                description: Selector to select the child resources
                                  that the workload wants to expose to traits
                                type: object
                            required:
                            - apiVersion
                            - kind
                            type: object
                          type: array
                        extension:
                          description: Extension is used for extension needs by OAM
                            platform builders
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        podSpecPath:
                          description: |-
                            PodSpecPath indicates where/if this workload has K8s podSpec field
                            if one workload has podSpec, trait can do lot's of assumption such as port, env, volume fields.
                          type: string
                        revisionLabel:
                          description: |-
                            RevisionLabel indicates which label for underlying resources(e.g. pods) of this workload
                            can be used by trait to create resource selectors(e.g. label selector for pods).
                          type: string
                        schematic:
                          description: Schematic defines the data format and template
                            of the encapsulation of the workload
                          properties:
                            cue:
                              description: CUE defines the encapsulation in CUE format
                              properties:
                                template:
                                  description: |-
                                    Template defines the abstraction template data of the capability, it will replace the old CUE template in extension field.
                                    Template is a required field if CUE is defined in Capability Definition.
                                  type: string
                              required:
                              - template
                              type: object
                            terraform:
                              description: Terraform is the struct to describe cloud
                                resources managed by Hashicorp Terraform
                              properties:
                                configuration:
                                  description: Configuration is Terraform Configuration
                                  type: string
                                customRegion:
                                  description: Region is cloud provider's region.
                                    It will override the region in the region field
                                    of ProviderReference
                                  type: string
                                deleteResource:
                                  default: true
                                  description: DeleteResource will determine whether
                                    provisioned cloud resources will be deleted when
                                    CR is deleted
                                  type: boolean
                                gitCredentialsSecretReference:
                                  description: GitCredentialsSecretReference specifies
                                    the reference to the secret containing the git
                                    credentials
                                  properties:
                                    name:
                                      description: name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                path:
                                  description: Path is the sub-directory of remote
                                    git repository. It's valid when remote is set
                                  type: string
                                providerRef:
                                  description: ProviderReference specifies the reference
                                    to Provider
                                  properties:
                                    name:
                                      description: Name of the referenced object.
                                      type: string
                                    namespace:
                                      default: default
                                      description: Namespace of the referenced object.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type:
                                  default: hcl
                                  description: Type specifies which Terraform configuration
                                    it is, HCL or JSON syntax
                                  enum:
                                  - hcl
                                  - json
                                  - remote
                                  type: string
                                writeConnectionSecretToRef:
                                  description: |-
                                    WriteConnectionSecretToReference specifies the namespace and name of a
                                    Secret to which any connection details for this managed resource should
                                    be written. Connection details frequently include the endpoint, username,
                                    and password required to connect to the managed resource.
                                  properties:
                                    name:
                                      description: Name of the secret.
                                      type: string
                                    namespace:
                                      description: Namespace of the secret.
                                      type: string
                                  required:
                                  - name
                                  type: object
                              required:
                              - configuration
                              type: object
                          type: object
                        status:
                          description: Status defines the custom health policy and
                            status message for workload
                          properties:
                            customStatus:
                              description: CustomStatus defines the custom status
                                message that could display to user
                              type: string
                            details:
                              description: Details stores a string representation
                                of a CUE status map to be evaluated at runtime for
                                display
                              type: string
                            healthPolicy:
                              description: HealthPolicy defines the health check policy
                                for the abstraction
                              type: string
                          type: object
                        version:
                          type: string
                        workload:
                          description: Workload is a workload type descriptor
                          properties:
                            definition:
                              description: Definition mutually exclusive to workload.type,
                                a embedded WorkloadDefinition
                              properties:
                                apiVersion:
                                  type: string
                                kind:
                                  type: string
                              required:
                              - apiVersion
                              - kind
                              type: object
                            type:
                              description: Type ref to a WorkloadDefinition via name
                              type: string
                          type: object
                      required:
                      - workload
                      type: object
                    status:
                      description: ComponentDefinitionStatus is the status of ComponentDefinition
                      properties:
                        conditions:
                          description: Conditions of the resource.
                          items:
                            description: A Condition that may apply to a resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  LastTransitionTime is the last time this condition transitioned from one
                                  status to another.
                                format: date-time
                                type: string
                              message:
                                description: |-
                                  A Message containing details about this condition's last transition from
                                  one status to another, if any.
                                type: string
                              reason:
                                description: A Reason for this condition's last transition
                                  from one status to another.
                                type: string
                              status:
                                description: Status of this condition; is it currently
                                  True, False, or Unknown?
                                type: string
                              type:
                                description: |-
                                  Type of this condition. At most one of each condition type may apply to
                                  a resource at any point in time.
                                type: string
                            required:
                            - lastTransitionTime
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                        configMapRef:
                          description: ConfigMapRef refer to a ConfigMap which contains
                            OpenAPI V3 JSON schema of Component parameters.
                          type: string
                        latestRevision:
                          description: LatestRevision of the component definition
                          properties:
                            name:
                              type: string
                            revision:
                              format: int64
                              type: integer
                            revisionHash:
                              description: RevisionHash record the hash value of the
                                spec of ApplicationRevision object.
                              type: string
                          required:
                          - name
                          - revision
                          type: object
                      type: object
                  type: object
                description: ComponentDefinitions records the snapshot of the componentDefinitions
                  related with the created/modified Application
                type: object
              compression:
                description: Compression represents the compressed components in apprev
                  in base64 (if compression is enabled).
                properties:
                  data:
                    type: string
                  type:
                    description: Type the compression type
                    type: string
                type: object
              policies:
                additionalProperties:
                  description: Policy is the Schema for the policy 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:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        finalizers:
                          items:
                            type: string
                          type: array
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        name:
                          type: string
                        namespace:
                          type: string
                      type: object
                    properties:
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    type:
                      type: string
                  required:
                  - type
                  type: object
                description: Policies records the external policies
                type: object
              policyDefinitions:
                additionalProperties:
                  description: PolicyDefinition is the Schema for the policydefinitions
                    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:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        finalizers:
                          items:
                            type: string
                          type: array
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        name:
                          type: string
                        namespace:
                          type: string
                      type: object
                    spec:
                      description: PolicyDefinitionSpec defines the desired state
                        of PolicyDefinition
                      properties:
                        definitionRef:
                          description: Reference to the CustomResourceDefinition that
                            defines this trait kind.
                          properties:
                            name:
                              description: Name of the referenced CustomResourceDefinition.
                              type: string
                            version:
                              description: |-
                                Version indicate which version should be used if CRD has multiple versions
                                by default it will use the first one if not specified
                              type: string
                          required:
                          - name
                          type: object
                        manageHealthCheck:
                          description: |-
                            ManageHealthCheck means the policy will handle health checking and skip application controller
                            built-in health checking.
                          type: boolean
                        schematic:
                          description: |-
                            Schematic defines the data format and template of the encapsulation of the policy definition.
                            Only CUE schematic is supported for now.
                          properties:
                            cue:
                              description: CUE defines the encapsulation in CUE format
                              properties:
                                template:
                                  description: |-
                                    Template defines the abstraction template data of the capability, it will replace the old CUE template in extension field.
                                    Template is a required field if CUE is defined in Capability Definition.
                                  type: string
                              required:
                              - template
                              type: object
                            terraform:
                              description: Terraform is the struct to describe cloud
                                resources managed by Hashicorp Terraform
                              properties:
                                configuration:
                                  description: Configuration is Terraform Configuration
                                  type: string
                                customRegion:
                                  description: Region is cloud provider's region.
                                    It will override the region in the region field
                                    of ProviderReference
                                  type: string
                                deleteResource:
                                  default: true
                                  description: DeleteResource will determine whether
                                    provisioned cloud resources will be deleted when
                                    CR is deleted
                                  type: boolean
                                gitCredentialsSecretReference:
                                  description: GitCredentialsSecretReference specifies
                                    the reference to the secret containing the git
                                    credentials
                                  properties:
                                    name:
                                      description: name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                path:
                                  description: Path is the sub-directory of remote
                                    git repository. It's valid when remote is set
                                  type: string
                                providerRef:
                                  description: ProviderReference specifies the reference
                                    to Provider
                                  properties:
                                    name:
                                      description: Name of the referenced object.
                                      type: string
                                    namespace:
                                      default: default
                                      description: Namespace of the referenced object.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type:
                                  default: hcl
                                  description: Type specifies which Terraform configuration
                                    it is, HCL or JSON syntax
                                  enum:
                                  - hcl
                                  - json
                                  - remote
                                  type: string
                                writeConnectionSecretToRef:
                                  description: |-
                                    WriteConnectionSecretToReference specifies the namespace and name of a
                                    Secret to which any connection details for this managed resource should
                                    be written. Connection details frequently include the endpoint, username,
                                    and password required to connect to the managed resource.
                                  properties:
                                    name:
                                      description: Name of the secret.
                                      type: string
                                    namespace:
                                      description: Namespace of the secret.
                                      type: string
                                  required:
                                  - name
                                  type: object
                              required:
                              - configuration
                              type: object
                          type: object
                        version:
                          type: string
                      type: object
                    status:
                      description: PolicyDefinitionStatus is the status of PolicyDefinition
                      properties:
                        conditions:
                          description: Conditions of the resource.
                          items:
                            description: A Condition that may apply to a resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  LastTransitionTime is the last time this condition transitioned from one
                                  status to another.
                                format: date-time
                                type: string
                              message:
                                description: |-
                                  A Message containing details about this condition's last transition from
                                  one status to another, if any.
                                type: string
                              reason:
                                description: A Reason for this condition's last transition
                                  from one status to another.
                                type: string
                              status:
                                description: Status of this condition; is it currently
                                  True, False, or Unknown?
                                type: string
                              type:
                                description: |-
                                  Type of this condition. At most one of each condition type may apply to
                                  a resource at any point in time.
                                type: string
                            required:
                            - lastTransitionTime
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                        configMapRef:
                          description: ConfigMapRef refer to a ConfigMap which contains
                            OpenAPI V3 JSON schema of Component parameters.
                          type: string
                        latestRevision:
                          description: LatestRevision of the component definition
                          properties:
                            name:
                              type: string
                            revision:
                              format: int64
                              type: integer
                            revisionHash:
                              description: RevisionHash record the hash value of the
                                spec of ApplicationRevision object.
                              type: string
                          required:
                          - name
                          - revision
                          type: object
                      type: object
                  type: object
                description: PolicyDefinitions records the snapshot of the PolicyDefinitions
                  related with the created/modified Application
                type: object
              referredObjects:
                description: ReferredObjects records the referred objects used in
                  the ref-object typed components
                items:
                  description: ReferredObject the referred Kubernetes object
                  type: object
                  x-kubernetes-embedded-resource: true
                  x-kubernetes-preserve-unknown-fields: true
                type: array
                x-kubernetes-preserve-unknown-fields: true
              traitDefinitions:
                additionalProperties:
                  description: |-
                    A TraitDefinition registers a kind of Kubernetes custom resource as a valid
                    OAM trait kind by referencing its CustomResourceDefinition. The CRD is used
                    to validate the schema of the trait when it is embedded in an OAM
                    ApplicationConfiguration.
                  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:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        finalizers:
                          items:
                            type: string
                          type: array
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        name:
                          type: string
                        namespace:
                          type: string
                      type: object
                    spec:
                      description: A TraitDefinitionSpec defines the desired state
                        of a TraitDefinition.
                      properties:
                        appliesToWorkloads:
                          description: |-
                            AppliesToWorkloads specifies the list of workload kinds this trait
                            applies to. Workload kinds are specified in resource.group/version format,
                            e.g. server.core.oam.dev/v1alpha2. Traits that omit this field apply to
                            all workload kinds.
                          items:
                            type: string
                          type: array
                        conflictsWith:
                          description: |-
                            ConflictsWith specifies the list of traits(CRD name, Definition name, CRD group)
                            which could not apply to the same workloads with this trait.
                            Traits that omit this field can work with any other traits.
                            Example rules:
                            "service" # Trait definition name
                            "services.k8s.io" # API resource/crd name
                            "*.networking.k8s.io" # API group
                            "labelSelector:foo=bar" # label selector
                            labelSelector format: https://pkg.go.dev/k8s.io/apimachinery/pkg/labels#Parse
                          items:
                            type: string
                          type: array
                        controlPlaneOnly:
                          description: ControlPlaneOnly defines which cluster is dispatched
                            to
                          type: boolean
                        definitionRef:
                          description: Reference to the CustomResourceDefinition that
                            defines this trait kind.
                          properties:
                            name:
                              description: Name of the referenced CustomResourceDefinition.
                              type: string
                            version:
                              description: |-
                                Version indicate which version should be used if CRD has multiple versions
                                by default it will use the first one if not specified
                              type: string
                          required:
                          - name
                          type: object
                        extension:
                          description: Extension is used for extension needs by OAM
                            platform builders
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        manageWorkload:
                          description: ManageWorkload defines the trait would be responsible
                            for creating the workload
                          type: boolean
                        podDisruptive:
                          description: PodDisruptive specifies whether using the trait
                            will cause the pod to restart or not.
                          type: boolean
                        revisionEnabled:
                          description: Revision indicates whether a trait is aware
                            of component revision
                          type: boolean
                        schematic:
                          description: |-
                            Schematic defines the data format and template of the encapsulation of the trait.
                            Only CUE and Kube schematic are supported for now.
                          properties:
                            cue:
                              description: CUE defines the encapsulation in CUE format
                              properties:
                                template:
                                  description: |-
                                    Template defines the abstraction template data of the capability, it will replace the old CUE template in extension field.
                                    Template is a required field if CUE is defined in Capability Definition.
                                  type: string
                              required:
                              - template
                              type: object
                            terraform:
                              description: Terraform is the struct to describe cloud
                                resources managed by Hashicorp Terraform
                              properties:
                                configuration:
                                  description: Configuration is Terraform Configuration
                                  type: string
                                customRegion:
                                  description: Region is cloud provider's region.
                                    It will override the region in the region field
                                    of ProviderReference
                                  type: string
                                deleteResource:
                                  default: true
                                  description: DeleteResource will determine whether
                                    provisioned cloud resources will be deleted when
                                    CR is deleted
                                  type: boolean
                                gitCredentialsSecretReference:
                                  description: GitCredentialsSecretReference specifies
                                    the reference to the secret containing the git
                                    credentials
                                  properties:
                                    name:
                                      description: name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                path:
                                  description: Path is the sub-directory of remote
                                    git repository. It's valid when remote is set
                                  type: string
                                providerRef:
                                  description: ProviderReference specifies the reference
                                    to Provider
                                  properties:
                                    name:
                                      description: Name of the referenced object.
                                      type: string
                                    namespace:
                                      default: default
                                      description: Namespace of the referenced object.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type:
                                  default: hcl
                                  description: Type specifies which Terraform configuration
                                    it is, HCL or JSON syntax
                                  enum:
                                  - hcl
                                  - json
                                  - remote
                                  type: string
                                writeConnectionSecretToRef:
                                  description: |-
                                    WriteConnectionSecretToReference specifies the namespace and name of a
                                    Secret to which any connection details for this managed resource should
                                    be written. Connection details frequently include the endpoint, username,
                                    and password required to connect to the managed resource.
                                  properties:
                                    name:
                                      description: Name of the secret.
                                      type: string
                                    namespace:
                                      description: Namespace of the secret.
                                      type: string
                                  required:
                                  - name
                                  type: object
                              required:
                              - configuration
                              type: object
                          type: object
                        stage:
                          description: |-
                            Stage defines the stage information to which this trait resource processing belongs.
                            Currently, PreDispatch and PostDispatch are provided, which are used to control resource
                            pre-process and post-process respectively.
                          type: string
                        status:
                          description: Status defines the custom health policy and
                            status message for trait
                          properties:
                            customStatus:
                              description: CustomStatus defines the custom status
                                message that could display to user
                              type: string
                            details:
                              description: Details stores a string representation
                                of a CUE status map to be evaluated at runtime for
                                display
                              type: string
                            healthPolicy:
                              description: HealthPolicy defines the health check policy
                                for the abstraction
                              type: string
                          type: object
                        version:
                          type: string
                        workloadRefPath:
                          description: WorkloadRefPath indicates where/if a trait
                            accepts a workloadRef object
                          type: string
                      type: object
                    status:
                      description: TraitDefinitionStatus is the status of TraitDefinition
                      properties:
                        conditions:
                          description: Conditions of the resource.
                          items:
                            description: A Condition that may apply to a resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  LastTransitionTime is the last time this condition transitioned from one
                                  status to another.
                                format: date-time
                                type: string
                              message:
                                description: |-
                                  A Message containing details about this condition's last transition from
                                  one status to another, if any.
                                type: string
                              reason:
                                description: A Reason for this condition's last transition
                                  from one status to another.
                                type: string
                              status:
                                description: Status of this condition; is it currently
                                  True, False, or Unknown?
                                type: string
                              type:
                                description: |-
                                  Type of this condition. At most one of each condition type may apply to
                                  a resource at any point in time.
                                type: string
                            required:
                            - lastTransitionTime
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                        configMapRef:
                          description: ConfigMapRef refer to a ConfigMap which contains
                            OpenAPI V3 JSON schema of Component parameters.
                          type: string
                        latestRevision:
                          description: LatestRevision of the component definition
                          properties:
                            name:
                              type: string
                            revision:
                              format: int64
                              type: integer
                            revisionHash:
                              description: RevisionHash record the hash value of the
                                spec of ApplicationRevision object.
                              type: string
                          required:
                          - name
                          - revision
                          type: object
                      type: object
                  type: object
                description: TraitDefinitions records the snapshot of the traitDefinitions
                  related with the created/modified Application
                type: object
              workflow:
                description: Workflow records the external workflow
                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:
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      finalizers:
                        items:
                          type: string
                        type: array
                      labels:
                        additionalProperties:
                          type: string
                        type: object
                      name:
                        type: string
                      namespace:
                        type: string
                    type: object
                  mode:
                    description: WorkflowExecuteMode defines the mode of workflow
                      execution
                    properties:
                      steps:
                        description: Steps is the mode of workflow steps execution
                        type: string
                      subSteps:
                        description: SubSteps is the mode of workflow sub steps execution
                        type: string
                    type: object
                  steps:
                    items:
                      description: WorkflowStep defines how to execute a workflow
                        step.
                      properties:
                        dependsOn:
                          description: DependsOn is the dependency of the step
                          items:
                            type: string
                          type: array
                        if:
                          description: If is the if condition of the step
                          type: string
                        inputs:
                          description: Inputs is the inputs of the step
                          items:
                            description: InputItem defines an input variable of WorkflowStep
                            properties:
                              from:
                                type: string
                              parameterKey:
                                type: string
                            required:
                            - from
                            type: object
                          type: array
                        meta:
                          description: Meta is the meta data of the workflow step.
                          properties:
                            alias:
                              type: string
                          type: object
                        mode:
                          description: Mode is only valid for sub steps, it defines
                            the mode of the sub steps
                          nullable: true
                          type: string
                        name:
                          description: Name is the unique name of the workflow step.
                          type: string
                        outputs:
                          description: Outputs is the outputs of the step
                          items:
                            description: OutputItem defines an output variable of
                              WorkflowStep
                            properties:
                              name:
                                type: string
                              valueFrom:
                                type: string
                            required:
                            - name
                            - valueFrom
                            type: object
                          type: array
                        properties:
                          description: Properties is the properties of the step
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        subSteps:
                          items:
                            description: WorkflowStepBase defines the workflow step
                              base
                            properties:
                              dependsOn:
                                description: DependsOn is the dependency of the step
                                items:
                                  type: string
                                type: array
                              if:
                                description: If is the if condition of the step
                                type: string
                              inputs:
                                description: Inputs is the inputs of the step
                                items:
                                  description: InputItem defines an input variable
                                    of WorkflowStep
                                  properties:
                                    from:
                                      type: string
                                    parameterKey:
                                      type: string
                                  required:
                                  - from
                                  type: object
                                type: array
                              meta:
                                description: Meta is the meta data of the workflow
                                  step.
                                properties:
                                  alias:
                                    type: string
                                type: object
                              name:
                                description: Name is the unique name of the workflow
                                  step.
                                type: string
                              outputs:
                                description: Outputs is the outputs of the step
                                items:
                                  description: OutputItem defines an output variable
                                    of WorkflowStep
                                  properties:
                                    name:
                                      type: string
                                    valueFrom:
                                      type: string
                                  required:
                                  - name
                                  - valueFrom
                                  type: object
                                type: array
                              properties:
                                description: Properties is the properties of the step
                                type: object
                                x-kubernetes-preserve-unknown-fields: true
                              timeout:
                                description: Timeout is the timeout of the step
                                type: string
                              type:
                                description: Type is the type of the workflow step.
                                type: string
                            required:
                            - type
                            type: object
                          type: array
                        timeout:
                          description: Timeout is the timeout of the step
                          type: string
                        type:
                          description: Type is the type of the workflow step.
                          type: string
                      required:
                      - type
                      type: object
                    type: array
                type: object
              workflowStepDefinitions:
                additionalProperties:
                  description: WorkflowStepDefinition is the Schema for the workflowstepdefinitions
                    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:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        finalizers:
                          items:
                            type: string
                          type: array
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        name:
                          type: string
                        namespace:
                          type: string
                      type: object
                    spec:
                      description: WorkflowStepDefinitionSpec defines the desired
                        state of WorkflowStepDefinition
                      properties:
                        definitionRef:
                          description: Reference to the CustomResourceDefinition that
                            defines this trait kind.
                          properties:
                            name:
                              description: Name of the referenced CustomResourceDefinition.
                              type: string
                            version:
                              description: |-
                                Version indicate which version should be used if CRD has multiple versions
                                by default it will use the first one if not specified
                              type: string
                          required:
                          - name
                          type: object
                        schematic:
                          description: |-
                            Schematic defines the data format and template of the encapsulation of the workflow step definition.
                            Only CUE schematic is supported for now.
                          properties:
                            cue:
                              description: CUE defines the encapsulation in CUE format
                              properties:
                                template:
                                  description: |-
                                    Template defines the abstraction template data of the capability, it will replace the old CUE template in extension field.
                                    Template is a required field if CUE is defined in Capability Definition.
                                  type: string
                              required:
                              - template
                              type: object
                            terraform:
                              description: Terraform is the struct to describe cloud
                                resources managed by Hashicorp Terraform
                              properties:
                                configuration:
                                  description: Configuration is Terraform Configuration
                                  type: string
                                customRegion:
                                  description: Region is cloud provider's region.
                                    It will override the region in the region field
                                    of ProviderReference
                                  type: string
                                deleteResource:
                                  default: true
                                  description: DeleteResource will determine whether
                                    provisioned cloud resources will be deleted when
                                    CR is deleted
                                  type: boolean
                                gitCredentialsSecretReference:
                                  description: GitCredentialsSecretReference specifies
                                    the reference to the secret containing the git
                                    credentials
                                  properties:
                                    name:
                                      description: name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                path:
                                  description: Path is the sub-directory of remote
                                    git repository. It's valid when remote is set
                                  type: string
                                providerRef:
                                  description: ProviderReference specifies the reference
                                    to Provider
                                  properties:
                                    name:
                                      description: Name of the referenced object.
                                      type: string
                                    namespace:
                                      default: default
                                      description: Namespace of the referenced object.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type:
                                  default: hcl
                                  description: Type specifies which Terraform configuration
                                    it is, HCL or JSON syntax
                                  enum:
                                  - hcl
                                  - json
                                  - remote
                                  type: string
                                writeConnectionSecretToRef:
                                  description: |-
                                    WriteConnectionSecretToReference specifies the namespace and name of a
                                    Secret to which any connection details for this managed resource should
                                    be written. Connection details frequently include the endpoint, username,
                                    and password required to connect to the managed resource.
                                  properties:
                                    name:
                                      description: Name of the secret.
                                      type: string
                                    namespace:
                                      description: Namespace of the secret.
                                      type: string
                                  required:
                                  - name
                                  type: object
                              required:
                              - configuration
                              type: object
                          type: object
                        version:
                          type: string
                      type: object
                    status:
                      description: WorkflowStepDefinitionStatus is the status of WorkflowStepDefinition
                      properties:
                        conditions:
                          description: Conditions of the resource.
                          items:
                            description: A Condition that may apply to a resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  LastTransitionTime is the last time this condition transitioned from one
                                  status to another.
                                format: date-time
                                type: string
                              message:
                                description: |-
                                  A Message containing details about this condition's last transition from
                                  one status to another, if any.
                                type: string
                              reason:
                                description: A Reason for this condition's last transition
                                  from one status to another.
                                type: string
                              status:
                                description: Status of this condition; is it currently
                                  True, False, or Unknown?
                                type: string
                              type:
                                description: |-
                                  Type of this condition. At most one of each condition type may apply to
                                  a resource at any point in time.
                                type: string
                            required:
                            - lastTransitionTime
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                        configMapRef:
                          description: ConfigMapRef refer to a ConfigMap which contains
                            OpenAPI V3 JSON schema of Component parameters.
                          type: string
                        latestRevision:
                          description: LatestRevision of the component definition
                          properties:
                            name:
                              type: string
                            revision:
                              format: int64
                              type: integer
                            revisionHash:
                              description: RevisionHash record the hash value of the
                                spec of ApplicationRevision object.
                              type: string
                          required:
                          - name
                          - revision
                          type: object
                      type: object
                  type: object
                description: WorkflowStepDefinitions records the snapshot of the WorkflowStepDefinitions
                  related with the created/modified Application
                type: object
              workloadDefinitions:
                additionalProperties:
                  description: |-
                    A WorkloadDefinition registers a kind of Kubernetes custom resource as a
                    valid OAM workload kind by referencing its CustomResourceDefinition. The CRD
                    is used to validate the schema of the workload when it is embedded in an OAM
                    Component.
                  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:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        finalizers:
                          items:
                            type: string
                          type: array
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        name:
                          type: string
                        namespace:
                          type: string
                      type: object
                    spec:
                      description: A WorkloadDefinitionSpec defines the desired state
                        of a WorkloadDefinition.
                      properties:
                        childResourceKinds:
                          description: ChildResourceKinds are the list of GVK of the
                            child resources this workload generates
                          items:
                            description: A ChildResourceKind defines a child Kubernetes
                              resource kind with a selector
                            properties:
                              apiVersion:
                                description: APIVersion of the child resource
                                type: string
                              kind:
                                description: Kind of the child resource
                                type: string
                              selector:
                                additionalProperties:
                                  type: string
                                description: Selector to select the child resources
                                  that the workload wants to expose to traits
                                type: object
                            required:
                            - apiVersion
                            - kind
                            type: object
                          type: array
                        definitionRef:
                          description: Reference to the CustomResourceDefinition that
                            defines this workload kind.
                          properties:
                            name:
                              description: Name of the referenced CustomResourceDefinition.
                              type: string
                            version:
                              description: |-
                                Version indicate which version should be used if CRD has multiple versions
                                by default it will use the first one if not specified
                              type: string
                          required:
                          - name
                          type: object
                        extension:
                          description: Extension is used for extension needs by OAM
                            platform builders
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        podSpecPath:
                          description: |-
                            PodSpecPath indicates where/if this workload has K8s podSpec field
                            if one workload has podSpec, trait can do lot's of assumption such as port, env, volume fields.
                          type: string
                        revisionLabel:
                          description: |-
                            RevisionLabel indicates which label for underlying resources(e.g. pods) of this workload
                            can be used by trait to create resource selectors(e.g. label selector for pods).
                          type: string
                        schematic:
                          description: Schematic defines the data format and template
                            of the encapsulation of the workload
                          properties:
                            cue:
                              description: CUE defines the encapsulation in CUE format
                              properties:
                                template:
                                  description: |-
                                    Template defines the abstraction template data of the capability, it will replace the old CUE template in extension field.
                                    Template is a required field if CUE is defined in Capability Definition.
                                  type: string
                              required:
                              - template
                              type: object
                            terraform:
                              description: Terraform is the struct to describe cloud
                                resources managed by Hashicorp Terraform
                              properties:
                                configuration:
                                  description: Configuration is Terraform Configuration
                                  type: string
                                customRegion:
                                  description: Region is cloud provider's region.
                                    It will override the region in the region field
                                    of ProviderReference
                                  type: string
                                deleteResource:
                                  default: true
                                  description: DeleteResource will determine whether
                                    provisioned cloud resources will be deleted when
                                    CR is deleted
                                  type: boolean
                                gitCredentialsSecretReference:
                                  description: GitCredentialsSecretReference specifies
                                    the reference to the secret containing the git
                                    credentials
                                  properties:
                                    name:
                                      description: name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                path:
                                  description: Path is the sub-directory of remote
                                    git repository. It's valid when remote is set
                                  type: string
                                providerRef:
                                  description: ProviderReference specifies the reference
                                    to Provider
                                  properties:
                                    name:
                                      description: Name of the referenced object.
                                      type: string
                                    namespace:
                                      default: default
                                      description: Namespace of the referenced object.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type:
                                  default: hcl
                                  description: Type specifies which Terraform configuration
                                    it is, HCL or JSON syntax
                                  enum:
                                  - hcl
                                  - json
                                  - remote
                                  type: string
                                writeConnectionSecretToRef:
                                  description: |-
                                    WriteConnectionSecretToReference specifies the namespace and name of a
                                    Secret to which any connection details for this managed resource should
                                    be written. Connection details frequently include the endpoint, username,
                                    and password required to connect to the managed resource.
                                  properties:
                                    name:
                                      description: Name of the secret.
                                      type: string
                                    namespace:
                                      description: Namespace of the secret.
                                      type: string
                                  required:
                                  - name
                                  type: object
                              required:
                              - configuration
                              type: object
                          type: object
                        status:
                          description: Status defines the custom health policy and
                            status message for workload
                          properties:
                            customStatus:
                              description: CustomStatus defines the custom status
                                message that could display to user
                              type: string
                            details:
                              description: Details stores a string representation
                                of a CUE status map to be evaluated at runtime for
                                display
                              type: string
                            healthPolicy:
                              description: HealthPolicy defines the health check policy
                                for the abstraction
                              type: string
                          type: object
                      required:
                      - definitionRef
                      type: object
                    status:
                      description: WorkloadDefinitionStatus is the status of WorkloadDefinition
                      properties:
                        conditions:
                          description: Conditions of the resource.
                          items:
                            description: A Condition that may apply to a resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  LastTransitionTime is the last time this condition transitioned from one
                                  status to another.
                                format: date-time
                                type: string
                              message:
                                description: |-
                                  A Message containing details about this condition's last transition from
                                  one status to another, if any.
                                type: string
                              reason:
                                description: A Reason for this condition's last transition
                                  from one status to another.
                                type: string
                              status:
                                description: Status of this condition; is it currently
                                  True, False, or Unknown?
                                type: string
                              type:
                                description: |-
                                  Type of this condition. At most one of each condition type may apply to
                                  a resource at any point in time.
                                type: string
                            required:
                            - lastTransitionTime
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                      type: object
                  type: object
                description: WorkloadDefinitions records the snapshot of the workloadDefinitions
                  related with the created/modified Application
                type: object
            required:
            - application
            type: object
          status:
            description: ApplicationRevisionStatus is the status of ApplicationRevision
            properties:
              succeeded:
                description: Succeeded records if the workflow finished running with
                  success
                type: boolean
              workflow:
                description: Workflow the running status of the workflow
                properties:
                  appRevision:
                    type: string
                  contextBackend:
                    description: ObjectReference contains enough information to let
                      you inspect or modify the referred object.
                    properties:
                      apiVersion:
                        description: API version of the referent.
                        type: string
                      fieldPath:
                        description: |-
                          If referring to a piece of an object instead of an entire object, this string
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                        type: string
                      resourceVersion:
                        description: |-
                          Specific resourceVersion to which this reference is made, if any.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                        type: string
                      uid:
                        description: |-
                          UID of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  endTime:
                    format: date-time
                    nullable: true
                    type: string
                  finished:
                    type: boolean
                  message:
                    type: string
                  mode:
                    type: string
                  startTime:
                    format: date-time
                    type: string
                  status:
                    description: WorkflowRunPhase is a label for the condition of
                      a WorkflowRun at the current time
                    type: string
                  steps:
                    items:
                      description: WorkflowStepStatus record the status of a workflow
                        step, include step status and subStep status
                      properties:
                        firstExecuteTime:
                          description: FirstExecuteTime is the first time this step
                            execution.
                          format: date-time
                          type: string
                        id:
                          type: string
                        lastExecuteTime:
                          description: LastExecuteTime is the last time this step
                            execution.
                          format: date-time
                          type: string
                        message:
                          description: A human readable message indicating details
                            about why the workflowStep is in this state.
                          type: string
                        name:
                          type: string
                        phase:
                          description: WorkflowStepPhase describes the phase of a
                            workflow step.
                          type: string
                        reason:
                          description: A brief CamelCase message indicating details
                            about why the workflowStep is in this state.
                          type: string
                        subSteps:
                          items:
                            description: StepStatus record the base status of workflow
                              step, which could be workflow step or subStep
                            properties:
                              firstExecuteTime:
                                description: FirstExecuteTime is the first time this
                                  step execution.
                                format: date-time
                                type: string
                              id:
                                type: string
                              lastExecuteTime:
                                description: LastExecuteTime is the last time this
                                  step execution.
                                format: date-time
                                type: string
                              message:
                                description: A human readable message indicating details
                                  about why the workflowStep is in this state.
                                type: string
                              name:
                                type: string
                              phase:
                                description: WorkflowStepPhase describes the phase
                                  of a workflow step.
                                type: string
                              reason:
                                description: A brief CamelCase message indicating
                                  details about why the workflowStep is in this state.
                                type: string
                              type:
                                type: string
                            required:
                            - id
                            type: object
                          type: array
                        type:
                          type: string
                      required:
                      - id
                      type: object
                    type: array
                  suspend:
                    type: boolean
                  suspendState:
                    type: string
                  terminated:
                    type: boolean
                required:
                - finished
                - mode
                - suspend
                - terminated
                type: object
              workflowContext:
                additionalProperties:
                  type: string
                description: Record the context values to the revision.
                type: object
            required:
            - succeeded
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
