## 缓存分组 (`cache-groups`)

一组缓存规则,可供多个站点引用;分平台分组与租户自建分组。

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

### GET `/api/v2/cache-groups`

列出缓存分组 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `page` | integer |  | 页码,从 1 开始。 默认: 1 |
| `page_size` | integer |  | 每页条数。 默认: 20 |
| `sort` | string |  | 排序字段,逗号分隔,前缀 `-` 表示降序,如 `-created_at,id`。 |
| `tenant_id` | integer |  | 仅管理员可用:按租户过滤。租户凭据调用时忽略,只返回本租户数据。 |

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

### POST `/api/v2/cache-groups`

创建缓存分组 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `cache` | CacheConfig |  | 缓存规则,同节点契约 schema/site.json 的 cache({rules, ignore_params}),服务端按契约校验。 |
| `des` | string |  | 备注说明 |
| `from_site_id` | integer |  | 从站点另存(规则取该站当前生效值,忽略 cache)。 |
| `is_default` | boolean |  | 平台默认分组(恰一个)。 |
| `name` | string | 有 | 名称 |
| `sort` | integer |  | 排序值(小的在前)。 |
| `switch_site` | boolean |  | 另存后让该站引用新分组。 |

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

### GET `/api/v2/cache-groups/{id}`

获取缓存分组 · 鉴权: 用户（部分参数仅管理员）

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

### PUT `/api/v2/cache-groups/{id}`

修改缓存分组 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `cache` | CacheConfig |  | 缓存规则,同节点契约 schema/site.json 的 cache({rules, ignore_params}),服务端按契约校验。 |
| `des` | string |  | 备注说明 |
| `name` | string |  | 名称 |
| `sort` | integer |  | 排序值(小的在前)。 |

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

### DELETE `/api/v2/cache-groups/{id}`

删除缓存分组 · 鉴权: 用户（部分参数仅管理员）

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

### POST `/api/v2/cache-groups/{id}/copy`

复制缓存分组 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `des` | string |  | 备注说明 |
| `name` | string | 有 | 名称 |
| `sort` | integer |  | 排序值(小的在前)。 |

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

### POST `/api/v2/cache-groups/{id}/set-default`

设为平台默认分组 · 鉴权: 仅管理员

```sh
curl -X POST "https://panel.example.com/api/v2/cache-groups/{id}/set-default" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

缓存分组对象:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `cache` | CacheConfig |  | 缓存规则,同节点契约 schema/site.json 的 cache({rules, ignore_params}),服务端按契约校验。 |
| `created_at` | string |  | 创建时间 (只读) |
| `des` | string |  | 备注说明 |
| `from_site_id` | integer |  | 从站点另存(规则取该站当前生效值,忽略 cache)。 |
| `id` | integer |  | 记录 ID (只读) |
| `is_default` | boolean |  | 平台默认分组(恰一个)。 (只读) |
| `name` | string |  | 名称 |
| `site_count` | integer |  | 显式引用它的站点数(租户调用只数自己的)。 (只读) |
| `sort` | integer |  | 排序值(小的在前)。 |
| `switch_site` | boolean |  | 另存后让该站引用新分组。 |
| `tenant_id` | integer |  | 属主租户;null = 平台分组。 (只读) |
| `updated_at` | string |  | 更新时间 (只读) |
