# 创建外部推送通道
#### 功能介绍
创建外部推送通道
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IoTEdge/doc?api=CreatePushChannel)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### URI
POST /v2/{project_id}/push-channels
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                        |
|:---|:---|:---|:---|
| project_id | 是    | String | 项目ID。获取方法请参见 [获取项目ID](https://support.huaweicloud.com/api-iotedge/iotedge_api_0032.html)。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。通过调用IAM服务 [获取IAM用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口获取，接口返回的响应消息头中"X-Subject-Token"就是需要获取的用户Token。简要的获取方法样例请参见 [Token认证](https://support.huaweicloud.com/api-iothub/iot_06_v5_0091.html#section0)。 |
   
表3请求Body参数 
| 参数                       | 是否必选 | 参数类型                                                                                                                                    | 描述                       |
|:---|:---|:---|:---|
| channel_id               | 否    | String                                                                                                                                  | 推送通道ID,非必填，若用户不填，则系统自动生成 |
| channel                  | 是    | String                                                                                                                                  | 通道                       |
| name                     | 是    | String                                                                                                                                  | 推送通道名称                   |
| description              | 否    | String                                                                                                                                  | 推送通道描述                   |
| endpoint                 | 是    | String                                                                                                                                  | 推送的地址                    |
| mqtt_channel_detail      | 否    | [CreateMqttChannelDetail] object           | MQTT通道配置详情               |
| iotdb_channel_detail     | 否    | [CreateIoTDBChannelDetail] object         | MQTT通道配置详情               |
| influxdb2_channel_detail | 否    | [CreateInfluxDB2ChannelDetail] object | MQTT通道配置详情               |
| pulsar_channel_detail    | 否    | [CreatePulsarChannelDetail] object       | Pulsar通道配置详情             |
   
 表4CreateMqttChannelDetail 
| 参数              | 是否必选 | 参数类型                                                                                                                | 描述            |
|:---|:---|:---|:---|
| connection_info | 是    | [MqttConnectionInfo] object | 创建外部推送通道请求结构体 |
| push_info       | 是    | [MqttPushInfo] object             | 创建MQTT推送信息    |
   
 表5MqttConnectionInfo 
| 参数              | 是否必选 | 参数类型    | 描述          |
|:---|:---|:---|:---|
| username        | 是    | String  | 鉴权用户名       |
| password        | 是    | String  | 鉴权密码        |
| trust_certs     | 否    | Object  | 客户端信任证书列表   |
| verify_hostname | 否    | Boolean | 客户端是否开启校验域名 |
   
 表6MqttPushInfo 
| 参数          | 是否必选 | 参数类型                                                                                                                | 描述           |
|:---|:---|:---|:---|
| device_data | 否    | [DeviceMqttPushInfo] object | 创建设备数据推送MQTT |
   
 表7DeviceMqttPushInfo 
| 参数     | 是否必选 | 参数类型    | 描述             |
|:---|:---|:---|:---|
| topic  | 是    | String  | client推送的topic |
| format | 否    | String  | 数据格式转换类型       |
| qos    | 否    | Integer | Mqtt的服务质量      |
   
 表8CreateIoTDBChannelDetail 
| 参数              | 是否必选 | 参数类型                                                                                                                  | 描述            |
|:---|:---|:---|:---|
| connection_info | 是    | [IoTDBConnectionInfo] object | 创建外部推送通道请求结构体 |
| push_info       | 是    | [IoTDBPushInfo] object             | 创建IoTDB推送信息   |
   
 表9IoTDBConnectionInfo 
| 参数       | 是否必选 | 参数类型   | 描述    |
|:---|:---|:---|:---|
| username | 是    | String | 鉴权用户名 |
| password | 是    | String | 鉴权密码  |
   
 表10IoTDBPushInfo 
| 参数          | 是否必选 | 参数类型                                                                                                                  | 描述            |
|:---|:---|:---|:---|
| device_data | 否    | [DeviceIoTDBPushInfo] object | 创建设备数据推送IoTDB |
   
 表11DeviceIoTDBPushInfo 
| 参数            | 是否必选 | 参数类型   | 描述       |
|:---|:---|:---|:---|
| storage_group | 是    | String | 数据存储的存储组 |
| format        | 是    | String | 数据格式转换类型 |
   
 表12CreateInfluxDB2ChannelDetail 
| 参数              | 是否必选 | 参数类型                                                                                                                          | 描述            |
|:---|:---|:---|:---|
| connection_info | 是    | [InfluxDB2ConnectionInfo] object | 创建外部推送通道请求结构体 |
| push_info       | 是    | [InfluxDB2PushInfo] object             | 创建IoTDB推送信息   |
   
 表13InfluxDB2ConnectionInfo 
| 参数              | 是否必选 | 参数类型    | 描述          |
|:---|:---|:---|:---|
| token           | 是    | String  | 鉴权token     |
| trust_certs     | 否    | Object  | 客户端信任证书列表   |
| verify_hostname | 否    | Boolean | 客户端是否开启校验域名 |
   
 表14InfluxDB2PushInfo 
| 参数          | 是否必选 | 参数类型                                                                                                                          | 描述           |
|:---|:---|:---|:---|
| device_data | 否    | [DeviceInfluxDB2PushInfo] object | 创建设备数据推送MQTT |
   
 表15DeviceInfluxDB2PushInfo 
| 参数           | 是否必选 | 参数类型   | 描述                          |
|:---|:---|:---|:---|
| organization | 是    | String | 一组用户的工作空间，一组用户下可以创建多个bucket |
| bucket       | 是    | String | 数据存储的地方，结合了数据库和存储周期的概念      |
| format       | 是    | String | 数据格式转换类型                    |
   
 表16CreatePulsarChannelDetail 
| 参数              | 是否必选 | 参数类型                                                                                                                    | 描述            |
|:---|:---|:---|:---|
| connection_info | 是    | [PulsarConnectionInfo] object | 创建外部推送通道请求结构体 |
| push_info       | 是    | [PulsarPushInfo] object             | 创建Pulsar推送信息  |
   
 表17PulsarConnectionInfo 
| 参数    | 是否必选 | 参数类型   | 描述      |
|:---|:---|:---|:---|
| token | 是    | String | 鉴权token |
   
 表18PulsarPushInfo 
| 参数          | 是否必选 | 参数类型                                                                                                                    | 描述             |
|:---|:---|:---|:---|
| device_data | 否    | [DevicePulsarPushInfo] object | 创建设备数据推送Pulsar |
   
 表19DevicePulsarPushInfo 
| 参数    | 是否必选 | 参数类型   | 描述             |
|:---|:---|:---|:---|
| topic | 是    | String | client推送的topic |
   
#### 响应参数
**状态码：201**
表20响应Body参数 
| 参数                       | 参数类型                                                                                                                                     | 描述         |
|:---|:---|:---|
| channel_id               | String                                                                                                                                   | 推送通道ID     |
| name                     | String                                                                                                                                   | 推送通道名称     |
| channel                  | String                                                                                                                                   | 通道         |
| description              | String                                                                                                                                   | 推送通道描述     |
| endpoint                 | String                                                                                                                                   | 推送的地址      |
| mqtt_channel_detail      | [MqttChannelDetailDTO] object                 | MQTT通道详情   |
| iotdb_channel_detail     | [IoTDBChannelDetailDTO] object               | IoTDB通道详情  |
| influxdb2_channel_detail | [CreateInfluxDB2ChannelDetail] object | MQTT通道配置详情 |
| pulsar_channel_detail    | [PulsarChannelDetailDTO] object             | Pulsar通道详情 |
| create_time              | String                                                                                                                                   | 创建时间       |
| update_time              | String                                                                                                                                   | 更新时间       |
   
 表21MqttChannelDetailDTO 
| 参数              | 参数类型                                                                                                                         | 描述         |
|:---|:---|:---|
| connection_info | [MqttConnectionInfoResp] object | 外部推送通道返回详情 |
| push_info       | [MqttPushInfoResp] object             | MQTT推送信息详情 |
   
 表22MqttConnectionInfoResp 
| 参数              | 参数类型    | 描述          |
|:---|:---|:---|
| username        | String  | 鉴权用户名       |
| trust_certs     | Object  | 客户端信任证书列表   |
| verify_hostname | Boolean | 客户端是否开启校验域名 |
   
 表23MqttPushInfoResp 
| 参数          | 参数类型                                                                                                                             | 描述           |
|:---|:---|:---|
| device_data | [DeviceMqttPushInfoDetail] object | 设备数据推送MQTT详情 |
   
 表24DeviceMqttPushInfoDetail 
| 参数     | 参数类型    | 描述             |
|:---|:---|:---|
| topic  | String  | client推送的topic |
| format | String  | 数据格式转换类型       |
| qos    | Integer | MQTT的服务质量      |
   
 表25IoTDBChannelDetailDTO 
| 参数              | 参数类型                                                                                                                           | 描述            |
|:---|:---|:---|
| connection_info | [IoTDBConnectionInfoResp] object | 创建外部推送通道请求结构体 |
| push_info       | [IoTDBPushInfoResp] object             | IoTDB推送信息详情   |
   
 表26IoTDBConnectionInfoResp 
| 参数       | 参数类型   | 描述    |
|:---|:---|:---|
| username | String | 鉴权用户名 |
| password | String | 鉴权密码  |
   
 表27IoTDBPushInfoResp 
| 参数          | 参数类型                                                                                                                               | 描述            |
|:---|:---|:---|
| device_data | [DeviceIoTDBPushInfoDetail] object | 创建设备数据推送IoTDB |
   
 表28DeviceIoTDBPushInfoDetail 
| 参数            | 参数类型   | 描述       |
|:---|:---|:---|
| storage_group | String | 数据存储的存储组 |
| format        | String | 数据格式转换类型 |
   
 表29CreateInfluxDB2ChannelDetail 
| 参数              | 参数类型                                                                                                                           | 描述            |
|:---|:---|:---|
| connection_info | [InfluxDB2ConnectionInfo] object | 创建外部推送通道请求结构体 |
| push_info       | [InfluxDB2PushInfo] object             | 创建IoTDB推送信息   |
   
 表30InfluxDB2ConnectionInfo 
| 参数              | 参数类型    | 描述          |
|:---|:---|:---|
| token           | String  | 鉴权token     |
| trust_certs     | Object  | 客户端信任证书列表   |
| verify_hostname | Boolean | 客户端是否开启校验域名 |
   
 表31InfluxDB2PushInfo 
| 参数          | 参数类型                                                                                                                           | 描述           |
|:---|:---|:---|
| device_data | [DeviceInfluxDB2PushInfo] object | 创建设备数据推送MQTT |
   
 表32DeviceInfluxDB2PushInfo 
| 参数           | 参数类型   | 描述                          |
|:---|:---|:---|
| organization | String | 一组用户的工作空间，一组用户下可以创建多个bucket |
| bucket       | String | 数据存储的地方，结合了数据库和存储周期的概念      |
| format       | String | 数据格式转换类型                    |
   
 表33PulsarChannelDetailDTO 
| 参数              | 参数类型                                                                                                                             | 描述           |
|:---|:---|:---|
| connection_info | [PulsarConnectionInfoResp] object | 外部推送通道返回详情   |
| push_info       | [PulsarPushInfoResp] object             | Pulsar推送信息详情 |
   
 表34PulsarConnectionInfoResp 
| 参数    | 参数类型   | 描述      |
|:---|:---|:---|
| token | String | 鉴权token |
   
 表35PulsarPushInfoResp 
| 参数          | 参数类型                                                                                                                                 | 描述             |
|:---|:---|:---|
| device_data | [DevicePulsarPushInfoDetail] object | 设备数据推送Pulsar详情 |
   
 表36DevicePulsarPushInfoDetail 
| 参数    | 参数类型   | 描述             |
|:---|:---|:---|
| topic | String | client推送的topic |
   
#### 请求示例
```
POST https://{endpoint}/v2/{project_id}/push-channels
{
  "channel_id" : "123456",
  "channel" : "MQTT",
  "name" : "规则1",
  "description" : "这是一个推送通道",
  "endpoint" : "ssl://068b72f3b75444dda67cc6e2286a4c20.apic.cn-south-1.huaweicloudapis.com",
  "mqtt_channel_detail" : {
    "connection_info" : {
      "username" : "admin",
      "password" : "*****",
      "verify_hostname" : true,
      "trust_certs" : [ "cert1" ]
    },
    "push_info" : {
      "device_data" : {
        "topic" : "$oc/gateway/properties/report",
        "format" : "iotda_1.0",
        "qos" : 1
      }
    }
  }
}
```
#### 响应示例
**状态码：201**
```
{
  "channel_id" : "123456",
  "name" : "规则1",
  "channel" : "MQTT",
  "description" : "这是一个推送通道",
  "endpoint" : "ssl://068b72f3b75444dda67cc6e2286a4c20.apic.cn-south-1.huaweicloudapis.com",
  "mqtt_channel_detail" : {
    "connection_info" : {
      "username" : "admin",
      "verify_hostname" : true,
      "trust_certs" : [ "cert1" ]
    },
    "push_info" : {
      "device_data" : {
        "topic" : "$oc/gateway/properties/report",
        "format" : "iotda_1.0",
        "qos" : 1
      }
    }
  },
  "create_time" : "2020-05-28T11:31:29.740Z",
  "update_time" : "2020-05-28T11:31:29.740Z"
}
```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 201 | Created               |
| 400 | BAD REQUEST           |
| 500 | Internal Server Error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-iotedge/ErrorCode.html)。
