# schema source: Flux v2.9.5 https://github.com/fluxcd/flux2
apiVersion <string> enum=source.extensions.fluxcd.io/v1beta1
kind <string> enum=ArtifactGenerator
metadata.name <string> (required)
metadata.namespace <string> (required)
spec <object>	# ArtifactGeneratorSpec defines the desired state of ArtifactGenerator.
spec.artifacts <[]object> (required) min=1 max=1000	# OutputArtifacts is a list of output artifacts to be generated.
spec.artifacts[].copy <[]object> (required) min=1	# Copy defines a list of copy operations to perform from the sources to the generated artifact. The copy operations are performed in the order they are listed with existing files being overwritten by later copy operations.
spec.artifacts[].copy[].exclude <[]string> max=100	# Exclude specifies a list of glob patterns to exclude files and dirs matched by the 'From' field. Patterns are matched against paths relative to the source alias root or to the non-glob prefix of 'From'. Patterns without a separator (e.g. "*.md") match the file name at any depth.
spec.artifacts[].copy[].from <string> (required) pattern="^@([a-z0-9]([a-z0-9_-]*[a-z0-9])?)/(.*)$" min=1 max=1024	# From specifies the source (by alias) and the glob pattern to match files. The format is "@<alias>/<glob-pattern>". When pathPattern is set, the path may use capture placeholders such as "{app}".
spec.artifacts[].copy[].strategy <string> enum=Overwrite|Merge|Extract	# Strategy specifies the copy strategy to use. 'Overwrite' will overwrite existing files in the destination. 'Merge' is for merging YAML files using Helm values merge strategy. 'Extract' is for extracting the contents of tarball archives (.tar.gz, .tgz) When using glob patterns, non-tarball files are silently skipped. For single file sources, the file must be a tarball or an error is returned. Directories are not supported. If not specified, defaults to 'Overwrite'.
spec.artifacts[].copy[].to <string> (required) pattern="^@artifact/([^/]{0,1}|[^./][^/]|[.][^./]|[^/]{3,})(/([^/]{0,1}|[^./][^/]|[.][^./]|[^/]{3,}))*$" min=1 max=1024	# To specifies the destination path within the artifact. The format is "@artifact/path", the alias "artifact" refers to the root path of the generated artifact. When pathPattern is set, the path may use capture placeholders such as "{app}".
spec.artifacts[].name <string> (required) min=1 max=253	# Name is the name of the generated artifact. When pathPattern is set, this field may use capture placeholders such as "{app}".
spec.artifacts[].originRevision <string> pattern="^@([a-z0-9]([a-z0-9_-]*[a-z0-9])?)$" max=64	# OriginRevision is used to set the 'org.opencontainers.image.revision' annotation on the generated artifact metadata. If specified, it must point to an existing source alias in the format "@<alias>". If the referenced source has an origin revision (e.g. a Git commit SHA), it will be used to set the annotation on the generated artifact. If the referenced source does not have an origin revision, the field is ignored.
spec.artifacts[].revision <string> pattern="^@([a-z0-9]([a-z0-9_-]*[a-z0-9])?)$" max=64	# Revision is the revision of the generated artifact. If specified, it must point to an existing source alias in the format "@<alias>". If not specified, the revision is automatically set to the digest of the artifact content.
spec.commonMetadata <object>	# CommonMetadata specifies the common labels and annotations that are applied to all resources. Any existing label or annotation will be overridden if its key matches a common one.
spec.commonMetadata.annotations <map[string]string>	# Annotations to be added to the object's metadata.
spec.commonMetadata.labels <map[string]string>	# Labels to be added to the object's metadata.
spec.pathPattern <string> pattern="^@([a-z0-9]([a-z0-9_-]*[a-z0-9])?)/(.*)$" max=1024	# PathPattern specifies a directory traversal pattern to match within the sources. The format is "@<alias>/<pattern>". Named captures in the pattern (e.g. "{app}") can be used as placeholders in OutputArtifacts fields.
spec.sources <[]object> (required) min=1 max=1000	# Sources is a list of references to the Flux source-controller resources that will be used to generate the artifact.
spec.sources[].alias <string> (required) pattern="^[a-z0-9]([a-z0-9_-]*[a-z0-9])?$" max=63	# Alias of the source within the ArtifactGenerator context. The alias must be unique per ArtifactGenerator, and must consist of lower case alphanumeric characters, underscores, and hyphens. It must start and end with an alphanumeric character.
spec.sources[].kind <string> (required) enum=Bucket|GitRepository|OCIRepository|HelmChart|ExternalArtifact	# Kind of the source.
spec.sources[].name <string> (required) pattern="^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" max=253	# Name of the source.
spec.sources[].namespace <string> pattern="^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" min=1 max=63	# Namespace of the source. If not provided, defaults to the same namespace as the ArtifactGenerator.
status <object>	# ArtifactGeneratorStatus defines the observed state of ArtifactGenerator.
status.conditions <[]object>	# Conditions holds the conditions for the ArtifactGenerator.
status.conditions[].lastTransitionTime <string> (required) format=date-time	# lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
status.conditions[].message <string> (required) max=32768	# message is a human readable message indicating details about the transition. This may be an empty string.
status.conditions[].observedGeneration <integer> format=int64 min=0	# observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
status.conditions[].reason <string> (required) pattern="^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" min=1 max=1024	# reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
status.conditions[].status <string> (required) enum=True|False|Unknown	# status of the condition, one of True, False, Unknown.
status.conditions[].type <string> (required) 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])$" max=316	# type of condition in CamelCase or in foo.example.com/CamelCase.
status.inventory <[]object>	# Inventory contains the list of generated ExternalArtifact references.
status.inventory[].digest <string> (required)	# Digest of the referent artifact.
status.inventory[].filename <string> (required)	# Filename is the name of the artifact file.
status.inventory[].name <string> (required)	# Name of the referent artifact.
status.inventory[].namespace <string> (required)	# Namespace of the referent artifact.
status.lastHandledReconcileAt <string>	# LastHandledReconcileAt holds the value of the most recent reconcile request value, so a change of the annotation value can be detected.
status.observedSourcesDigest <string>	# ObservedSourcesDigest is a hash representing the current state of all the sources referenced by the ArtifactGenerator.
