{
    "$schema": "http://json-schema.org/draft-07/schema",
    "type": "object",
    "required": [
        "proxyAddr",
        "roles",
        "joinParams",
        "kubeClusterName",
        "apps",
        "appResources",
        "awsDatabases",
        "azureDatabases",
        "databases",
        "databaseResources",
        "teleportVersionOverride",
        "insecureSkipProxyTLSVerify",
        "teleportConfig",
        "existingDataVolume",
        "podSecurityPolicy",
        "labels",
        "image",
        "clusterRoleName",
        "clusterRoleBindingName",
        "roleName",
        "roleBindingName",
        "podMonitor",
        "serviceAccountName",
        "secretName",
        "log",
        "affinity",
        "annotations",
        "extraVolumes",
        "extraVolumeMounts",
        "imagePullPolicy",
        "initContainers",
        "resources",
        "tolerations",
        "probeTimeoutSeconds"
    ],
    "properties": {
        "authToken": {
            "$id": "#/properties/authToken",
            "type": "string",
            "default": ""
        },
        "proxyAddr": {
            "$id": "#/properties/proxyAddr",
            "type": "string",
            "default": ""
        },
        "roles": {
            "$id": "#/properties/roles",
            "type": "string",
            "default": "kube"
        },
        "joinParams": {
            "$id": "#/properties/joinParams",
            "type": "object",
            "required": ["method"],
            "properties": {
                "tokenName": {
                    "$id": "#/properties/joinParams/tokenName",
                    "type": "string",
                    "default": ""
                },
                "method": {
                    "$id": "#/properties/joinParams/method",
                    "type": "string",
                    "default": "token"
                },
                "additionalProperties": false
            }
        },
        "kubeClusterName": {
            "$id": "#/properties/kubeClusterName",
            "type": "string",
            "default": ""
        },
        "apps": {
            "$id": "#/properties/apps",
            "type": "array",
            "default": [],
            "required": [
                "name",
                "uri"
            ],
            "properties": {
                "name": {
                    "$id": "#/properties/apps/name",
                    "type": "string",
                    "default": ""
                },
                "uri": {
                    "$id": "#/properties/apps/uri",
                    "type": "string",
                    "default": ""
                },
                "additionalProperties": true
            }
        },
        "appResources": {
            "$id": "#/properties/appResources",
            "type": "array",
            "default": [],
            "required": [
                "labels"
            ],
            "properties": {
                "labels": {
                    "$id": "#/properties/appResources/labels",
                    "type": "object"
                },
                "additionalProperties": false
            }
        },
        "awsDatabases": {
            "$id": "#/properties/awsDatabases",
            "type": "array",
            "default": [],
            "required": [
                "types",
                "regions",
                "tags"
            ],
            "properties": {
                "types": {
                    "$id": "#/properties/awsDatabases/types",
                    "type": "array",
                    "default": []
                },
                "regions": {
                    "$id": "#/properties/awsDatabases/regions",
                    "type": "string",
                    "default": []
                },
                "tags": {
                    "$id": "#/properties/awsDatabases/tags",
                    "type": "string",
                    "default": []
                },
                "additionalProperties": false
            }
        },
        "azureDatabases": {
            "$id": "#/properties/azureDatabases",
            "type": "array",
            "default": [],
            "items": {
                "type": "object",
                "default": {},
                "required": [
                    "types",
                    "tags"
                ],
                "properties": {
                    "types": {
                        "$id": "#/properties/azureDatabases/types",
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "tags": {
                        "$id": "#/properties/azureDatabases/tags",
                        "type": "object",
                        "default": {},
                        "additionalProperties": {
                            "oneOf": [
                                {
                                    "type": "string"
                                },
                                {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            ]
                        }
                    },
                    "subscriptions": {
                        "$id": "#/properties/azureDatabases/subscriptions",
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "regions": {
                        "$id": "#/properties/azureDatabases/regions",
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "resource_groups": {
                        "$id": "#/properties/azureDatabases/resource_groups",
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "additionalProperties": false
                }
            }
        },
        "databases": {
            "$id": "#/properties/databases",
            "type": "array",
            "default": []
        },
        "databaseResources": {
            "$id": "#/properties/databaseResources",
            "type": "array",
            "default": [],
            "required": [
                "labels"
            ],
            "properties": {
                "labels": {
                    "$id": "#/properties/databaseResources/labels",
                    "type": "object"
                },
                "additionalProperties": false
            }
        },
        "teleportVersionOverride": {
            "$id": "#/properties/teleportVersionOverride",
            "type": "string",
            "default": ""
        },
        "caPin": {
            "$id": "#/properties/caPin",
            "type": "array",
            "items": {
                "type": "string"
            },
            "default": []
        },
        "insecureSkipProxyTLSVerify": {
            "$id": "#/properties/insecureSkipProxyTLSVerify",
            "type": "boolean",
            "default": false
        },
        "teleportConfig": {
            "$id": "#/properties/teleportConfig",
            "type": "object",
            "default": {}
        },
        "tls": {
            "$id": "#/properties/tls",
            "type": "object",
            "required": [
                "existingCASecretName"
            ],
            "properties": {
                "existingCASecretName": {
                    "$id": "#/properties/tls/properties/existingCASecretName",
                    "type": "string",
                    "default": ""
                }
            }
        },
        "existingDataVolume": {
            "$id": "#/properties/existingDataVolume",
            "type": "string",
            "default": ""
        },
        "podSecurityPolicy": {
            "$id": "#/properties/podSecurityPolicy",
            "type": "object",
            "required": [
                "enabled"
            ],
            "properties": {
                "enabled": {
                    "$id": "#/properties/podSecurityPolicy/properties/enabled",
                    "type": "boolean",
                    "default": true
                }
            }
        },
        "labels": {
            "$id": "#/properties/labels",
            "type": "object",
            "default": {}
        },
        "image": {
            "$id": "#/properties/image",
            "type": "string",
            "default": "public.ecr.aws/gravitational/teleport-distroless"
        },
        "enterpriseImage": {
            "$id": "#/properties/enterpriseImage",
            "type": "string",
            "default": "public.ecr.aws/gravitational/teleport-ent-distroless"
        },
        "imagePullSecrets": {
            "$id": "#/properties/imagePullSecrets",
            "type": "array",
            "default": []
        },
        "replicaCount": {
            "$id": "#/properties/replicaCount",
            "type": "integer",
            "default": 1
        },
        "clusterRoleName": {
            "$id": "#/properties/clusterRoleName",
            "type": "string",
            "default": ""
        },
        "clusterRoleBindingName": {
            "$id": "#/properties/clusterRoleBindingName",
            "type": "string",
            "default": ""
        },
        "roleName": {
            "$id": "#/properties/roleName",
            "type": "string",
            "default": ""
        },
        "roleBindingName": {
            "$id": "#/properties/roleBindingName",
            "type": "string",
            "default": ""
        },
        "highAvailability": {
            "$id": "#/properties/highAvailability",
            "type": "object",
            "required": [
                "podDisruptionBudget",
                "replicaCount",
                "requireAntiAffinity"
            ],
            "properties": {
                "podDisruptionBudget": {
                    "$id": "#/properties/highAvailability/properties/podDisruptionBudget",
                    "type": "object",
                    "required": [
                        "enabled",
                        "minAvailable"
                    ],
                    "properties": {
                        "enabled": {
                            "$id": "#/properties/highAvailability/properties/podDisruptionBudget/properties/enabled",
                            "type": "boolean",
                            "default": false
                        },
                        "minAvailable": {
                            "$id": "#/properties/highAvailability/properties/podDisruptionBudget/properties/minAvailable",
                            "type": "integer",
                            "default": 1
                        }
                    }
                },
                "replicaCount": {
                    "$id": "#/properties/highAvailability/properties/replicaCount",
                    "type": "integer",
                    "default": 1
                },
                "requireAntiAffinity": {
                    "$id": "#/properties/highAvailability/properties/requireAntiAffinity",
                    "type": "boolean",
                    "default": false
                }
            }
        },
        "podMonitor": {
            "$id": "#/properties/podMonitor",
            "type": "object",
            "required": ["enabled"],
            "properties": {
                "enabled": {
                    "$id": "#/properties/podMonitor/enabled",
                    "type": "boolean",
                    "default": false
                },
                "additionalLabels": {
                    "$id": "#/properties/podMonitor/additionalLabels",
                    "type": "object",
                    "default": {"prometheus": "default"},
                    "additionalProperties": {"type": "string"}
                },
                "interval": {
                    "$id": "#/properties/podMonitor/interval",
                    "type": "string",
                    "default": "30s"
                }
            }
        },
        "priorityClassName": {
            "$id": "#/properties/priorityClassName",
            "type": "string",
            "default": ""
        },
        "serviceAccountName": {
            "$id": "#/properties/serviceAccountName",
            "type": "string",
            "default": ""
        },
        "secretName": {
            "$id": "#/properties/secretName",
            "type": "string",
            "default": "teleport-kube-agent-join-token"
        },
        "log": {
            "$id": "#/properties/log",
            "type": "object",
            "required": [
                "output",
                "format",
                "extraFields"
            ],
            "properties": {
                "level": {
                    "$id": "#/properties/log/properties/level",
                    "type": "string",
                    "enum": [
                        "DEBUG",
                        "INFO",
                        "WARN",
                        "WARNING",
                        "ERROR"
                    ],
                    "default": "INFO"
                },
                "deployment": {
                    "$id": "#/properties/log/properties/output",
                    "type": "string",
                    "default": {}
                },
                "pod": {
                    "$id": "#/properties/log/properties/format",
                    "type": "string",
                    "default": {}
                },
                "service": {
                    "$id": "#/properties/log/properties/extraFields",
                    "type": "array",
                    "default": {}
                }
            }
        },
        "affinity": {
            "$id": "#/properties/affinity",
            "type": "object",
            "default": {}
        },
        "dnsConfig": {
            "$id": "#/properties/dnsConfig",
            "type": "object",
            "default": {}
        },
        "dnsPolicy": {
            "$id": "#/properties/dnsPolicy",
            "type": "string",
            "default": ""
        },
        "extraLabels": {
            "$id": "#/properties/extraLabels",
            "type": "object",
            "properties": {
                "clusterRole": {
                    "$id": "#/properties/extraLabels/properties/clusterRole",
                    "type": "object",
                    "default": {}
                },
                "clusterRoleBinding": {
                    "$id": "#/properties/extraLabels/properties/clusterRoleBinding",
                    "type": "object",
                    "default": {}
                },
                "role": {
                    "$id": "#/properties/extraLabels/properties/role",
                    "type": "object",
                    "default": {}
                },
                "roleBinding": {
                    "$id": "#/properties/extraLabels/properties/roleBinding",
                    "type": "object",
                    "default": {}
                },
                "config": {
                    "$id": "#/properties/extraLabels/properties/config",
                    "type": "object",
                    "default": {}
                },
                "deployment": {
                    "$id": "#/properties/extraLabels/properties/deployment",
                    "type": "object",
                    "default": {}
                },
                "pod": {
                    "$id": "#/properties/extraLabels/properties/pod",
                    "type": "object",
                    "default": {}
                },
                "podDisruptionBudget": {
                    "$id": "#/properties/extraLabels/properties/podDisruptionBudget",
                    "type": "object",
                    "default": {}
                },
                "podSecurityPolicy": {
                    "$id": "#/properties/extraLabels/properties/podSecurityPolicy",
                    "type": "object",
                    "default": {}
                },
                "secret": {
                    "$id": "#/properties/extraLabels/properties/secret",
                    "type": "object",
                    "default": {}
                },
                "serviceAccount": {
                    "$id": "#/properties/extraLabels/properties/serviceAccount",
                    "type": "object",
                    "default": {}
                }
            }
        },
        "annotations": {
            "$id": "#/properties/annotations",
            "type": "object",
            "required": [
                "config",
                "deployment",
                "pod",
                "secret",
                "serviceAccount"
            ],
            "properties": {
                "config": {
                    "$id": "#/properties/annotations/properties/config",
                    "type": "object",
                    "default": {}
                },
                "deployment": {
                    "$id": "#/properties/annotations/properties/deployment",
                    "type": "object",
                    "default": {}
                },
                "pod": {
                    "$id": "#/properties/annotations/properties/pod",
                    "type": "object",
                    "default": {}
                },
                "secret": {
                    "$id": "#/properties/annotations/properties/secret",
                    "type": "object",
                    "default": {}
                },
                "serviceAccount": {
                    "$id": "#/properties/annotations/properties/serviceAccount",
                    "type": "object",
                    "default": {}
                }
            }
        },
        "serviceAccount": {
            "$id": "#/properties/serviceAccount",
            "type": "object",
            "required": [],
            "properties": {
                "name": {
                    "$id": "#properties/serviceAccount/name",
                    "type": "string",
                    "default": ""
                },
                "create": {
                    "$id": "#properties/serviceAccount/create",
                    "type": "boolean",
                    "default": true
                }
            }
        },
        "rbac": {
            "$id": "#/properties/rbac",
            "type": "object",
            "required": [],
            "properties": {
                "create": {
                    "$id": "#properties/rbac/create",
                    "type": "boolean",
                    "default": true
                }
            }
        },
        "extraArgs": {
            "$id": "#/properties/extraArgs",
            "type": "array",
            "default": []
        },
        "extraEnv": {
            "$id": "#/properties/extraEnv",
            "type": "array",
            "default": []
        },
        "extraVolumes": {
            "$id": "#/properties/extraVolumes",
            "type": "array",
            "default": []
        },
        "extraVolumeMounts": {
            "$id": "#/properties/extraVolumeMounts",
            "type": "array",
            "default": []
        },
        "hostAliases": {
            "$id": "#/properties/hostAliases",
            "type": "array",
            "default": []
        },
        "imagePullPolicy": {
            "$id": "#/properties/imagePullPolicy",
            "type": "string",
            "enum": [
                "Never",
                "IfNotPresent",
                "Always"
            ],
            "default": "IfNotPresent"
        },
        "initContainers": {
            "$id": "#/properties/initContainers",
            "type": "array",
            "default": []
        },
        "resources": {
            "$id": "#/properties/resources",
            "type": "object",
            "default": {}
        },
        "tolerations": {
            "$id": "#/properties/tolerations",
            "type": "array",
            "default": []
        },
        "probeTimeoutSeconds": {
            "$id": "#/properties/probeTimeoutSeconds",
            "type": "integer",
            "default": 1
        }
    }
}
