{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "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"
    },
    "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"
      },
      "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"
      },
      "type": "array"
    },
    "images": {
      "description": "Images describes specific versions of specific container images.",
      "items": {
        "description": "Image describes a specific version of a container image.",
        "properties": {
          "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"
          },
          "gitRepoURL": {
            "description": "GitRepoURL specifies the URL of a Git repository that contains the source\ncode for the image repository referenced by the RepoURL field if Kargo was\nable to infer it.",
            "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"
      },
      "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 originated.",
          "type": "string"
        }
      },
      "required": [
        "kind",
        "name"
      ],
      "type": "object"
    },
    "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.",
            "type": "object"
          },
          "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"
        },
        "verifiedIn": {
          "additionalProperties": {
            "description": "VerifiedStage describes a Stage in which Freight has been verified.",
            "type": "object"
          },
          "description": "VerifiedIn describes the Stages in which this Freight has been verified\nthrough promotion and subsequent health checks.",
          "type": "object"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "origin"
  ],
  "type": "object"
}