Creating a Device
Function
Creating a Device
URI
POST /v2/{project_id}/link/instances/{instance_id}/devices
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| project_id | Yes | String | Project ID. The default value is default for compatibility with 20.0.Project ID. For details about how to get the project ID, see "Appendix" > "Obtaining a Project ID" in this document. |
| instance_id | Yes | String | Instance ID. The default value is default for compatibility with 20.0. |
Request Parameters
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| X-Auth-Token | Yes | String | User token. It can be obtained by calling the IAM API. The value of X-Subject-Token in the response header is the user token. |
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| parent_device_id | No | Integer | Parent device ID. If there is no parent device, this parameter is left empty and the value is automatically rounded down. |
| product | Yes | ProductReferer object | Product. |
| password | No | String | Device password. The password must contain 8 to 32 characters, including at least one digit, one uppercase letter, one lowercase letter, and one special character (~!@#$%^&*()-_=+|[{}];:<>/?). |
| user_name | No | String | Device user name, which is a string of 10 to 50 characters containing letters, hyphens (-), and digits. |
| device_name | Yes | String | Device name. The value is a string of 2 to 64 characters, which can contain letters, digits, and the following special characters: ()_,#.?''-@%&!, |
| node_id | Yes | String | Physical number of a device. The value is a string of 2 to 64 characters, which can contain only letters, digits, underscores (_), and hyphens (-). Generally, the MAC address or IMEI is used. |
| app_id | Yes | String | Application ID. |
| status | No | Integer | Device status. The options are as follows: 0 (enabled) and 1 (disabled). If this parameter is left empty, the default value 0 is used. |
| description | No | String | Description. |
| tags | No | Array of strings | Tag. |
| groups | No | Array of integers | ID of the device group to which a device belongs. |
| fingerprint | No | String | Certificate thumbprint |
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| product_id | No | Integer | Product ID. The product ID is mandatory if the manufacturer ID and model are not set. |
| product_name | No | String | Product name. |
| manufacturer_id | No | String | Manufacturer ID. If the product ID is not specified, the manufacturer ID and model are mandatory. |
| model | No | String | Model. If the product ID is not specified, the manufacturer ID and model are mandatory. |
| protocol_type | No | Integer | Protocol type of the product. 0: mqtt 1: CoAP 2: modbus 4: opcua 5: extended protocol |
| product_type | No | Integer | Product type. The options are as follows: 0: common; 1: gateway. |
| extend_protocol_name | No | String | Extended protocol name. |
Response Parameters
Status code: 201
| Parameter | Type | Description |
|---|---|---|
| permissions | Array of strings | Permission. |
| id | Integer | Device ID. |
| device_id | Integer | Device ID (compatible with 20.0). |
| product | ProductReferer object | Product. |
| device_name | String | Device name. The value is a string of 2 to 64 characters, which can contain letters, digits, and the following special characters: ()_,#.?''-@%&!, |
| instance_id | String | Instance ID. |
| client_id | String | Client ID, which is the unique device ID generated by the ROMA platform. |
| node_id | String | Physical number of a device. The value is a string of 2 to 64 characters, which can contain only letters, digits, underscores (_), and hyphens (-). Generally, the MAC address or IMEI is used. |
| app_name | String | Application name. |
| status | Integer | Device status. The options are as follows: 0: enabled; 1: disabled. |
| online_status | Integer | Connection status. The options are as follows: 0: disconnected; 1: online; 2: offline. |
| description | String | Description. |
| authentication | Authentication object | Authentication. |
| created_user | CreatedUser object | Name of the user who created the attribute. |
| last_updated_user | LastUpdatedUser object | User who performed the last update. |
| tags | Array of strings | Tag. |
| created_datetime | Long | Creation start time. The format is timestamp(ms) and the UTC time zone is used. |
| last_updated_datetime | Long | Last modification time (timestamp, in milliseconds). The UTC time zone is used. |
| connect_address | String | Device access address. |
| ssl_connect_address | String | Device access SSL address. |
| ipv6_connect_address | String | IPv6 address for device access. This parameter is valid only when IPv6 is enabled. |
| ipv6_ssl_connect_address | String | IPv6 SSL address for device access. This parameter is valid only when IPv6 is enabled. |
| node_type | Integer | Node type. The options are as follows: 0: direct connection; 1: gateway; 2: subdevice. |
| device_type | Integer | Device type: |
| app_id | String | Application ID. |
| groups | Array of integers | ID of the device group to which a device belongs. |
| group_names | Array of strings | Name of the device group to which the device belongs. |
| fingerprint | String | Certificate thumbprint |
| Parameter | Type | Description |
|---|---|---|
| product_id | Integer | Product ID. The product ID is mandatory if the manufacturer ID and model are not set. |
| product_name | String | Product name. |
| manufacturer_id | String | Manufacturer ID. If the product ID is not specified, the manufacturer ID and model are mandatory. |
| model | String | Model. If the product ID is not specified, the manufacturer ID and model are mandatory. |
| protocol_type | Integer | Protocol type of the product. 0: mqtt 1: CoAP 2: modbus 4: opcua 5: extended protocol |
| product_type | Integer | Product type. The options are as follows: 0: common; 1: gateway. |
| extend_protocol_name | String | Extended protocol name. |
| Parameter | Type | Description |
|---|---|---|
| user_name | String | One-model-one-secret or one-device-one-secret username. |
| password | String | One-model-one-secret or one-device-one-secret password. The password must contain 8 to 32 characters, including at least one digit, one uppercase letter, one lowercase letter, and one special character (~!@#$%^&*()-_=+|[{}];:<>/?). |
| Parameter | Type | Description |
|---|---|---|
| user_id | String | User ID (reserved). |
| user_name | String | Username. |
| Parameter | Type | Description |
|---|---|---|
| user_id | String | User ID (reserved). |
| user_name | String | Username. |
Status code: 400
| Parameter | Type | Description |
|---|---|---|
| error_code | String | System error code, which is the detailed error code of HTTP error codes 4xx and 5xx. |
| error_msg | String | Error description. |
| request_id | String | Message ID. |
Status code: 404
| Parameter | Type | Description |
|---|---|---|
| error_code | String | System error code, which is the detailed error code of HTTP error codes 4xx and 5xx. |
| error_msg | String | Error description. |
| request_id | String | Message ID. |
Status code: 500
| Parameter | Type | Description |
|---|---|---|
| error_code | String | System error code, which is the detailed error code of HTTP error codes 4xx and 5xx. |
| error_msg | String | Error description. |
| request_id | String | Message ID. |
Example Requests
Create a device with protocol type as MQTT, product type as common, and device status as enabled.
{
"parent_device_id" : 10001,
"product" : {
"product_id" : 10001,
"product_name" : "testproduct",
"manufacturer_id" : "test",
"model" : "mate30pro",
"protocol_type" : 0,
"product_type" : 0
},
"password" : "**********",
"device_name" : "device",
"node_id" : "D32145A100FF",
"app_id" : "ef3845be-091a-4ab5-869a-9de0025e2165",
"status" : 0,
"description" : "device",
"tags" : [ "tag1", "tag2" ]
} Example Responses
Status code: 201
Created
{
"permissions" : [ "read", "access", "delete", "modify" ],
"id" : 711537,
"device_id" : 711537,
"parent_device_id" : 711536,
"parent_device_name" : "parent-device",
"product" : {
"product_id" : 116303,
"product_name" : "p1",
"manufacturer_id" : "p1",
"model" : "p1",
"product_type" : 0,
"protocol_type" : 0
},
"device_name" : "device",
"instance_id" : "8993a690-cf61-46af-880d-587d823d14e5",
"client_id" : "D116303711537sGDtK",
"node_id" : "string",
"app_name" : "app",
"status" : 0,
"online_status" : 2,
"description" : "device",
"authentication" : {
"user_name" : "F01A8D25FE6E4CF5A286B711B31888AE",
"password" : "************************"
},
"created_user" : {
"user_id" : "",
"user_name" : "user"
},
"last_updated_user" : {
"user_id" : "",
"user_name" : "user"
},
"tags" : [ ],
"created_datetime" : 1607408244841,
"last_updated_datetime" : 1607422571094,
"connect_address" : "xx.xx.xx.xx",
"ssl_connect_address" : "xx.xx.xx.xx",
"ipv6_connect_address" : "xx.xx.xx.xx",
"ipv6_ssl_connect_address" : "xx.xx.xx.xx",
"node_type" : 0,
"device_type" : 0,
"app_id" : "cb4b3ec0-8f7f-432f-b05e-fc149d05da5d"
} Status code: 400
Bad Request
{
"error_code" : "SCB.00000000",
"error_msg" : "Parameter is not valid for operation [romalink.link-device.save]. Parameter is [parent_device_id]. Processor is [body].",
"request_id" : "cb39e78a-afd3-4e04-901d-70468b1c23dc-1619602712496-cnnorth7a-P-romalink-service01"
} Status code: 404
Not Found
{
"error_code" : "ROMA.00110006",
"error_msg" : "The resource does not exist. Check whether the resource ID ff38023c-0854-4779-847d-72528e1f5da1 is correct.",
"request_id" : "624c8be1-39b6-47b7-941d-c159aced368a-1619602544650-cnnorth7a-P-romalink-service01"
} Status code: 500
Internal Server Error
{
"error_code" : "ROMA.00110002",
"error_msg" : "The instance does not exist. project_id: 397cd10b30544c588b2f4a56d83856c4, instance_id: f3bb386a-23ec-47aa-9943-4c60ac658611",
"request_id" : "c8c06d0a-be92-4fdf-9d10-bc20131ab158-1619593104919-cnnorth7a-P-romalink-service01"
} Status Codes
| Status Code | Description |
|---|---|
| 201 | Created |
| 400 | Bad Request |
| 404 | Not Found |
| 500 | Internal Server Error |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.