Creating a Product
Function
Creating a Product
Authorization Information
Each account has all the permissions required to call all APIs, but IAM users must be assigned the required permissions. For details about the required permissions, see Permissions Policies and Supported Actions.
URI
POST /v2/{project_id}/link/instances/{instance_id}/products
|
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 |
|---|---|---|---|
|
app_id |
Yes |
String |
Application ID. |
|
name |
Yes |
String |
Product name, which is unique in a tenant. The value can contain a maximum of 64 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed. |
|
manufacturer_id |
Yes |
String |
Product manufacturer ID. |
|
manufacturer_name |
Yes |
String |
Manufacturer name. |
|
model |
Yes |
String |
Product model, which is a string of 2 to 50 characters containing letters, digits, underscores (_), hyphens (-), spaces, and periods (.). The spaces at the beginning or end of the value will be ignored. |
|
product_type |
Yes |
Integer |
Product type. 0: common product (subdevices are not supported) 1: gateway product |
|
description |
No |
String |
Product description, which contains a maximum of 200 characters. |
|
protocol_type |
Yes |
Integer |
Protocol type of the product. 0: mqtt 1: CoAP 2: modbus 4: opcua 5: extended protocol |
|
device_type |
No |
String |
Device type of a product. The default value is Default. |
|
template_id |
No |
Integer |
ID of the associated product template. This parameter must be specified if a product template is used to create a product. Otherwise, leave this parameter empty. The value is automatically rounded down. |
|
version |
No |
String |
Model version. |
|
data_format |
No |
Integer |
Product data format. 0: JSON 1: USER_DEFINED |
Response Parameters
Status code: 201
|
Parameter |
Type |
Description |
|---|---|---|
|
permissions |
Array of strings |
Permission. |
|
id |
Integer |
Product ID. |
|
product_serial |
String |
Unique sequence number of a product (unique value in the system, which is used to mark a product in the topic of MQS). |
|
app_id |
String |
Application ID. |
|
name |
String |
Product name, which is unique in a tenant. The value can contain a maximum of 64 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed. |
|
manufacturer_id |
String |
Product manufacturer ID. |
|
manufacturer_name |
String |
Manufacturer name. |
|
model |
String |
Product model. |
|
product_type |
Integer |
Product type. 0: common product (subdevices are not supported) 1: gateway product |
|
description |
String |
Product description, which contains a maximum of 200 characters. |
|
protocol_type |
Integer |
Protocol type of the product. 0: mqtt 1: CoAP 2: modbus 4: opcua 5: extended protocol |
|
device_type |
String |
Device type of a product. The default value is Default. |
|
version |
String |
Product version. |
|
created_user |
CreatedUser object |
Name of the user who created the attribute. |
|
last_updated_user |
LastUpdatedUser object |
User who performed the last update. |
|
authentication |
Authentication object |
Authentication. |
|
created_datetime |
Long |
Creation start time. The format is timestamp(ms) and the UTC time zone is used. |
|
app_name |
String |
Application name. |
|
data_format |
Integer |
data_format 0-JSON 1-USER_DEFINED |
|
template_id |
Integer |
Associated product template ID. |
|
template_name |
String |
Associated product template name. |
|
sync_template_date |
Long |
Time of the synchronization from a template. The format is timestamp (ms) and the UTC time zone is used. |
|
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. |
|
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 (~!@#$%^&*()-_=+|[{}];:<>/?). |
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 product with product type as common product, protocol type as MQTT, and product status as enabled.
{
"app_id" : "ef3845be-091a-4ab5-869a-9de0025e2165",
"name" : "device",
"manufacturer_id" : 10001,
"manufacturer_name" : "test",
"model" : "model1",
"product_type" : 0,
"protocol_type" : 0,
"status" : 0,
"device_type" : "Default"
}
Example Responses
Status code: 201
Created
{
"permissions" : [ "read", "access", "delete", "modify" ],
"id" : 120671,
"product_serial" : "Dd1bRt122894",
"app_id" : "a1503e51-46f7-4d23-8617-7cb2d28dde98",
"name" : "pro-opcua",
"manufacturer_id" : "pro-opcua",
"manufacturer_name" : "pro-opcua",
"model" : "pro-opcua",
"product_type" : 0,
"description" : "opcua product",
"protocol_type" : 4,
"device_type" : "default",
"version" : "version",
"status" : 0,
"created_datetime" : 1607481372416,
"last_updated_datetime" : 1607481372416,
"app_name" : "app-link",
"data_format" : 0,
"created_user" : {
"user_id" : "6546435432432",
"user_name" : "user1"
},
"last_updated_user" : {
"user_id" : "6546435432432",
"user_name" : "user1"
},
"authentication" : {
"user_name" : "4MjxbCl4q461",
"password" : "********"
}
}
Status code: 400
Bad Request
{
"error_code" : "ROMA.00110001",
"error_msg" : "The parameter does not meet verification rules: [name:Can not be empty, manufacturer_name:Can not be empty, manufacturer_id:Can not be empty, product_type:must not be null, app_id:must not be empty, model:Can not be empty]",
"request_id" : "b728949c-dfb5-4277-b54e-7c05e1b0b598-1619663322828-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-72528e1f5da5 is correct.",
"request_id" : "72b07918-f6a2-4721-81bf-f3fd5486025e-1619663576836-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.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot