--- title: "Manifest Specification" order: 1 ---

The `upack.json` file is a JSON object with the following properties:

### Required or Implicit Properties

Property | Format
--- | ---
`group` | A string of 0 to 250 characters: numbers (0-9), upper- and lower-case letters (a-Z), dashes (-), periods (.), forward-slashes (/), and underscores (_); may not start or end with a forward-slash; if not specified, the group name will be considered an empty string.
`name`R | A string of 1 to 50 characters: numbers (0-9), upper- and lower-case letters (a-Z), dashes (-), periods (.), and underscores (_).
`version`R | A string representing a SemVer2 Semantic Version; is a three-part, dot-separated specification.

### Additional Descriptive Properties (Optional)

Property | Format
--- | ---
`title` | A string of no more than 50 characters.
`projectUrl` | A string of an absolute URL where more about the package can be found
`icon` | A string of an absolute URL pointing to an image to be displayed in a UI (at both 64px and 128px); if `package://` is used as the protocol, it references a package in the image within the package instead
`description` | A string containing any number of characters; will be formatted as Markdown in the UI.
`shortDescription` | A string containing up to 1000 characters; is a short summary that will be displayed instead of the description in lists and is not Markdown-formatted.
`tags` | An array of strings, each being 1 to 50 characters: numbers (0-9), upper- and lower-case letters (a-Z), dashes (-), periods (.), and underscores (_). Tags may not start with a number and must be unique within the array.
`dependencies` | An array of dependency specifier strings, each of which may be formatted as follows: «package-name» «group»/«package-name» «group»:«package-name» «group»/«package-name»:«version-range» «group»:«package-name»:«version-range» «group»:«package-name»:«version-range»:«sha-hash» «version-range» can be one of these: Not specified (or *) to indicate the latest version SemVer2 Version Number Range of version numbers specified with interval notation, such as [1.0.0,2.0.0) to mean every version between 1.0.0 and 2.0.0 (but not 2) [3.0.0,] to mean every version after 3.0.0 If «sha-hash» is specified, the client may use it to verify a downloaded package; see package identification.

### Additional Audit-based Properties (Optional)

Property | Format
--- | ---
`createdDate` | A string representing the UTC date when the package was first created, in ISO 8601 format (yyyy-MM-ddThh:mm:ssZ)
`createdReason` | A string describing the reason or purpose of the creation For example, BuildMaster uses`{Application Name}``v{Release Number}``#{Package Number}``(ID{Execution-Number})`
`createdUsing` | A string describing the mechanism the package was created with; there are no format restrictions, but we recommend treating it like a User Agent string and including the tool name and version For example, BuildMaster uses `BuildMaster/5.6.11`
`createdBy` | A string describing the person or service that performed the installation For example, BuildMaster uses the user who triggered the deployment or SYSTEM if it was a triggered/scheduled deployment
`repackageHistory` | An array containing package identification strings or objects with the following properties: `id`R - a package identification string `date` - A string representing the UTC date when the package was repackaged, in ISO 8601 format (yyyy-MM-ddThh:mm:ssZ) `reason` - A string describing the reason or purpose of the repackaging `using` - A string describing the mechanism the package was repackaged with; there are no format restrictions, but we recommend treating it like a User Agent string and including the tool name and version `by` - A string describing the person or service that performed the repackage `url` - A string where more information about the repackaging can be found, typically to logs within the tool that performed it A package identification string is a 3- or 4-part string, formatted as follows: «group»/«package-name»:«version» «group»/«package-name»:«version»:«sha-hash» If a hash is specified, the client may use it to verify the repackaging; see package identification. You may include other properties in the object, but it is recommended to prefix the names with an underscore (_).

An `R` denotes a required property.

### Additional Metadata

This object may contain additional properties as needed. However, if you need to add additional metadata, it's strongly recommended that you prefix these properties with an underscore (_)... just on the off-chance that a property you add will exist in a future version of the specification, or is returned in other metadata queries.