更新时间:2024-10-23 GMT+08:00

修改产品

功能介绍

应用服务器可调用此接口修改已导入物联网平台的指定产品模型,包括产品模型的服务、属性、命令等。此接口仅修改了产品,未修改和安装插件,如果修改了产品中的service定义,且在平台中有对应的插件,请修改并重新安装插件。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

PUT /v5/iot/{project_id}/products/{product_id}

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数说明:项目ID。获取方法请参见 获取项目ID

product_id

String

参数说明:产品ID,用于唯一标识一个产品,在物联网平台创建产品后由平台分配获得。

取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证

Instance-Id

String

参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考 查看实例详情

表3 请求Body参数

参数

是否必选

参数类型

描述

app_id

String

参数说明:资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,建议携带该参数,指定要修改的产品属于哪个资源空间;若不携带,则优先修改默认资源空间下产品,如默认资源空间下无对应产品,则按照产品创建时间修改最早创建产品。如果用户存在多资源空间,同时又不想携带该参数,可以联系华为技术支持对用户数据做资源空间合并。

取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。

name

String

参数说明:产品名称。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

device_type

String

参数说明:设备类型。

取值范围:长度不超过32,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

protocol_type

String

参数说明:设备使用的协议类型。注:禁止其他协议类型修改为CoAP。

取值范围:MQTT,CoAP,HTTP,HTTPS,Modbus,ONVIF,OPC-UA,OPC-DA,TCP,UDP,Other。

data_format

String

参数说明:设备上报数据的格式。

取值范围

  • json:JSON格式

  • binary:二进制码流格式

service_capabilities

Array of ServiceCapability objects

参数说明:设备的服务能力列表。

manufacturer_name

String

参数说明:厂商名称。

取值范围:长度不超过32,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

industry

String

参数说明:设备所属行业。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

description

String

参数说明:产品的描述信息。

取值范围:长度不超过128,只允许中文、字母、数字、空白字符、以及_?'#().,;&%@!- ,、:;。¥$!【】’‘“”()?…~/等字符的组合。

表4 ServiceCapability

参数

是否必选

参数类型

描述

service_id

String

参数说明:设备的服务ID。注:产品内不允许重复。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-$等字符的组合。

service_type

String

参数说明:设备的服务类型。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-$等字符的组合。

properties

Array of ServiceProperty objects

参数说明:设备服务支持的属性列表。

取值范围:数组长度大小不超过500。

commands

Array of ServiceCommand objects

参数说明:设备服务支持的命令列表。

取值范围:数组长度大小不超过500。

events

Array of ServiceEvent objects

参数说明:设备服务支持的事件列表。目前暂未支持自定义事件,创建/修改产品时无需定义该字段。

取值范围:数组长度大小不超过500。

description

String

参数说明:设备服务的描述信息。

取值范围:长度不超过128,只允许中文、字母、数字、空白字符、以及_?'#().,;&%@!- ,、:;。¥$!【】’‘“”()?…~/等字符的组合。

option

String

参数说明:指定设备服务是否必选。目前本字段为非功能性字段,仅起到标识作用。

取值范围

  • Master:主服务

  • Mandatory:必选服务

  • Optional:可选服务

    默认值为Optional。

表5 ServiceProperty

参数

是否必选

参数类型

描述

property_name

String

参数说明:设备属性名称。注:设备服务内不允许重复。属性名称作为设备影子JSON文档中的key不支持特殊字符:点(.)、dollar符号($)、空char(十六进制的ASCII码为00),如果包含了以上特殊字符则无法正常刷新影子文档。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

data_type

String

参数说明:设备属性的数据类型。

取值范围:int,long,decimal,string,DateTime,jsonObject,enum,boolean,string list。

required

Boolean

参数说明:设备属性是否必选。默认为false。

enum_list

Array of strings

参数说明:设备属性的枚举值列表。

min

String

参数说明:设备属性的最小值。

取值范围:长度1-16。

max

String

参数说明:设备属性的最大值。

取值范围:长度1-16。

max_length

Integer

参数说明:设备属性的最大长度。

step

Double

参数说明:设备属性的步长。

unit

String

参数说明:设备属性的单位。

取值范围:长度不超过16。

method

String

参数说明:设备属性的访问模式。

取值范围:RWE,RW,RE,WE,E,W,R。

  • R:属性值可读

  • W:属性值可写

  • E:属性值可订阅,即属性值变化时上报事件

description

String

参数说明:设备属性的描述。

取值范围:长度不超过128,只允许中文、字母、数字、空白字符、以及_?'#().,;&%@!- ,、:;。¥$!【】’‘“”()?…~/等字符的组合。

default_value

Object

参数说明:设备属性的默认值。如果设置了默认值,使用该产品创建设备时,会将该属性的默认值写入到该设备的设备影子预期数据中,待设备上线时将该属性默认值下发给设备。

表6 ServiceCommand

参数

是否必选

参数类型

描述

command_name

String

参数说明:设备命令名称。注:设备服务内不允许重复。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

paras

Array of ServiceCommandPara objects

参数说明:设备命令的参数列表。

responses

Array of ServiceCommandResponse objects

参数说明:设备命令的响应列表。

表7 ServiceCommandResponse

参数

是否必选

参数类型

描述

response_name

String

参数说明:设备命令响应名称。

取值范围:长度不超过128,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

paras

Array of ServiceCommandPara objects

参数说明:设备命令响应的参数列表。

表8 ServiceEvent

参数

是否必选

参数类型

描述

event_type

String

参数说明:设备事件类型。注:设备服务内不允许重复。

取值范围:长度不超过32,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

paras

Array of ServiceCommandPara objects

参数说明:设备事件的参数列表。

表9 ServiceCommandPara

参数

是否必选

参数类型

描述

para_name

String

参数说明:参数的名称。

取值范围:长度不超过32,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

data_type

String

参数说明:参数的数据类型。

取值范围:int,long,decimal,string,DateTime,jsonObject,enum,boolean,string list。

required

Boolean

参数说明:参数是否必选。默认为false。

enum_list

Array of strings

参数说明:参数的枚举值列表。

min

String

参数说明:参数的最小值。

取值范围:长度1-16。

max

String

参数说明:参数的最大值。

取值范围:长度1-16。

max_length

Integer

参数说明:参数的最大长度。

step

Double

参数说明:参数的步长。

unit

String

参数说明:参数的单位。

取值范围:长度不超过16。

description

String

参数说明:参数的描述。

取值范围:长度不超过128,只允许中文、字母、数字、空白字符、以及_?'#().,;&%@!- ,、:;。¥$!【】’‘“”()?…~/等字符的组合。

响应参数

状态码: 200

表10 响应Body参数

参数

参数类型

描述

app_id

String

资源空间ID。

app_name

String

资源空间名称。

product_id

String

产品ID,用于唯一标识一个产品,在物联网平台创建产品后由平台分配获得。

name

String

产品名称。

device_type

String

设备类型。

protocol_type

String

设备使用的协议类型。取值范围:MQTT,CoAP,HTTP,HTTPS,Modbus,ONVIF, OPC-UA,OPC-DA,TCP,UDP,Other。

data_format

String

设备上报数据的格式,取值范围:json,binary。

manufacturer_name

String

厂商名称。

industry

String

设备所属行业。

description

String

产品的描述信息。

service_capabilities

Array of ServiceCapability objects

设备的服务能力列表。

create_time

String

在物联网平台创建产品的时间,格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。

表11 ServiceCapability

参数

参数类型

描述

service_id

String

参数说明:设备的服务ID。注:产品内不允许重复。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-$等字符的组合。

service_type

String

参数说明:设备的服务类型。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-$等字符的组合。

properties

Array of ServiceProperty objects

参数说明:设备服务支持的属性列表。

取值范围:数组长度大小不超过500。

commands

Array of ServiceCommand objects

参数说明:设备服务支持的命令列表。

取值范围:数组长度大小不超过500。

events

Array of ServiceEvent objects

参数说明:设备服务支持的事件列表。目前暂未支持自定义事件,创建/修改产品时无需定义该字段。

取值范围:数组长度大小不超过500。

description

String

参数说明:设备服务的描述信息。

取值范围:长度不超过128,只允许中文、字母、数字、空白字符、以及_?'#().,;&%@!- ,、:;。¥$!【】’‘“”()?…~/等字符的组合。

option

String

参数说明:指定设备服务是否必选。目前本字段为非功能性字段,仅起到标识作用。

取值范围

  • Master:主服务

  • Mandatory:必选服务

  • Optional:可选服务

    默认值为Optional。

表12 ServiceProperty

参数

参数类型

描述

property_name

String

参数说明:设备属性名称。注:设备服务内不允许重复。属性名称作为设备影子JSON文档中的key不支持特殊字符:点(.)、dollar符号($)、空char(十六进制的ASCII码为00),如果包含了以上特殊字符则无法正常刷新影子文档。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

data_type

String

参数说明:设备属性的数据类型。

取值范围:int,long,decimal,string,DateTime,jsonObject,enum,boolean,string list。

required

Boolean

参数说明:设备属性是否必选。默认为false。

enum_list

Array of strings

参数说明:设备属性的枚举值列表。

min

String

参数说明:设备属性的最小值。

取值范围:长度1-16。

max

String

参数说明:设备属性的最大值。

取值范围:长度1-16。

max_length

Integer

参数说明:设备属性的最大长度。

step

Double

参数说明:设备属性的步长。

unit

String

参数说明:设备属性的单位。

取值范围:长度不超过16。

method

String

参数说明:设备属性的访问模式。

取值范围:RWE,RW,RE,WE,E,W,R。

  • R:属性值可读

  • W:属性值可写

  • E:属性值可订阅,即属性值变化时上报事件

description

String

参数说明:设备属性的描述。

取值范围:长度不超过128,只允许中文、字母、数字、空白字符、以及_?'#().,;&%@!- ,、:;。¥$!【】’‘“”()?…~/等字符的组合。

default_value

Object

参数说明:设备属性的默认值。如果设置了默认值,使用该产品创建设备时,会将该属性的默认值写入到该设备的设备影子预期数据中,待设备上线时将该属性默认值下发给设备。

表13 ServiceCommand

参数

参数类型

描述

command_name

String

参数说明:设备命令名称。注:设备服务内不允许重复。

取值范围:长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

paras

Array of ServiceCommandPara objects

参数说明:设备命令的参数列表。

responses

Array of ServiceCommandResponse objects

参数说明:设备命令的响应列表。

表14 ServiceCommandResponse

参数

参数类型

描述

response_name

String

参数说明:设备命令响应名称。

取值范围:长度不超过128,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

paras

Array of ServiceCommandPara objects

参数说明:设备命令响应的参数列表。

表15 ServiceEvent

参数

参数类型

描述

event_type

String

参数说明:设备事件类型。注:设备服务内不允许重复。

取值范围:长度不超过32,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

paras

Array of ServiceCommandPara objects

参数说明:设备事件的参数列表。

表16 ServiceCommandPara

参数

参数类型

描述

para_name

String

参数说明:参数的名称。

取值范围:长度不超过32,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。

data_type

String

参数说明:参数的数据类型。

取值范围:int,long,decimal,string,DateTime,jsonObject,enum,boolean,string list。

required

Boolean

参数说明:参数是否必选。默认为false。

enum_list

Array of strings

参数说明:参数的枚举值列表。

min

String

参数说明:参数的最小值。

取值范围:长度1-16。

max

String

参数说明:参数的最大值。

取值范围:长度1-16。

max_length

Integer

参数说明:参数的最大长度。

step

Double

参数说明:参数的步长。

unit

String

参数说明:参数的单位。

取值范围:长度不超过16。

description

String

参数说明:参数的描述。

取值范围:长度不超过128,只允许中文、字母、数字、空白字符、以及_?'#().,;&%@!- ,、:;。¥$!【】’‘“”()?…~/等字符的组合。

请求示例

修改一个产品,将产品名称修改为Thermometer,服务能力修改为temperature。

PUT https://{endpoint}/v5/iot/{project_id}/products/{product_id}

{
  "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka",
  "name" : "Thermometer,",
  "device_type" : "Thermometer",
  "protocol_type" : "MQTT",
  "data_format" : "json",
  "service_capabilities" : [ {
    "service_id" : "temperature。",
    "service_type" : "temperature",
    "properties" : [ {
      "property_name" : "temperature",
      "data_type" : "decimal",
      "required" : true,
      "enum_list" : null,
      "min" : "1",
      "max" : "100",
      "max_length" : 100,
      "step" : 0.1,
      "unit" : "centigrade",
      "method" : "RW",
      "description" : "force",
      "default_value" : {
        "color" : "red",
        "size" : 1
      }
    } ],
    "commands" : [ {
      "command_name" : "reboot",
      "paras" : [ {
        "para_name" : "force",
        "data_type" : "string",
        "required" : false,
        "enum_list" : null,
        "min" : "1",
        "max" : "100",
        "max_length" : 100,
        "step" : 0.1,
        "unit" : "km/h",
        "description" : "force"
      } ],
      "responses" : [ {
        "response_name" : "ACK",
        "paras" : [ {
          "para_name" : "force",
          "data_type" : "string",
          "required" : false,
          "enum_list" : null,
          "min" : "1",
          "max" : "100",
          "max_length" : 100,
          "step" : 0.1,
          "unit" : "km/h",
          "description" : "force"
        } ]
      } ]
    } ],
    "events" : [ {
      "event_type" : "reboot",
      "paras" : [ {
        "para_name" : "force",
        "data_type" : "string",
        "required" : false,
        "enum_list" : null,
        "min" : "1",
        "max" : "100",
        "max_length" : 100,
        "step" : 0.1,
        "unit" : "km/h",
        "description" : "force"
      } ]
    } ],
    "description" : "temperature",
    "option" : "Mandatory"
  } ],
  "manufacturer_name" : "ABC",
  "industry" : "smartCity",
  "description" : "this is a thermometer produced by Huawei"
}

响应示例

状态码: 200

Successful response

{
  "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka",
  "app_name" : "testAPP01",
  "product_id" : "5ba24f5ebbe8f56f5a14f605",
  "name" : "Thermometer",
  "device_type" : "Thermometer",
  "protocol_type" : "MQTT",
  "data_format" : "json",
  "manufacturer_name" : "ABC",
  "industry" : "smartCity",
  "description" : "this is a thermometer produced by Huawei",
  "service_capabilities" : [ {
    "service_id" : "temperature",
    "service_type" : "temperature",
    "properties" : [ {
      "property_name" : "temperature",
      "required" : true,
      "data_type" : "decimal",
      "enum_list" : null,
      "min" : "1",
      "max" : "100",
      "max_length" : 100,
      "step" : 0.1,
      "unit" : "centigrade",
      "method" : "RW",
      "description" : "force",
      "default_value" : {
        "color" : "red",
        "size" : 1
      }
    } ],
    "commands" : [ {
      "command_name" : "reboot",
      "paras" : [ {
        "para_name" : "force",
        "required" : false,
        "data_type" : "string",
        "enum_list" : null,
        "min" : "1",
        "max" : "100",
        "max_length" : 100,
        "step" : 0.1,
        "unit" : "km/h",
        "description" : "force"
      } ],
      "responses" : [ {
        "response_name" : "ACK",
        "paras" : [ {
          "para_name" : "force",
          "required" : false,
          "data_type" : "string",
          "enum_list" : null,
          "min" : "1",
          "max" : "100",
          "max_length" : 100,
          "step" : 0.1,
          "unit" : "km/h",
          "description" : "force"
        } ]
      } ]
    } ],
    "events" : [ {
      "event_type" : "reboot",
      "paras" : [ {
        "para_name" : "force",
        "required" : false,
        "data_type" : "string",
        "enum_list" : null,
        "min" : "1",
        "max" : "100",
        "max_length" : 100,
        "step" : 0.1,
        "unit" : "km/h",
        "description" : "force"
      } ]
    } ],
    "description" : "temperature",
    "option" : "Mandatory"
  } ],
  "create_time" : "20190303T081011Z"
}

状态码

状态码

描述

200

Successful response

400

Bad Request

401

Unauthorized

403

FORBIDDEN

404

Not Found

500

Internal Server Error

错误码

请参见错误码