Skip to content

Updates ​

Firmware comes from one update server that serves the whole backend. It is told the product id, hardware ids and firmware versions, read from the device's cached device service in flake without waking the device. Nothing is kept afterwards: no job to poll, and a retry is another call.

A booking is held against that server's concurrent-download budget; UPDATE_SERVER_OUT_OF_RESOURCES means those slots are all taken, not that the request was wrong. An update also reboots hardware in the field, so the route needs create on the device's update resource, not the read that covers device data — see IAM.

POSTStart a firmware update/api/v1/update/legacy/:device
POST/api/v1/update/firmware
PUT/api/v1/update/firmware/:firmwareId/file
GET/api/v1/update/firmware
GET/api/v1/update/firmware/:firmwareId
PATCH/api/v1/update/firmware/:firmwareId
DELETE/api/v1/update/firmware/:firmwareId
POST/api/v1/update/rollout
GET/api/v1/update/rollout
GET/api/v1/update/rollout/:rolloutId
PATCH/api/v1/update/rollout/:rolloutId
POST/api/v1/update/rollout/:rolloutId/advance
GET/api/v1/update/rollout/:rolloutId/devices
POST/api/v1/update/device/:device
GET/api/v1/update/device/:device
PUT/api/v1/update/device/:device/pin
DELETE/api/v1/update/device/:device/pin
GET/api/v1/update/inventory

Start a firmware update ​

Books a firmware download and tells the device to fetch it, all inside the one request; {device} accepts the device id, the IMEI or the SIM's ICCID. Outcomes arrive as status on a 200 — NO_UPDATE and an unreachable device included — and one call updates at most one hardware unit.

POST/api/v1/update/legacy/Yk3pL7rWq2

Path Parameters

NameDescription
devicestringNames the device by its id, its IMEI, or the ICCID of its SIM.

Response

NameDescription
statusenumHow far the exchange got: STARTED, NO_UPDATE, DEVICE_OFFLINE, DEVICE_NOT_OK, UPDATE_SERVER_OUT_OF_RESOURCES, UPDATE_SERVER_ERROR or SERVER_ERROR — only STARTED means the device is downloading.
Possible values: STARTED, NO_UPDATE, DEVICE_OFFLINE, DEVICE_NOT_OK, UPDATE_SERVER_OUT_OF_RESOURCES, UPDATE_SERVER_ERROR, SERVER_ERROR
messagestringThe status as a fixed English sentence for display; it is not localised, so code branches on status.
detailstringoptionalWhat the failing step reported, present only on UPDATE_SERVER_ERROR and SERVER_ERROR. Diagnostic and untranslated — meant for a log or a bug report, not for a user.

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404No device in this tenant is known by that identifier. {device} is tried as device id, then IMEI, then ICCID — check the value, and that the token belongs to the tenant the device is registered in.
409The device is known but has never reported what it runs: no PRODUCT_ID in its device service, or no firmware version on any hardware unit, so there is nothing to ask the update server about. Retry once the device has transmitted its device service.
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

POST /api/v1/update/firmware ​

POST/api/v1/update/firmware

Body

NameDescription
productNamestringmin length 1
hardwareNamestringmin length 1
versionstringPattern: ^\d+\.\d+\.\d+
channelenumPossible values: dev, beta, stable
sizeinteger> 0 · max 67108864
checksumobject
algorithmenumPossible values: SHA256, SHA384
sumstringPattern: ^[0-9a-fA-F]+$
checkpointbooleanoptional
sharedbooleanoptional
releaseNotesstringoptional
tenantIdstringoptionalResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Response

NameDescription
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
409code: FIRMWARE_EXISTS
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

PUT /api/v1/update/firmware/:firmwareId/file ​

PUT/api/v1/update/firmware/Yk3pL7rWq2/file

Path Parameters

NameDescription
firmwareIdstringResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Query Parameters

NameDescription
sizeintegeroptionalSize of the loaded content in bytes.
> 0 · max 67108864
algorithmoptionalenumPossible values: SHA256, SHA384
sumstringoptionalPattern: ^[0-9a-fA-F]+$
tenantIdstringoptionalTenant identifier
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Response

NameDescription
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource

Errors

StatusDescriptionBody
400
403You do not have permission to perform this action
404
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
409code: FIRMWARE_EXISTS
422reason: size, expected: string, actual: string
503
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

GET /api/v1/update/firmware ​

GET/api/v1/update/firmware

Query Parameters

NameDescription
productNamestringoptional
hardwareNamestringoptional
channeloptionalenumPossible values: dev, beta, stable
tenantIdstringoptionalTenant identifier
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Response

NameDescription
firmwareIdstring
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
productNamestringmin length 1
hardwareNamestringmin length 1
versionobject
printablestring
majorintegermin 0
minorintegermin 0
patchintegermin 0
channelenumPossible values: dev, beta, stable
stateenumPossible values: draft, published, deprecated, withdrawn
revisionintegermin 0
checkpointboolean
sharedboolean
fileKeystringoptional
sizeinteger> 0
checksumobject
algorithmenumPossible values: SHA256, SHA384
sumstringPattern: ^[0-9a-fA-F]+$
headerCheckoptionalenumPossible values: ok, mismatch, not-checked
releasedAtintegeroptionalUnix timestamp in milliseconds since epoch.
releaseNotesstringoptional
createdBystringResource identifier of the entity that created this resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

GET /api/v1/update/firmware/:firmwareId ​

GET/api/v1/update/firmware/Yk3pL7rWq2

Path Parameters

NameDescription
firmwareIdstringResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Query Parameters

NameDescription
tenantIdstringoptionalTenant identifier
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Response

NameDescription
firmwareIdstring
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
productNamestringmin length 1
hardwareNamestringmin length 1
versionobject
printablestring
majorintegermin 0
minorintegermin 0
patchintegermin 0
channelenumPossible values: dev, beta, stable
stateenumPossible values: draft, published, deprecated, withdrawn
revisionintegermin 0
checkpointboolean
sharedboolean
fileKeystringoptional
sizeinteger> 0
checksumobject
algorithmenumPossible values: SHA256, SHA384
sumstringPattern: ^[0-9a-fA-F]+$
headerCheckoptionalenumPossible values: ok, mismatch, not-checked
releasedAtintegeroptionalUnix timestamp in milliseconds since epoch.
releaseNotesstringoptional
createdBystringResource identifier of the entity that created this resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

PATCH /api/v1/update/firmware/:firmwareId ​

PATCH/api/v1/update/firmware/Yk3pL7rWq2

Path Parameters

NameDescription
firmwareIdstringResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Query Parameters

NameDescription
tenantIdstringoptionalTenant identifier
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Body

NameDescription
channeloptionalenumPossible values: dev, beta, stable
stateoptionalenumPossible values: published, deprecated
checkpointbooleanoptional
sharedbooleanoptional
releaseNotesstringoptional

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
409code: FIRMWARE_EXISTS
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

DELETE /api/v1/update/firmware/:firmwareId ​

DELETE/api/v1/update/firmware/Yk3pL7rWq2

Path Parameters

NameDescription
firmwareIdstringResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Query Parameters

NameDescription
tenantIdstringoptionalTenant identifier
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

POST /api/v1/update/rollout ​

POST/api/v1/update/rollout

Body

NameDescription
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource
target
Alternative 1object
type
Alternative 2object
type
groupRistringUnique Coldwave resource name (CRN) that identifies a resource
percentageintegermin 0 · max 100
triggersarrayoptional
pauseAfterFailedInstallsintegeroptionalmin 1
tenantIdstringoptionalResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Response

NameDescription
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
404
409code: FIRMWARE_EXISTS
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

GET /api/v1/update/rollout ​

GET/api/v1/update/rollout

Response

NameDescription
rolloutIdstring
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource
stateenumPossible values: draft, running, paused, done
pauseReasonoptionalenumPossible values: manual, self-paused, firmware-withdrawn
target
Alternative 1object
type
Alternative 2object
type
groupRistringUnique Coldwave resource name (CRN) that identifies a resource
percentageintegermin 0 · max 100
admissionobject
seenintegermin 0
admittedintegermin 0
triggersarray
pauseAfterFailedInstallsintegermin 1
startedAtintegeroptionalUnix timestamp in milliseconds since epoch.
countersobject
eligibleintegermin 0
startedintegermin 0
succeededintegermin 0
failedintegermin 0
createdBystringResource identifier of the entity that created this resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

GET /api/v1/update/rollout/:rolloutId ​

GET/api/v1/update/rollout/Yk3pL7rWq2

Path Parameters

NameDescription
rolloutIdstringResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Response

NameDescription
rolloutIdstring
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource
stateenumPossible values: draft, running, paused, done
pauseReasonoptionalenumPossible values: manual, self-paused, firmware-withdrawn
target
Alternative 1object
type
Alternative 2object
type
groupRistringUnique Coldwave resource name (CRN) that identifies a resource
percentageintegermin 0 · max 100
admissionobject
seenintegermin 0
admittedintegermin 0
triggersarray
pauseAfterFailedInstallsintegermin 1
startedAtintegeroptionalUnix timestamp in milliseconds since epoch.
countersobject
eligibleintegermin 0
startedintegermin 0
succeededintegermin 0
failedintegermin 0
createdBystringResource identifier of the entity that created this resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

PATCH /api/v1/update/rollout/:rolloutId ​

PATCH/api/v1/update/rollout/Yk3pL7rWq2

Path Parameters

NameDescription
rolloutIdstringResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Body

NameDescription
stateoptionalenumPossible values: running, paused, done
percentageintegeroptionalmin 0 · max 100
triggersarrayoptional
pauseAfterFailedInstallsintegeroptionalmin 1

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
409code: FIRMWARE_EXISTS
503
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

POST /api/v1/update/rollout/:rolloutId/advance ​

POST/api/v1/update/rollout/Yk3pL7rWq2/advance

Path Parameters

NameDescription
rolloutIdstringResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Body

NameDescription
limitintegeroptionalmin 1 · max 10000

Response

NameDescription
devicesinteger

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
409code: FIRMWARE_EXISTS
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

GET /api/v1/update/rollout/:rolloutId/devices ​

GET/api/v1/update/rollout/Yk3pL7rWq2/devices

Path Parameters

NameDescription
rolloutIdstringResource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Response

NameDescription
deviceIdstring
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
versionstringoptional
decisionoptionalenumPossible values: admitted, declined, released
reasonoptionalenumPossible values: rollout-not-running, firmware-not-published, incompatible, unknown-version, checkpoint-withdrawn, pinned, transfer-running, covered, auto-update-off, up-to-date, failed-install, retries-exhausted, backoff, awaiting-report, offline, node-busy, declined, batch-full, refused
nextHopstringoptionalUnique Coldwave resource name (CRN) that identifies a resource
nextBatchboolean
warningsarray
outcomeoptionalenumPossible values: started, transfer-failed, refused, failed-install, unexpected-version, lost, aborted, installed

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

POST /api/v1/update/device/:device ​

POST/api/v1/update/device/Yk3pL7rWq2

Path Parameters

NameDescription
devicestringNames the device by its id, its IMEI, or the ICCID of its SIM.

Body

NameDescription
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource

Response

NameDescription
startedboolean
reasonoptionalenumPossible values: rollout-not-running, firmware-not-published, incompatible, unknown-version, checkpoint-withdrawn, pinned, transfer-running, covered, auto-update-off, up-to-date, failed-install, retries-exhausted, backoff, awaiting-report, offline, node-busy, declined, batch-full, refused
detailstringoptional
firmwareRistringoptionalUnique Coldwave resource name (CRN) that identifies a resource
warningsarray

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404No device in this tenant is known by that identifier. {device} is tried as device id, then IMEI, then ICCID — check the value, and that the token belongs to the tenant the device is registered in.
409code: FIRMWARE_EXISTS
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

GET /api/v1/update/device/:device ​

GET/api/v1/update/device/Yk3pL7rWq2

Path Parameters

NameDescription
devicestringNames the device by its id, its IMEI, or the ICCID of its SIM.

Response

NameDescription
productNamestringoptional
hardwareNamestringoptional
versionstringoptional
autoUpdatebooleanoptional
pinobjectoptional
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource
deliveriesarray
deviceIdstring
deviceRistringUnique Coldwave resource name (CRN) that identifies a resource
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource
targetRistringUnique Coldwave resource name (CRN) that identifies a resource
revisionintegermin 1
rolloutRistringoptionalUnique Coldwave resource name (CRN) that identifies a resource
startedAtintegerUnix timestamp in milliseconds since epoch.
sentintegermin 0
acceptedintegermin 0
acceptedAtintegeroptionalUnix timestamp in milliseconds since epoch.
offsetintegermin 0
retriesintegermin 0
nextAttemptAtintegeroptionalUnix timestamp in milliseconds since epoch.
failedAtintegeroptionalUnix timestamp in milliseconds since epoch.
resumedboolean
cleanRetryUsedboolean
outcomeenumPossible values: started, transfer-failed, refused, failed-install, unexpected-version, lost, aborted, installed
transferredAtintegeroptionalUnix timestamp in milliseconds since epoch.
finishedAtintegeroptionalUnix timestamp in milliseconds since epoch.
versionBeforestring
versionAfterstringoptional
lastErrorstringoptional
detailstringoptional

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404No device in this tenant is known by that identifier. {device} is tried as device id, then IMEI, then ICCID — check the value, and that the token belongs to the tenant the device is registered in.
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

PUT /api/v1/update/device/:device/pin ​

PUT/api/v1/update/device/Yk3pL7rWq2/pin

Path Parameters

NameDescription
devicestringNames the device by its id, its IMEI, or the ICCID of its SIM.

Body

NameDescription
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404No device in this tenant is known by that identifier. {device} is tried as device id, then IMEI, then ICCID — check the value, and that the token belongs to the tenant the device is registered in.
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

DELETE /api/v1/update/device/:device/pin ​

DELETE/api/v1/update/device/Yk3pL7rWq2/pin

Path Parameters

NameDescription
devicestringNames the device by its id, its IMEI, or the ICCID of its SIM.

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404No device in this tenant is known by that identifier. {device} is tried as device id, then IMEI, then ICCID — check the value, and that the token belongs to the tenant the device is registered in.
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

GET /api/v1/update/inventory ​

GET/api/v1/update/inventory

Response

NameDescription
productNamestring
hardwareNamestring
versionstring
devicesintegermin 0

Errors

StatusDescriptionBody
403You do not have permission to perform this action
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

Events ​

Published on the tenant's event stream and delivered over the websocket to every subscriber holding read on the resource the message names. resourceIdentifier is the resource the action changed; the payload is the shape below.

EventDescription
UPDATES_DELIVERY_SET
UPDATES_EVALUATE_REQUEST
UPDATES_EVALUATE_RESULT
UPDATES_FIRMWARE_CREATE
UPDATES_FIRMWARE_PUBLISH
UPDATES_FIRMWARE_UPDATE
UPDATES_FIRMWARE_WITHDRAW
UPDATES_PIN_CLEAR
UPDATES_PIN_SET
UPDATES_ROLLOUT_CREATE
UPDATES_ROLLOUT_DECISION
UPDATES_ROLLOUT_UPDATE

UPDATES_DELIVERY_SET ​

EVENTUPDATES_DELIVERY_SET

Payload

NameDescription
deviceIdstring
deviceRistringUnique Coldwave resource name (CRN) that identifies a resource
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource
targetRistringUnique Coldwave resource name (CRN) that identifies a resource
revisionintegermin 1
rolloutRistringoptionalUnique Coldwave resource name (CRN) that identifies a resource
startedAtintegerUnix timestamp in milliseconds since epoch.
sentintegermin 0
acceptedintegermin 0
acceptedAtintegeroptionalUnix timestamp in milliseconds since epoch.
offsetintegermin 0
retriesintegermin 0
nextAttemptAtintegeroptionalUnix timestamp in milliseconds since epoch.
failedAtintegeroptionalUnix timestamp in milliseconds since epoch.
resumedboolean
cleanRetryUsedboolean
outcomeenumPossible values: started, transfer-failed, refused, failed-install, unexpected-version, lost, aborted, installed
transferredAtintegeroptionalUnix timestamp in milliseconds since epoch.
finishedAtintegeroptionalUnix timestamp in milliseconds since epoch.
versionBeforestring
versionAfterstringoptional
lastErrorstringoptional
detailstringoptional

UPDATES_EVALUATE_REQUEST ​

EVENTUPDATES_EVALUATE_REQUEST

Payload

NameDescription
requestIdstringTies a method call to its answer across instances: whichever instance holds the device connection runs the call, and the one still holding the HTTP request matches the result by this id. Every other instance drops both.
deviceRisarraystring
rolloutRistringoptionalUnique Coldwave resource name (CRN) that identifies a resource
firmwareRistringoptionalUnique Coldwave resource name (CRN) that identifies a resource
batchKeystringoptional
limitintegeroptionalMaximum points per series.
min 1

UPDATES_EVALUATE_RESULT ​

EVENTUPDATES_EVALUATE_RESULT

Payload

NameDescription
requestIdstringTies a method call to its answer across instances: whichever instance holds the device connection runs the call, and the one still holding the HTTP request matches the result by this id. Every other instance drops both.
resultobject
startedboolean
reasonoptionalenumPossible values: rollout-not-running, firmware-not-published, incompatible, unknown-version, checkpoint-withdrawn, pinned, transfer-running, covered, auto-update-off, up-to-date, failed-install, retries-exhausted, backoff, awaiting-report, offline, node-busy, declined, batch-full, refused
detailstringoptional
firmwareRistringoptionalUnique Coldwave resource name (CRN) that identifies a resource
warningsarray

UPDATES_FIRMWARE_CREATE ​

EVENTUPDATES_FIRMWARE_CREATE

Payload

NameDescription
firmwareIdstring
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
productNamestringmin length 1
hardwareNamestringmin length 1
versionobject
printablestring
majorintegermin 0
minorintegermin 0
patchintegermin 0
channelenumPossible values: dev, beta, stable
stateenumPossible values: draft, published, deprecated, withdrawn
revisionintegermin 0
checkpointboolean
sharedboolean
fileKeystringoptional
sizeinteger> 0
checksumobject
algorithmenumPossible values: SHA256, SHA384
sumstringPattern: ^[0-9a-fA-F]+$
headerCheckoptionalenumPossible values: ok, mismatch, not-checked
releasedAtintegeroptionalUnix timestamp in milliseconds since epoch.
releaseNotesstringoptional
createdBystringResource identifier of the entity that created this resource

UPDATES_FIRMWARE_PUBLISH ​

EVENTUPDATES_FIRMWARE_PUBLISH

Payload

NameDescription
revisionintegermin 1
fileKeystring
sizeintegerSize of the loaded content in bytes.
> 0
checksumobject
algorithmenumPossible values: SHA256, SHA384
sumstringPattern: ^[0-9a-fA-F]+$
headerCheckenumPossible values: ok, mismatch, not-checked
releasedAtinteger

UPDATES_FIRMWARE_UPDATE ​

EVENTUPDATES_FIRMWARE_UPDATE

Payload

NameDescription
channeloptionalenumPossible values: dev, beta, stable
stateoptionalenumPossible values: published, deprecated
checkpointbooleanoptional
sharedbooleanoptional
releaseNotesstringoptional

UPDATES_FIRMWARE_WITHDRAW ​

EVENTUPDATES_FIRMWARE_WITHDRAW

Payload

NameDescription

UPDATES_PIN_CLEAR ​

EVENTUPDATES_PIN_CLEAR

Payload

NameDescription

UPDATES_PIN_SET ​

EVENTUPDATES_PIN_SET

Payload

NameDescription
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource

UPDATES_ROLLOUT_CREATE ​

EVENTUPDATES_ROLLOUT_CREATE

Payload

NameDescription
rolloutIdstring
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource
stateenumPossible values: draft, running, paused, done
pauseReasonoptionalenumPossible values: manual, self-paused, firmware-withdrawn
target
Alternative 1object
type
Alternative 2object
type
groupRistringUnique Coldwave resource name (CRN) that identifies a resource
percentageintegermin 0 · max 100
admissionobject
seenintegermin 0
admittedintegermin 0
triggersarray
pauseAfterFailedInstallsintegermin 1
startedAtintegeroptionalUnix timestamp in milliseconds since epoch.
countersobject
eligibleintegermin 0
startedintegermin 0
succeededintegermin 0
failedintegermin 0
createdBystringResource identifier of the entity that created this resource

UPDATES_ROLLOUT_DECISION ​

EVENTUPDATES_ROLLOUT_DECISION

Payload

NameDescription
deviceRistringUnique Coldwave resource name (CRN) that identifies a resource
decisionenumPossible values: admitted, declined, released
decidedAtintegerUnix timestamp in milliseconds since epoch.
startedbooleanoptional
finishedoptionalenumPossible values: succeeded, failed

UPDATES_ROLLOUT_UPDATE ​

EVENTUPDATES_ROLLOUT_UPDATE

Payload

NameDescription
rolloutIdstring
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
firmwareRistringUnique Coldwave resource name (CRN) that identifies a resource
stateenumPossible values: draft, running, paused, done
pauseReasonoptionalenumPossible values: manual, self-paused, firmware-withdrawn
target
Alternative 1object
type
Alternative 2object
type
groupRistringUnique Coldwave resource name (CRN) that identifies a resource
percentageintegermin 0 · max 100
admissionobject
seenintegermin 0
admittedintegermin 0
triggersarray
pauseAfterFailedInstallsintegermin 1
startedAtintegeroptionalUnix timestamp in milliseconds since epoch.
countersobject
eligibleintegermin 0
startedintegermin 0
succeededintegermin 0
failedintegermin 0
createdBystringResource identifier of the entity that created this resource