
# 设备变更通知
#### 功能介绍
应用服务器在调用设施云平台的创建规则触发条件（Resource:device，Event:create）、创建规则动作、修改规则触发条件接口配置并激活规则后，当在设施云平台添加新设备时，设施云平台会向应用服务器推送通知消息。
#### URI
POST /应用服务器创建设备变更通知规则时的Url决定
#### 请求参数
表1请求Body参数 
| 参数          | 是否必选 | 参数类型                                                                                                                 | 描述                                                                                                                                |
|:---|:---|:---|:---|
| resource    | 是    | String                                                                                                               | **参数说明**：订阅的资源名称。 **取值范围**：device。                                                        |
| event       | 是    | String                                                                                                               | **参数说明**：订阅的资源事件。 **取值范围**：change。                                                          |
| event_time  | 是    | String                                                                                                               | **参数说明**：设备信息变更事件生成时间。 **取值范围**：格式为yyyy-MM-dd'T'HH:mm:ss.SSS'Z'，例如2023-08-04T10:01:59.815Z。 |
| notify_data | 是    | [DeviceChangeNotifyData] object | **参数说明**：推送消息。                                                                                                                    |
   
 表2DeviceChangeNotifyData 
| 参数     | 是否必选 | 参数类型                                                                                                                             | 描述                   |
|:---|:---|:---|:---|
| header | 是    | [DeviceChangeNotifyDataHeader] object | **参数说明**：推送消息header。 |
| body   | 是    | [DeviceChangeInfo] object                         | **参数说明**：推送消息body。   |
   
 表3DeviceChangeNotifyDataHeader 
| 参数          | 是否必选 | 参数类型   | 描述                                                                                                         |
|:---|:---|:---|:---|
| instance_id | 否    | String | **参数说明**：实例ID。 **取值范围**：长度为8-32的字符串。                               |
| device_id   | 否    | String | **参数说明**：设备ID，用于唯一标识一个设备，在注册设备时由设施云平台分配获得。 **取值范围**：长度不超过256的字符串。 |
| product_id  | 否    | String | **参数说明**：设备所属的产品ID。 **取值范围**：长度不超过36的字符串。                          |
   
 表4DeviceChangeInfo 
| 参数                 | 是否必选 | 参数类型                                                                                                     | 描述                                                                                               |
|:---|:---|:---|:---|
| change_type        | 是    | String                                                                                                   | **参数说明**：变更类型。 **取值范围**：create：创建，update：更新，delete：删除。 |
| device_create_info | 否    | [DeviceInfo] object             | **参数说明**：设备创建信息。                                                                                 |
| device_update_info | 否    | [DeviceInfo] object             | **参数说明**：设备更新信息。                                                                                 |
| device_delete_info | 否    | [DeviceDeleteInfo] object | **参数说明**：设备删除信息。                                                                                 |
   
 表5DeviceInfo 
| 参数                 | 是否必选 | 参数类型                                                                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| zone_id            | 否    | String                                                                                                     | **参数说明**：区域ID。 **取值范围**：长度不超过24，只允许字母、数字的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| zone_name          | 否    | String                                                                                                     | **参数说明**：区域名称。 **取值范围**：长度不超过64的字符串。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| product_id         | 否    | String                                                                                                     | **参数说明**：产品ID。 **取值范围**：长度不超过36，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| product_name       | 否    | String                                                                                                     | **参数说明**：产品名称。 **取值范围**：长度不超过64的字符串。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| device_id          | 否    | String                                                                                                     | **参数说明**：设备ID。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| gateway_id         | 否    | String                                                                                                     | **参数说明**：网关设备ID。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| parent_device_id   | 否    | String                                                                                                     | **参数说明**：父设备ID。用于标识设备所属的父设备，即父设备的设备ID。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| node_id            | 否    | String                                                                                                     | **参数说明**：设备标识码，通常使用IMEI、MAC地址或SN号作为node_id。 **取值范围**：长度不超过64，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| device_name        | 否    | String                                                                                                     | **参数说明**：设备名称。 **取值范围**：长度不超过64，只允许中文、字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| device_description | 否    | String                                                                                                     | **参数说明**：设备描述。 **取值范围**：长度不超过256，只允许中文、字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| device_status      | 否    | String                                                                                                     | **参数说明**：设备状态。 **取值范围**： - ONLINE：设备在线。   - OFFLINE：设备离线。   - ABNORMAL：设备异常。   - INACTIVE：设备未激活。   - FROZEN：设备冻结。    |
| manufacturer_info  | 否    | [ManufacturerInfo] object   | **参数说明**：厂商信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| device_type        | 否    | String                                                                                                     | **参数说明**：设备类型。 **取值范围**：VIDEO-摄像头类 SCREEN-智慧屏类 IOTDA-云端物联网类 IOTEDGE-边侧物联网类。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| device_sub_type    | 否    | String                                                                                                     | **参数说明**：设备子类型。 **取值范围**：仅当device_type为IOTEDGE时填写，GATEWAY表示网关类型，ELEC表示机电设备。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| create_time        | 否    | String                                                                                                     | **参数说明**：创建时间。 **取值范围**："yyyy-MM-dd''T''HH:mm:ss.SSS''Z''"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| spec_properties    | 否    | Array of [SpecProperty] objects | **参数说明**：设备规格属性列表。 **取值范围**：数组长度不超过100。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
 表6ManufacturerInfo 
| 参数                | 是否必选 | 参数类型   | 描述                                                                                                          |
|:---|:---|:---|:---|
| manufacturer_name | 否    | String | **参数说明**：设备厂商。 **取值范围**：长度不超过32，只允许中文、字母、数字、以及_?'#().,\&%@!-字符的组合。    |
| manufacturer_code | 否    | String | **参数说明**：设备厂商编码。 **取值范围**：长度不超过32，只允许字母、数字、以及_-字符的组合。                |
| model             | 否    | String | **参数说明**：设备型号。 **取值范围**：长度不超过32，只允许中文、字母、数字、以及_?'#().,\&%@!-字符的组合。 |
   
 表7SpecProperty 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                           |
|:---|:---|:---|:---|
| property_code  | 是    | String | **参数说明**：属性编码。 **取值范围**：长度不超过40，只允许英文字母大小写、数字、下划线的组合。 |
| property_value | 是    | Object | **参数说明**：属性值。                                                                                |
   
 表8DeviceDeleteInfo 
| 参数          | 是否必选 | 参数类型   | 描述                                                                                           |
|:---|:---|:---|:---|
| device_id   | 否    | String | **参数说明**：设备ID。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。 |
| device_name | 否    | String | **参数说明**：设备名称。 **取值范围**：长度不超过64，只允许中文、字母、数字、以及_-字符的组合。 |
   
#### 响应参数
**状态码：200**
表9响应Body参数 
| 参数 | 参数类型   | 描述 |
|:---|:---|:---|
| -  | String | -  |
   
**状态码：400**
表10响应Body参数 
| 参数         | 参数类型   | 描述                                                                       |
|:---|:---|:---|
| error_code | String | **参数说明**：错误码。 **取值范围**：长度8-36。   |
| error_msg  | String | **参数说明**：错误描述。 **取值范围**：长度2-512。 |
   
#### 请求示例
```
{
  "resource" : "device",
  "event" : "change",
  "event_time" : "2023-08-04T10:01:59.815Z",
  "notify_data" : {
    "header" : {
      "instance_id" : "616c70686100000000000001",
      "device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
      "product_id" : "ABC123456789"
    },
    "body" : {
      "change_type" : "create",
      "device_create_info" : {
        "zone_id" : "26087212bc75410c9ad77163",
        "zone_name" : "天安云谷旗舰店",
        "product_id" : "b640f4c203b7910fc3cbd446ed437cbd",
        "product_name" : "智慧屏",
        "device_id" : "16087212bc75410c9ad77163b4cf6aba",
        "gateway_id" : "d4922d8a6c8e4396852c164aefa6638f",
        "parent_device_id" : "d4922d8a6c8e4396852c164aefa6638f",
        "node_id" : "ABC123456789",
        "device_name" : "智慧屏",
        "device_description" : "智慧屏",
        "device_status" : "INACTIVE",
        "manufacturer_info" : {
          "manufacturer_name" : "厂商",
          "manufacturer_code" : "A",
          "model" : "MATE50"
        },
        "device_type" : "IOTDA",
        "device_sub_type" : "GATEWAY",
        "create_time" : "2022-12-26T01:52:49.368Z",
        "spec_properties" : [ {
          "property_code" : "temperature",
          "property_value" : 30
        } ]
      }
    }
  }
}
```
-
  ```
  {
    "resource" : "device",
    "event" : "change",
    "event_time" : "2023-08-04T10:01:59.815Z",
    "notify_data" : {
      "header" : {
        "instance_id" : "616c70686100000000000001",
        "device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
        "product_id" : "ABC123456789"
      },
      "body" : {
        "change_type" : "update",
        "device_update_info" : {
          "zone_id" : "26087212bc75410c9ad77163",
          "zone_name" : "天安云谷旗舰店",
          "product_id" : "b640f4c203b7910fc3cbd446ed437cbd",
          "product_name" : "智慧屏",
          "device_id" : "16087212bc75410c9ad77163b4cf6aba",
          "gateway_id" : "d4922d8a6c8e4396852c164aefa6638f",
          "parent_device_id" : "d4922d8a6c8e4396852c164aefa6638f",
          "node_id" : "ABC123456789",
          "device_name" : "智慧屏",
          "device_description" : "智慧屏",
          "device_status" : "INACTIVE",
          "manufacturer_info" : {
            "manufacturer_name" : "厂商",
            "manufacturer_code" : "A",
            "model" : "MATE50"
          },
          "device_type" : "IOTDA",
          "device_sub_type" : "GATEWAY",
          "create_time" : "2022-12-26T01:52:49.368Z",
          "spec_properties" : [ {
            "property_code" : "temperature",
            "property_value" : 30
          } ]
        }
      }
    }
  }
  ```
  
-
  ```
  {
    "resource" : "device",
    "event" : "change",
    "event_time" : "2023-08-04T10:01:59.815Z",
    "notify_data" : {
      "header" : {
        "instance_id" : "616c70686100000000000001",
        "device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
        "product_id" : "ABC123456789"
      },
      "body" : {
        "change_type" : "delete"
      }
    }
  }
  ```
  
 
#### 响应示例
**状态码：200**
OK
```
{
  "result" : "success"
}
```
#### 状态码
| 状态码 | 描述          |
|:---|:---|
| 200 | OK          |
| 400 | Bad Request |
   
