
# 创建规则
#### 功能介绍
应用服务器可调用此接口在设施云平台创建一条规则触发条件。
#### URI
POST /v1/iotfm/rules
#### 请求参数
表1请求Header参数 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                                                                                              |
|:---|:---|:---|:---|
| X-Auth-Token   | 是    | String | **参数说明** ：用户Token。通过调用 [生成Token](https://support.huaweicloud.com/api-ocsmartcampus/ocsmartcampus_06_0008.html) 接口获取，接口返回的响应消息头中"X-Subject-Token"就是需要获取的用户Token。 |
| X-Instance-Id  | 是    | String | **参数说明**：实例ID。通过访问智能设施云平台界面后获取，智能设施云平台资源均为实例级隔离，所有业务接口必须填写正确的实例ID才能被成功调用。 **取值范围**：长度8-36，只允许大小写字母、数字和-字符的组合。           |
| X-Root-Zone-Id | 否    | String | **参数说明**：项目ID。 **取值范围**：长度不超过24，只允许字母、数字的组合。                                                                            |
   
表2请求Body参数 
| 参数                       | 是否必选 | 参数类型                                                                                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| rule_name                | 是    | String                                                                                                                     | **参数说明**：规则名称。 **取值范围**：长度不超过128，只允许中文、字母、数字以及_-/字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                     |
| rule_description         | 否    | String                                                                                                                     | **参数说明**：规则详情描述。 **取值范围**：长度不超过1024，只允许中文、字母、数字、空白字符、以及_?'#().,;\&%@!-/字符的组合。                                                                                                                                                                                                                                                                                                                                                                                 |
| rule_status              | 是    | String                                                                                                                     | **参数说明**：规则状态。 **取值范围**：启用 ACTIVE、 停用 INACTIVE。                                                                                                                                                                                                                                                                                                                                                                                                               |
| alarm_properties_enabled | 否    | String                                                                                                                     | **参数说明**：启动告警属性。 **取值范围**： - ACTIVE：启用。 - INACTIVE：停用。                                                                                                                                                                                                                                                                                                                                                                                                      |
| rule_type                | 是    | String                                                                                                                     | **参数说明**：规则条件的类型。 **取值范围**： DEVICE_ALARM：设备告警类型规则。 DEVICE_LINKAGE：设备联动类型规则。 若为 DEVICE_ALARM 类型规则，condition_actions数组长度大小为2，且必须存在action_type为 DEVICE_ALARM 类型的动作。 若为 DEVICE_LINKAGE 类型规则，condition_actions数组长度大小为1，且必须存在action_type为DEVICE_CMD、DEVICE_CONTROL、DEVICE_PROPERTY或DEVICE_GROUP的动作。 |
| device_id                | 否    | String                                                                                                                     | **参数说明**：设备ID，用于唯一标识一个设备，在注册设备时由设施云平台分配获得。当rule_type为 DEVICE_ALARM 时，product_id及device_id不能同时为空。优先device_id，其次 product_id。 **取值范围**：长度不超过128，只允许字母、数字、下划线（_）、连接符（-）的组合。                                                                                                                                                                                                                                                                                        |
| device_ids               | 否    | Object                                                                                                                     | **参数说明**：指定的设备ID列表。 **取值范围**：数组长度不超过10，数组元素长度不超过128，只允许字母、数字、下划线（_）、连接符（-）的组合。                                                                                                                                                                                                                                                                                                                                                                                |
| product_id               | 否    | String                                                                                                                     | **参数说明**：设备关联的产品ID，用于唯一标识一个产品模型，在管理门户导入产品模型后由平台分配获得。 当rule_type为 DEVICE_ALARM 时，product_id及device_id不能同时为空。优先device_id，其次 product_id。 **取值范围**：长度不超过36，只允许字母、数字、下划线（_）、连接符（-）的组合。                                                                                                                                                                                                                                                                            |
| condition_ignore_null    | 否    | Boolean                                                                                                                    | 优先使用conditon_group.conditon_ignore_null字段代替                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| calendar_time_range      | 否    | [CalendarTimeRangeDto] object           | 日历时间范围请求体                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| spec_properties          | 否    | Array of [RuleSpecProperty] objects         | **参数说明**：产品规格属性。 **取值范围**：数组长度不超过1。                                                                                                                                                                                                                                                                                                                                                                                                                          |
| zone_id                  | 否    | String                                                                                                                     | **参数说明**：区域ID。 某产品对应的所有设备所在的区域ID。当product_id不为空时，表示规则作用于部署于该区域ID下对应该产品ID的所有设备。若product_id为空，则zone_id自动忽略。 **取值范围**：长度不超过24，只允许字母、数字、下划线（_）、连接符（-）的组合。                                                                                                                                                                                                                                                                                                       |
| zone_ids                 | 否    | Array of strings                                                                                                           | **参数说明**：区域ID列表。 联动规则支持多个区域ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| condition_actions        | 是    | Array of [ConditionGroupAction] objects | **参数说明**：规则的条件动作列表，告警型规则最多支持2个条件动作Item，控制型规则支持1个条件动作item。                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| rule_id                  | 否    | String                                                                                                                     | **参数说明**：规则id,长度不超过36，只允许字母、数字、以及_-字符的组合，校验唯一性。                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
 表3CalendarTimeRangeDto 
| 参数          | 是否必选 | 参数类型                                                                                                       | 描述                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| judge_type  | 否    | String                                                                                                     | **参数说明**：判定类型。 **取值范围**： calendar_work_type：根据日历工作类型判定。 date_repeat_by_year：根据年重复的日期范围判定。 |
| calendar_id | 否    | String                                                                                                     | **参数说明**：日历ID。 **取值范围**：长度24，只允许字母、数字的组合。                                                                                                                                   |
| work_type   | 否    | String                                                                                                     | **参数说明**：工作类型。 **取值范围**： workday：工作日。 holiday：节假日。                                          |
| time_ranges | 否    | Array of [TimeRangeDto] objects | **参数说明**：时间范围集合。 **取值范围**：长度0-48。                                                                                                                                          |
| date_ranges | 否    | Object                                                                                                     | **参数说明**：日期范围集合。 **取值范围**：长度0-12。                                                                                                                                         |
   
 表4TimeRangeDto 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                                                     |
|:---|:---|:---|:---|
| start | 是    | String | **参数说明**：起始时间。 **取值范围**： 格式：HH:mm:ss。 |
| end   | 是    | String | **参数说明**：结束时间。 **取值范围**： 格式：HH:mm:ss。  |
   
表5DateRangeDto 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                                                    |
|:---|:---|:---|:---|
| start | 是    | String | **参数说明**：起始日期。 **取值范围**： 格式：MM-dd。      |
| end   | 是    | String | **参数说明**：结束日期。 **取值范围**： 格式：MM-dd。 |
   
 表6RuleSpecProperty 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                             |
|:---|:---|:---|:---|
| property_code  | 是    | String | **参数说明**：属性编码。 **取值范围**：长度不超过40，只允许英文字母大小写、数字、下划线的组合。 |
| property_value | 是    | Object | **参数说明**：属性值。                                                                                  |
   
 表7ConditionGroupAction 
| 参数              | 是否必选 | 参数类型                                                                                                                 | 描述             |
|:---|:---|:---|:---|
| condition_group | 否    | [ConditionGroup] object                 | **参数说明**：条件组。  |
| actions         | 是    | Array of [LinkageRuleAction] objects | **参数说明**：触发动作。 |
   
 表8ConditionGroup 
| 参数                    | 是否必选 | 参数类型                                                                                                         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| condition_ignore_null | 否    | Boolean                                                                                                      | 条件组中的条件是否忽略空值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| conditions            | 是    | Array of [RuleCondition] objects | **参数说明**：规则的条件列表，单个规则最多支持设置50个条件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| logic                 | 否    | String                                                                                                       | **参数说明**： 规则条件列表中多个条件之间的逻辑关系。 **取值范围**： - and：逻辑且。   - or：逻辑或。    |
| group_name            | 否    | String                                                                                                       | **参数说明**：规则条件组名称。 **取值范围**：CreateAlarm、RecoverAlarm、LinkageControl。                                                                                                                                                                                                                                                                                                                                                                                                   |
| group_window          | 否    | [GroupWindow] object               | 联动规则窗口函数结构体                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   
 表9RuleCondition 
| 参数                              | 是否必选 | 参数类型                                                                                                                             | 描述                                                                                                                                   |
|:---|:---|:---|:---|
| condition_type                  | 是    | String                                                                                                                           | **参数说明**：规则条件的类型。 **取值范围**：DEVICE_DATA：设备属性数据类型条件；DEVICE_LINKAGE_STATUS：设备状态类型条件；NESTED：嵌套条件。 |
| device_property_condition       | 否    | [DeviceDataCondition] object                   | **参数说明**：条件中设备数据类型的信息，当 condition_type为 DEVICE_DATA 时，为必选参数                                                                          |
| device_linkage_status_condition | 否    | [DeviceLinkageStatusCondition] object | **参数说明**：条件中设备状态类型的信息，当 condition_type 为 DEVICE_LINKAGE_STATUS 时，为必选参数。                                                              |
| nested_condition                | 否    | [DeviceLinkageNestedCondition] object | **参数说明**：条件中内嵌条件类型的信息，当 condition_type 为 NESTED 时，为必选参数。                                                                             |
   
 表10DeviceDataCondition 
| 参数      | 是否必选 | 参数类型                                                                                                           | 描述               |
|:---|:---|:---|:---|
| filters | 否    | Array of [PropertyFilter] objects | **参数说明**：数据过滤条件。 |
   
 表11PropertyFilter 
| 参数                              | 是否必选 | 参数类型             | 描述                                                                                                                                                                    |
|:---|:---|:---|:---|
| device_id                       | 否    | String           | **参数说明**：设备ID，当动作类型为DEVICE_CMD、DEVICE_CONTROL、DEVICE_PROPERTY时必须传入。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。                     |
| path                            | 是    | String           | **参数说明**：产品/设备的服务下的属性。 **取值范围**：最大长度255，格式：service_id/property_code。例如门磁状态为"infoService/status"。                               |
| indicator_type                  | 否    | String           | 指标值类型：指标值作为数据表达式的左值进行比较。除了原始值，其他指标类型都是在周期时间内聚合得到。 指标值类型：origin-原始值;mean-均值;max-最大值;min-最小值;sum-求和值;variance-方差值;increment-增量值。 |
| indicator_aggregation_time      | 否    | Integer          | 指标聚合的周期时间，当指标类型是聚合指标时才需要配置                                                                                                                                            |
| indicator_aggregation_time_unit | 否    | String           | 指标聚合的周期时间单位，当指标类型是聚合指标时才需要配置                                                                                                                                          |
| operator                        | 是    | String           | **参数说明**：数据比较的操作符。 **取值范围**：当前支持的操作符有：\>，\<，\>=，\<=，=，!=, in，between，not between：表示在指定值中匹配。                                    |
| value                           | 否    | String           | **参数说明**：数据比较表达式的右值。 **取值范围**：支持0、正数、负数。                                                                                     |
| in_values                       | 否    | Array of strings | **参数说明**：当operator为in时该字段必填，使用该字段传递比较表达式右值。 **取值范围**：上限为20个。                                                                   |
| increment_value_method          | 否    | String           | **参数说明**：指标类型为增量值的取值方式。 **取值范围**：当前支持的操作符有：origin-原始值;absolute-绝对值。                                                           |
   
 表12DeviceLinkageStatusCondition 
| 参数          | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| device_id   | 否    | String           | **参数说明**：设备ID，当动作类型为DEVICE_CMD、DEVICE_CONTROL、DEVICE_PROPERTY时必须传入。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                 |
| status_list | 否    | Array of strings | **参数说明**：状态列表，设备状态条件携带该参数。 **取值范围**： - ONLINE：设备上线   - OFFLINE：设备下线。    |
   
 表13DeviceLinkageNestedCondition 
| 参数         | 是否必选 | 参数类型                                                                                                         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| conditions | 是    | Array of [RuleCondition] objects | **参数说明**：规则内嵌条件组的条件列表，内嵌最多支持设置10个条件，条件列表中不允许再次使用内嵌条件组。                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| logic      | 是    | String                                                                                                       | **参数说明**： 规则条件列表中多个条件之间的逻辑关系。 **取值范围**： - and：逻辑且。   - or：逻辑或。    |
   
 表14GroupWindow 
| 参数                 | 是否必选 | 参数类型    | 描述                                                   |
|:---|:---|:---|:---|
| window_time        | 否    | Integer | 窗口时间，窗口时间最大为2h。                                      |
| window_time_unit   | 否    | String  | 窗口时间单位。小时-h 分钟-m 秒-s                                 |
| window_config_type | 否    | String  | 窗口配置类型。confidence_level-可信度，consecutive_times-连续触发次数 |
| confidence_level   | 否    | Integer | 数据可信度。                                               |
| consecutive_times  | 否    | Integer | 连续触发次数                                               |
   
 表15LinkageRuleAction 
| 参数              | 是否必选 | 参数类型                                                                                                             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| action_type     | 是    | String                                                                                                           | **参数说明**：规则动作的类型。 **取值范围**： - DEVICE_CMD：下发设备命令消息类型。当选择该类型时，rule_type为DEVICE_LINKAGE，且必须传入device_command对象。   - DEVICE_CONTROL：下发设备控制指令类型。当选择该类型时，rule_type为DEVICE_LINKAGE，且必须传入device_control对象。   - DEVICE_PROPERTY：修改设备属性类型。当选择该类型时，rule_type为DEVICE_LINKAGE，且必须传入device_property对象。   - DEVICE_GROUP：批量控制设备类型。当选择该类型时，rule_type为DEVICE_LINKAGE，且必须传入device_group对象。   - DEVICE_ALARM：上报设备告警消息类型。当选择该类型时，rule_type为DEVICE_ALARM ，且必须传入device_alarm对象。    |
| device_id       | 否    | String                                                                                                           | **参数说明**：设备ID，当动作类型为DEVICE_CMD、DEVICE_CONTROL、DEVICE_PROPERTY时必须传入。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| device_alarm    | 否    | [ActionDeviceAlarm] object       | **参数说明**：上报设备告警消息内容。当action_type为 DEVICE_ALARM 时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| device_command  | 否    | [ActionDeviceCommand] object   | **参数说明**：下发设备命令内容。当action_type为DEVICE_CMD时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| device_control  | 否    | [ActionDeviceControl] object   | **参数说明**：下发设备控制任务内容。当action_type为DEVICE_CONTROL时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| device_property | 否    | [ActionDeviceProperty] object | **参数说明**：修改设备属性内容。当action_type为DEVICE_PROPERTY时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| device_group    | 否    | [ActionDeviceGroup] object       | **参数说明**：下发分组控制内容。当action_type为DEVICE_GROUP时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
 表16ActionDeviceAlarm 
| 参数                   | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| alarm_name           | 否    | String | **参数说明**：告警名称。 **取值范围**：最大长度64，只允许中文、字母、数字、_-字符的组合。当 alarm_status 为fault时，该字段必填。                                                                                                                                                                                                                                                                                                                                                          |
| alarm_status         | 是    | String | **参数说明**：告警状态，用于描述告警动作类型。 **取值范围**： - fault：上报告警。   - recovery：恢复告警。    |
| alarm_level          | 否    | String | **参数说明**：告警级别。 **取值范围**：致命"Critical"，严重"Major", 一般"Minor"，提示"Info"。当 alarm_status 为fault时，该字段必填。                                                                                                                                                                                                                                                                                                                                         |
| description          | 否    | String | **参数说明**：告警的描述信息。 **取值范围**：最大长度255，只允许中文、字母、数字、空白字符、以及_?'#().,;\&%@!-/字符的组合。                                                                                                                                                                                                                                                                                                                                                             |
| condition_group_name | 是    | String | **参数说明**：条件组名称。 **取值范围**：CreateAlarm、RecoverAlarm，若ConditionGroups.Conditions为CreateAlarm类型，则action中必须存在condition_group_name为CreateAlarm，且对应的alarm_status必须为fault。                                                                                                                                                                                                                                                                       |
   
 表17ActionDeviceCommand 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                              |
|:---|:---|:---|:---|
| service_id   | 是    | String | **参数说明**：服务ID。产品内唯一。 **取值范围**：长度不超过64，只允许中文、字母、数字、以及_?'#().,\&%@!-字符的组合。 |
| command_code | 是    | String | **参数说明**：命令编码。 **取值范围**：长度不超过40，只允许英文字母大小写、数字、下划线的组合。                  |
| paras        | 是    | Object | **参数说明**：命令参数。 **取值范围**：JSON格式，具体格式需要应用和设备在物模型约定。                      |
   
 表18ActionDeviceControl 
| 参数                       | 是否必选 | 参数类型    | 描述                                                                                                                  |
|:---|:---|:---|:---|
| property_path            | 是    | String  | **参数说明**：设备属性。 **取值范围**：长度不超过128，只允许中文、字母、数字、以及_?/'#().,\&%@!-字符的组合。         |
| property_value_type      | 否    | String  | **参数说明**：设置属性值的类型，fixed-固定值 reference-引用值。                                                                          |
| reference_device_id      | 否    | String  | **参数说明**：引用设备ID，设置属性值的类型为引用类型时对应的设备ID。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。 |
| reference_property_value | 否    | String  | **参数说明**：引用属性，设置属性值的类型为引用类型时对应的设置值。                                                                                 |
| property_value           | 否    | Object  | **参数说明**：设备属性值。                                                                                                     |
| priority                 | 否    | Integer | **参数说明**：任务优先级。 **取值范围**：8-16的整数。                                           |
| description              | 否    | String  | **参数说明**：操作说明。 **取值范围**：长度为不超过1024的字符串。                                     |
   
 表19ActionDeviceProperty 
| 参数       | 是否必选 | 参数类型                             | 描述                                                                                           |
|:---|:---|:---|:---|
| services | 是    | Array of PropertyService objects | **参数说明**：修改设备属性列表。 **取值范围**：JSON格式，具体格式需要应用和设备在物模型约定。 |
   
 表20ActionDeviceGroup 
| 参数               | 是否必选 | 参数类型   | 描述                                                                                            |
|:---|:---|:---|:---|
| group_control_id | 是    | String | **参数说明**：设备控制ID。 **取值范围**：长度不超过36，只允许字母、数字、以及_-字符的组合。 |
   
#### 响应参数
**状态码：201**
表21响应Body参数 
| 参数                       | 参数类型                                                                                                                        | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| rule_id                  | String                                                                                                                      | **参数说明**：规则id,长度不超过36，只允许字母、数字、以及_-字符的组合，校验唯一性。                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| fact_rule_id             | String                                                                                                                      | **参数说明**：事实规则id。长度不超过36，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| rule_name                | String                                                                                                                      | **参数说明**：规则名称。 **取值范围**：长度不超过128，只允许中文、字母、数字以及_-/字符的组合。                                                                                                                                                                                                                                                                                                                                                                                               |
| rule_description         | String                                                                                                                      | **参数说明**：规则详情描述。 **取值范围**：长度不超过1024，只允许中文、字母、数字、空白字符、以及_?'#().,;\&%@!-/字符的组合。                                                                                                                                                                                                                                                                                                                                                                          |
| rule_status              | String                                                                                                                      | **参数说明**：规则状态。 **取值范围**：启用 ACTIVE、 停用 INACTIVE。                                                                                                                                                                                                                                                                                                                                                                                                       |
| alarm_properties_enabled | String                                                                                                                      | **参数说明**：启动告警属性。 **取值范围**： - ACTIVE：启用。 - INACTIVE：停用。                                                                                                                                                                                                                                                                                                                                                                                                 |
| rule_type                | String                                                                                                                      | **参数说明**：规则条件的类型。 **取值范围**： DEVICE_ALARM：设备告警类型规则。 DEVICE_LINKAGE：设备联动类型规则。 若为 DEVICE_ALARM 类型规则，condition_actions数组长度大小为2，且必须存在action_type为 DEVICE_ALARM 类型的动作。 若为 DEVICE_LINKAGE 类型规则，condition_actions数组长度大小为1，且必须存在action_type为DEVICE_CMD、DEVICE_CONTROL、DEVICE_PROPERTY或DEVICE_GROUP的动作。 |
| device_id                | String                                                                                                                      | **参数说明**：设备ID，用于唯一标识一个设备，在注册设备时由设施云平台分配获得。当rule_type为 DEVICE_ALARM 时，product_id及device_id不能同时为空。优先device_id，其次 product_id。 **取值范围**：长度不超过128，只允许字母、数字、下划线（_）、连接符（-）的组合。                                                                                                                                                                                                                                                                                |
| product_id               | String                                                                                                                      | **参数说明**：设备关联的产品ID，用于唯一标识一个产品模型，在管理门户导入产品模型后由平台分配获得。 当rule_type为 DEVICE_ALARM 时，product_id及device_id不能同时为空。优先device_id，其次 product_id。 **取值范围**：长度不超过36，只允许字母、数字、下划线（_）、连接符（-）的组合。                                                                                                                                                                                                                                                                    |
| condition_ignore_null    | Boolean                                                                                                                     | 优先使用conditon_group.conditon_ignore_null字段代替                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| calendar_time_range      | [CalendarTimeRangeDto] object           | 日历时间范围请求体                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| spec_properties          | Array of [RuleSpecProperty] objects         | **参数说明**：产品规格属性。 **取值范围**：数组长度不超过1。                                                                                                                                                                                                                                                                                                                                                                                                                     |
| zones                    | Array of [RuleZoneItem] objects                 | **参数说明**：空间信息                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| devices                  | Array of [RuleDeviceItem] objects             | **参数说明**：设备信息                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| condition_actions        | Array of [ConditionGroupAction] objects | **参数说明**：规则的条件动作列表，告警型规则最多支持2个条件动作Item，控制型规则支持1个条件动作item。                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
 表22CalendarTimeRangeDto 
| 参数          | 参数类型                                                                                                        | 描述                                                                                                                                                                                                             |
|:---|:---|:---|
| judge_type  | String                                                                                                      | **参数说明**：判定类型。 **取值范围**： calendar_work_type：根据日历工作类型判定。 date_repeat_by_year：根据年重复的日期范围判定。 |
| calendar_id | String                                                                                                      | **参数说明**：日历ID。 **取值范围**：长度24，只允许字母、数字的组合。                                                                                                                              |
| work_type   | String                                                                                                      | **参数说明**：工作类型。 **取值范围**： workday：工作日。 holiday：节假日。                                      |
| time_ranges | Array of [TimeRangeDto] objects | **参数说明**：时间范围集合。 **取值范围**：长度0-48。                                                                                                                                       |
| date_ranges | Object                                                                                                      | **参数说明**：日期范围集合。 **取值范围**：长度0-12。                                                                                                                                        |
   
 表23TimeRangeDto 
| 参数    | 参数类型   | 描述                                                                                                                   |
|:---|:---|:---|
| start | String | **参数说明**：起始时间。 **取值范围**： 格式：HH:mm:ss。 |
| end   | String | **参数说明**：结束时间。 **取值范围**： 格式：HH:mm:ss。     |
   
表24DateRangeDto 
| 参数    | 参数类型   | 描述                                                                                                                |
|:---|:---|:---|
| start | String | **参数说明**：起始日期。 **取值范围**： 格式：MM-dd。  |
| end   | String | **参数说明**：结束日期。 **取值范围**： 格式：MM-dd。 |
   
 表25RuleSpecProperty 
| 参数             | 参数类型   | 描述                                                                                           |
|:---|:---|:---|
| property_code  | String | **参数说明**：属性编码。 **取值范围**：长度不超过40，只允许英文字母大小写、数字、下划线的组合。 |
| property_value | Object | **参数说明**：属性值。                                                                                |
   
 表26RuleZoneItem 
| 参数             | 参数类型   | 描述                                                                                                                                                                                           |
|:---|:---|:---|
| zone_id        | String | **参数说明**：区域ID。 某产品对应的所有设备所在的区域ID。当product_id不为空时，表示规则作用于部署于该区域ID下对应该产品ID的所有设备。若product_id为空，则zone_id自动忽略。 **取值范围**：长度不超过24，只允许字母、数字、下划线（_）、连接符（-）的组合。 |
| zone_name      | String | **参数说明**：zone_id对应的区域名称。                                                                                                                                                                     |
| zone_path_name | String | **参数说明**：zone_id对应的全路径名称，包括项目区域id。                                                                                                                                                           |
   
 表27RuleDeviceItem 
| 参数          | 参数类型   | 描述                                                                                                                               |
|:---|:---|:---|
| device_id   | String | **参数说明**：设备ID，用于唯一标识一个设备，在注册设备时由设施云平台分配获得。 **取值范围**：长度不超过128，只允许字母、数字、下划线（_）、连接符（-）的组合。 |
| device_name | String | **参数说明**：设备名称，用于唯一标识一个设备，在注册设备时由设施云平台分配获得。                                                                                       |
   
 表28ConditionGroupAction 
| 参数              | 参数类型                                                                                                                  | 描述             |
|:---|:---|:---|
| condition_group | [ConditionGroup] object                 | **参数说明**：条件组。  |
| actions         | Array of [LinkageRuleAction] objects | **参数说明**：触发动作。 |
   
 表29ConditionGroup 
| 参数                    | 参数类型                                                                                                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|
| condition_ignore_null | Boolean                                                                                                       | 条件组中的条件是否忽略空值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| conditions            | Array of [RuleCondition] objects | **参数说明**：规则的条件列表，单个规则最多支持设置50个条件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| logic                 | String                                                                                                        | **参数说明**： 规则条件列表中多个条件之间的逻辑关系。 **取值范围**： - and：逻辑且。   - or：逻辑或。    |
| group_name            | String                                                                                                        | **参数说明**：规则条件组名称。 **取值范围**：CreateAlarm、RecoverAlarm、LinkageControl。                                                                                                                                                                                                                                                                                                                                                                                                |
| group_window          | [GroupWindow] object               | 联动规则窗口函数结构体                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
 表30RuleCondition 
| 参数                              | 参数类型                                                                                                                              | 描述                                                                                                                                    |
|:---|:---|:---|
| condition_type                  | String                                                                                                                            | **参数说明**：规则条件的类型。 **取值范围**：DEVICE_DATA：设备属性数据类型条件；DEVICE_LINKAGE_STATUS：设备状态类型条件；NESTED：嵌套条件。 |
| device_property_condition       | [DeviceDataCondition] object                   | **参数说明**：条件中设备数据类型的信息，当 condition_type为 DEVICE_DATA 时，为必选参数                                                                           |
| device_linkage_status_condition | [DeviceLinkageStatusCondition] object | **参数说明**：条件中设备状态类型的信息，当 condition_type 为 DEVICE_LINKAGE_STATUS 时，为必选参数。                                                               |
| nested_condition                | [DeviceLinkageNestedCondition] object | **参数说明**：条件中内嵌条件类型的信息，当 condition_type 为 NESTED 时，为必选参数。                                                                              |
   
 表31DeviceDataCondition 
| 参数      | 参数类型                                                                                                            | 描述               |
|:---|:---|:---|
| filters | Array of [PropertyFilter] objects | **参数说明**：数据过滤条件。 |
   
 表32PropertyFilter 
| 参数                              | 参数类型             | 描述                                                                                                                                                                      |
|:---|:---|:---|
| device_id                       | String           | **参数说明**：设备ID，当动作类型为DEVICE_CMD、DEVICE_CONTROL、DEVICE_PROPERTY时必须传入。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。                       |
| path                            | String           | **参数说明**：产品/设备的服务下的属性。 **取值范围**：最大长度255，格式：service_id/property_code。例如门磁状态为"infoService/status"。                                 |
| indicator_type                  | String           | 指标值类型：指标值作为数据表达式的左值进行比较。除了原始值，其他指标类型都是在周期时间内聚合得到。 指标值类型：origin-原始值;mean-均值;max-最大值;min-最小值;sum-求和值;variance-方差值;increment-增量值。 |
| indicator_aggregation_time      | Integer          | 指标聚合的周期时间，当指标类型是聚合指标时才需要配置                                                                                                                                              |
| indicator_aggregation_time_unit | String           | 指标聚合的周期时间单位，当指标类型是聚合指标时才需要配置                                                                                                                                            |
| operator                        | String           | **参数说明**：数据比较的操作符。 **取值范围**：当前支持的操作符有：\>，\<，\>=，\<=，=，!=, in，between，not between：表示在指定值中匹配。                                      |
| value                           | String           | **参数说明**：数据比较表达式的右值。 **取值范围**：支持0、正数、负数。                                                                                       |
| in_values                       | Array of strings | **参数说明**：当operator为in时该字段必填，使用该字段传递比较表达式右值。 **取值范围**：上限为20个。                                                                   |
| increment_value_method          | String           | **参数说明**：指标类型为增量值的取值方式。 **取值范围**：当前支持的操作符有：origin-原始值;absolute-绝对值。                                                            |
   
 表33DeviceLinkageStatusCondition 
| 参数          | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| device_id   | String           | **参数说明**：设备ID，当动作类型为DEVICE_CMD、DEVICE_CONTROL、DEVICE_PROPERTY时必须传入。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                             |
| status_list | Array of strings | **参数说明**：状态列表，设备状态条件携带该参数。 **取值范围**： - ONLINE：设备上线   - OFFLINE：设备下线。    |
   
 表34DeviceLinkageNestedCondition 
| 参数         | 参数类型                                                                                                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| conditions | Array of [RuleCondition] objects | **参数说明**：规则内嵌条件组的条件列表，内嵌最多支持设置10个条件，条件列表中不允许再次使用内嵌条件组。                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| logic      | String                                                                                                        | **参数说明**： 规则条件列表中多个条件之间的逻辑关系。 **取值范围**： - and：逻辑且。   - or：逻辑或。    |
   
 表35GroupWindow 
| 参数                 | 参数类型    | 描述                                                   |
|:---|:---|:---|
| window_time        | Integer | 窗口时间，窗口时间最大为2h。                                      |
| window_time_unit   | String  | 窗口时间单位。小时-h 分钟-m 秒-s                                 |
| window_config_type | String  | 窗口配置类型。confidence_level-可信度，consecutive_times-连续触发次数 |
| confidence_level   | Integer | 数据可信度。                                               |
| consecutive_times  | Integer | 连续触发次数                                               |
   
 表36LinkageRuleAction 
| 参数              | 参数类型                                                                                                              | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| action_type     | String                                                                                                            | **参数说明**：规则动作的类型。 **取值范围**： - DEVICE_CMD：下发设备命令消息类型。当选择该类型时，rule_type为DEVICE_LINKAGE，且必须传入device_command对象。   - DEVICE_CONTROL：下发设备控制指令类型。当选择该类型时，rule_type为DEVICE_LINKAGE，且必须传入device_control对象。   - DEVICE_PROPERTY：修改设备属性类型。当选择该类型时，rule_type为DEVICE_LINKAGE，且必须传入device_property对象。   - DEVICE_GROUP：批量控制设备类型。当选择该类型时，rule_type为DEVICE_LINKAGE，且必须传入device_group对象。   - DEVICE_ALARM：上报设备告警消息类型。当选择该类型时，rule_type为DEVICE_ALARM ，且必须传入device_alarm对象。    |
| device_id       | String                                                                                                            | **参数说明**：设备ID，当动作类型为DEVICE_CMD、DEVICE_CONTROL、DEVICE_PROPERTY时必须传入。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| device_alarm    | [ActionDeviceAlarm] object       | **参数说明**：上报设备告警消息内容。当action_type为 DEVICE_ALARM 时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| device_command  | [ActionDeviceCommand] object   | **参数说明**：下发设备命令内容。当action_type为DEVICE_CMD时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| device_control  | [ActionDeviceControl] object   | **参数说明**：下发设备控制任务内容。当action_type为DEVICE_CONTROL时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| device_property | [ActionDeviceProperty] object | **参数说明**：修改设备属性内容。当action_type为DEVICE_PROPERTY时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| device_group    | [ActionDeviceGroup] object       | **参数说明**：下发分组控制内容。当action_type为DEVICE_GROUP时，该字段必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
 表37ActionDeviceAlarm 
| 参数                   | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| alarm_name           | String | **参数说明**：告警名称。 **取值范围**：最大长度64，只允许中文、字母、数字、_-字符的组合。当 alarm_status 为fault时，该字段必填。                                                                                                                                                                                                                                                                                                                                                          |
| alarm_status         | String | **参数说明**：告警状态，用于描述告警动作类型。 **取值范围**： - fault：上报告警。   - recovery：恢复告警。    |
| alarm_level          | String | **参数说明**：告警级别。 **取值范围**：致命"Critical"，严重"Major", 一般"Minor"，提示"Info"。当 alarm_status 为fault时，该字段必填。                                                                                                                                                                                                                                                                                                                                         |
| description          | String | **参数说明**：告警的描述信息。 **取值范围**：最大长度255，只允许中文、字母、数字、空白字符、以及_?'#().,;\&%@!-/字符的组合。                                                                                                                                                                                                                                                                                                                                                           |
| condition_group_name | String | **参数说明**：条件组名称。 **取值范围**：CreateAlarm、RecoverAlarm，若ConditionGroups.Conditions为CreateAlarm类型，则action中必须存在condition_group_name为CreateAlarm，且对应的alarm_status必须为fault。                                                                                                                                                                                                                                                                        |
   
 表38ActionDeviceCommand 
| 参数           | 参数类型   | 描述                                                                                                             |
|:---|:---|:---|
| service_id   | String | **参数说明**：服务ID。产品内唯一。 **取值范围**：长度不超过64，只允许中文、字母、数字、以及_?'#().,\&%@!-字符的组合。 |
| command_code | String | **参数说明**：命令编码。 **取值范围**：长度不超过40，只允许英文字母大小写、数字、下划线的组合。                    |
| paras        | Object | **参数说明**：命令参数。 **取值范围**：JSON格式，具体格式需要应用和设备在物模型约定。                     |
   
 表39ActionDeviceControl 
| 参数                       | 参数类型    | 描述                                                                                                                   |
|:---|:---|:---|
| property_path            | String  | **参数说明**：设备属性。 **取值范围**：长度不超过128，只允许中文、字母、数字、以及_?/'#().,\&%@!-字符的组合。           |
| property_value_type      | String  | **参数说明**：设置属性值的类型，fixed-固定值 reference-引用值。                                                                           |
| reference_device_id      | String  | **参数说明**：引用设备ID，设置属性值的类型为引用类型时对应的设备ID。 **取值范围**：长度不超过128，只允许字母、数字、以及_-字符的组合。 |
| reference_property_value | String  | **参数说明**：引用属性，设置属性值的类型为引用类型时对应的设置值。                                                                                  |
| property_value           | Object  | **参数说明**：设备属性值。                                                                                                      |
| priority                 | Integer | **参数说明**：任务优先级。 **取值范围**：8-16的整数。                                           |
| description              | String  | **参数说明**：操作说明。 **取值范围**：长度为不超过1024的字符串。                                      |
   
 表40ActionDeviceProperty 
| 参数       | 参数类型                             | 描述                                                                                            |
|:---|:---|:---|
| services | Array of PropertyService objects | **参数说明**：修改设备属性列表。 **取值范围**：JSON格式，具体格式需要应用和设备在物模型约定。 |
   
 表41ActionDeviceGroup 
| 参数               | 参数类型   | 描述                                                                                              |
|:---|:---|:---|
| group_control_id | String | **参数说明**：设备控制ID。 **取值范围**：长度不超过36，只允许字母、数字、以及_-字符的组合。 |
   
**状态码：400**
表42响应Body参数 
| 参数         | 参数类型   | 描述                                                                        |
|:---|:---|:---|
| error_code | String | **参数说明**：错误码。 **取值范围**：长度8-36。      |
| error_msg  | String | **参数说明**：错误描述。 **取值范围**：长度2-512。 |
   
#### 请求示例
- 创建规则
  ```
  POST https://{endpoint}/v1/iotfm/rules
  {
    "zone_id" : "18c55c1693356adb5a05891d",
    "zone_ids" : [ "1904a68eae96a07c2fd72fd6", "19043c59f3bab5af240fd1d5" ],
    "rule_type" : "DEVICE_ALARM",
    "rule_name" : "rule_name",
    "product_id" : "18c55c16d5d4b9c979b7c44a",
    "spec_properties" : [ {
      "property_code" : "spec_property_code",
      "property_value" : "spec_property_value"
    } ],
    "rule_description" : "rule_description",
    "condition_actions" : [ {
      "condition_group" : {
        "group_name" : "CreateAlarm",
        "logic" : "and",
        "conditions" : [ {
          "device_property_condition" : {
            "filters" : [ {
              "path" : "Battery/batteryLevel",
              "value" : "20",
              "operator" : ">"
            } ]
          },
          "condition_type" : "DEVICE_DATA"
        } ]
      },
      "actions" : [ {
        "device_alarm" : {
          "alarm_name" : "alarm_create",
          "alarm_status" : "fault",
          "condition_group_name" : "CreateAlarm",
          "description" : "alarm_description",
          "alarm_level" : "Info"
        },
        "action_type" : "DEVICE_ALARM"
      } ]
    }, {
      "condition_group" : {
        "group_name" : "RecoverAlarm",
        "logic" : "and",
        "conditions" : [ {
          "device_property_condition" : {
            "filters" : [ {
              "path" : "Battery/batteryLevel",
              "value" : "20",
              "operator" : "<"
            } ]
          },
          "condition_type" : "DEVICE_DATA"
        } ]
      },
      "actions" : [ {
        "device_alarm" : {
          "alarm_name" : "alarm_recover",
          "alarm_status" : "fault",
          "condition_group_name" : "CreateAlarm",
          "description" : "alarm_description",
          "alarm_level" : "Info"
        },
        "action_type" : "DEVICE_ALARM"
      } ]
    } ]
  }
  ```
  
- 创建规则
  ```
  POST https://{endpoint}/v1/iotfm/rules
  {
    "zone_id" : "18c55c1693356adb5a05891d",
    "zone_ids" : [ "1904a68eae96a07c2fd72fd6", "19043c59f3bab5af240fd1d5" ],
    "rule_type" : "DEVICE_ALARM",
    "rule_name" : "rule_name",
    "product_id" : "18c55c16d5d4b9c979b7c44a",
    "spec_properties" : [ {
      "property_code" : "spec_property_code",
      "property_value" : "spec_property_value"
    } ],
    "rule_description" : "rule_description",
    "condition_ignore_null" : false,
    "condition_actions" : [ {
      "condition_group" : {
        "group_name" : "CreateAlarm",
        "logic" : "and",
        "conditions" : [ {
          "device_property_condition" : {
            "filters" : [ {
              "path" : "Battery/batteryLevel",
              "value" : "20",
              "operator" : ">"
            } ]
          },
          "condition_type" : "DEVICE_DATA"
        } ],
        "group_window" : {
          "window_time" : 1,
          "window_time_unit" : "m",
          "confidence_level" : 20
        }
      },
      "actions" : [ {
        "device_alarm" : {
          "alarm_name" : "alarm_create",
          "alarm_status" : "fault",
          "condition_group_name" : "CreateAlarm",
          "description" : "alarm_description",
          "alarm_level" : "Info"
        },
        "action_type" : "DEVICE_ALARM"
      } ]
    }, {
      "condition_group" : {
        "group_name" : "RecoverAlarm",
        "logic" : "and",
        "conditions" : [ {
          "device_property_condition" : {
            "filters" : [ {
              "path" : "Battery/batteryLevel",
              "value" : "20",
              "operator" : "<"
            } ]
          },
          "condition_type" : "DEVICE_DATA"
        } ],
        "group_window" : {
          "window_time" : 1,
          "window_time_unit" : "m",
          "confidence_level" : 20
        }
      },
      "actions" : [ {
        "device_alarm" : {
          "alarm_name" : "alarm_recover",
          "alarm_status" : "fault",
          "condition_group_name" : "CreateAlarm",
          "description" : "alarm_description",
          "alarm_level" : "Info"
        },
        "action_type" : "DEVICE_ALARM"
      } ]
    } ]
  }
  ```
  
 
#### 响应示例
**状态码：201**
OK
```
{
  "zones" : [ {
    "zone_id" : "190a4a7308f38ddf0dae5c00",
    "zone_name" : "zone4",
    "zone_path_name" : "zone3/zone4"
  }, {
    "zone_id" : "19043c59f3bab5af240fd1d5",
    "zone_name" : "zone2",
    "zone_path_name" : "zone1/zone2"
  } ],
  "rule_type" : "DEVICE_ALARM",
  "rule_name" : "rule_name",
  "product_id" : "18c55c16d5d4b9c979b7c44a",
  "spec_properties" : [ {
    "property_code" : "spec_property_code",
    "property_value" : "spec_property_value"
  } ],
  "rule_description" : "rule_description",
  "condition_actions" : [ {
    "condition_group" : {
      "group_name" : "CreateAlarm",
      "logic" : "and",
      "conditions" : [ {
        "device_property_condition" : {
          "filters" : [ {
            "path" : "Battery/batteryLevel",
            "value" : "20",
            "operator" : ">"
          } ]
        },
        "condition_type" : "DEVICE_DATA"
      } ]
    },
    "actions" : [ {
      "device_alarm" : {
        "alarm_name" : "alarm_create",
        "alarm_status" : "fault",
        "condition_group_name" : "CreateAlarm",
        "description" : "alarm_description",
        "alarm_level" : "Info"
      },
      "action_type" : "DEVICE_ALARM"
    } ]
  }, {
    "condition_group" : {
      "group_name" : "RecoverAlarm",
      "logic" : "and",
      "conditions" : [ {
        "device_property_condition" : {
          "filters" : [ {
            "path" : "Battery/batteryLevel",
            "value" : "20",
            "operator" : "<"
          } ]
        },
        "condition_type" : "DEVICE_DATA"
      } ]
    },
    "actions" : [ {
      "device_alarm" : {
        "alarm_name" : "alarm_recover",
        "alarm_status" : "fault",
        "condition_group_name" : "CreateAlarm",
        "description" : "alarm_description",
        "alarm_level" : "Info"
      },
      "action_type" : "DEVICE_ALARM"
    } ]
  } ],
  "rule_id" : "18c32b14082a44186676314b",
  "fact_rule_id" : "18c7a3454e1db42e60b1ead6"
}
```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 201 | OK                    |
| 400 | Bad Request           |
| 403 | Forbidden             |
| 404 | Not Found             |
| 500 | Internal Server Error |
   
