{
  "description": "Template is the Schema for the templates API",
  "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"
    },
    "parameters": {
      "description": "Parameters can be used to replace certain parts of the template. A parameter is referenced by this format: ${NAME}, to parse the value as an expression write ${{NAME}} instead. Besides the parameters defined here, the following predefined parameters can be used: - ${NAMESPACE}: the namespace where the template instance was created - ${TENANT}: the tenant name of the tenant that owns the namespace (if any)",
      "items": {
        "properties": {
          "name": {
            "description": "Name is the name of the parameter",
            "type": "string"
          },
          "required": {
            "description": "If required is true, the template instance must define this parameter, otherwise the deployment will fail.",
            "type": "boolean"
          },
          "validation": {
            "description": "Validation takes a regular expression as value to verify the provided value does match expected values.",
            "type": "string"
          },
          "value": {
            "description": "Value is the default value of the parameter",
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "type": "array"
    },
    "resources": {
      "description": "TemplateResources defines a templates resources",
      "properties": {
        "helm": {
          "description": "helm defines the configuration for a helm deployment",
          "properties": {
            "chart": {
              "description": "Tells us where to find the helm chart to deploy",
              "properties": {
                "repository": {
                  "description": "Load helm chart from a repository",
                  "properties": {
                    "name": {
                      "description": "Name of the chart to deploy",
                      "type": "string"
                    },
                    "password": {
                      "description": "The password to use for the selected repository",
                      "properties": {
                        "key": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "namespace": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "key",
                        "name",
                        "namespace"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "repoUrl": {
                      "description": "The repo url to use",
                      "type": "string"
                    },
                    "username": {
                      "description": "The username to use for the selected repository",
                      "properties": {
                        "key": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "namespace": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "key",
                        "name",
                        "namespace"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "version": {
                      "description": "Version is the version of the chart to deploy",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "releaseName": {
              "description": "The helm release name. If omitted the template name will be used",
              "type": "string"
            },
            "setValues": {
              "description": "Values in the form of name=value that will be passed to the helm command during helm template",
              "items": {
                "description": "HelmSetValue defines a name=value pair that will be passed to helm template",
                "properties": {
                  "forceString": {
                    "description": "ForceString specifies if the parameter `--set` or `--set-string` should be used",
                    "type": "boolean"
                  },
                  "name": {
                    "description": "The path of the value to set",
                    "type": "string"
                  },
                  "value": {
                    "description": "The value to set",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "values": {
              "description": "The additional helm values to use. Expected block string",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "manifests": {
          "description": "manifest represents kubernetes resources that will be deployed into the target namespace",
          "items": {
            "description": "EmbeddedResource holds a kubernetes resource",
            "type": "object",
            "x-kubernetes-embedded-resource": true,
            "x-kubernetes-preserve-unknown-fields": true
          },
          "type": "array"
        },
        "resourceMappings": {
          "description": "ResourceMappings defines the secrets/configmaps which will be mapped into the target namespaces",
          "properties": {
            "configMaps": {
              "description": "ConfigMaps consist of configMaps which will be mapped to matching namespaces",
              "items": {
                "properties": {
                  "name": {
                    "description": "Name is the name of the resource",
                    "type": "string"
                  },
                  "namespace": {
                    "description": "Namespace is the namespace where the resource lives",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "namespace"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "secrets": {
              "description": "Secrets consist of secrets which will be mapped to matching namespaces",
              "items": {
                "properties": {
                  "name": {
                    "description": "Name is the name of the resource",
                    "type": "string"
                  },
                  "namespace": {
                    "description": "Namespace is the namespace where the resource lives",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "namespace"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "spec": {
      "type": "object"
    },
    "status": {
      "type": "object"
    }
  },
  "type": "object"
}
