Commanding Feature – Samples for Publishing MQTT commands to agents¶
Commanding Feature is a service that provides the APIs to manage delivery jobs to send commands to MQTT agents for execution. The examples below exemplify how to use the provided endpoints:
Prerequisites¶
- Onboard a core.mcmqttagent. For more information, refer to Onboarding MindConnect MQTT Agent.
- Agent must subscribe to a corresponding MQTT topic. For instructions to configure MQTT agents, refer Commanding Feature Async API specifications.
Creating a delivery job¶
The Commanding feature provides functionality for sending MQTT command to a list of agents for execution.
The following validations are performed when a delivery job is created:
- The provided list of agents must be valid.
- Maximum number of agents can be 20 in a delivery job.
- Data size is restricted to 4KB.
A command is sent using the following endpoint:
POST/deliveryJobs
Sample Request:
{
  "name": "firmware update",
  "clientIds": [
    "mytenant_201541ad38a4495a96e2021c762b647f"
  ],
  "data": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "createdBy": "user@mailId.com"
}
Sample Response:
{
  "id": "21349765fe45652c8e126814c283a114",
  "name": "firmware update",
  "clientIds": [
    "mytenant_201541ad38a4495a96e2021c762b647f"
  ],
  "tenantId": "mytenant",
  "status": "EXECUTING",
  "data": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "createdAt": "2011-08-12T20:17:46.384Z",
  "createdBy": "user@mailId.com"
}
The ID generated tenantId is referenced further to get, delete a delivery job and get all commands for a given delivery job.
For more information, refer Commanding Feature Sync API specifications.
Listing all delivery jobs¶
Use the following endpoint to list all delivery Jobs:
GET/deliveryJobs
Sample Response:
{
  "_embedded": {
    "deliveryJobs": [
      {
        "id": "21349765fe45652c8e126814c283a114",
        "name": "firmware update",
        "status": "EXECUTING",
        "createdAt": "2011-08-12T20:17:46.384Z"
      }
    ]
  },
  "page": {
    "size": 0,
    "totalElements": 0,
    "totalPages": 0,
    "number": 0
  },
  "_links": {
    "self": {
      "href": "string"
    },
    "first": {
      "href": "string"
    },
    "prev": {
      "href": "string"
    },
    "next": {
      "href": "string"
    },
    "last": {
      "href": "string"
    }
  }
}
For more information, refer Commanding Feature Sync API specifications.
Managing delivery jobs¶
Here, tenantId, the id generated while Creating a delivery job is used.
- Use the following endpoint to get a delivery job: - GET/deliveryJobs/{id}
- Use the following endpoint to delete a delivery job: - DELETE/deliveryJobs/{id}
- Use the following endpoint to get the all the commands for a given delivery job: - GET/deliveryJobs/{id}/commands
- Use the following endpoint to get the command associated with a delivery job by command id: 
GET/deliveryJobs/{id}/commands/{commandId}
For more information, refer Commanding Feature Sync API specifications.