Messages sent to Bosch IoT Rollouts
Note: The DMF protocol uses the term “thing” for a device or in Bosch IoT Rollouts speech “provisioning target”. The terms can be considered as synonyms.
Messages sent to Rollouts (Client -> Rollouts)
All messages have to be sent to the exchange dmf.exchange.
THING_CREATED
Message to register and update a provisioning target.
Header |
Description |
Type |
Mandatory |
type |
Type of the message |
Fixed string “THING_CREATED” |
true |
thingId |
The ID of the registered provisioning target |
String |
true |
sender |
Name of the message sender |
String |
false |
tenant |
The tenant this provisioning target belongs to |
String |
false |
Message Properties |
Description |
Type |
Mandatory |
content_type |
The content type of the payload |
String |
true |
reply_to |
Exchange to reply to. The default is sp.direct.exchange which is bound to the sp_direct_queue |
String |
false |
Example headers and payload:
Header |
MessageProperties |
type=THING_CREATED |
content_type=application/json |
Payload Template (optional):
{
"name"
:
"String"
,
"attributeUpdate"
: {
"attributes"
: {
"exampleKey1"
:
"exampleValue1"
,
"exampleKey2"
:
"exampleValue2"
},
"mode"
:
"String"
}
}
The "name" property specifies the name of the thing, which by default is the thing ID. This property is optional.
The "attributeUpdate" property provides the attributes of the thing, for details see UPDATE_ATTRIBUTES message. This property is optional.
THING_REMOVED
Message to request the deletion of a provisioning target.
Header |
Description |
Type |
Mandatory |
type |
Type of the message |
Fixed string “THING_REMOVED” |
true |
thingId |
The ID of the registered provisioning target |
String |
true |
tenant |
The tenant this provisioning target belongs to |
String |
false |
Message Properties |
Description |
Type |
Mandatory |
content_type |
The content type of the payload |
String |
true |
Example headers
Header |
MessageProperties |
type=THING_REMOVED |
content_type=application/json |
UPDATE_ATTRIBUTES
Message to update target attributes. This message can be send in response to a REQUEST_ATTRIBUTES_UPDATE event, sent by Bosch IoT Rollouts.
See Messages sent by Bosch IoT Rollouts > REQUEST_ATTRIBUTES_UPDATE
Header |
Description |
Type |
Mandatory |
type |
Type of the message |
Fixed string “EVENT” |
true |
topic |
Topic name identifying the event |
Fixed string “UPDATE_ATTRIBUTES” |
true |
thingId |
The ID of the registered thing |
String |
true |
tenant |
The tenant this thing belongs to |
String |
false |
Message Properties |
Description |
Type |
Mandatory |
content_type |
The content type of the payload |
String |
true |
Example headers and payload:
Header |
MessageProperties |
type=EVENT |
content_type=application/json |
Payload Template:
{
"attributes"
: {
"exampleKey1"
:
"exampleValue1"
,
"exampleKey2"
:
"exampleValue2"
},
"mode"
:
"String"
}
The "mode" property specifies the update mode that should be applied. This property is optional. Possible mode values:
Value |
Description |
MERGE |
The target attributes specified in the payload are merged into the existing attributes. This is the default mode that is applied if no "mode" property is specified in the payload. |
REPLACE |
The existing attributes are replaced with the target attributes specified in the payload. |
REMOVE |
The target attributes specified in the payload are removed from the existing attributes. |
UPDATE_ACTION_STATUS
Message to send an action status event to Bosch IoT Rollouts.
Header |
Description |
Type |
Mandatory |
type |
Type of the message |
Fixed string “EVENT” |
true |
topic |
Topic name identifying the event |
Fixed string “UPDATE_ACTION_STATUS” |
true |
tenant |
The tenant this thing belongs to |
String |
false |
Message Properties |
Description |
Type |
Mandatory |
content_type |
The content type of the payload |
String |
true |
Payload Template (the Java representation is ActionUpdateStatus):
{
"actionId"
:
long
,
"softwareModuleId"
:
long
,
"actionStatus"
:
"String"
,
"code"
:
int
,
"message"
:[
"String"
]
}
When the user consent flow feature has been enabled prior to the start of the action, the "softwareModuleId" field will not be used when handling the message as the confirmation will be per actionId.
Possible actionStatus values:
Value |
Description |
DOWNLOAD |
Device is downloading |
DOWNLOADED |
Device completed download |
RETRIEVED |
Device has retrieved the artifact |
RUNNING |
Update is running |
CONFIRMED |
User consent for the update has been granted. |
DENIED |
User consent for the update has been denied. |
FINISHED |
Update process finished successfully |
ERROR |
Error during update process |
WARNING |
Warning during update process |
CANCELED |
Cancel update process successfully |
CANCEL_REJECTED |
Cancel update process has been rejected |
Example header and payload:
Header |
MessageProperties |
type=EVENT |
content_type=application/json |
{
"actionId"
:
137
,
"softwareModuleId"
:
17
,
"actionStatus"
:
"DOWNLOAD"
,
"message"
:[
"The download has started"
]
}
PING
Bosch IoT Rollouts allows DMF clients to check the availability of the DMF service. For this scenario DMF specifies a PING message that can be sent by the client:
Header |
Description |
Type |
Mandatory |
type |
Type of the message |
Fixed string “PING” |
true |
tenant |
The tenant the PING belongs to |
String |
false |
Message Properties |
Description |
Type |
Mandatory |
correlationId |
CorrelationId that allows the client to map a PING request to PING_RESPONSE |
String |
true |
UPDATE_AUTO_CONFIRM
Message to activate or deactivate auto confirmation sent from the device to Bosch IoT Rollouts.
Header |
Description |
Type |
Mandatory |
type |
Type of the message |
Fixed string “EVENT” |
true |
topic |
Topic name identifying the event |
Fixed string “UPDATE_AUTO_CONFIRM” |
true |
thingId |
The ID of the registered thing |
String |
true |
tenant |
The tenant the thing belongs to |
String |
true |
Message Properties |
Description |
Type |
Mandatory |
content_type |
The content type of the payload |
String |
true |
Use the following payload template to activate auto confirmation:
{
"enabled"
:
"true"
,
"initiator"
:
"user@test.com"
, <- (optional) e.g. a username from the customer system and will be persisted on every confirmed action
"remark"
:
"Activated due to test device."
<- (optional)
if
provided and will be persisted on every confirmed action
}
To deactivate auto confirmation send:
{
"enabled"
:
"false"
}