devSpace · Availability: DevSpaceApplet 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.
| Status | Meaning |
|---|---|
draft | The 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. |
published | The released version — the one your devices receive. |
deprecated | A 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 → publishedordraft, whichever it was before).
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:
# 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.
See the full command reference, including all options, in the CLI documentation.
Using the SDK
With the @signageos/sdk JavaScript SDK:
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:
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.
Related
- Deploy an applet on a device — how applet versions are created and deployed
- Applet development workflow — end-to-end applet workflow