{
  "description": "CAPITemplate is the Schema for the capitemplates 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"
    },
    "spec": {
      "description": "TemplateSpec defines the base template spec needs for CAPI or Terraform Templates.",
      "properties": {
        "charts": {
          "description": "Charts is the set of charts that are used in this template.",
          "properties": {
            "helmRepositoryTemplate": {
              "description": "Template for the HelmRepository. Shortcut to template.content.spec.chart.spec.helmRepositoryTemplate",
              "properties": {
                "path": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "items": {
              "items": {
                "description": "Chart is the set of values that control the default and required values of a chart/profile in a template.",
                "properties": {
                  "chart": {
                    "description": "Name of the chart/profile in the Helm repository. Shortcut to template.content.spec.chart.spec.chart",
                    "type": "string"
                  },
                  "editable": {
                    "description": "If true you can change the values and version of the chart/profile",
                    "type": "boolean"
                  },
                  "layer": {
                    "description": "Layer, overrides the default layer provided in the Helm Repository",
                    "type": "string"
                  },
                  "required": {
                    "description": "If true the chart/profile will always be installed",
                    "type": "boolean"
                  },
                  "targetNamespace": {
                    "description": "Shortcut to template.content.spec.targetNamespace",
                    "type": "string"
                  },
                  "template": {
                    "description": "Template for the HelmRelease, merged with the default template.",
                    "properties": {
                      "content": {
                        "description": "Content of the template",
                        "type": "object",
                        "x-kubernetes-preserve-unknown-fields": true
                      },
                      "path": {
                        "description": "Path of the template",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "values": {
                    "description": "Shortcut to template.content.spec.values",
                    "type": "object",
                    "x-kubernetes-preserve-unknown-fields": true
                  },
                  "version": {
                    "description": "Default version to select. Shortcut to template.content.spec.chart.spec.version",
                    "type": "string"
                  }
                },
                "required": [
                  "chart"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "description": {
          "description": "Description is used to describe the purpose of this template for user information.",
          "type": "string"
        },
        "params": {
          "description": "Params is the set of parameters that are used in this template with descriptions.",
          "items": {
            "description": "TemplateParam is a parameter that can be templated into a struct.",
            "properties": {
              "default": {
                "description": "Default specifies the default value for the parameter",
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "options": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "required": {
                "default": true,
                "description": "Required indicates whether the param must contain a non-empty value",
                "type": "boolean"
              }
            },
            "required": [
              "name"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "renderType": {
          "default": "envsubst",
          "description": "RenderType specifies which templating language to use to render templates. Defaults to 'envsubst', valid values are ('envsubst', 'templating').",
          "enum": [
            "envsubst",
            "templating"
          ],
          "type": "string"
        },
        "resourcetemplates": {
          "description": "ResourceTemplates are a set of templates for resources that are generated from this Template.",
          "items": {
            "description": "ResourceTemplate holds a list of resources that can be created from a template and the path to write them to.",
            "properties": {
              "content": {
                "items": {
                  "description": "ResourceTemplateContent describes a resource to create.",
                  "type": "object",
                  "x-kubernetes-preserve-unknown-fields": true
                },
                "type": "array"
              },
              "path": {
                "type": "string"
              },
              "raw": {
                "description": "Raw is the content of the resource template in a string format. It supports comments in the template file.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
