Skip to content

Update Release

Stable

Updating a release replaces the release's stored fields with the values provided by the maintainer. This is how maintainers add assets, symbolic links, and mission scripts to a release, and how they change its version string, changelog, or visibility. Every update regenerates the release's versionHash, which signals to installed Daemons that a new version is available.

PropertyValue
Applies toWebapp
TriggerAn authenticated maintainer submits the edit release form
PreconditionsThe user is authenticated and is a maintainer of the mod

Inputs

id : String, required. The identifier of the release to update.

modId : String, required. The identifier of the mod the release belongs to.

version : String, required. The version string for the release.

changelog : String, required. Description of changes in this release.

assets : List, required. The downloadable assets for this release. Each asset has a name, one or more download URLs, and a flag indicating whether it is an archive to be extracted after download.

symbolicLinks : List, required. The symlink definitions for this release. Each definition specifies a source path within the extracted asset, a destination path, and which DCS World root directory the destination is relative to (saved_games or dcs_install).

missionScripts : List, required. Mission script definitions bundled with the release. Each definition specifies a script path, its placement root, and when it should run (before_sanitize or after_sanitize).

visibility : Enum, required. Controls who can see this release. One of PUBLIC, PRIVATE, or UNLISTED.

Assertions

AssertionStatus
The user must be authenticatedImplemented
The mod must exist in the registryImplemented
The authenticated user must be a maintainer of the modImplemented
The release must exist in the registryImplemented

Outputs

Result<ModReleaseData, ModNotFoundError | ReleaseNotFoundError | NotMaintainerError> : On success, returns the updated release record. On failure, returns one of the following error types:

ModNotFoundError : The mod does not exist in the registry.

NotMaintainerError : The authenticated user is not a maintainer of the mod.

ReleaseNotFoundError : The release does not exist in the registry.

Effects

EffectStatus
The release's fields are replaced with the provided valuesImplemented
A new versionHash is generated and stored with the releaseImplemented

Note: The versionHash is regenerated on every update. The Daemon uses this value to detect whether an installed release is out of date. Updating a release — even with no content changes — will cause installed Daemons to see the release as updated.

Behavior

mermaid
flowchart TD
    Start([updateRelease user data]) --> Authenticated{User authenticated?}

    Authenticated -- No --> Reject401([Reject: 401 Unauthorized])
    Authenticated -- Yes --> ModExists{Mod exists?}

    ModExists -- No --> ErrModNotFound([Reject: ModNotFoundError])
    ModExists -- Yes --> IsMaintainer{User is maintainer?}

    IsMaintainer -- No --> ErrNotMaintainer([Reject: NotMaintainerError])
    IsMaintainer -- Yes --> ReleaseExists{Release exists?}

    ReleaseExists -- No --> ErrReleaseNotFound([Reject: ReleaseNotFoundError])
    ReleaseExists -- Yes --> Update[Replace release fields<br/>with provided values,<br/>regenerate versionHash]

    Update --> Done([Release updated])

    style Reject401 fill:#f87171,color:#fff
    style ErrModNotFound fill:#f87171,color:#fff
    style ErrNotMaintainer fill:#f87171,color:#fff
    style ErrReleaseNotFound fill:#f87171,color:#fff
    style Done fill:#4ade80,color:#000

See Also

  • Create release — Spec page for creating the release before it can be updated.
  • Delete release — Spec page for removing a release from the registry.
  • Add Release — Spec page for the Daemon behavior that uses the release's assets and symlink definitions.
  • How the Webapp works — Guide covering release assets, symbolic link definitions, and mission scripts.