This is the EdgeIQ Device MQTT API specification. It describes the operations that can be performed on the EdgeIQ Device MQTT API.
mqtt.edgeiq.io:443
Production server, should be used for any new deployments. Offers higher security levels.
Authentication using username and password.
<company_id>/<device_unique_id>/<client_name_and_version-string>
(the <client_name_and_version-string>
part can be left empty)<company_id>/<device_unique_id>
(Deprecated) Production server for legacy devices (Coda < 4.0). Only use for devices already deployed that cannot be updated to Coda > 4.0.
Authentication using username and password.
<company_id>/<device_unique_id>/<client_name_and_version-string>
(the <client_name_and_version-string>
part can be left empty)<company_id>/<device_unique_id>
Receive standard gateway commands from the EdgeIQ cloud. The device must support all types of commands in order to be controllable via Symphony WebUI.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
The type of gateway command.
Accepts the following message:
This message is sent to the device when a gateway command is issued in the EdgeIQ cloud.
{
"command_type": "software_update",
"payload": {},
"schedule": {
"start_datetime": "2019-08-24T14:15:22Z",
"end_datetime": "2019-08-24T14:15:22Z",
"retry_interval": "string"
},
"timeout": 0,
"device_id": "string",
"settings_id": "string",
"command_id": "string",
"software_update_id": "string",
"attached_device_ids": [
"string"
],
"retry_options": {
"timeout": 180,
"max_retries": 5,
"retry_strategy": {
"type": "",
"fixed_interval": 180,
"exponential_base_interval": 180,
"exponential_multiplier": 2,
"exponential_max_interval": 3600
}
},
"type": "read",
"endpoint": "string",
"data": "string",
"filepath": "string",
"file_id": "string"
}
Receive custom user-defined commands from the EdgeIQ cloud.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
The ID of the user-defined command.
Accepts the following message:
This message is sent to the device when a user-defined command is issued in the EdgeIQ cloud.
{
"_id": "string",
"name": "string",
"device_id": "string",
"sender_type": "tcp_sender",
"sender": {},
"translator_id": "string",
"long_description": "string",
"options": {},
"payload": "string"
}
Receive escrow message from the EdgeIQ cloud.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
This message sent to the device when a escrow is flow execution starter in the EdgeIQ cloud.
The Company ID
string
Request the gateway configuration from the EdgeIQ cloud. Device must request the configuration right after connection establishment.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
A message to request the gateway configuration
{
"config_version": 3,
"requested": true
}
Send an action to the cloud.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
A message to send an action to the cloud
{
"device_id": "string",
"name": "string",
"type": "http_request",
"action": {}
}
Send the status of the device to the cloud. Device must send the status right after connection establishment.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
A message to send the status of the device to the cloud
{
"config_status": {
"received": true,
"valid": true,
"configured": true,
"greengrass_installed": true
},
"edge_version": "string",
"firmware_version": "string",
"platform_tag": "string",
"build_tags": [
"string"
],
"serial": "string",
"gps": {
"lat": 0,
"long": 0
},
"connections_status": {},
"status_messages": {
"status_type": "info",
"message": "string",
"timestamp": 0
}
}
Send the device heartbeat report to the cloud. Device must send the heartbeat report periodically based on the configuration.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
A message the device sends to the cloud to report its operational metrics. Note that numerical values submitted as strings.
{
"ram_usage": "10.2",
"cpu_usage": "65.1",
"disk_usage": "23.7",
"disk_free": "76.3"
}
Send the device report to the cloud. Device must send the report after gateway command execution. Device must send the report periodically based on the configuration.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
A message containing device report data
{
"temperature": 31.2,
"humidity": 50
}
{
"device_unique_id": "sensor_1234567890",
"temperature": 31.2,
"humidity": 50
}
{
"temperature": 31.2,
"humidity": 50,
"power_usage": {
"voltage": 120,
"current": 10.5,
"power": 1260
}
}
Send the status of the user-defined command execution to the cloud. Device must send the status of the user-defined command execution after command execution.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
A message containing terminal data
{
"id": "string",
"execution_id": "string",
"status": "initiated",
"message": "string",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
}
Send the error message to the cloud. Device must send the error message when an error occurs.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
A message containing error data
{
"type": "string",
"level": 0,
"error": "string"
}
Send the self-reported setting to the cloud.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
A message to send the self-reported setting to the cloud
{
"configurationUniqueIdentifier": "string",
"deviceUniqueId": "string",
"version": 0,
"name": "string",
"configurationId": "string",
"description": "string",
"values": {},
"deviceTypes": [
{
"id": "string",
"name": "string",
"description": "string",
"enforceSecureMQTT": true
}
],
"devices": [
{
"id": "string",
"name": "string",
"description": "string"
}
],
"isSelfReported": true,
"id": "string",
"origin": "edge",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"companyId": "string",
"userId": "string"
}
Send the status of the gateway command execution to the cloud. Device must send the status of the gateway command execution after command execution.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
A message to send the status of the gateway command execution to the cloud
{
"id": "string",
"statuses": {
"property1": {
"status": "string",
"error": "string"
},
"property2": {
"status": "string",
"error": "string"
}
}
}
Send the escrow request to the cloud.
Available only on servers:
The ID of the company which the device belongs to.
The unique ID of the device.
Accepts the following message:
This message device sent to EdgeIQ cloud to start the escrow flow.
empty body
string
This message is sent to the device when a gateway command is issued in the EdgeIQ cloud.
This message is sent to the device when a user-defined command is issued in the EdgeIQ cloud.
A message to control the terminal
A message containing terminal data
Binary data for the terminal
A message containing error data
A message containing terminal data
A message the device sends to the cloud to report its operational metrics. Note that numerical values submitted as strings.
A message containing device report data
A message to send the status of the device to the cloud
A message to send an action to the cloud
A message to request the gateway configuration
A message to send the self-reported setting to the cloud
A message to send the status of the gateway command execution to the cloud
This message sent to the device when a escrow is flow execution starter in the EdgeIQ cloud.
The Company ID
This message device sent to EdgeIQ cloud to start the escrow flow.
empty body
GatewayCommandSchedules define when a GatewayCommand can be executed. Note that this currently applies only to software update type gateway commands.
Options for retryable actions, e.g. gateway commands and commands. If null
command will not be retried.