{
  "description": "HelmChart is the Schema for the helmcharts API.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "HelmChartSpec specifies the desired state of a Helm chart.",
      "properties": {
        "accessFrom": {
          "description": "AccessFrom specifies an Access Control List for allowing cross-namespace\nreferences to this object.\nNOTE: Not implemented, provisional as of https://github.com/fluxcd/flux2/pull/2092",
          "properties": {
            "namespaceSelectors": {
              "description": "NamespaceSelectors is the list of namespace selectors to which this ACL applies.\nItems in this list are evaluated using a logical OR operation.",
              "items": {
                "description": "NamespaceSelector selects the namespaces to which this ACL applies.\nAn empty map of MatchLabels matches all namespaces in a cluster.",
                "type": "object",
                "properties": {
                  "matchLabels": {
                    "description": "MatchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                }
              },
              "type": "array"
            }
          },
          "required": [
            "namespaceSelectors"
          ],
          "type": "object"
        },
        "chart": {
          "description": "Chart is the name or path the Helm chart is available at in the\nSourceRef.",
          "type": "string"
        },
        "ignoreMissingValuesFiles": {
          "description": "IgnoreMissingValuesFiles controls whether to silently ignore missing values\nfiles rather than failing.",
          "type": "boolean"
        },
        "interval": {
          "description": "Interval at which the HelmChart SourceRef is checked for updates.\nThis interval is approximate and may be subject to jitter to ensure\nefficient use of resources.",
          "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$",
          "type": "string"
        },
        "reconcileStrategy": {
          "_default": "ChartVersion",
          "description": "ReconcileStrategy determines what enables the creation of a new artifact.\nValid values are ('ChartVersion', 'Revision').\nSee the documentation of the values for an explanation on their behavior.\nDefaults to ChartVersion when omitted.",
          "_enum": [
            "ChartVersion",
            "Revision"
          ],
          "type": "string"
        },
        "sourceRef": {
          "description": "SourceRef is the reference to the Source the chart is available at.",
          "properties": {
            "apiVersion": {
              "description": "APIVersion of the referent.",
              "type": "string"
            },
            "kind": {
              "description": "Kind of the referent, valid values are ('HelmRepository', 'GitRepository',\n'Bucket').",
              "_enum": [
                "HelmRepository",
                "GitRepository",
                "Bucket"
              ],
              "type": "string"
            },
            "name": {
              "description": "Name of the referent.",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "name"
          ],
          "type": "object"
        },
        "suspend": {
          "description": "Suspend tells the controller to suspend the reconciliation of this\nsource.",
          "type": "boolean"
        },
        "valuesFile": {
          "description": "ValuesFile is an alternative values file to use as the default chart\nvalues, expected to be a relative path in the SourceRef. Deprecated in\nfavor of ValuesFiles, for backwards compatibility the file specified here\nis merged before the ValuesFiles items. Ignored when omitted.",
          "type": "string"
        },
        "valuesFiles": {
          "description": "ValuesFiles is an alternative list of values files to use as the chart\nvalues (values.yaml is not included by default), expected to be a\nrelative path in the SourceRef.\nValues files are merged in the order of this list with the last file\noverriding the first. Ignored when omitted.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "verify": {
          "description": "Verify contains the secret name containing the trusted public keys\nused to verify the signature and specifies which provider to use to check\nwhether OCI image is authentic.\nThis field is only supported when using HelmRepository source with spec.type 'oci'.\nChart dependencies, which are not bundled in the umbrella chart artifact, are not verified.",
          "properties": {
            "matchOIDCIdentity": {
              "description": "MatchOIDCIdentity specifies the identity matching criteria to use\nwhile verifying an OCI artifact which was signed using Cosign keyless\nsigning. The artifact's identity is deemed to be verified if any of the\nspecified matchers match against the identity.",
              "items": {
                "description": "OIDCIdentityMatch specifies options for verifying the certificate identity,\ni.e. the issuer and the subject of the certificate.",
                "type": "object",
                "required": [
                  "issuer",
                  "subject"
                ],
                "properties": {
                  "issuer": {
                    "description": "Issuer specifies the regex pattern to match against to verify\nthe OIDC issuer in the Fulcio certificate. The pattern must be a\nvalid Go regular expression.",
                    "type": "string"
                  },
                  "subject": {
                    "description": "Subject specifies the regex pattern to match against to verify\nthe identity subject in the Fulcio certificate. The pattern must\nbe a valid Go regular expression.",
                    "type": "string"
                  }
                }
              },
              "type": "array"
            },
            "provider": {
              "_default": "cosign",
              "description": "Provider specifies the technology used to sign the OCI Artifact.",
              "_enum": [
                "cosign",
                "notation"
              ],
              "type": "string"
            },
            "secretRef": {
              "description": "SecretRef specifies the Kubernetes Secret containing the\ntrusted public keys.",
              "properties": {
                "name": {
                  "description": "Name of the referent.",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          "required": [
            "provider"
          ],
          "type": "object"
        },
        "version": {
          "_default": "*",
          "description": "Version is the chart version semver expression, ignored for charts from\nGitRepository and Bucket sources. Defaults to latest when omitted.",
          "type": "string"
        }
      },
      "required": [
        "chart",
        "interval",
        "sourceRef"
      ],
      "type": "object"
    },
    "status": {
      "_default": {
        "observedGeneration": -1
      },
      "description": "HelmChartStatus records the observed state of the HelmChart.",
      "properties": {
        "artifact": {
          "description": "Artifact represents the output of the last successful reconciliation.",
          "properties": {
            "digest": {
              "description": "Digest is the digest of the file in the form of '<algorithm>:<checksum>'.",
              "pattern": "^[a-z0-9]+(?:[.+_-][a-z0-9]+)*:[a-zA-Z0-9=_-]+$",
              "type": "string"
            },
            "lastUpdateTime": {
              "description": "LastUpdateTime is the timestamp corresponding to the last update of the\nArtifact.",
              "format": "date-time",
              "type": "string"
            },
            "metadata": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Metadata holds upstream information such as OCI annotations.",
              "type": "object"
            },
            "path": {
              "description": "Path is the relative file path of the Artifact. It can be used to locate\nthe file in the root of the Artifact storage on the local file system of\nthe controller managing the Source.",
              "type": "string"
            },
            "revision": {
              "description": "Revision is a human-readable identifier traceable in the origin source\nsystem. It can be a Git commit SHA, Git tag, a Helm chart version, etc.",
              "type": "string"
            },
            "size": {
              "description": "Size is the number of bytes in the file.",
              "format": "int64",
              "type": "integer"
            },
            "url": {
              "description": "URL is the HTTP address of the Artifact as exposed by the controller\nmanaging the Source. It can be used to retrieve the Artifact for\nconsumption, e.g. by another controller applying the Artifact contents.",
              "type": "string"
            }
          },
          "required": [
            "lastUpdateTime",
            "path",
            "revision",
            "url"
          ],
          "type": "object"
        },
        "conditions": {
          "description": "Conditions holds the conditions for the HelmChart.",
          "items": {
            "description": "Condition contains details for one aspect of the current state of this API Resource.",
            "type": "object",
            "required": [
              "lastTransitionTime",
              "message",
              "reason",
              "status",
              "type"
            ],
            "properties": {
              "lastTransitionTime": {
                "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.",
                "type": "string",
                "format": "date-time"
              },
              "message": {
                "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.",
                "type": "string",
                "maxLength": 32768
              },
              "observedGeneration": {
                "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              "reason": {
                "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.",
                "type": "string",
                "maxLength": 1024,
                "minLength": 1,
                "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$"
              },
              "status": {
                "description": "status of the condition, one of True, False, Unknown.",
                "type": "string",
                "enum": [
                  "True",
                  "False",
                  "Unknown"
                ]
              },
              "type": {
                "description": "type of condition in CamelCase or in foo.example.com/CamelCase.",
                "type": "string",
                "maxLength": 316,
                "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$"
              }
            }
          },
          "type": "array"
        },
        "lastHandledReconcileAt": {
          "description": "LastHandledReconcileAt holds the value of the most recent\nreconcile request value, so a change of the annotation value\ncan be detected.",
          "type": "string"
        },
        "observedChartName": {
          "description": "ObservedChartName is the last observed chart name as specified by the\nresolved chart reference.",
          "type": "string"
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the last observed generation of the HelmChart\nobject.",
          "format": "int64",
          "type": "integer"
        },
        "observedSourceArtifactRevision": {
          "description": "ObservedSourceArtifactRevision is the last observed Artifact.Revision\nof the HelmChartSpec.SourceRef.",
          "type": "string"
        },
        "observedValuesFiles": {
          "description": "ObservedValuesFiles are the observed value files of the last successful\nreconciliation.\nIt matches the chart in the last successfully reconciled artifact.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "url": {
          "description": "URL is the dynamic fetch link for the latest Artifact.\nIt is provided on a \"best effort\" basis, and using the precise\nBucketStatus.Artifact data is recommended.",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "type": "object"
}