
# 创建发放策略
#### 功能介绍
创建发放策略
#### URI
POST /v5/iotps/{project_id}/allocation-strategies/{strategy_type}
表1路径参数 
| 参数            | 是否必选 | 参数类型   | 描述                                                                        |
|:---|:---|:---|:---|
| project_id    | 是    | String | 项目ID。 最小长度：**1** 最大长度：**32**                                              |
| strategy_type | 是    | String | 策略类型。支持静态策略(base)、证书策略(certificates)、自定义策略(functions)多种策略类型。 缺省值：**base** |
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                        |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。 通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 |
   
表3请求Body参数 
| 参数                     | 是否必选 | 参数类型                                                                                     | 描述                                                                       |
|:---|:---|:---|:---|
| authorizer             | 否    | [TenantDomainReq] object         | 授权账号信息。access_points为授权租户的接入点时必填。                                        |
| access_points          | 是    | Array of [AccessPointReq] objects | 策略实例指向的接入点ID。自定义策略(FUNCTION)可填多个接入点ID，其他策略类型只允许填一个接入点ID。 数组长度：**1 - 10** |
| base_strategy_info     | 否    | [BaseStrategyInfoReq] object | 静态策略结构体。策略类型为静态策略(base)时必填。                                              |
| cert_strategy_info     | 否    | [CertStrategyInfoReq] object | 证书策略结构体。策略类型为证书策略(certificates)时必填。                                      |
| function_strategy_info | 否    | [FunctionStrategyReq] object | 自定义策略结构体。策略类型为自定义策略(functions)时必填。                                       |
   
 表4TenantDomainReq 
| 参数        | 是否必选 | 参数类型   | 描述      |
|:---|:---|:---|:---|
| domain_id | 是    | String | 公有云账户ID |
   
 表5AccessPointReq 
| 参数              | 是否必选 | 参数类型   | 描述                                |
|:---|:---|:---|:---|
| access_point_id | 是    | String | 接入点ID。 最小长度：**1** 最大长度：**64**     |
| region_id       | 是    | String | 接入点所属区域ID。 最小长度：**1** 最大长度：**64** |
   
 表6BaseStrategyInfoReq 
| 参数           | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| keyword      | 是    | String  | 静态策略的关键字。 最小长度：**1** 最大长度：**256**                                                                                                                                                                                                                                                     |
| priority     | 是    | Integer | 静态策略的优先级别。 取值范围：0-4，0级最低，4级最高。 最小值：**0** 最大值：**4**                                                                                                                                                                                                                                    |
| app_id       | 否    | String  | 应用ID。设备发放的目的接入点的目的应用，不填时，取默认应用。 最小长度：**1** 最大长度：**64**                                                                                                                                                                                                                                |
| keyword_from | 否    | String  | 关键字来源。设备发放静态策略的匹配信息来源。 deviceName: 设备名称，默认的匹配方式，设备信息在被创建后，设备名称包涵设置的关键字，即可按照该行策略指定的发放应用进行实例发放。 payload: 数据上报，如果设备在连接后，进行发放publish时。上报Topic "$oc/devices/${deviceId}/sys/bootstrap/up" 中，json上报的属性 "baseStrategyKeyword" 包含设置的关键字，即可按该实例进行发放。 缺省值：**deviceName** 最小长度：**1** 最大长度：**64** |
   
 表7CertStrategyInfoReq 
| 参数      | 是否必选 | 参数类型   | 描述                                                     |
|:---|:---|:---|:---|
| cert_id | 是    | String | 证书ID。 最小长度：**1** 最大长度：**64**                           |
| app_id  | 否    | String | 应用ID。设备发放的目的接入点的目的应用，不填时，取默认应用。 最小长度：**1** 最大长度：**64** |
   
 表8FunctionStrategyReq 
| 参数       | 是否必选 | 参数类型   | 描述                                                           |
|:---|:---|:---|:---|
| func_urn | 是    | String | 函数的URN（Uniform Resource Name），唯一标识函数 最小长度：**1** 最大长度：**360** |
   
#### 响应参数
**状态码： 200**
表9响应Body参数 
| 参数                     | 参数类型                                                                                        | 描述                                                                        |
|:---|:---|:---|
| strategy_id            | String                                                                                      | 策略id。 最小长度：**1** 最大长度：**64**                                              |
| strategy_type          | String                                                                                      | 策略类型。支持静态策略(base)、证书策略(certificates)、自定义策略(functions)多种策略类型。 缺省值：**base** |
| authorizer             | [TenantDomainResp] object         | 授权账号信息结构体                                                                 |
| access_points          | Array of [AccessPointResp] objects | 发放区域。 数组长度：**0 - 1000**                                                   |
| base_strategy_info     | [BaseStrategyInfo] object         | 静态策略结构体                                                                   |
| cert_strategy_info     | [CertStrategyInfo] object         | 证书策略结构体                                                                   |
| function_strategy_info | [FunctionStrategyInfo] object | 自定义策略结构体                                                                  |
   
 表10TenantDomainResp 
| 参数          | 参数类型   | 描述                            |
|:---|:---|:---|
| domain_id   | String | 公有云账户ID                       |
| domain_name | String | 公有云账户名 最小长度：**1** 最大长度：**64** |
   
 表11AccessPointResp 
| 参数                | 参数类型   | 描述                                                                               |
|:---|:---|:---|
| access_point_id   | String | 接入点id。 最小长度：**1** 最大长度：**256**                                                   |
| access_point_name | String | 接入点名称。 最小长度：**1** 最大长度：**256**                                                   |
| region_id         | String | 华为云终端节点ID。节选自https://developer.huaweicloud.com/endpoint。 最小长度：**1** 最大长度：**128** |
   
 表12BaseStrategyInfo 
| 参数           | 参数类型    | 描述                                                                                                                                                                                                                                                                 |
|:---|:---|:---|
| keyword      | String  | 静态策略的关键字。 最小长度：**1** 最大长度：**256**                                                                                                                                                                                                                                  |
| priority     | Integer | 静态策略的优先级别。 取值范围：0-4，0级最低，4级最高。 最小值：**0** 最大值：**4**                                                                                                                                                                                                                 |
| app_id       | String  | 应用ID。设备发放的目的接入点的目的应用。 最小长度：**1** 最大长度：**64**                                                                                                                                                                                                                       |
| app_name     | String  | 应用名。设备发放的目的接入点的目的应用。 最小长度：**1** 最大长度：**64**                                                                                                                                                                                                                        |
| keyword_from | String  | 关键字来源。设备发放静态策略的匹配信息来源。 deviceName: 设备名称，默认的匹配方式，设备信息在被创建后，设备名称包涵设置的关键字，即可按照该行策略指定的发放应用进行实例发放。 payload: 数据上报，如果设备在连接后，进行发放publish时。上报Topic "$oc/devices/${deviceId}/sys/bootstrap/up" 中，json上报的属性 "baseStrategyKeyword" 包含设置的关键字，即可按该实例进行发放。 最小长度：**1** 最大长度：**64** |
   
 表13CertStrategyInfo 
| 参数        | 参数类型   | 描述                                           |
|:---|:---|:---|
| cert_id   | String | 证书ID。 最小长度：**1** 最大长度：**64**                 |
| cert_name | String | 证书名称。 最小长度：**0** 最大长度：**256**                |
| app_id    | String | 应用ID。设备发放的目的接入点的目的应用。 最小长度：**1** 最大长度：**64** |
| app_name  | String | 应用名。设备发放的目的接入点的目的应用。 最小长度：**1** 最大长度：**64**  |
   
 表14FunctionStrategyInfo 
| 参数        | 参数类型   | 描述                                                           |
|:---|:---|:---|
| func_name | String | function名称。 最小长度：**1** 最大长度：**64**                           |
| func_urn  | String | 函数的URN（Uniform Resource Name），唯一标识函数 最小长度：**1** 最大长度：**360** |
   
#### 请求示例
- 创建静态策略请求示例
  ```
  POST https://{endpoint}/v5/iotps/{project_id}/allocation-strategies/base
  {
    "access_points" : [ {
      "access_point_id" : "599d1975-ec30-4a5f-a390-ef388a1fbc71",
      "region_id" : "cn-north-4"
    } ],
    "base_strategy_info" : {
      "keyword" : "waterMeterDevice",
      "keyword_from" : "deviceName",
      "priority" : 0
    }
  }
  ```
- 创建证书策略请求示例
  ```
  POST https://{endpoint}/v5/iotps/{project_id}/allocation-strategies/certificates
  {
    "access_points" : [ {
      "access_point_id" : "599d1975-ec30-4a5f-a390-ef388a1fbc71",
      "region_id" : "cn-north-4"
    } ],
    "cert_strategy_info" : {
      "cert_id" : "dc0f1016f495157344ac5f1296335cff725ef22f"
    }
  }
  ```
- 创建自定义策略请求示例
  ```
  POST https://{endpoint}/v5/iotps/{project_id}/allocation-strategies/functions
  {
    "access_points" : [ {
      "access_point_id" : "599d1975-ec30-4a5f-a390-ef388a1fbc71",
      "region_id" : "cn-north-4"
    }, {
      "access_point_id" : "dc0f1016f495157344ac5f1296335cff725ef22f",
      "region_id" : "cn-north-1"
    } ],
    "function_strategy_info" : {
      "func_urn" : "urn:fss:xxxxxxxxx:7aad83af3e8d42e99ac194e8419e2c9b:function:default:test"
    }
  }
  ```
#### 响应示例
**状态码： 200**
Created
- 示例 1
  ```
  {
    "strategy_id" : "599d1975-ec30-4a5f-a390-ef388a1fbc70",
    "strategy_type" : "base",
    "access_points" : {
      "access_point_id" : "DMP-CNNorth-4-1",
      "access_point_name" : "设备管理-北京四-1",
      "region_id" : "cn-north-4"
    },
    "base_strategy_info" : {
      "priority" : 0,
      "keyword" : "mqttd",
      "app_id" : "dc0f1016f495157344ac5f1296335cff725ef22f",
      "app_name" : "mqttApp",
      "keyword_from" : "payload"
    }
  }
  ```
- 示例 2
  ```
  {
    "strategy_id" : "599d1975-ec30-4a5f-a390-ef388a1fbc70",
    "strategy_type" : "certificates",
    "access_points" : {
      "access_point_id" : "DMP-CNNorth-4-1",
      "access_point_name" : "设备管理-北京四-1",
      "region_id" : "cn-north-4"
    },
    "cert_strategy_info" : {
      "cert_id" : "599d1975-ec30-4a5f-a390-ef388a1fbc70",
      "cert_name" : "mqttCaCert",
      "app_id" : "dc0f1016f495157344ac5f1296335cff725ef22f",
      "app_name" : "mqttApp"
    }
  }
  ```
- 示例 3
  ```
  {
    "strategy_id" : "599d1975-ec30-4a5f-a390-ef388a1fbc70",
    "strategy_type" : "functions",
    "access_points" : {
      "access_point_id" : "DMP-CNNorth-4-1",
      "access_point_name" : "设备管理-北京四-1",
      "region_id" : "cn-north-4"
    },
    "function_strategy_info" : {
      "func_name" : "599d1975-ec30-4a5f-a390-ef388a1fbc70",
      "func_urn" : "urn:fss:xxxxxxxxx:7aad83af3e8d42e99ac194e8419e2c9b:function:default:test"
    }
  }
  ```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 200 | Created               |
| 400 | Bad Request           |
| 403 | Forbidden             |
| 500 | Internal Server Error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-iotps/ErrorCode.html)。
