## CC 规则 (`cc-rules`)

把匹配器与过滤器按序组合成的 CC 规则组,站点可选用其中一组。

鉴权: 用户（部分参数仅管理员） · 文档: https://www-demo.kuxitong.com/zh/docs/api/cc-rules

### GET `/api/v2/cc-rules`

列出CC 规则组 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `page` | integer |  | 页码,从 1 开始。 默认: 1 |
| `page_size` | integer |  | 每页条数。 默认: 20 |
| `sort` | string |  | 排序字段,逗号分隔,前缀 `-` 表示降序,如 `-created_at,id`。 |
| `tenant_id` | integer |  | 仅管理员可用:按租户过滤。租户凭据调用时忽略,只返回本租户数据。 |
| `enabled` | boolean |  | 按启用状态过滤。 |
| `name` | string |  | 按名称包含过滤。 |
| `owner` | string |  | platform = 只看平台对象;tenant = 只看租户对象。 可选值: ["platform","tenant"] |

```sh
curl "https://panel.example.com/api/v2/cc-rules" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### POST `/api/v2/cc-rules`

创建CC 规则组 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `des` | string |  | 备注;不给则为空(修改时不给也清空,整体替换)。 |
| `enabled` | boolean |  | 是否启用 默认: true |
| `items` | CcRuleItem[] | 有 | 规则条目,按序执行;条数受配置 protect.cc_rule_items_max 约束。 |
| `name` | string | 有 | 名称 |
| `show_to` | integer[] |  | 平台规则组的可见租户;空 = 所有租户可见,非空只有列出的租户能看到、能在站点 cc_level 选它。只返回给管理员。 |
| `sort` | integer |  | 面板排序(小的在前)。 |
| `tenant_id` | integer |  | 所属租户;null = 平台对象(内置或管理员建,租户只读)。 |
| `visible` | boolean |  | 在站点的规则组下拉里展示。 默认: true |

```sh
curl -X POST "https://panel.example.com/api/v2/cc-rules" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"action":"ban","filter_ids":[8],"match_id":3}],"name":"js"}'
```

### POST `/api/v2/cc-rules/batch-enable`

批量启用或禁用CC规则组 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `enabled` | boolean | 有 | 是否启用 默认: true |
| `ids` | integer[] | 有 | 要改的对象 id,至多 100 个。 |

```sh
curl -X POST "https://panel.example.com/api/v2/cc-rules/batch-enable" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false,"ids":[1,2]}'
```

### GET `/api/v2/cc-rules/{id}`

获取CC 规则组 · 鉴权: 用户（部分参数仅管理员）

```sh
curl "https://panel.example.com/api/v2/cc-rules/{id}" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### PUT `/api/v2/cc-rules/{id}`

修改CC 规则组 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `des` | string |  | 备注;不给则为空(修改时不给也清空,整体替换)。 |
| `enabled` | boolean |  | 是否启用 默认: true |
| `items` | CcRuleItem[] | 有 | 规则条目,按序执行;条数受配置 protect.cc_rule_items_max 约束。 |
| `name` | string | 有 | 名称 |
| `show_to` | integer[] |  | 平台规则组的可见租户;空 = 所有租户可见,非空只有列出的租户能看到、能在站点 cc_level 选它。只返回给管理员。 |
| `sort` | integer |  | 面板排序(小的在前)。 |
| `tenant_id` | integer |  | 所属租户;null = 平台对象(内置或管理员建,租户只读)。 |
| `visible` | boolean |  | 在站点的规则组下拉里展示。 默认: true |

```sh
curl -X PUT "https://panel.example.com/api/v2/cc-rules/{id}" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"action":"ban","filter_ids":[8],"match_id":3}],"name":"js"}'
```

### DELETE `/api/v2/cc-rules/{id}`

删除CC 规则组 · 鉴权: 用户（部分参数仅管理员）

```sh
curl -X DELETE "https://panel.example.com/api/v2/cc-rules/{id}" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

CC 规则对象:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `builtin` | boolean |  | 内置对象,不可删。 (只读) |
| `created_at` | string |  | 创建时间 (只读) |
| `des` | string |  | 备注;不给则为空(修改时不给也清空,整体替换)。 |
| `enabled` | boolean |  | 是否启用 默认: true |
| `errors` | FieldError[] |  | 没改的逐条原因;field 为 /ids/<下标>,code 同单条修改接口(not_found、readonly 等)。 |
| `id` | integer |  | 记录 ID (只读) |
| `ids` | integer[] | 有 | 要改的对象 id,至多 100 个。 |
| `items` | CcRuleItem[] |  | 规则条目,按序执行;条数受配置 protect.cc_rule_items_max 约束。 |
| `name` | string |  | 名称 |
| `ruleset_id` | string |  | 编译成的规则集 id:平台 cc.level.<名>(站点 cc_level、guard.default_cc_level 引用它);租户 cc.user.r<id>(本租户站点的 cc_level 可选它,带套餐的站点须套餐有 custom_cc_rule)。 (只读) |
| `show_to` | integer[] |  | 平台规则组的可见租户;空 = 所有租户可见,非空只有列出的租户能看到、能在站点 cc_level 选它。只返回给管理员。 |
| `sort` | integer |  | 面板排序(小的在前)。 |
| `tenant_id` | integer |  | 所属租户;null = 平台对象(内置或管理员建,租户只读)。 (只读) |
| `updated` | integer[] |  | 已改好的 id(含本来就是目标状态的),按请求顺序。 |
| `updated_at` | string |  | 更新时间 (只读) |
| `visible` | boolean |  | 在站点的规则组下拉里展示。 默认: true |
