# ModifyPolicy

## 1. 接口描述

本接口(ModifyPolicy)用于修改防护策略

## 2. 请求参数

以下请求参数列表仅列出了接口中需要的请求参数

| 参数名称           | 必选 | 类型                                                                                                                           | 描述                                                                                 |
| -------------- | -- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| policyId       | 是  | String                                                                                                                       | 防护策略ID。                                                                            |
| policyName     | 否  | String                                                                                                                       | <p>防护策略的名称。</p><p>范围2到63个字符。</p><p>仅支持输入字母、数字、-和英文句点(.)。</p><p>且必须以数字或字母开头和结尾。</p> |
| configType     | 否  | [PolicyUpdateType](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#policyupdatetype)                | 配置类型。                                                                              |
| blackIpList    | 否  | Array of String                                                                                                              | 黑名单列表。                                                                             |
| whiteIpList    | 否  | Array of String                                                                                                              | 白名单列表。                                                                             |
| ipBlackTimeout | 否  | Integer                                                                                                                      | <p>黑名单超时时间, 单位:分钟。</p><p>可选值范围：\[1, 10080]</p>                                     |
| ports          | 否  | Array of [DdosPolicyPort](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#ddospolicyport)           | 端口封禁, 支持TCP和UDP。                                                                   |
| blockProtocol  | 否  | Array of [Protocol](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#protocol)                       | <p>开启的封禁协议。</p><p>不能同时开启UDP和TCP。</p>                                               |
| blockRegions   | 否  | Array of String                                                                                                              | 封禁的区域。                                                                             |
| finger         | 否  | Array of [DdosFingerprintRule](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#ddosfingerprintrule) | 指纹过滤相关配置。                                                                          |
| reflectUdpPort | 否  | Array of [DdosReflectUdpPort](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#ddosreflectudpport)   | 反射攻击防护过滤的端口列表。                                                                     |
| trafficControl | 否  | [DdosTrafficControl](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#ddostrafficcontrol)            | 源限速配置。                                                                             |
| tags           | 否  | [TagAssociation](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#tagassociation)                    | <p>创建DDoS时关联的标签。</p><p>注意：·关联<code>标签键</code>不能重复。</p>                             |

## 3. 响应结果

| 参数名称      | 类型     | 描述                                                       |
| --------- | ------ | -------------------------------------------------------- |
| requestId | String | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 requestId。</p> |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
**1. 修改防护策略**

```json
POST /api/v2/zec HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: ModifyPolicy
<Common Request Params>

Request：
{
    "policyId": "<policyId>",
    "configType": "UdpReflect",
    "policyName": "policyName",
    "reflectUdpPort": [
       {"port": 22},
       {"port": 34}
    ]
}

Response：
{
  "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
  "response": {
    "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3"
  }
}
```

{% endtab %}
{% endtabs %}

## 5. 开发者工具

Zenlayer Cloud API 2.0 提供了配套的[开发工具集（SDK）](https://docs.console.zenlayer.com/api-reference/cn/api-introduction/toolkit)，未来会陆续支持更多开发语言，方便快速接入和使用Zenlayer的产品和服务。

## 6. 错误码

下面包含业务逻辑中遇到的错误码，其他错误码见[公共错误码](https://docs.console.zenlayer.com/api-reference/cn/api-introduction/instruction/commonerrorcode)

| HTTP状态码 | 错误码                                                               | 说明                       |
| ------- | ----------------------------------------------------------------- | ------------------------ |
| 404     | INVALID\_DDOS\_POLICY\_NOT\_FOUND                                 | DDoS策略不存在。               |
| 404     | INVALID\_DDOS\_POLICY\_REGION\_NOT\_FOUND                         | 封禁区域不存在。                 |
| 400     | INVALID\_IP\_FORMAT                                               | IP格式错误。                  |
| 400     | INVALID\_POLICY\_PACKET\_LENGTH\_RANGE\_OF\_FINGERPRINT           | 指纹过滤的端口范围错误。             |
| 400     | INVALID\_POLICY\_PORT\_OVERLAP                                    | 端口范围有重叠。                 |
| 400     | INVALID\_POLICY\_PORT\_RANGE\_OF\_BLOCKING                        | 端口封禁的端口范围错误。             |
| 400     | INVALID\_POLICY\_PORT\_RANGE\_OF\_FINGERPRINT                     | 指纹过滤的端口范围错误。             |
| 400     | INVALID\_POLICY\_PROTOCOL\_CONFLICT                               | 封禁协议冲突，不能同时开启UDP和TCP。    |
| 409     | INVALID\_POLICY\_TRAFFIC\_CONTROL\_VALUE                          | 源限速值未设定。                 |
| 409     | INVALID\_REFLECT\_UDP\_PORT\_CONFLICT\_DEFAULT                    | 自定义UDP反射源端口已存在在默认中，无法设置。 |
| 400     | OPERATION\_DENIED\_POLICY\_ACTION\_AFTER\_MATCHING                | 匹配后的动作不支持。               |
| 400     | OPERATION\_DENIED\_POLICY\_FINGERPRINT\_FILTER\_LIMITED           | 指纹过滤数量超过限制。              |
| 400     | OPERATION\_DENIED\_POLICY\_PORT\_BLOCKING\_LIMITED                | 端口封禁数量超过限制。              |
| 400     | OPERATION\_DENIED\_POLICY\_REFLECTION\_ATTACK\_FILTERING\_LIMITED | 反射攻击过滤数量超过限制。            |
| 400     | OPERATION\_DENIED\_POLICY\_WHITE\_BLACK\_IP\_LIMITED              | IP黑白名单数量超过限制。            |
