{
    "title": "Chart Values",
    "type": "object",
    "properties": {
        "global": {
            "type": "object",
            "properties": {
                "imageRegistry": {
                    "type": "string",
                    "description": "Global Docker image registry",
                    "default": ""
                },
                "imagePullSecrets": {
                    "type": "array",
                    "description": "Global Docker registry secret names as an array",
                    "default": [],
                    "items": {}
                }
            }
        },
        "nameOverride": {
            "type": "string",
            "description": "String to partially override common.names.fullname",
            "default": ""
        },
        "fullnameOverride": {
            "type": "string",
            "description": "String to fully override common.names.fullname",
            "default": ""
        },
        "commonLabels": {
            "type": "object",
            "description": "Labels to add to all deployed objects",
            "default": {}
        },
        "commonAnnotations": {
            "type": "object",
            "description": "Annotations to add to all deployed objects",
            "default": {}
        },
        "extraDeploy": {
            "type": "array",
            "description": "Array of extra objects to deploy with the release",
            "default": [],
            "items": {}
        },
        "hostAliases": {
            "type": "array",
            "description": "Add deployment host aliases",
            "default": [],
            "items": {}
        },
        "image": {
            "type": "object",
            "properties": {
                "registry": {
                    "type": "string",
                    "description": "Kubewatch image registry",
                    "default": "REGISTRY_NAME"
                },
                "repository": {
                    "type": "string",
                    "description": "Kubewatch image name",
                    "default": "REPOSITORY_NAME/kubewatch"
                },
                "pullPolicy": {
                    "type": "string",
                    "description": "Kubewatch image pull policy",
                    "default": "IfNotPresent"
                },
                "pullSecrets": {
                    "type": "array",
                    "description": "Specify docker-registry secret names as an array",
                    "default": [],
                    "items": {}
                }
            }
        },
        "slack": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable Slack notifications",
                    "default": true
                },
                "channel": {
                    "type": "string",
                    "description": "Slack channel to notify",
                    "default": "XXXX"
                },
                "token": {
                    "type": "string",
                    "description": "Slack API token",
                    "default": "XXXX"
                }
            }
        },
        "hipchat": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable HipChat notifications",
                    "default": false
                },
                "room": {
                    "type": "string",
                    "description": "HipChat room to notify",
                    "default": ""
                },
                "token": {
                    "type": "string",
                    "description": "HipChat token",
                    "default": ""
                },
                "url": {
                    "type": "string",
                    "description": "HipChat URL",
                    "default": ""
                }
            }
        },
        "mattermost": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable Mattermost notifications",
                    "default": false
                },
                "channel": {
                    "type": "string",
                    "description": "Mattermost channel to notify",
                    "default": ""
                },
                "username": {
                    "type": "string",
                    "description": "Mattermost user to notify",
                    "default": ""
                },
                "url": {
                    "type": "string",
                    "description": "Mattermost URL",
                    "default": ""
                }
            }
        },
        "flock": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable Flock notifications",
                    "default": false
                },
                "url": {
                    "type": "string",
                    "description": "Flock URL",
                    "default": ""
                }
            }
        },
        "msteams": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable Microsoft Teams notifications",
                    "default": false
                },
                "webhookurl": {
                    "type": "string",
                    "description": "Microsoft Teams webhook URL",
                    "default": ""
                }
            }
        },
        "smtp": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable SMTP (email) notifications",
                    "default": false
                },
                "to": {
                    "type": "string",
                    "description": "Destination email address (required)",
                    "default": ""
                },
                "from": {
                    "type": "string",
                    "description": "Source email address (required)",
                    "default": ""
                },
                "hello": {
                    "type": "string",
                    "description": "SMTP hello field (optional)",
                    "default": ""
                },
                "smarthost": {
                    "type": "string",
                    "description": "SMTP server address (name:port) (required)",
                    "default": ""
                },
                "subject": {
                    "type": "string",
                    "description": "SMTP subject for the email",
                    "default": ""
                },
                "requireTLS": {
                    "type": "boolean",
                    "description": "Force STARTTLS",
                    "default": false
                },
                "auth": {
                    "type": "object",
                    "properties": {
                        "username": {
                            "type": "string",
                            "description": "Username for LOGIN and PLAIN auth mech",
                            "default": ""
                        },
                        "password": {
                            "type": "string",
                            "description": "Password for LOGIN and PLAIN auth mech",
                            "default": ""
                        },
                        "secret": {
                            "type": "string",
                            "description": "Secret for CRAM-MD5 auth mech",
                            "default": ""
                        },
                        "identity": {
                            "type": "string",
                            "description": "Identity for PLAIN auth mech",
                            "default": ""
                        }
                    }
                }
            }
        },
        "namespaceToWatch": {
            "type": "string",
            "description": "Namespace to watch, leave it empty for watching all",
            "default": ""
        },
        "resourcesToWatch": {
            "type": "object",
            "properties": {
                "pod": {
                    "type": "boolean",
                    "description": "Watch changes to Pods",
                    "default": true
                },
                "deployment": {
                    "type": "boolean",
                    "description": "Watch changes to Deployments",
                    "default": true
                },
                "replicationcontroller": {
                    "type": "boolean",
                    "description": "Watch changes to ReplicationControllers",
                    "default": false
                },
                "replicaset": {
                    "type": "boolean",
                    "description": "Watch changes to ReplicaSets",
                    "default": false
                },
                "daemonset": {
                    "type": "boolean",
                    "description": "Watch changes to DaemonSets",
                    "default": false
                },
                "services": {
                    "type": "boolean",
                    "description": "Watch changes to Services",
                    "default": false
                },
                "job": {
                    "type": "boolean",
                    "description": "Watch changes to Jobs",
                    "default": false
                },
                "persistentvolume": {
                    "type": "boolean",
                    "description": "Watch changes to PersistentVolumes",
                    "default": false
                }
            }
        },
        "command": {
            "type": "array",
            "description": "Override default container command (useful when using custom images)",
            "default": [],
            "items": {}
        },
        "args": {
            "type": "array",
            "description": "Override default container args (useful when using custom images)",
            "default": [],
            "items": {}
        },
        "extraEnvVars": {
            "type": "array",
            "description": "Name of the env var",
            "items": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Name of the env var"
                    },
                    "value": {
                        "type": "string",
                        "description": "Value for the env var"
                    }
                }
            }
        },
        "extraEnvVarsCM": {
            "type": "string",
            "description": "Name of existing ConfigMap containing extra env vars",
            "default": ""
        },
        "extraEnvVarsSecret": {
            "type": "string",
            "description": "Name of existing Secret containing extra env vars",
            "default": ""
        },
        "replicaCount": {
            "type": "number",
            "description": "Number of Kubewatch replicas to deploy",
            "default": 1
        },
        "podSecurityContext": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enabled Kubewatch pods' Security Context",
                    "default": false
                },
                "fsGroup": {
                    "type": "number",
                    "description": "Set Kubewatch pod's Security Context fsGroup",
                    "default": 1001
                }
            }
        },
        "containerSecurityContext": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enabled Kubewatch containers' Security Context",
                    "default": false
                },
                "runAsUser": {
                    "type": "number",
                    "description": "Set Kubewatch container's Security Context runAsUser",
                    "default": 1001
                },
                "runAsNonRoot": {
                    "type": "boolean",
                    "description": "Set Kubewatch container's Security Context runAsNonRoot",
                    "default": true
                }
            }
        },
        "livenessProbe": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable livenessProbe",
                    "default": false
                },
                "initialDelaySeconds": {
                    "type": "number",
                    "description": "Initial delay seconds for livenessProbe",
                    "default": 10
                },
                "periodSeconds": {
                    "type": "number",
                    "description": "Period seconds for livenessProbe",
                    "default": 10
                },
                "timeoutSeconds": {
                    "type": "number",
                    "description": "Timeout seconds for livenessProbe",
                    "default": 1
                },
                "failureThreshold": {
                    "type": "number",
                    "description": "Failure threshold for livenessProbe",
                    "default": 3
                },
                "successThreshold": {
                    "type": "number",
                    "description": "Success threshold for livenessProbe",
                    "default": 1
                }
            }
        },
        "readinessProbe": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable readinessProbe",
                    "default": false
                },
                "initialDelaySeconds": {
                    "type": "number",
                    "description": "Initial delay seconds for readinessProbe",
                    "default": 10
                },
                "periodSeconds": {
                    "type": "number",
                    "description": "Period seconds for readinessProbe",
                    "default": 10
                },
                "timeoutSeconds": {
                    "type": "number",
                    "description": "Timeout seconds for readinessProbe",
                    "default": 1
                },
                "failureThreshold": {
                    "type": "number",
                    "description": "Failure threshold for readinessProbe",
                    "default": 3
                },
                "successThreshold": {
                    "type": "number",
                    "description": "Success threshold for readinessProbe",
                    "default": 1
                }
            }
        },
        "customLivenessProbe": {
            "type": "object",
            "description": "Override default liveness probe",
            "default": {}
        },
        "customReadinessProbe": {
            "type": "object",
            "description": "Override default readiness probe",
            "default": {}
        },
        "podAffinityPreset": {
            "type": "string",
            "description": "Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`",
            "default": ""
        },
        "podAntiAffinityPreset": {
            "type": "string",
            "description": "Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`",
            "default": "soft"
        },
        "nodeAffinityPreset": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`",
                    "default": ""
                },
                "key": {
                    "type": "string",
                    "description": "Node label key to match. Ignored if `affinity` is set",
                    "default": ""
                },
                "values": {
                    "type": "array",
                    "description": "Node label values to match. Ignored if `affinity` is set",
                    "default": [],
                    "items": {}
                }
            }
        },
        "affinity": {
            "type": "object",
            "description": "Affinity for pod assignment",
            "default": {}
        },
        "nodeSelector": {
            "type": "object",
            "description": "Node labels for pod assignment",
            "default": {}
        },
        "tolerations": {
            "type": "array",
            "description": "Tolerations for pod assignment",
            "default": [],
            "items": {}
        },
        "podLabels": {
            "type": "object",
            "description": "Extra labels for Kubewatch pods",
            "default": {}
        },
        "podAnnotations": {
            "type": "object",
            "description": "Annotations for Kubewatch pods",
            "default": {}
        },
        "extraVolumes": {
            "type": "array",
            "description": "Optionally specify extra list of additional volumes for Kubewatch pods",
            "default": [],
            "items": {}
        },
        "extraVolumeMounts": {
            "type": "array",
            "description": "Optionally specify extra list of additional volumeMounts for Kubewatch container(s)",
            "default": [],
            "items": {}
        },
        "initContainers": {
            "type": "object",
            "description": "Add additional init containers to the Kubewatch pods",
            "default": {}
        },
        "sidecars": {
            "type": "object",
            "description": "Add additional sidecar containers to the Kubewatch pods",
            "default": {}
        },
        "rbac": {
            "type": "object",
            "properties": {
                "create": {
                    "type": "boolean",
                    "description": "Weather to create & use RBAC resources or not",
                    "default": false
                }
            }
        },
        "serviceAccount": {
            "type": "object",
            "properties": {
                "create": {
                    "type": "boolean",
                    "description": "Enable the creation of a ServiceAccount for Kubewatch pods",
                    "default": true
                },
                "name": {
                    "type": "string",
                    "description": "Name of the created ServiceAccount",
                    "default": ""
                }
            }
        },
        "inventedArray": {
            "type": "array",
            "description": "Test parameter to check arrays",
            "default": [
                "a",
                "b"
            ],
            "items": {
                "type": "string"
            }
        },
        "arrayModifier": {
            "type": "array",
            "description": "Test parameter for modifier array",
            "default": "[]",
            "items": {
                "type": "string"
            }
        },
        "configuration": {
            "type": "string",
            "description": "haproxy configuration",
            "default": "\"\""
        },
        "jobs": {
            "type": "array",
            "description": "String to partially override jobs.names.fullname",
            "items": {
                "type": "object",
                "properties": {
                    "nameOverride": {
                        "type": "string",
                        "description": "String to partially override jobs.names.fullname"
                    },
                    "fullnameOverride": {
                        "type": "string",
                        "description": "String to fully override jobs.names.fullname"
                    },
                    "resources": {
                        "type": "object",
                        "properties": {
                            "limits": {
                                "type": "object",
                                "description": "The resources limits override for the Job"
                            }
                        }
                    },
                    "newOption": {
                        "type": "object",
                        "properties": {
                            "subArray": {
                                "type": "array",
                                "description": "Test object inside Arrat",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "object": {
                                            "type": "string",
                                            "description": "Test object inside Arrat"
                                        },
                                        "plainArray": {
                                            "type": "array",
                                            "description": "Test nested arrays",
                                            "items": {
                                                "type": "string"
                                            }
                                        },
                                        "threeLevelsArray": {
                                            "type": "array",
                                            "description": "Test 3 levels array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "c": {
                                                        "type": "string",
                                                        "description": "Test 3 levels array"
                                                    }
                                                }
                                            }
                                        },
                                        "emptyObject": {
                                            "type": "object",
                                            "description": "Empty object"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "extraTest": {
            "type": "object",
            "properties": {
                "content": {
                    "type": "string",
                    "description": "Content of the object",
                    "default": "whatever"
                }
            }
        },
        "forceSchemaArrayModifier": {
            "type": "array",
            "description": "The parameter should appear completely into the schema but with the modifier value into the README",
            "default": "[]",
            "items": {
                "type": "string"
            }
        },
        "nullable": {
            "type": "object",
            "description": "Nullable parameter",
            "default": null,
            "nullable": true
        },
        "nullableNullStringWithValueChange": {
            "type": "string",
            "description": "Nullable null string. We apply string modifier that will change the type and value, but the schema will show `nullable: true`.",
            "default": "\"\"",
            "nullable": true
        },
        "nullableNullArray": {
            "type": "array",
            "description": "Nullable null array. We apply array modifier that will change the type in the schema plus `nullable: true`.",
            "default": null,
            "nullable": true,
            "items": {}
        },
        "nullableNullString": {
            "type": "string",
            "description": "Nullable null string. We apply string modifier to avoid infering an object type. The null must be preverved as value.",
            "default": null,
            "nullable": true
        },
        "nullableNotNull": {
            "type": "string",
            "description": "Nullable parameter with a non null value",
            "default": "somestring",
            "nullable": true
        },
        "nullableObject": {
            "type": "object",
            "description": "Nullable parameter with an object value",
            "default": {},
            "nullable": true
        },
        "nullableArray": {
            "type": "array",
            "description": "Nullable parameter with an array value",
            "default": [],
            "nullable": true,
            "items": {}
        },
        "arrayEmptyModifier": {
            "type": "array",
            "description": "Test empty array modifier",
            "default": "[]",
            "items": {
                "type": "string"
            }
        }
    }
}