
# 修改规则动作
#### 功能介绍
应用服务器可调用此接口修改设施云平台中指定规则动作的配置。
#### URI
PUT /v1/iotfm/routing-rules/{rule_id}/actions/{action_id}
表1路径参数 
| 参数        | 是否必选 | 参数类型   | 描述                                                                                                    |
|:---|:---|:---|:---|
| rule_id   | 是    | String | **参数说明**：规则条件ID。 **取值范围**：长度不超过36，只允许字母、数字、下划线（_）、连接符（-）的组合。   |
| action_id | 是    | String | **参数说明**：规则动作ID。 **取值范围**：长度不超过36，只允许字母、数字、下划线（_）、连接符（-）的组合。 |
   
#### 请求参数
表2请求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，只允许大小写字母、数字和-字符的组合。           |
   
表3请求Body参数 
| 参数             | 是否必选 | 参数类型                                                                                                                   | 描述                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| channel        | 否    | String                                                                                                                 | 规则动作的类型，取值范围： - DMS_KAFKA_FORWARDING：转发kafka消息类型。    |
| channel_detail | 否    | [UpdateChannelDetailInfo] object | **参数说明**：修改通道配置信息。                                                                                                                                                                                                                                                                        |
   
 表4UpdateChannelDetailInfo 
| 参数                   | 是否必选 | 参数类型                                                                                                                     | 描述                                            |
|:---|:---|:---|:---|
| dms_kafka_forwarding | 否    | [UpdateDmsKafkaForwarding] object | 修改转发Kafka消息内容。当type为DMS_KAFKA_FORWARDING时,必填。 |
   
 表5UpdateDmsKafkaForwarding 
| 参数                | 是否必选 | 参数类型                                                                                                   | 描述                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| addresses         | 否    | Array of [NetAddress] objects | 转发kafka消息对应的地址列表，只支持ip                                                                                                                                                                                                                                                                                                      |
| topic             | 否    | String                                                                                                 | 转发kafka消息关联的topic信息。                                                                                                                                                                                                                                                                                                        |
| username          | 否    | String                                                                                                 | 转发kafka关联的用户名信息。                                                                                                                                                                                                                                                                                                            |
| password          | 否    | String                                                                                                 | 转发kafka关联的密码信息。                                                                                                                                                                                                                                                                                                             |
| mechanism         | 否    | String                                                                                                 | 转发kafka关联的鉴权机制。 类型说明： PLAIN：SASL/PLAIN模式。需要填写对应的用户名密码信息。一种简单的用户名密码校验机制，在SASL_PLAINTEXT场景下，不建议使用。 SCRAM-SHA-512: SASL/SCRAM-SHA-512模式。需要填写对应的用户名密码信息。采用哈希算法对用户名与密码生成凭证，进行身份校验的安全认证机制，比PLAIN机制安全性更高。 |
| security_protocol | 否    | String                                                                                                 | kafka传输安全协议。 SASL_SSL：采用SSL证书进行加密传输，支持帐号密码认证，安全性更高。 SASL_PLAINTEXT：明文传输，支持帐号密码认证，性能更好，建议mechanism使用SCRAM-SHA-512机制。                                                                                                                           |
   
 表6NetAddress 
| 参数     | 是否必选 | 参数类型    | 描述      |
|:---|:---|:---|:---|
| ip     | 否    | String  | 服务的对应IP |
| port   | 否    | Integer | 服务对应端口  |
| domain | 否    | String  | 服务对应的域名 |
   
#### 响应参数
**状态码：200**
表7响应Body参数 
| 参数             | 参数类型                                                                                                | 描述                                                                  |
|:---|:---|:---|
| action_id      | String                                                                                              | 规则动作ID，用于唯一标识一条规则动作，在创建规则动作时由设施云平台分配获得，创建时无需携带，由平台统一分配唯一的action_id。 |
| rule_id        | String                                                                                              | 规则动作对应的的规则触发条件ID。                                                   |
| channel        | String                                                                                              | 规则动作的类型。取值范围：DMS_KAFKA_FORWARDING：转发kafka消息类型。                      |
| channel_detail | [ChannelDetail] object | 通道配置信息。                                                             |
   
 表8ChannelDetail 
| 参数                   | 参数类型                                                                                                          | 描述                                          |
|:---|:---|:---|
| dms_kafka_forwarding | [DmsKafkaForwarding] object | 转发kafka消息内容。当type为DMS_KAFKA_FORWARDING时,必填。 |
   
 表9DmsKafkaForwarding 
| 参数                | 参数类型                                                                                                    | 描述                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|
| addresses         | Array of [NetAddress] objects | 转发kafka消息对应的地址列表,只支持ip                                                                                                                                                                                                                                                                                                                     |
| topic             | String                                                                                                  | 转发kafka消息关联的topic信息。                                                                                                                                                                                                                                                                                                                       |
| username          | String                                                                                                  | 转发kafka关联的用户名信息。                                                                                                                                                                                                                                                                                                                           |
| password          | String                                                                                                  | 转发kafka关联的密码信息。                                                                                                                                                                                                                                                                                                                            |
| mechanism         | String                                                                                                  | 转发kafka关联的鉴权机制，此字段不填默认为PLAIN。 类型说明： PLAIN：SASL/PLAIN模式。需要填写对应的用户名密码信息。一种简单的用户名密码校验机制，在SASL_PLAINTEXT场景下，不建议使用。 SCRAM-SHA-512: SASL/SCRAM-SHA-512模式。需要填写对应的用户名密码信息。采用哈希算法对用户名与密码生成凭证，进行身份校验的安全认证机制，比PLAIN机制安全性更高。 |
| security_protocol | String                                                                                                  | kafka传输安全协议，此字段不填默认为SASL_SSL。 SASL_SSL：采用SSL证书进行加密传输，支持帐号密码认证，安全性更高。 SASL_PLAINTEXT：明文传输，支持帐号密码认证，性能更好，建议mechanism使用SCRAM-SHA-512机制。                                                                                                                       |
   
 表10NetAddress 
| 参数     | 参数类型    | 描述      |
|:---|:---|:---|
| ip     | String  | 服务的对应IP |
| port   | Integer | 服务对应端口  |
| domain | String  | 服务对应的域名 |
   
**状态码：400**
表11响应Body参数 
| 参数         | 参数类型   | 描述                                                                       |
|:---|:---|:---|
| error_code | String | **参数说明**：错误码。 **取值范围**：长度8-36。   |
| error_msg  | String | **参数说明**：错误描述。 **取值范围**：长度2-512。 |
   
#### 请求示例
修改规则动作
```
PUT https://{endpoint}/v1/iotfm/routing-rules/9cbcb83e-1836-48e8-8e40-d37e836f8767/actions/914aca86-b966-48b5-ab06-4bb9f4446127
{
  "channel_detail" : {
    "dms_kafka_forwarding" : {
      "addresses" : [ {
        "port" : 9095,
        "ip" : "127.0.0.1"
      } ],
      "password" : "password",
      "topic" : "kafka_topic",
      "mechanism" : "PLAIN",
      "username" : "username"
    }
  },
  "channel" : "DMS_KAFKA_FORWARDING"
}
```
#### 响应示例
**状态码：200**
OK
```
{
  "action_id" : "1a7ffc5c-d89c-44dd-8265-b1653d951ce0",
  "rule_id" : "5bcaddda-75bf-4623-8c8d-26175c41fcca",
  "channel" : "DMS_KAFKA_FORWARDING",
  "channel_detail" : {
    "dms_kafka_forwarding" : {
      "addresses" : [ {
        "port" : 9095,
        "ip" : "127.0.0.1"
      } ],
      "password" : "password",
      "topic" : "kafka_topic",
      "mechanism" : "PLAIN",
      "username" : "username"
    }
  }
}
```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 200 | OK                    |
| 400 | Bad Request           |
| 403 | Forbidden             |
| 404 | Not Found             |
| 500 | Internal Server Error |
   
