{
  "description": "Freight represents a collection of versioned artifacts.",
  "properties": {
    "alias": {
      "description": "Alias is a human-friendly alias for a piece of Freight. This is an optional\nfield. A defaulting webhook will sync this field with the value of the\nkargo.akuity.io/alias label. When the alias 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 alias label is present and this field is\nempty, the defaulting webhook will set the value of this field to the value\nof the alias label. If this field is empty and the alias label is not\npresent, the defaulting webhook will choose an available alias and assign\nit to both the field and label.",
      "type": "string"
    },
    "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"
    },
    "artifacts": {
      "description": "Artifacts describes specific versions of artifacts other\nthan Git repository commits, container images, and Helm charts.",
      "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"
    },
    "charts": {
      "description": "Charts describes specific versions of specific Helm charts.",
      "items": {
        "description": "Chart describes a specific version of a Helm chart.",
        "properties": {
          "name": {
            "description": "Name specifies the name of the chart.",
            "type": "string"
          },
          "repoURL": {
            "description": "RepoURL specifies the URL of a Helm chart repository. Classic chart\nrepositories (using HTTP/S) can contain differently named charts. When this\nfield points to such a repository, the Name field will specify the name of\nthe chart within the repository. In the case of a repository within an OCI\nregistry, the URL implicitly points to a specific chart and the Name field\nwill be empty.",
            "type": "string"
          },
          "version": {
            "description": "Version specifies a particular version of the chart.",
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "type": "array"
    },
    "commits": {
      "description": "Commits describes specific Git repository commits.",
      "items": {
        "description": "GitCommit describes a specific commit from a specific Git repository.",
        "properties": {
          "author": {
            "description": "Author is the author of the commit.",
            "type": "string"
          },
          "branch": {
            "description": "Branch denotes the branch of the repository where this commit was found.",
            "type": "string"
          },
          "committer": {
            "description": "Committer is the person who committed the commit.",
            "type": "string"
          },
          "id": {
            "description": "ID is the ID of a specific commit in the Git repository specified by\nRepoURL.",
            "type": "string"
          },
          "message": {
            "description": "Message is the message associated with the commit. At present, this only\ncontains the first line (subject) of the commit message.",
            "type": "string"
          },
          "repoURL": {
            "description": "RepoURL is the URL of a Git repository.",
            "type": "string"
          },
          "tag": {
            "description": "Tag denotes a tag in the repository that matched selection criteria and\nresolved to this commit.",
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "type": "array"
    },
    "images": {
      "description": "Images describes specific versions of specific container images.",
      "items": {
        "description": "Image describes a specific version of a container image.",
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations is a map of arbitrary metadata for the image.",
            "type": "object"
          },
          "digest": {
            "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.",
            "type": "string"
          },
          "repoURL": {
            "description": "RepoURL describes the repository in which the image can be found.",
            "type": "string"
          },
          "tag": {
            "description": "Tag identifies a specific version of the image in the repository specified\nby RepoURL.",
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "type": "array"
    },
    "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"
    },
    "origin": {
      "description": "Origin describes a kind of Freight in terms of its origin.",
      "properties": {
        "kind": {
          "description": "Kind is the kind of resource from which Freight may have originated. At\npresent, this can only be \"Warehouse\".",
          "enum": [
            "Warehouse"
          ],
          "type": "string"
        },
        "name": {
          "description": "Name is the name of the resource of the kind indicated by the Kind field\nfrom which Freight may originate.",
          "type": "string"
        }
      },
      "required": [
        "kind",
        "name"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "Status describes the current status of this Freight.",
      "properties": {
        "approvedFor": {
          "additionalProperties": {
            "description": "ApprovedStage describes a Stage for which Freight has been (manually)\napproved.",
            "properties": {
              "approvedAt": {
                "description": "ApprovedAt is the time at which the Freight was approved for the Stage.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "description": "ApprovedFor describes the Stages for which this Freight has been approved\npreemptively/manually by a user. This is useful for hotfixes, where one\nmight wish to promote a piece of Freight to a given Stage without\ntransiting the entire pipeline.",
          "type": "object"
        },
        "currentlyIn": {
          "additionalProperties": {
            "description": "CurrentStage reflects a Stage's current use of Freight.",
            "properties": {
              "since": {
                "description": "Since is the time at which the Stage most recently started using the\nFreight. This can be used to calculate how long the Freight has been in use\nby the Stage.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "description": "CurrentlyIn describes the Stages in which this Freight is currently in use.",
          "type": "object"
        },
        "metadata": {
          "additionalProperties": {
            "x-kubernetes-preserve-unknown-fields": true
          },
          "description": "Metadata is a map of arbitrary metadata associated with the Freight.\nThis is useful for storing additional information about the Freight\nor Promotion that can be shared across steps or stages.",
          "type": "object"
        },
        "verifiedIn": {
          "additionalProperties": {
            "description": "VerifiedStage describes a Stage in which Freight has been verified.",
            "properties": {
              "longestSoak": {
                "description": "LongestCompletedSoak represents the longest definite time interval wherein\nthe Freight was in CONTINUOUS use by the Stage. This value is updated as\nFreight EXITS the Stage. If the Freight is currently in use by the Stage,\nthe time elapsed since the Freight ENTERED the Stage is its current soak\ntime, which may exceed the value of this field.",
                "type": "string"
              },
              "verifiedAt": {
                "description": "VerifiedAt is the time at which the Freight was verified in the Stage.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "description": "VerifiedIn describes the Stages in which this Freight has been verified\nthrough promotion and subsequent health checks.",
          "type": "object"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "origin"
  ],
  "type": "object"
}
