Skip to content

Resolve the rollback target for a device

GET
/api/v1/devices/{id}/rollback-target
curl --request GET \
--url http://localhost:3000/api/v1/devices/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/rollback-target \
--header 'X-API-Key: <X-API-Key>'

Returns which revision the device would be rolled back to (version, parameter digest and revision number, plus whether the device is split off a shared deployment first), or a machine-readable code explaining why it cannot be. Read-only — nothing is deployed. The resolution rule lives on the server so clients need not re-derive it.

id
required
string format: uuid

Device UUID

applicationPackageId
string format: uuid

Scope the preview to one application package. Mirrors the rollback body so a preview cannot name a version the rollback would not apply.

x-organization-id
string format: uuid

UUID of the organization (tenant) the request acts in. It selects the tenant and grants nothing: the server checks membership or an open tenant switch. Not needed for global operations. A malformed value returns 400. API keys are fixed to their own organization; another organization returns 403. The x-organization-source header grants nothing.

Rollback target resolved (or reported unavailable)

Media typeapplication/json
object
available
required

True when a distinct previous version exists to return to

boolean
code

Machine-readable reason when available is false: NO_APPLICATION_DEPLOYED, PACKAGE_NOT_DEPLOYED, NO_HISTORY, NO_EARLIER_VERSION or NO_REVISION_HISTORY (only history written before revisions existed)

string
reason

Human-readable explanation when available is false

string
applicationPackageId

The application package the rollback would act on

string format: uuid
fromVersion

Version currently running for that package

string
toVersion

Version the device would be returned to

string
fromRevision

FM-1446: the revision the device runs now. id and revision are null when the item has no revision yet.

object
id
required
string format: uuid
nullable
revision
required

Monotonic revision number of the deployment

number
nullable
applicationDescriptionId
required
string format: uuid
version
required

Application version string

string
parameterDigest
required

Sha256 of the canonical JSON of the parameter overrides

string
toRevision

FM-1446: the earlier revision the rollback re-deploys the deployment to (version, parameter digest, revision number)

object
id
required
string format: uuid
nullable
revision
required

Monotonic revision number of the deployment

number
nullable
applicationDescriptionId
required
string format: uuid
version
required

Application version string

string
parameterDigest
required

Sha256 of the canonical JSON of the parameter overrides

string
willSplit

FM-1446: true when the device shares its deployment with other devices. The rollback then splits the device off first.

boolean
toApplicationDescriptionId

ApplicationDescription that would be redeployed

string format: uuid
manifestDigest

Sealed-manifest digest of the target lineage entry

string
manifestVersion

Manifest version at which the target was last sealed

number
deployedAt

When the target version was last served to the device

string format: date-time
Examplegenerated
{
"available": true,
"code": "example",
"reason": "example",
"applicationPackageId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"fromVersion": "example",
"toVersion": "example",
"fromRevision": {
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"revision": 1,
"applicationDescriptionId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"version": "example",
"parameterDigest": "example"
},
"toRevision": {
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"revision": 1,
"applicationDescriptionId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"version": "example",
"parameterDigest": "example"
},
"willSplit": true,
"toApplicationDescriptionId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"manifestDigest": "example",
"manifestVersion": 1,
"deployedAt": "2026-04-15T12:00:00Z"
}

Malformed device or application package id

Device not found