Skip to main content
Feature entitlement: devSpace · Availability: DevSpace

Applet Version Lifecycle

Every applet version has a status that controls whether devices receive it. Use it to release a version to your devices, retire a broken one, or bring a retired version back.

StatusMeaning
draftThe initial state after a version is created (and, for multi-file applets, built). Not yet released. A draft version can still be overwritten by re-uploading the same version.
publishedThe released version — the one your devices receive.
deprecatedA retired version. Use this to pull a broken or obsolete version out of circulation.

The status is returned on every applet version, alongside the publishedSince, deprecatedSince, and builtSince timestamps it is derived from.

Transitions

There are three actions:

  • Publish — releases a version (draft → published). The version must have finished building successfully and must not already be published.
  • Deprecate — retires a version (→ deprecated).
  • Renew — un-deprecates a version (deprecated → published or draft, whichever it was before).
info

A deprecated version cannot be published directly — renew it first, then publish. Invalid transitions (for example publishing a version that has not finished building, or deprecating a version that is already deprecated) are rejected.

Using the CLI

The signageOS CLI is the quickest way to change a version's status:

Terminal
# Publish a version
sos applet version publish --applet-uid <appletUid> --applet-version <version>

# Deprecate a version
sos applet version deprecate --applet-uid <appletUid> --applet-version <version>

# Renew (un-deprecate) a version
sos applet version renew --applet-uid <appletUid> --applet-version <version>

When you pass both --applet-uid and --applet-version, the command does not need a local applet directory, so you can script the same change across many organizations. Add --yes to skip the confirmation prompt. Omit the flags to select the applet and version interactively.

tip

See the full command reference, including all options, in the CLI documentation.

Using the SDK

With the @signageos/sdk JavaScript SDK:

publish-version.js
await api.applet.version.publish(appletUid, version);
await api.applet.version.deprecate(appletUid, version);
await api.applet.version.renew(appletUid, version);

Using the REST API

Each action is a POST to the version's action sub-path, with no request body. A successful call returns 204 No Content:

Terminal
curl -X POST "https://api.signageos.io/v1/applet/<appletUid>/version/<version>/publish" \
-H "X-Auth: <tokenId>:<tokenSecret>"
# ...and /deprecate and /renew

The read endpoints (GET /v1/applet/{appletUid}/version and GET /v1/applet/{appletUid}/version/{appletVersion}) include the computed status field. An invalid transition returns 409 Conflict. See the REST API reference for details.