EdgeIQ Sevice MQTT Specification 0.1.2

This is the EdgeIQ Device MQTT API specification. It describes the operations that can be performed on the EdgeIQ Device MQTT API.

Changelog

  • 0.1.2 - Added description and examplesfor report and heartbeat message payload.
  • 0.1.1 - Added description for username/password security scheme.
  • 0.1.0 - Updated production broker endpoint to mqtt.edgeiq.io:443
  • 0.0.1 - Initial Release

Servers

  • mqtts://mqtt.edgeiq.io:443/mqttsproduction

    Production server, should be used for any new deployments. Offers higher security levels.

    Security:
    • User/Password

      Authentication using username and password.

      • Client ID must be in the format: <company_id>/<device_unique_id>/<client_name_and_version-string> (the <client_name_and_version-string> part can be left empty)
      • Username must be in the format: <company_id>/<device_unique_id>
      • Password: Your device MQTT password
    • #env:production
    • #visibility:public
  • mqtts://mqtt.ms-io.com:443/mqttsproduction-legacy

    (Deprecated) Production server for legacy devices (Coda < 4.0). Only use for devices already deployed that cannot be updated to Coda > 4.0.

    Security:
    • User/Password

      Authentication using username and password.

      • Client ID must be in the format: <company_id>/<device_unique_id>/<client_name_and_version-string> (the <client_name_and_version-string> part can be left empty)
      • Username must be in the format: <company_id>/<device_unique_id>
      • Password: Your device MQTT password

Operations

  • RECEIVE d/{companyId}/{deviceId}/gateway_commands/{gatewayCommandType}

    Receive standard gateway commands from the EdgeIQ cloud. The device must support all types of commands in order to be controllable via Symphony WebUI.

    Operation IDReceiveGatewayCommand

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    gatewayCommandType
    required
    string

    The type of gateway command.

    object

    Accepts the following message:

    Gateway Command MessageGatewayCommandMessage

    This message is sent to the device when a gateway command is issued in the EdgeIQ cloud.

    Message IDGatewayCommandMessage
    object

    Examples

  • RECEIVE d/{companyId}/{deviceId}/commands/{userDefinedCommandId}

    Receive custom user-defined commands from the EdgeIQ cloud.

    Operation IDReceiveUserDefinedCommand

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    userDefinedCommandId
    required
    string

    The ID of the user-defined command.

    object

    Accepts the following message:

    User-Defined Command MessageUserDefinedCommandMessage

    This message is sent to the device when a user-defined command is issued in the EdgeIQ cloud.

    Message IDUserDefinedCommandMessage
    restricted any

    Examples

  • RECEIVE d/{companyId}/{deviceId}/escrow

    Receive escrow message from the EdgeIQ cloud.

    Operation IDReceiveEscrow

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Escrow MessageEscrowMessage

    This message sent to the device when a escrow is flow execution starter in the EdgeIQ cloud.

    Message IDEscrowMessage
    Payload
    string

    The Company ID

    Examples

  • SEND u/{companyId}/{deviceId}/config

    Request the gateway configuration from the EdgeIQ cloud. Device must request the configuration right after connection establishment.

    Operation IDSendGatewayConfig

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Gateway Config Request MessageGatewayConfigRequestMessage

    A message to request the gateway configuration

    Message IDGatewayConfigRequestMessage
    object

    Examples

  • SEND u/{companyId}/{deviceId}/action

    Send an action to the cloud.

    Operation IDSendUpstreamActionRequest

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Upstream Action MessageUpstreamActionMessage

    A message to send an action to the cloud

    Message IDUpstreamActionMessage
    object

    Examples

  • SEND u/{companyId}/{deviceId}/status

    Send the status of the device to the cloud. Device must send the status right after connection establishment.

    Operation IDSendStatus

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Send Status MessageStatusMessage

    A message to send the status of the device to the cloud

    Message IDStatusMessage
    object

    Examples

  • SEND u/{companyId}/{deviceId}/reports/hb

    Send the device heartbeat report to the cloud. Device must send the heartbeat report periodically based on the configuration.

    Operation IDSendHeartbeat

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Device Heartbeat MessageHeartbeatMessage

    A message the device sends to the cloud to report its operational metrics. Note that numerical values submitted as strings.

    Message IDHeartbeatMessage
    object

    Examples

  • SEND u/{companyId}/{deviceId}/reports

    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.

    Operation IDSendReport

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Device Report MessageReportMessage

    A message containing device report data

    Message IDReportMessage
    object

    Examples

  • SEND u/{companyId}/{deviceId}/command_execution_status

    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.

    Operation IDSendUserDefinedCommandExecutionStatus

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Command Execution Status MessageCommandExecutionStatusMessage

    A message containing terminal data

    Message IDCommandExecutionStatusMessage
    object

    Examples

  • SEND u/{companyId}/{deviceId}/error

    Send the error message to the cloud. Device must send the error message when an error occurs.

    Operation IDSendError

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Error MessageErrorMessage

    A message containing error data

    Message IDErrorMessage
    object

    Examples

  • SEND u/{companyId}/{deviceId}/reported_settings

    Send the self-reported setting to the cloud.

    Operation IDSendSelfReportedSetting

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Self Reported Setting MessageSelfReportedSettingMessage

    A message to send the self-reported setting to the cloud

    Message IDSelfReportedSettingMessage
    object allOf

    Examples

  • SEND u/{companyId}/{deviceId}/gateway_command_status

    Send the status of the gateway command execution to the cloud. Device must send the status of the gateway command execution after command execution.

    Operation IDSendGatewayCommandStatus

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Gateway Command Status MessageGatewayCommandStatusMesssage

    A message to send the status of the gateway command execution to the cloud

    Message IDGatewayCommandStatusMesssage
    object

    Examples

  • SEND u/{companyId}/{deviceId}/escrow_request

    Send the escrow request to the cloud.

    Operation IDSendEscrowRequest

    Available only on servers:

    object
    companyId
    required
    string

    The ID of the company which the device belongs to.

    deviceId
    required
    string

    The unique ID of the device.

    object

    Accepts the following message:

    Escrow Request MessageEscrowRequestMessage

    This message device sent to EdgeIQ cloud to start the escrow flow.

    Message IDEscrowRequestMessage
    Payload
    string

    empty body

    Examples

Messages

  • #1Gateway Command MessageGatewayCommandMessage

    This message is sent to the device when a gateway command is issued in the EdgeIQ cloud.

    Message IDGatewayCommandMessage
    object
  • #2User-Defined Command MessageUserDefinedCommandMessage

    This message is sent to the device when a user-defined command is issued in the EdgeIQ cloud.

    Message IDUserDefinedCommandMessage
    restricted any
  • #3Terminal Control MessageTerminalControlMessage

    A message to control the terminal

    Message IDTerminalControlMessage
    object
  • #4Terminal Data MessageTerminalDataMessage

    A message containing terminal data

    Message IDTerminalDataMessage
    Payload
    string
    format: binary

    Binary data for the terminal

  • #5Error MessageErrorMessage

    A message containing error data

    Message IDErrorMessage
    object
  • #6Command Execution Status MessageCommandExecutionStatusMessage

    A message containing terminal data

    Message IDCommandExecutionStatusMessage
    object
  • #7Device Heartbeat MessageHeartbeatMessage

    A message the device sends to the cloud to report its operational metrics. Note that numerical values submitted as strings.

    Message IDHeartbeatMessage
    object
  • #8Device Report MessageReportMessage

    A message containing device report data

    Message IDReportMessage
    object
  • #9Send Status MessageStatusMessage

    A message to send the status of the device to the cloud

    Message IDStatusMessage
    object
  • #10Upstream Action MessageUpstreamActionMessage

    A message to send an action to the cloud

    Message IDUpstreamActionMessage
    object
  • #11Gateway Config Request MessageGatewayConfigRequestMessage

    A message to request the gateway configuration

    Message IDGatewayConfigRequestMessage
    object
  • #12Self Reported Setting MessageSelfReportedSettingMessage

    A message to send the self-reported setting to the cloud

    Message IDSelfReportedSettingMessage
    object allOf
  • #13Gateway Command Status MessageGatewayCommandStatusMesssage

    A message to send the status of the gateway command execution to the cloud

    Message IDGatewayCommandStatusMesssage
    object
  • #14Escrow MessageEscrowMessage

    This message sent to the device when a escrow is flow execution starter in the EdgeIQ cloud.

    Message IDEscrowMessage
    Payload
    string

    The Company ID

  • #15Escrow Request MessageEscrowRequestMessage

    This message device sent to EdgeIQ cloud to start the escrow flow.

    Message IDEscrowRequestMessage
    Payload
    string

    empty body

Schemas

  • object
  • object [GatewayCommandSchedule]

    GatewayCommandSchedules define when a GatewayCommand can be executed. Note that this currently applies only to software update type gateway commands.

  • object [Retry Options]

    Options for retryable actions, e.g. gateway commands and commands. If null command will not be retried.

  • restricted any
  • TerminalMessageType
    string
      Allowed values:
    • "cc"
    • "cr"
    • "i"
    • "o"
  • TerminalMessageSubType
    string
      Allowed values:
    • "ping"
    • "pong"
    • "resize"
    • "status"
  • TerminalCmdStatus
    string
      Allowed values:
    • "success"
    • "fail"
  • object
  • object
  • object
  • object
  • object
  • TerminalStatus
    string
      Allowed values:
    • "exited"
    • "killed"
    • "crashed"
    • "hanging"
    • "running"
    • "disconnected"
  • object
  • object
  • object allOf
  • object allOf
  • object
  • OriginType
    string
      Allowed values:
    • "edge"
    • "cloud"
    • "aws"
    • "all"
    • ""
  • object
  • object
  • object
  • object
  • object
  • ProvisionStatusType
    string
      Allowed values:
    • "in_progress"
    • "completed"
    • "error"
  • DeviceHealthStatus
    string
      Allowed values:
    • "normal"
    • "needs_attention"
    • "critical"
    • ""
  • HeartbeatStatusType
    string
      Allowed values:
    • "online"
    • "offline"
    • "idle"
    • "never_reported"
    • ""
  • LogLevel
    string
      Allowed values:
    • "trace"
    • "debug"
    • "info"
    • "warn"
    • "error"
    • "critical"
  • object
  • object