Package
A downloadable System or Module listed in the content catalog.
A Package is catalog metadata, not installed content: it describes what is available,
where to download it and which app versions it supports. Installing one produces a
System or Module whose package field points back at the manifest, which is how
updates are detected later.
Unlike the Realm-backed containers, Package is a plain Codable value decoded straight
from the catalog JSON.
- SeeAlso:
System,Module,Compatibility
| Property | Type | Required | Description |
|---|---|---|---|
id |
string |
Yes | The unique identifier for this package. A stable, author-chosen slug. It becomes the id of the installed System or Module, and is what update checks match on. Examples: "dnd5e"; "lost-mine-of-phandelver" |
name |
string |
Yes | The display name of the package. Examples: "Dungeons & Dragons 5th Edition" |
type |
PackageType | Yes | Whether this package installs a system or a module. SeeAlso: PackageType, contentType |
category |
string |
No | The catalog category this package is listed under. For module packages this mirrors ModuleCategory. Examples: "adventure", "pack", "rules", "compendium" |
system |
string |
No | The game system this package’s content targets. The System/id of the required system. nil for system packages themselves and for system-agnostic content. Examples: "dnd5e" |
version |
string |
Yes | The version offered by this catalog listing. Compared against the installed System/version or Module/version to decide whether an update is available. Format: Semantic versioning: "1.2.3" |
download |
string |
Yes | The absolute URL of the archive to download. Examples: "https://example.com/packages/dnd5e-1.2.3.system" SeeAlso: downloadURL |
compatibility |
Compatibility | No | The range of app versions this package supports. nil means the package declares no constraint and is treated as compatible with every app version. SeeAlso: Compatibility, isCompatible |
repository |
string |
No | The source repository hosting the package, as an absolute URL string. Examples: "https://github.com/example/dnd5e-system" |
website |
string |
No | The package’s homepage, as an absolute URL string. |
description |
string |
No | The full description of the package. Marketing copy or the author’s overview, shown on the package detail screen. |
content |
string |
No | A summary of what the package contains. A human-readable inventory of the content, listed separately from description. Examples: "12 maps, 40 pages, 60 monsters" |
authors |
Array<Author> | No | The people or organizations credited on this package. SeeAlso: Author |
media |
Array<string> |
No | Absolute URLs of the package’s promotional images. Entries are identified by filename: the one containing cover. is used as the cover image and the one containing banner. as the banner. SeeAlso: imageURL, bannerURL |
featured |
boolean |
No | Whether the catalog highlights this package. Featured packages are surfaced at the top of the browse screen. |
modified |
string |
No | When the catalog listing was last updated. Format: ISO 8601: "2024-03-17T09:24:00Z" |
created |
string |
No | When the catalog listing was first published. Format: ISO 8601: "2023-11-02T14:05:00Z" |
PackageType
Section titled “PackageType”What kind of content a Package installs.
Type: string — one of:
systemmodule
Author
Section titled “Author”A person or organization credited on a Package.
| Property | Type | Required | Description |
|---|---|---|---|
name |
string |
Yes | The author’s display name. Examples: "Encounter+ Dev Team" |
url |
string |
No | The author’s homepage, as an absolute URL string. |
email |
string |
No | The author’s contact email address. |
Compatibility
Section titled “Compatibility”The range of app versions a Package supports.
Both bounds are optional and inclusive; an omitted bound means unbounded in that direction. A package with no compatibility declaration is treated as compatible with every version.
| Property | Type | Required | Description |
|---|---|---|---|
minimum |
string |
No | The oldest supported app version. Format: Semantic versioning, optionally with a build number: "5.2.0", "5.2.0+1234" Note: When a build number is present it is compared as well, so a package can require a specific build of an app version. |
maximum |
string |
No | The newest supported app version. Format: Semantic versioning, optionally with a build number: "6.0.0", "6.0.0+2000" |
PackageVersion
Section titled “PackageVersion”One downloadable release of a Package.
| Property | Type | Required | Description |
|---|---|---|---|
version |
string |
Yes | The released version. Format: Semantic versioning: "1.2.3" |
download |
string |
Yes | The absolute URL of the archive for this version. Examples: "https://example.com/packages/dnd5e-1.2.3.system" |

