{
    "description": "CSISnapshotController provides a means to configure an operator to manage the CSI snapshots. `cluster` is the canonical name. \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).",
    "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": "spec holds user settable values for configuration",
            "properties": {
                "logLevel": {
                    "default": "Normal",
                    "description": "logLevel is an intent based logging for an overall component.  It does not give fine grained control, but it is a simple way to manage coarse grained logging choices that operators have to interpret for their operands. \n Valid values are: \"Normal\", \"Debug\", \"Trace\", \"TraceAll\". Defaults to \"Normal\".",
                    "enum": [
                        "",
                        "Normal",
                        "Debug",
                        "Trace",
                        "TraceAll"
                    ],
                    "type": "string"
                },
                "managementState": {
                    "description": "managementState indicates whether and how the operator should manage the component",
                    "pattern": "^(Managed|Unmanaged|Force|Removed)$",
                    "type": "string"
                },
                "observedConfig": {
                    "description": "observedConfig holds a sparse config that controller has observed from the cluster state.  It exists in spec because it is an input to the level for the operator",
                    "type": [
                        "object",
                        "null"
                    ],
                    "x-kubernetes-preserve-unknown-fields": true
                },
                "operatorLogLevel": {
                    "default": "Normal",
                    "description": "operatorLogLevel is an intent based logging for the operator itself.  It does not give fine grained control, but it is a simple way to manage coarse grained logging choices that operators have to interpret for themselves. \n Valid values are: \"Normal\", \"Debug\", \"Trace\", \"TraceAll\". Defaults to \"Normal\".",
                    "enum": [
                        "",
                        "Normal",
                        "Debug",
                        "Trace",
                        "TraceAll"
                    ],
                    "type": "string"
                },
                "unsupportedConfigOverrides": {
                    "description": "unsupportedConfigOverrides overrides the final configuration that was computed by the operator. Red Hat does not support the use of this field. Misuse of this field could lead to unexpected behavior or conflict with other configuration options. Seek guidance from the Red Hat support before using this field. Use of this property blocks cluster upgrades, it must be removed before upgrading your cluster.",
                    "type": [
                        "object",
                        "null"
                    ],
                    "x-kubernetes-preserve-unknown-fields": true
                }
            },
            "type": "object",
            "additionalProperties": false
        },
        "status": {
            "description": "status holds observed values from the cluster. They may not be overridden.",
            "properties": {
                "conditions": {
                    "description": "conditions is a list of conditions and their status",
                    "items": {
                        "description": "OperatorCondition is just the standard condition fields.",
                        "properties": {
                            "lastTransitionTime": {
                                "format": "date-time",
                                "type": "string"
                            },
                            "message": {
                                "type": "string"
                            },
                            "reason": {
                                "type": "string"
                            },
                            "status": {
                                "type": "string"
                            },
                            "type": {
                                "type": "string"
                            }
                        },
                        "type": "object",
                        "additionalProperties": false
                    },
                    "type": "array"
                },
                "generations": {
                    "description": "generations are used to determine when an item needs to be reconciled or has changed in a way that needs a reaction.",
                    "items": {
                        "description": "GenerationStatus keeps track of the generation for a given resource so that decisions about forced updates can be made.",
                        "properties": {
                            "group": {
                                "description": "group is the group of the thing you're tracking",
                                "type": "string"
                            },
                            "hash": {
                                "description": "hash is an optional field set for resources without generation that are content sensitive like secrets and configmaps",
                                "type": "string"
                            },
                            "lastGeneration": {
                                "description": "lastGeneration is the last generation of the workload controller involved",
                                "format": "int64",
                                "type": "integer",
                                "minimum": -9223372036854776000,
                                "maximum": 9223372036854776000
                            },
                            "name": {
                                "description": "name is the name of the thing you're tracking",
                                "type": "string"
                            },
                            "namespace": {
                                "description": "namespace is where the thing you're tracking is",
                                "type": "string"
                            },
                            "resource": {
                                "description": "resource is the resource type of the thing you're tracking",
                                "type": "string"
                            }
                        },
                        "type": "object",
                        "additionalProperties": false
                    },
                    "type": "array"
                },
                "observedGeneration": {
                    "description": "observedGeneration is the last generation change you've dealt with",
                    "format": "int64",
                    "type": "integer",
                    "minimum": -9223372036854776000,
                    "maximum": 9223372036854776000
                },
                "readyReplicas": {
                    "description": "readyReplicas indicates how many replicas are ready and at the desired state",
                    "format": "int32",
                    "type": "integer",
                    "minimum": -2147483648,
                    "maximum": 2147483647
                },
                "version": {
                    "description": "version is the level this availability applies to",
                    "type": "string"
                }
            },
            "type": "object",
            "additionalProperties": false
        }
    },
    "required": [
        "spec"
    ],
    "type": "object",
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-04/schema#"
}
