{
  "description": "ConfigurationGroup is the Schema for the configurationgroup API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "properties": {
        "action": {
          "default": "Deploy",
          "enum": [
            "Deploy",
            "Remove"
          ],
          "type": "string"
        },
        "configurationItem": {
          "description": "ConfigurationItems represents a list of configurations to deploy\nThe order of items in this list determines deployment sequence",
          "items": {
            "properties": {
              "contentRef": {
                "description": "ContentRef references the Kubernetes resource containing\nthe content to deploy.",
                "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\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.",
                    "type": "string"
                  },
                  "kind": {
                    "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                    "type": "string"
                  },
                  "namespace": {
                    "description": "Namespace of the referent.\nMore 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.\nMore 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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
                    "type": "string"
                  }
                },
                "type": "object",
                "x-kubernetes-map-type": "atomic",
                "additionalProperties": false
              },
              "hash": {
                "description": "Hash represents of a unique value for the content stored in\nthe referenced contentRef",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        },
        "continueOnConflict": {
          "default": false,
          "description": "By default (when ContinueOnConflict is unset or set to false), Sveltos stops deployment after\nencountering the first conflict (e.g., another ClusterProfile already deployed the resource).\nIf set to true, Sveltos will attempt to deploy remaining resources in the ClusterProfile even\nif conflicts are detected for previous resources.",
          "type": "boolean"
        },
        "continueOnError": {
          "default": false,
          "description": "By default (when ContinueOnError is unset or set to false), Sveltos stops deployment after\nencountering the first error.\nIf set to true, Sveltos will attempt to deploy remaining resources in the ClusterProfile even\nif errors are detected for previous resources.",
          "type": "boolean"
        },
        "deployedGroupVersionKind": {
          "description": "DeployedGroupVersionKind contains all GroupVersionKinds deployed in either\nthe workload cluster or the management cluster because of this feature.\nEach element has format kind.version.group",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "driftDetection": {
          "default": false,
          "description": "DriftDetection indicates Sveltos must monitors deployed for resources configuration\ndrift. If drift is detected, a reconciliation is triggered to ensure the managed\ncluster's configuration aligns with the expected configuration defined in the management\ncluster",
          "type": "boolean"
        },
        "driftExclusions": {
          "description": "DriftExclusions is a list of configuration drift exclusions to be applied when syncMode is\nset to ContinuousWithDriftDetection. Each exclusion specifies JSON6902 paths to ignore\nwhen evaluating drift, optionally targeting specific resources and features.",
          "items": {
            "properties": {
              "paths": {
                "description": "Paths is a slice of JSON6902 paths to exclude from configuration drift evaluation.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "target": {
                "description": "Target points to the resources that the paths refers to.",
                "properties": {
                  "annotationSelector": {
                    "description": "AnnotationSelector is a string that follows the label selection expression\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api\nIt matches with the resource annotations.",
                    "type": "string"
                  },
                  "group": {
                    "description": "Group is the API group to select resources from.\nTogether with Version and Kind it is capable of unambiguously identifying and/or selecting resources.\nhttps://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md",
                    "type": "string"
                  },
                  "kind": {
                    "description": "Kind of the API Group to select resources from.\nTogether with Group and Version it is capable of unambiguously\nidentifying and/or selecting resources.\nhttps://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md",
                    "type": "string"
                  },
                  "labelSelector": {
                    "description": "LabelSelector is a string that follows the label selection expression\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api\nIt matches with the resource labels.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name to match resources with.",
                    "type": "string"
                  },
                  "namespace": {
                    "description": "Namespace to select resources from.",
                    "type": "string"
                  },
                  "version": {
                    "description": "Version of the API Group to select resources from.\nTogether with Group and Kind it is capable of unambiguously identifying and/or selecting resources.\nhttps://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "required": [
              "paths"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        },
        "dryRun": {
          "default": false,
          "description": "DryRun means no change will be propagated to matching cluster. A report\ninstead will be generated summarizing what would happen in any matching cluster\nbecause of the changes made by this ConfigurationGroup",
          "type": "boolean"
        },
        "leavePolicies": {
          "default": false,
          "description": "Indicates whether deployed resources must be left on the managed cluster.",
          "type": "boolean"
        },
        "maxConsecutiveFailures": {
          "description": "The maximum number of consecutive deployment failures that Sveltos will permit.\nAfter this many consecutive failures, the deployment will be considered failed, and Sveltos will stop retrying.\nThis setting applies only to feature deployments, not resource removal.\nThis field is optional. If not set, Sveltos default behavior is to keep retrying.",
          "type": "integer"
        },
        "postDeleteChecks": {
          "description": "PostDeleteChecks is a slice of checks to run against the managed cluster\n*after* Sveltos has deleted all resources.\nThis ensures that the environment has reached the desired clean state.\nEach check can select resources and validate them using Lua scripts or CEL expressions.",
          "items": {
            "properties": {
              "evaluateCEL": {
                "description": "EvaluateCEL contains a list of named CEL (Common Expression Language) rules.\nEach rule will be evaluated in order against each object selected based on\nthe criteria defined above. Each rule's expression must return a boolean value\nindicating whether the object is a match.\n\nEvaluation stops at the first rule that returns true; subsequent\nrules will not be evaluated.",
                "items": {
                  "description": "CELRule defines a named CEL rule used in EvaluateCEL.",
                  "properties": {
                    "name": {
                      "description": "Name is a human-readable identifier for the rule.",
                      "type": "string"
                    },
                    "rule": {
                      "description": "Rule is the CEL (Common Expression Language) expression to evaluate.\nIt must return a bool",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "rule"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "featureID": {
                "description": "FeatureID is an indentifier of the feature (Helm/Kustomize/Resources)\nThis field indicates when to run this check.\nFor instance:\n- if set to Helm this check will be run after all helm\ncharts specified in the ClusterProfile are deployed.\n- if set to Resources this check will be run after the content\nof all the ConfigMaps/Secrets referenced by ClusterProfile in the\nPolicyRef sections is deployed",
                "enum": [
                  "Resources",
                  "Helm",
                  "Kustomize"
                ],
                "type": "string"
              },
              "group": {
                "description": "Group of the resource to fetch in the managed Cluster.",
                "type": "string"
              },
              "kind": {
                "description": "Kind of the resource to fetch in the managed Cluster.",
                "minLength": 1,
                "type": "string"
              },
              "labelFilters": {
                "description": "LabelFilters allows to filter resources based on current labels.",
                "items": {
                  "properties": {
                    "key": {
                      "description": "Key is the label key",
                      "type": "string"
                    },
                    "operation": {
                      "description": "Operation is the comparison operation",
                      "enum": [
                        "Equal",
                        "Different",
                        "Has",
                        "DoesNotHave"
                      ],
                      "type": "string"
                    },
                    "value": {
                      "description": "Value is the label value",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "operation"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "name": {
                "description": "Name is the name of this check",
                "type": "string"
              },
              "namespace": {
                "description": "Namespace of the resource to fetch in the managed Cluster.\nEmpty for resources scoped at cluster level.",
                "type": "string"
              },
              "script": {
                "description": "Script is a text containing a lua script.\nMust return struct with field \"health\"\nrepresenting whether object is a match (true or false)",
                "type": "string"
              },
              "version": {
                "description": "Version of the resource to fetch in the managed Cluster.",
                "type": "string"
              }
            },
            "required": [
              "featureID",
              "group",
              "kind",
              "name",
              "version"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        },
        "preDeleteChecks": {
          "description": "PreDeleteChecks is a slice of checks to run against the managed cluster\n*before* Sveltos starts deleting resources.\nIf any of these fail, the deletion process is halted.\nEach check can select resources and validate them using Lua scripts or CEL expressions.",
          "items": {
            "properties": {
              "evaluateCEL": {
                "description": "EvaluateCEL contains a list of named CEL (Common Expression Language) rules.\nEach rule will be evaluated in order against each object selected based on\nthe criteria defined above. Each rule's expression must return a boolean value\nindicating whether the object is a match.\n\nEvaluation stops at the first rule that returns true; subsequent\nrules will not be evaluated.",
                "items": {
                  "description": "CELRule defines a named CEL rule used in EvaluateCEL.",
                  "properties": {
                    "name": {
                      "description": "Name is a human-readable identifier for the rule.",
                      "type": "string"
                    },
                    "rule": {
                      "description": "Rule is the CEL (Common Expression Language) expression to evaluate.\nIt must return a bool",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "rule"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "featureID": {
                "description": "FeatureID is an indentifier of the feature (Helm/Kustomize/Resources)\nThis field indicates when to run this check.\nFor instance:\n- if set to Helm this check will be run after all helm\ncharts specified in the ClusterProfile are deployed.\n- if set to Resources this check will be run after the content\nof all the ConfigMaps/Secrets referenced by ClusterProfile in the\nPolicyRef sections is deployed",
                "enum": [
                  "Resources",
                  "Helm",
                  "Kustomize"
                ],
                "type": "string"
              },
              "group": {
                "description": "Group of the resource to fetch in the managed Cluster.",
                "type": "string"
              },
              "kind": {
                "description": "Kind of the resource to fetch in the managed Cluster.",
                "minLength": 1,
                "type": "string"
              },
              "labelFilters": {
                "description": "LabelFilters allows to filter resources based on current labels.",
                "items": {
                  "properties": {
                    "key": {
                      "description": "Key is the label key",
                      "type": "string"
                    },
                    "operation": {
                      "description": "Operation is the comparison operation",
                      "enum": [
                        "Equal",
                        "Different",
                        "Has",
                        "DoesNotHave"
                      ],
                      "type": "string"
                    },
                    "value": {
                      "description": "Value is the label value",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "operation"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "name": {
                "description": "Name is the name of this check",
                "type": "string"
              },
              "namespace": {
                "description": "Namespace of the resource to fetch in the managed Cluster.\nEmpty for resources scoped at cluster level.",
                "type": "string"
              },
              "script": {
                "description": "Script is a text containing a lua script.\nMust return struct with field \"health\"\nrepresenting whether object is a match (true or false)",
                "type": "string"
              },
              "version": {
                "description": "Version of the resource to fetch in the managed Cluster.",
                "type": "string"
              }
            },
            "required": [
              "featureID",
              "group",
              "kind",
              "name",
              "version"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        },
        "preDeployChecks": {
          "description": "PreDeployChecks is a slice of checks to run against the managed cluster\n*before* Sveltos starts deploying resources.\nEach check can use Lua scripts or CEL expressions to validate the cluster state.\nIf any check fails, the deployment of the associated feature is halted.",
          "items": {
            "properties": {
              "evaluateCEL": {
                "description": "EvaluateCEL contains a list of named CEL (Common Expression Language) rules.\nEach rule will be evaluated in order against each object selected based on\nthe criteria defined above. Each rule's expression must return a boolean value\nindicating whether the object is a match.\n\nEvaluation stops at the first rule that returns true; subsequent\nrules will not be evaluated.",
                "items": {
                  "description": "CELRule defines a named CEL rule used in EvaluateCEL.",
                  "properties": {
                    "name": {
                      "description": "Name is a human-readable identifier for the rule.",
                      "type": "string"
                    },
                    "rule": {
                      "description": "Rule is the CEL (Common Expression Language) expression to evaluate.\nIt must return a bool",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "rule"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "featureID": {
                "description": "FeatureID is an indentifier of the feature (Helm/Kustomize/Resources)\nThis field indicates when to run this check.\nFor instance:\n- if set to Helm this check will be run after all helm\ncharts specified in the ClusterProfile are deployed.\n- if set to Resources this check will be run after the content\nof all the ConfigMaps/Secrets referenced by ClusterProfile in the\nPolicyRef sections is deployed",
                "enum": [
                  "Resources",
                  "Helm",
                  "Kustomize"
                ],
                "type": "string"
              },
              "group": {
                "description": "Group of the resource to fetch in the managed Cluster.",
                "type": "string"
              },
              "kind": {
                "description": "Kind of the resource to fetch in the managed Cluster.",
                "minLength": 1,
                "type": "string"
              },
              "labelFilters": {
                "description": "LabelFilters allows to filter resources based on current labels.",
                "items": {
                  "properties": {
                    "key": {
                      "description": "Key is the label key",
                      "type": "string"
                    },
                    "operation": {
                      "description": "Operation is the comparison operation",
                      "enum": [
                        "Equal",
                        "Different",
                        "Has",
                        "DoesNotHave"
                      ],
                      "type": "string"
                    },
                    "value": {
                      "description": "Value is the label value",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "operation"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "name": {
                "description": "Name is the name of this check",
                "type": "string"
              },
              "namespace": {
                "description": "Namespace of the resource to fetch in the managed Cluster.\nEmpty for resources scoped at cluster level.",
                "type": "string"
              },
              "script": {
                "description": "Script is a text containing a lua script.\nMust return struct with field \"health\"\nrepresenting whether object is a match (true or false)",
                "type": "string"
              },
              "version": {
                "description": "Version of the resource to fetch in the managed Cluster.",
                "type": "string"
              }
            },
            "required": [
              "featureID",
              "group",
              "kind",
              "name",
              "version"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        },
        "reloader": {
          "default": false,
          "description": "Reloader indicates whether Deployment/StatefulSet/DaemonSet instances deployed\nby Sveltos and part of this ConfigurationGroup need to be restarted via rolling upgrade\nwhen a ConfigMap/Secret instance mounted as volume is modified.\nWhen set to true, when any mounted ConfigMap/Secret is modified, Sveltos automatically\nstarts a rolling upgrade for Deployment/StatefulSet/DaemonSet instances mounting it.",
          "type": "boolean"
        },
        "requestorHash": {
          "description": "RequestorHash represents a hash of the state of the requestor that created this ConfigurationGroup.\nThis field is optional and can be used to determine when the creating resource's state has\nchanged and the ConfigurationGroup needs to be updated accordingly.",
          "format": "byte",
          "type": "string"
        },
        "serviceAccountName": {
          "description": "ServiceAccountName is the name of the ServiceAccount to impersonate when applying\nthe configuration. If empty, the default ServiceAccount for the Sveltos-applier\nwill be used.\nThe ServiceAccount must exist in the managed cluster.",
          "type": "string"
        },
        "serviceAccountNamespace": {
          "description": "ServiceAccountNamespace is the namespace of the ServiceAccount to impersonate when applying\nthe configuration. If empty, the default namespace for the Sveltos-applier\nwill be used (typically the same namespace where the Sveltos-applier is deployed).\nThe ServiceAccount must exist in the managed cluster.",
          "type": "string"
        },
        "sourceRef": {
          "description": "SourceRef is the user facing Sveltos resource that caused this ConfigurationGroup to be\ncreated. For instance, when a ClusterSummary creates a ConfigurationGroup, the user\nfacing resource is either a ClusterProfile or a Profile.",
          "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\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.",
              "type": "string"
            },
            "kind": {
              "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
              "type": "string"
            },
            "name": {
              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace of the referent.\nMore 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.\nMore 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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
              "type": "string"
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "sourceStatus": {
          "default": "Active",
          "description": "SourceStatus indicates the lifecycle status of the source resource (e.g., ClusterSummary)\nthat created this ConfigurationGroup. Valid values are \"Active\" and \"Deleted\".\nThis field helps determine if the ConfigurationGroup was created by a source that is\nno longer present or in a different state.",
          "enum": [
            "Active",
            "Deleted"
          ],
          "type": "string"
        },
        "tier": {
          "default": 100,
          "description": "Tier controls the order of deployment for ClusterProfile or Profile resources targeting\nthe same cluster resources.\nImagine two configurations (ClusterProfiles or Profiles) trying to deploy the same resource (a Kubernetes\nresource or an helm chart). By default, the first one to reach the cluster \"wins\" and deploys it.\nTier allows you to override this. When conflicts arise, the ClusterProfile or Profile with the **lowest**\nTier value takes priority and deploys the resource.\nHigher Tier values represent lower priority. The default Tier value is 100.\nUsing Tiers provides finer control over resource deployment within your cluster, particularly useful\nwhen multiple configurations manage the same resources.",
          "format": "int32",
          "minimum": 1,
          "type": "integer"
        },
        "updatePhase": {
          "default": "Ready",
          "description": "UpdatePhase indicates the current phase of configuration updates. When set to \"Preparing\",\nit signals that a new version of this ConfigurationGroup is being prepared, forcing\nmetadata.generation to advance. This allows detection of differences between\nstatus.observedGeneration and metadata.generation when agents process an older version,\nenabling tracking of update propagation across managed clusters.",
          "enum": [
            "Ready",
            "Preparing"
          ],
          "type": "string"
        },
        "validateHealths": {
          "description": "ValidateHealths is a slice of checks to run against the managed cluster\n*after* resources are deployed to validate that the state of the\nadd-ons/applications is healthy.\nEach check can select resources and validate them using Lua scripts or CEL expressions.",
          "items": {
            "properties": {
              "evaluateCEL": {
                "description": "EvaluateCEL contains a list of named CEL (Common Expression Language) rules.\nEach rule will be evaluated in order against each object selected based on\nthe criteria defined above. Each rule's expression must return a boolean value\nindicating whether the object is a match.\n\nEvaluation stops at the first rule that returns true; subsequent\nrules will not be evaluated.",
                "items": {
                  "description": "CELRule defines a named CEL rule used in EvaluateCEL.",
                  "properties": {
                    "name": {
                      "description": "Name is a human-readable identifier for the rule.",
                      "type": "string"
                    },
                    "rule": {
                      "description": "Rule is the CEL (Common Expression Language) expression to evaluate.\nIt must return a bool",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "rule"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "featureID": {
                "description": "FeatureID is an indentifier of the feature (Helm/Kustomize/Resources)\nThis field indicates when to run this check.\nFor instance:\n- if set to Helm this check will be run after all helm\ncharts specified in the ClusterProfile are deployed.\n- if set to Resources this check will be run after the content\nof all the ConfigMaps/Secrets referenced by ClusterProfile in the\nPolicyRef sections is deployed",
                "enum": [
                  "Resources",
                  "Helm",
                  "Kustomize"
                ],
                "type": "string"
              },
              "group": {
                "description": "Group of the resource to fetch in the managed Cluster.",
                "type": "string"
              },
              "kind": {
                "description": "Kind of the resource to fetch in the managed Cluster.",
                "minLength": 1,
                "type": "string"
              },
              "labelFilters": {
                "description": "LabelFilters allows to filter resources based on current labels.",
                "items": {
                  "properties": {
                    "key": {
                      "description": "Key is the label key",
                      "type": "string"
                    },
                    "operation": {
                      "description": "Operation is the comparison operation",
                      "enum": [
                        "Equal",
                        "Different",
                        "Has",
                        "DoesNotHave"
                      ],
                      "type": "string"
                    },
                    "value": {
                      "description": "Value is the label value",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "operation"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "name": {
                "description": "Name is the name of this check",
                "type": "string"
              },
              "namespace": {
                "description": "Namespace of the resource to fetch in the managed Cluster.\nEmpty for resources scoped at cluster level.",
                "type": "string"
              },
              "script": {
                "description": "Script is a text containing a lua script.\nMust return struct with field \"health\"\nrepresenting whether object is a match (true or false)",
                "type": "string"
              },
              "version": {
                "description": "Version of the resource to fetch in the managed Cluster.",
                "type": "string"
              }
            },
            "required": [
              "featureID",
              "group",
              "kind",
              "name",
              "version"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "properties": {
        "deployedGroupVersionKind": {
          "description": "DeployedGroupVersionKind contains all GroupVersionKinds deployed because of\nthe ConfigurationGroup.\nEach element has format kind.version.group",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "failureMessage": {
          "description": "FailureMessage provides more information about the error.",
          "type": "string"
        },
        "lastAppliedTime": {
          "description": "LastAppliedTime is the time feature was last reconciled",
          "format": "date-time",
          "type": "string"
        },
        "observedGeneration": {
          "description": "ObservedGeneration reflects the generation of the most recently observed ConfigurationGroup.\nWhen this value matches the ConfigurationGroup's metadata.generation, it indicates that the\nstatus reflects the latest desired specification. If observedGeneration is less than generation,\nit means the controller has not yet processed the latest changes to the specification.",
          "format": "int64",
          "type": "integer"
        },
        "observedRequestorHash": {
          "description": "ObservedRequestorHash reflects the requestor hash that was last processed by the controller.\nWhen this value matches the spec.requestorHash, it indicates that the controller has\nprocessed the latest state of the creating resource. If observedRequestorHash differs\nfrom spec.requestorHash, it means the requestor has changed and reconciliation is needed.",
          "format": "byte",
          "type": "string"
        },
        "status": {
          "description": "Status represents the state of the feature in the workload cluster",
          "enum": [
            "Provisioning",
            "Provisioned",
            "Failed",
            "FailedNonRetriable",
            "Removing",
            "Removed",
            "AgentRemoving"
          ],
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
