Download OpenAPI specification:Download
Eclipse hawkBit™ is a domain-independent back-end framework for rolling out software updates to constrained edge devices as well as more powerful controllers and gateways connected to IP based networking infrastructure.
Allow to set current running version. This method is EXPERIMENTAL and may change in future releases.
tenant required | string |
controllerId required | string |
name required | string Distribution Set name |
version required | string Distribution set version |
{- "name": "linux",
- "version": "1.2.3"
}
{- "exceptionClass": "string",
- "errorCode": "string",
- "message": "string",
- "info": {
- "property1": { },
- "property2": { }
}
}
The usual behaviour is that when a new device registers at the server it is requested to provide the meta information that will allow the server to identify the device on a hardware level (e.g. hardware revision, mac address, serial number etc.).
tenant required | string |
controllerId required | string |
required | object Link which is provided whenever the provisioning target or device is supposed to push its configuration data (aka. "controller attributes") to the server. Only shown for the initial configuration, after a successful update action, or if requested explicitly (e.g. via the management UI). |
mode | string Enum: "merge" "replace" "remove" Optional parameter to specify the update mode that should be applied when updating target attributes. Valid values are 'merge', 'replace', and 'remove'. Defaults to 'merge'. |
{- "mode": "merge",
- "data": {
- "VIN": "JH4TB2H26CC000000",
- "hwRevision": "2"
}
}
{- "exceptionClass": "string",
- "errorCode": "string",
- "message": "string",
- "info": {
- "property1": { },
- "property2": { }
}
}
Feedback channel. It is up to the device how much intermediate feedback is provided. However, the action will be kept open until the controller on the device reports a finished (either successful or error).
tenant required | string |
controllerId required | string |
actionId required | integer <int64> |
time | string Timestamp of the action |
required | object (DdiStatus) Target action status |
{- "time": "2023-08-03T12:31:41.890992967Z",
- "status": {
- "execution": "closed",
- "result": {
- "finished": "success",
- "progress": {
- "cnt": 2,
- "of": 5
}
}, - "code": 200,
- "details": [
- "Some feedback"
]
}
}
{- "exceptionClass": "string",
- "errorCode": "string",
- "message": "string",
- "info": {
- "property1": { },
- "property2": { }
}
}
The device will use this resource to either confirm or deny an action which is waiting for confirmation. The action will be transferred into the RUNNING state in case the device is confirming it. Afterwards it will be exposed by the deploymentBase.
tenant required | string |
controllerId required | string |
actionId required | integer <int64> |
confirmation required | string Enum: "confirmed" "denied" Action confirmation state |
code | integer <int32> (Optional) Individual status code |
details | Array of strings List of detailed message information |
{- "confirmation": "confirmed",
- "code": 200,
- "details": [
- "Feedback message"
]
}
{- "exceptionClass": "string",
- "errorCode": "string",
- "message": "string",
- "info": {
- "property1": { },
- "property2": { }
}
}
The device can use this resource to deactivate auto-confirmation. All active actions will remain unchanged while all future actions need to be confirmed, before processing with the deployment.
tenant required | string |
controllerId required | string |
{- "exceptionClass": "string",
- "errorCode": "string",
- "message": "string",
- "info": {
- "property1": { },
- "property2": { }
}
}
The device can use this resource to activate auto-confirmation. As a result all current active as well as future actions will automatically be confirmed by mentioning the initiator as triggered person. Actions will be automatically confirmed, as long as auto-confirmation is active.
tenant required | string |
controllerId required | string |
initiator | string Individual value (e.g. username) stored as initiator and automatically used as confirmed user in future actions |
remark | string Individual value to attach a remark which will be persisted when automatically confirming future actions |
{- "initiator": "exampleUser",
- "remark": "exampleRemark"
}
{- "exceptionClass": "string",
- "errorCode": "string",
- "message": "string",
- "info": {
- "property1": { },
- "property2": { }
}
}
It is up to the device how much intermediate feedback is provided. However, the action will be kept open until the controller on the device reports a finished (either successful or error) or rejects the action, e.g. the canceled actions have been started already.
tenant required | string |
controllerId required | string |
actionId required | integer <int64> |
time | string Timestamp of the action |
required | object (DdiStatus) Target action status |
{- "time": "2023-08-03T12:31:41.890992967Z",
- "status": {
- "execution": "closed",
- "result": {
- "finished": "success",
- "progress": {
- "cnt": 2,
- "of": 5
}
}, - "code": 200,
- "details": [
- "Some feedback"
]
}
}
{- "exceptionClass": "string",
- "errorCode": "string",
- "message": "string",
- "info": {
- "property1": { },
- "property2": { }
}
}
This base resource can be regularly polled by the controller on the provisioning target or device in order to retrieve actions that need to be executed. Those are provided as a list of links to give more detailed information about the action. Links are only available for initial configuration, open actions, or the latest installed action, respectively. The resource supports Etag based modification checks in order to save traffic.
Note: deployments have to be confirmed in order to move on to the next action. Cancellations have to be confirmed or rejected.
tenant required | string |
controllerId required | string |
{- "config": {
- "polling": {
- "sleep": "12:00:00"
}
}, - "_links": {
- "deploymentBase": {
}, - "installedBase": {
}, - "configData": {
}
}
}
Returns all artifacts that are assigned to the software module
tenant required | string |
controllerId required | string |
softwareModuleId required | integer <int64> |
[- {
- "filename": "binaryFile",
- "hashes": {
- "sha1": "e4e667b70ff652cb9d9c8a49f141bd68e06cec6f",
- "md5": "13793b0e3a7830ed685d3ede7ff93048",
- "sha256": "c51368bf045803b429a67bdf04539a373d9fb8caa310fe0431265e6871b4f07a"
}, - "size": 11,
- "_links": {
- "download-http": {
},
}
}
]
Handles GET DdiArtifact download request. This could be full or partial (as specified by RFC7233 (Range Requests)) download request.
tenant required | string |
controllerId required | string |
softwareModuleId required | integer <int64> |
fileName required | string |
{- "exceptionClass": "string",
- "errorCode": "string",
- "message": "string",
- "info": {
- "property1": { },
- "property2": { }
}
}
Handles GET {@link DdiArtifact} MD5 checksum file download request.
tenant required | string |
controllerId required | string |
softwareModuleId required | integer <int64> |
fileName required | string |
{- "exceptionClass": "string",
- "errorCode": "string",
- "message": "string",
- "info": {
- "property1": { },
- "property2": { }
}
}
Resource to receive information of the previous installation. Can be used to re-retrieve artifacts of the already finished action, for example in case a re-installation is necessary. The response will be of the same format as the deploymentBase operation, providing the previous action that has been finished successfully. As the action is already finished, no further feedback is expected.
Keep in mind that the provided download links for the artifacts are generated dynamically by the update server. Host, port and path are not guaranteed to be similar to the provided examples below but will be defined at runtime.
tenant required | string |
controllerId required | string |
actionId required | integer <int64> |
actionHistory | integer <int32> Default: 0 |
{- "id": "8",
- "deployment": {
- "download": "forced",
- "update": "forced",
- "maintenanceWindow": "available",
- "chunks": [
- {
- "part": "jvm",
- "version": "1.0.75",
- "name": "oneapp runtime",
- "artifacts": [
- {
- "filename": "binary.tgz",
- "hashes": {
- "sha1": "986a1ade8b8a2f758ce951340cc5e21335cc2a00",
- "md5": "d04440e6533863247655ac5fd4345bcc",
- "sha256": "b3a04740a19e36057ccf258701922f3cd2f1a880536be53a3ca8d50f6b615975"
}, - "size": 13,
- "_links": {
- "download-http": {
},
}
}, - {
- "filename": "file.signature",
- "hashes": {
- "sha1": "986a1ade8b8a2f758ce951340cc5e21335cc2a00",
- "md5": "d04440e6533863247655ac5fd4345bcc",
- "sha256": "b3a04740a19e36057ccf258701922f3cd2f1a880536be53a3ca8d50f6b615975"
}, - "size": 13,
- "_links": {
- "download-http": {
},
}
}
]
}, - {
- "part": "os",
- "version": "1.0.79",
- "name": "one Firmware",
- "artifacts": [
- {
- "filename": "binary.tgz",
- "hashes": {
- "sha1": "574cd34be20f75d101ed23518339cc38c5157bdb",
- "md5": "a0637c1ccb9fd53e2ba6f45712516989",
- "sha256": "498014801aab66be1d7fbea56b1aa5959651b6fd710308e196a8c414029e7291"
}, - "size": 13,
- "_links": {
- "download-http": {
},
}
}, - {
- "filename": "file.signature",
- "hashes": {
- "sha1": "574cd34be20f75d101ed23518339cc38c5157bdb",
- "md5": "a0637c1ccb9fd53e2ba6f45712516989",
- "sha256": "498014801aab66be1d7fbea56b1aa5959651b6fd710308e196a8c414029e7291"
}, - "size": 13,
- "_links": {
- "download-http": {
},
}
}
]
}, - {
- "part": "bApp",
- "version": "1.0.91",
- "name": "oneapplication",
- "artifacts": [
- {
- "filename": "binary.tgz",
- "hashes": {
- "sha1": "e3ba7ff5839c210c98e254dde655147ffc49f5c9",
- "md5": "020017c498e6b0b8f76168fd55fa6fd1",
- "sha256": "80406288820379a82bbcbfbf7e8690146e46256f505de1c6d430c0168a74f6dd"
}, - "size": 11,
- "_links": {
- "download-http": {
},
}
}, - {
- "filename": "file.signature",
- "hashes": {
- "sha1": "e3ba7ff5839c210c98e254dde655147ffc49f5c9",
- "md5": "020017c498e6b0b8f76168fd55fa6fd1",
- "sha256": "80406288820379a82bbcbfbf7e8690146e46256f505de1c6d430c0168a74f6dd"
}, - "size": 11,
- "_links": {
- "download-http": {
},
}
}
], - "metadata": [
- {
- "key": "aMetadataKey",
- "value": "Metadata value as defined in software module"
}
]
}
]
}, - "actionHistory": {
- "status": "RUNNING",
- "messages": [
- "Reboot",
- "Write firmware",
- "Download done",
- "Download failed. ErrorCode #5876745. Retry",
- "Started download",
- "Assignment initiated by user 'TestPrincipal'"
]
}
}
Core resource for deployment operations. Contains all information necessary in order to execute the operation.
Keep in mind that the provided download links for the artifacts are generated dynamically by the update server. Host, port and path and not guaranteed to be similar to the provided examples below but will be defined at runtime.
tenant required | string |
controllerId required | string |
actionId required | integer <int64> |
c | integer <int32> Default: -1 |
actionHistory | string (Optional) GET parameter to retrieve a given number of messages which are previously provided by the device. Useful if the devices sent state information to the feedback channel and never stored them locally. |
{- "id": "8",
- "deployment": {
- "download": "forced",
- "update": "forced",
- "maintenanceWindow": "available",
- "chunks": [
- {
- "part": "jvm",
- "version": "1.0.75",
- "name": "oneapp runtime",
- "artifacts": [
- {
- "filename": "binary.tgz",
- "hashes": {
- "sha1": "986a1ade8b8a2f758ce951340cc5e21335cc2a00",
- "md5": "d04440e6533863247655ac5fd4345bcc",
- "sha256": "b3a04740a19e36057ccf258701922f3cd2f1a880536be53a3ca8d50f6b615975"
}, - "size": 13,
- "_links": {
- "download-http": {
},
}
}, - {
- "filename": "file.signature",
- "hashes": {
- "sha1": "986a1ade8b8a2f758ce951340cc5e21335cc2a00",
- "md5": "d04440e6533863247655ac5fd4345bcc",
- "sha256": "b3a04740a19e36057ccf258701922f3cd2f1a880536be53a3ca8d50f6b615975"
}, - "size": 13,
- "_links": {
- "download-http": {
},
}
}
]
}, - {
- "part": "os",
- "version": "1.0.79",
- "name": "one Firmware",
- "artifacts": [
- {
- "filename": "binary.tgz",
- "hashes": {
- "sha1": "574cd34be20f75d101ed23518339cc38c5157bdb",
- "md5": "a0637c1ccb9fd53e2ba6f45712516989",
- "sha256": "498014801aab66be1d7fbea56b1aa5959651b6fd710308e196a8c414029e7291"
}, - "size": 13,
- "_links": {
- "download-http": {
},
}
}, - {
- "filename": "file.signature",
- "hashes": {
- "sha1": "574cd34be20f75d101ed23518339cc38c5157bdb",
- "md5": "a0637c1ccb9fd53e2ba6f45712516989",
- "sha256": "498014801aab66be1d7fbea56b1aa5959651b6fd710308e196a8c414029e7291"
}, - "size": 13,
- "_links": {
- "download-http": {
},
}
}
]
}, - {
- "part": "bApp",
- "version": "1.0.91",
- "name": "oneapplication",
- "artifacts": [
- {
- "filename": "binary.tgz",
- "hashes": {
- "sha1": "e3ba7ff5839c210c98e254dde655147ffc49f5c9",
- "md5": "020017c498e6b0b8f76168fd55fa6fd1",
- "sha256": "80406288820379a82bbcbfbf7e8690146e46256f505de1c6d430c0168a74f6dd"
}, - "size": 11,
- "_links": {
- "download-http": {
},
}
}, - {
- "filename": "file.signature",
- "hashes": {
- "sha1": "e3ba7ff5839c210c98e254dde655147ffc49f5c9",
- "md5": "020017c498e6b0b8f76168fd55fa6fd1",
- "sha256": "80406288820379a82bbcbfbf7e8690146e46256f505de1c6d430c0168a74f6dd"
}, - "size": 11,
- "_links": {
- "download-http": {
},
}
}
], - "metadata": [
- {
- "key": "aMetadataKey",
- "value": "Metadata value as defined in software module"
}
]
}
]
}, - "actionHistory": {
- "status": "RUNNING",
- "messages": [
- "Reboot",
- "Write firmware",
- "Download done",
- "Download failed. ErrorCode #5876745. Retry",
- "Started download",
- "Assignment initiated by user 'TestPrincipal'"
]
}
}
Core resource for confirmation related operations. While active actions awaiting confirmation will be referenced, the current auto-confirmation status will be shown. In case auto-confirmation is active, details like the initiator, remark and date of activation (as unix timestamp) will be provided. Reference links to switch the auto-confirmation state are exposed as well.
tenant required | string |
controllerId required | string |
{- "autoConfirm": {
- "active": false
}, - "_links": {
- "activateAutoConfirm": {
}, - "confirmationBase": {
}
}
}
Resource to receive information about a pending confirmation. The response will be of the same format as the deploymentBase operation. The controller should provide feedback about the confirmation first, before processing the deployment.
Keep in mind that the provided download links for the artifacts are generated dynamically by the update server. Host, port and path are not guaranteed to be similar to the provided examples below but will be defined at runtime.
tenant required | string |
controllerId required | string |
actionId required | integer <int64> |
c | integer <int32> Default: -1 |
actionHistory | integer <int32> Default: 0 |
{- "id": "6",
- "confirmation": {
- "download": "forced",
- "update": "forced",
- "maintenanceWindow": "available",
- "chunks": [
- {
- "part": "jvm",
- "version": "1.0.62",
- "name": "oneapp runtime",
- "artifacts": [
- {
- "filename": "binary.tgz",
- "hashes": {
- "sha1": "3dceccec02e7626184bdbba12b247b67ff04c363",
- "md5": "a9a7df0aa4c72b3b03b654c42d29744b",
- "sha256": "971d8db88fef8e7a3e6d5bbf501d69b07d0c300d9be948aff8b52960ef039358"
}, - "size": 11,
- "_links": {
- "download-http": {
},
}
}, - {
- "filename": "file.signature",
- "hashes": {
- "sha1": "3dceccec02e7626184bdbba12b247b67ff04c363",
- "md5": "a9a7df0aa4c72b3b03b654c42d29744b",
- "sha256": "971d8db88fef8e7a3e6d5bbf501d69b07d0c300d9be948aff8b52960ef039358"
}, - "size": 11,
- "_links": {
- "download-http": {
},
}
}
]
}, - {
- "part": "bApp",
- "version": "1.0.96",
- "name": "oneapplication",
- "artifacts": [
- {
- "filename": "binary.tgz",
- "hashes": {
- "sha1": "701c0c0fcbee5e96fa5c5b819cb519686940ade3",
- "md5": "f0f6a34c4c9e79d07c2d92c3c3d88560",
- "sha256": "cff472a07c3143741fb03ac6c577acabef72a186a8bfaab00bbb47ca5ebbe554"
}, - "size": 11,
- "_links": {
- "download-http": {
},
}
}, - {
- "filename": "file.signature",
- "hashes": {
- "sha1": "701c0c0fcbee5e96fa5c5b819cb519686940ade3",
- "md5": "f0f6a34c4c9e79d07c2d92c3c3d88560",
- "sha256": "cff472a07c3143741fb03ac6c577acabef72a186a8bfaab00bbb47ca5ebbe554"
}, - "size": 11,
- "_links": {
- "download-http": {
},
}
}
]
}, - {
- "part": "os",
- "version": "1.0.44",
- "name": "one Firmware",
- "artifacts": [
- {
- "filename": "binary.tgz",
- "hashes": {
- "sha1": "2b09765e953cd138b7da8f4725e48183dab62aec",
- "md5": "9b0aa2f51379cb4a5e0b7d026c2605c9",
- "sha256": "618faa741070b3f8148bad06f088e537a8f7913e734df4dde61fb163725cb4ee"
}, - "size": 15,
- "_links": {
- "download-http": {
},
}
}, - {
- "filename": "file.signature",
- "hashes": {
- "sha1": "2b09765e953cd138b7da8f4725e48183dab62aec",
- "md5": "9b0aa2f51379cb4a5e0b7d026c2605c9",
- "sha256": "618faa741070b3f8148bad06f088e537a8f7913e734df4dde61fb163725cb4ee"
}, - "size": 15,
- "_links": {
- "download-http": {
},
}
}
], - "metadata": [
- {
- "key": "aMetadataKey",
- "value": "Metadata value as defined in software module"
}
]
}
]
}, - "actionHistory": {
- "status": "WAIT_FOR_CONFIRMATION",
- "messages": [
- "Assignment initiated by user 'TestPrincipal'",
- "Waiting for the confirmation by the device before processing with the deployment"
]
}
}
The Hawkbit server might cancel an operation, e.g. an unfinished update has a successor. It is up to the provisioning target to decide to accept the cancelation or reject it.
tenant required | string |
controllerId required | string |
actionId required | integer <int64> |
{- "id": "11",
- "cancelAction": {
- "stopId": "11"
}
}