{
  "description": "Warehouse is a source of Freight.",
  "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": "Spec describes sources of artifacts.",
      "properties": {
        "freightCreationCriteria": {
          "description": "FreightCreationCriteria defines criteria that must be satisfied for Freight\nto be created automatically from new artifacts following discovery. This\nfield has no effect when the FreightCreationPolicy is `Manual`.",
          "properties": {
            "expression": {
              "description": "Expression is an expr-lang expression that must evaluate to true for\nFreight to be created automatically from new artifacts following discovery.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "freightCreationPolicy": {
          "default": "Automatic",
          "description": "FreightCreationPolicy describes how Freight is created by this Warehouse.\nThis field is optional. When left unspecified, the field is implicitly\ntreated as if its value were \"Automatic\".\n\nAccepted values:\n\n- \"Automatic\": New Freight is created automatically when any new artifact\n  is discovered.\n- \"Manual\": New Freight is never created automatically.",
          "enum": [
            "Automatic",
            "Manual"
          ],
          "type": "string"
        },
        "interval": {
          "default": "5m0s",
          "description": "Interval is the reconciliation interval for this Warehouse. On each\nreconciliation, the Warehouse will discover new artifacts and optionally\nproduce new Freight. This field is optional. When left unspecified, the\nfield is implicitly treated as if its value were \"5m0s\".",
          "pattern": "^([0-9]+(\\.[0-9]+)?(s|m|h))+$",
          "type": "string"
        },
        "shard": {
          "description": "Shard is the name of the shard that this Warehouse belongs to. This is an\noptional field. If not specified, the Warehouse will belong to the default\nshard. A defaulting webhook will sync this field with the value of the\nkargo.akuity.io/shard label. When the shard label is not present or differs\nfrom the value of this field, the defaulting webhook will set the label to\nthe value of this field. If the shard label is present and this field is\nempty, the defaulting webhook will set the value of this field to the value\nof the shard label.",
          "type": "string"
        },
        "subscriptions": {
          "description": "Subscriptions describes sources of artifacts to be included in Freight\nproduced by this Warehouse.",
          "items": {
            "x-kubernetes-preserve-unknown-fields": true
          },
          "minItems": 1,
          "type": "array"
        }
      },
      "required": [
        "interval",
        "subscriptions"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "Status describes the Warehouse's most recently observed state.",
      "properties": {
        "conditions": {
          "description": "Conditions contains the last observations of the Warehouse's current\nstate.",
          "items": {
            "description": "Condition contains details for one aspect of the current state of this API Resource.",
            "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.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.",
                "maxLength": 32768,
                "type": "string"
              },
              "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.",
                "format": "int64",
                "minimum": 0,
                "type": "integer"
              },
              "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.",
                "maxLength": 1024,
                "minLength": 1,
                "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$",
                "type": "string"
              },
              "status": {
                "description": "status of the condition, one of True, False, Unknown.",
                "enum": [
                  "True",
                  "False",
                  "Unknown"
                ],
                "type": "string"
              },
              "type": {
                "description": "type of condition in CamelCase or in foo.example.com/CamelCase.",
                "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": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "message",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-map-keys": [
            "type"
          ],
          "x-kubernetes-list-type": "map"
        },
        "discoveredArtifacts": {
          "description": "DiscoveredArtifacts holds the artifacts discovered by the Warehouse.",
          "properties": {
            "charts": {
              "description": "Charts holds the charts discovered by the Warehouse for the chart\nsubscriptions.",
              "items": {
                "description": "ChartDiscoveryResult represents the result of a chart discovery operation for\na ChartSubscription.",
                "properties": {
                  "name": {
                    "description": "Name is the name of the Helm chart, as specified in the ChartSubscription.",
                    "type": "string"
                  },
                  "repoURL": {
                    "description": "RepoURL is the repository URL of the Helm chart, as specified in the\nChartSubscription.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "semverConstraint": {
                    "description": "SemverConstraint is the constraint for which versions were discovered.\nThis field is optional, and only populated if the ChartSubscription\nspecifies a SemverConstraint.",
                    "type": "string"
                  },
                  "versions": {
                    "description": "Versions is a list of versions discovered by the Warehouse for the\nChartSubscription. An empty list indicates that the discovery operation was\nsuccessful, but no versions matching the ChartSubscription criteria were\nfound.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "repoURL"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "discoveredAt": {
              "description": "DiscoveredAt is the time at which the Warehouse discovered the artifacts.",
              "format": "date-time",
              "type": "string"
            },
            "git": {
              "description": "Git holds the commits discovered by the Warehouse for the Git\nsubscriptions.",
              "items": {
                "description": "GitDiscoveryResult represents the result of a Git discovery operation for a\nGitSubscription.",
                "properties": {
                  "commits": {
                    "description": "Commits is a list of commits discovered by the Warehouse for the\nGitSubscription. An empty list indicates that the discovery operation was\nsuccessful, but no commits matching the GitSubscription criteria were found.",
                    "items": {
                      "description": "DiscoveredCommit represents a commit discovered by a Warehouse for a\nGitSubscription.",
                      "properties": {
                        "author": {
                          "description": "Author is the author of the commit.",
                          "type": "string"
                        },
                        "branch": {
                          "description": "Branch is the branch in which the commit was found. This field is\noptional, and populated based on the CommitSelectionStrategy of the\nGitSubscription.",
                          "type": "string"
                        },
                        "committer": {
                          "description": "Committer is the person who committed the commit.",
                          "type": "string"
                        },
                        "creatorDate": {
                          "description": "CreatorDate is the commit creation date as specified by the commit, or\nthe tagger date if the commit belongs to an annotated tag.",
                          "format": "date-time",
                          "type": "string"
                        },
                        "id": {
                          "description": "ID is the identifier of the commit. This typically is a SHA-1 hash.",
                          "minLength": 1,
                          "type": "string"
                        },
                        "subject": {
                          "description": "Subject is the subject of the commit (i.e. the first line of the commit\nmessage).",
                          "type": "string"
                        },
                        "tag": {
                          "description": "Tag is the tag that resolved to this commit. This field is optional, and\npopulated based on the CommitSelectionStrategy of the GitSubscription.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "repoURL": {
                    "description": "RepoURL is the repository URL of the GitSubscription.",
                    "minLength": 1,
                    "pattern": "(?:^(ssh|https?)://(?:([\\w-]+)(:(.+))?@)?([\\w-]+(?:\\.[\\w-]+)*)(?::(\\d{1,5}))?(/.*)$)|(?:^([\\w-]+)@([\\w+]+(?:\\.[\\w-]+)*):(/?.*))",
                    "type": "string"
                  }
                },
                "required": [
                  "repoURL"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "images": {
              "description": "Images holds the image references discovered by the Warehouse for the\nimage subscriptions.",
              "items": {
                "description": "ImageDiscoveryResult represents the result of an image discovery operation\nfor an ImageSubscription.",
                "properties": {
                  "platform": {
                    "description": "Platform is the target platform constraint of the ImageSubscription\nfor which references were discovered. This field is optional, and\nonly populated if the ImageSubscription specifies a Platform.",
                    "type": "string"
                  },
                  "references": {
                    "description": "References is a list of image references discovered by the Warehouse for\nthe ImageSubscription. An empty list indicates that the discovery\noperation was successful, but no images matching the ImageSubscription\ncriteria were found.",
                    "items": {
                      "description": "DiscoveredImageReference represents an image reference discovered by a\nWarehouse for an ImageSubscription.",
                      "properties": {
                        "annotations": {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Annotations is a map of key-value pairs that provide additional\ninformation about the image.",
                          "type": "object"
                        },
                        "createdAt": {
                          "description": "CreatedAt is the time the image was created. This field is optional, and\nnot populated for every ImageSelectionStrategy.",
                          "format": "date-time",
                          "type": "string"
                        },
                        "digest": {
                          "description": "Digest is the digest of the image.",
                          "minLength": 1,
                          "pattern": "^[a-z0-9]+:[a-f0-9]+$",
                          "type": "string"
                        },
                        "tag": {
                          "description": "Tag is the tag of the image.",
                          "maxLength": 128,
                          "minLength": 1,
                          "pattern": "^[\\w.\\-\\_]+$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "digest",
                        "tag"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "repoURL": {
                    "description": "RepoURL is the repository URL of the image, as specified in the\nImageSubscription.",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "repoURL"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "results": {
              "description": "Results holds the artifact references discovered by the Warehouse.",
              "items": {
                "description": "DiscoveryResult represents the result of an artifact discovery operation for\nsome subscription.",
                "properties": {
                  "artifactReferences": {
                    "description": "ArtifactReferences is a list of references to specific versions of an\nartifact.",
                    "items": {
                      "description": "ArtifactReference is a reference to a specific version of an artifact.",
                      "properties": {
                        "artifactType": {
                          "description": "ArtifactType specifies the type of artifact this is. Often, but not always,\nit will be the media type (MIME type) of the artifact referenced by this\nArtifactReference.",
                          "minLength": 1,
                          "type": "string"
                        },
                        "metadata": {
                          "description": "Metadata is a JSON object containing a mostly opaque collection of artifact\nattributes. (It must be an object. It may not be a list or a scalar value.)\n\"Mostly\" because Kargo may understand how to interpret some documented,\nwell-known, top-level keys. Those aside, this metadata is only understood\nby a corresponding Subscriber implementation that created it.",
                          "x-kubernetes-preserve-unknown-fields": true
                        },
                        "subscriptionName": {
                          "description": "SubscriptionName is the name of the Subscription that discovered this\nartifact.",
                          "minLength": 1,
                          "type": "string"
                        },
                        "version": {
                          "description": "Version identifies a specific revision of this artifact.",
                          "minLength": 1,
                          "type": "string"
                        }
                      },
                      "required": [
                        "subscriptionName",
                        "version"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "name": {
                    "description": "SubscriptionName is the name of the Subscription that discovered these\nresults.",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "lastFreightID": {
          "description": "LastFreightID is a reference to the system-assigned identifier (name) of\nthe most recent Freight produced by the Warehouse.",
          "type": "string"
        },
        "lastHandledRefresh": {
          "description": "LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh\nannotation that was handled by the controller. This field can be used to\ndetermine whether the request to refresh the resource has been handled.",
          "type": "string"
        },
        "observedGeneration": {
          "description": "ObservedGeneration represents the .metadata.generation that this Warehouse\nwas reconciled against.",
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
