{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "definitions": {
    "resourceComponents": {
      "properties": {
        "cpu": {
          "oneOf": [
            {
              "pattern": "^[1-9]\\d*m$",
              "type": "string"
            },
            {
              "exclusiveMinimum": 0.0,
              "type": "number"
            }
          ],
          "type": [
            "number",
            "string"
          ]
        },
        "memory": {
          "pattern": "^[1-9]\\d*(M|Mi|G|Gi)$",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "properties": {
    "affinity": {
      "type": "object"
    },
    "extraCertificates": {
      "properties": {
        "cacerts": {
          "description": "One or more certificates in PEM format.",
          "type": "string"
        },
        "enabled": {
          "default": false,
          "description": "Specifies whether the default certificates should be extended with extra certificates.",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "fullnameOverride": {
      "type": "string"
    },
    "image": {
      "properties": {
        "pullPolicy": {
          "default": "IfNotPresent",
          "description": "The imagePullPolicy for a container and the tag of the image affect when the kubelet attempts to pull (download) the specified image.",
          "enum": [
            "IfNotPresent",
            "Always",
            "Never"
          ],
          "type": "string"
        },
        "registry": {
          "default": "quay.io",
          "description": "The container image registry to use and query for the image tag to pull.",
          "type": "string"
        },
        "repository": {
          "default": "k3rnel-pan1c/uptime-kuma",
          "description": "The full name of the uptime-kuma image within the selected registry.",
          "type": "string"
        },
        "tag": {
          "default": "",
          "description": "Overrides the image tag whose default is the Chart's appVersion.",
          "type": "string"
        }
      },
      "required": [
        "registry",
        "repository",
        "pullPolicy"
      ],
      "type": "object"
    },
    "imagePullSecrets": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "ingress": {
      "properties": {
        "annotations": {
          "description": "Annotations to add to the Ingress.",
          "type": "object"
        },
        "className": {
          "description": "Name of the Ingress controller class to use.",
          "type": "string"
        },
        "enabled": {
          "default": false,
          "description": "Specifies whether a Ingress should be created.",
          "type": "boolean"
        },
        "hosts": {
          "items": {
            "type": "object"
          },
          "type": "array"
        },
        "tls": {
          "items": {
            "type": "object"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "nameOverride": {
      "type": "string"
    },
    "nodeSelector": {
      "type": "object"
    },
    "persistence": {
      "properties": {
        "claimNameOverwrite": {
          "type": "string"
        },
        "enabled": {
          "default": false,
          "description": "Specifies whether a PVC should get created for this Chart's deployment.\nIf you opt not to enable persistence all data will end up in an EmptyDir mount and thereby be temporary.",
          "type": "boolean"
        },
        "sizeLimit": {
          "pattern": "^[1-9]\\d*(M|Mi|G|Gi)$",
          "type": "string"
        },
        "storageClass": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "podAnnotations": {
      "type": "object"
    },
    "podSecurityContext": {
      "type": "object"
    },
    "resources": {
      "properties": {
        "limits": {
          "$ref": "#/definitions/resourceComponents",
          "type": "object"
        },
        "requests": {
          "$ref": "#/definitions/resourceComponents",
          "type": "object"
        }
      },
      "type": "object"
    },
    "route": {
      "description": "Only supported/available on OKD/OpenShift and conflicts with the Ingress values.",
      "properties": {
        "annotations": {
          "description": "Annotations to add to the OpenShift Rout.",
          "type": "object"
        },
        "enabled": {
          "default": false,
          "description": "Specifies whether a OpenShift Rout should be created.",
          "type": "boolean"
        },
        "host": {
          "description": "The host to use for the OpenShift Rout.",
          "pattern": "^((([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\\-]*[A-Za-z0-9]))?$",
          "type": "string"
        }
      },
      "type": "object"
    },
    "securityContext": {
      "type": "object"
    },
    "service": {
      "properties": {
        "loadBalancerIP": {
          "type": "string"
        },
        "port": {
          "default": 80,
          "type": "integer"
        },
        "type": {
          "default": "ClusterIP",
          "enum": [
            "ClusterIP",
            "NodePort",
            "LoadBalancer"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "serviceAccount": {
      "properties": {
        "annotations": {
          "description": "Annotations to add to the service account.",
          "type": "object"
        },
        "create": {
          "default": true,
          "description": "Specifies whether a service account should be created.",
          "type": "boolean"
        },
        "name": {
          "description": "The name of the service account to use.\nIf not set and create is true, a name is generated using the fullname template",
          "type": "string"
        }
      },
      "type": "object"
    },
    "tolerations": {
      "items": {
        "type": "object"
      },
      "type": "array"
    }
  }
}