## 网站 (`sites`)

CDN 加速站点。新建至少要域名与源站;管理员可跨租户管理。

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

### GET `/api/v2/sites`

列出站点 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `page` | integer |  | 页码,从 1 开始。 默认: 1 |
| `page_size` | integer |  | 每页条数。 默认: 20 |
| `sort` | string |  | 排序字段,逗号分隔,前缀 `-` 表示降序,如 `-created_at,id`。 |
| `tenant_id` | integer |  | 仅管理员可用:按租户过滤。租户凭据调用时忽略,只返回本租户数据。 |
| `ids` | string |  | 只列这些 id:逗号分隔的正整数,去重后至多 200 个(同 page_size 上限,超了 400);空串等同不传。与其他条件取交集;看不到的 id 不返回也不报错。分页照旧,一次取回要把 page_size 设成不少于 id 个数。 |
| `domain` | string |  | 按域名子串过滤(不分大小写):a.example.com 也会命中 www.a.example.com;精确查用 domains。 |
| `domains` | string |  | 多个域名逗号分隔,站点任一域名与其中之一整项相同即命中(不分大小写,不做子串匹配)。 |
| `group_id` | integer |  | 只列该分组里的站点。 |
| `group_ids` | string |  | 多个分组 id 逗号分隔(正整数,去重后至多 200 个),站点在其中任一分组里即命中;可与 group_id 同用(两者都要满足)。 |
| `app` | string |  | 按体检识别出的程序(report_checkup_sites.app,如 wordpress)精确过滤;还没体检过的站点不命中。 |
| `enabled` | boolean |  | 按启停过滤。 |
| `id` | integer |  | 按站点 id 精确过滤。 |
| `name` | string |  | 按名称子串过滤。 |
| `origin` | string |  | 按源站主机子串过滤。 |
| `stop_code` | integer |  | 按停服码过滤;0 = 正常。 |
| `upid` | integer |  | 按用户套餐过滤。 |
| `http_port` | integer |  | 只列 HTTP 监听端口(config.http_ports)里有这个端口的站点,整段匹配。 |
| `https_port` | integer |  | 只列 HTTPS 监听端口(config.https.ports)里有这个端口的站点;没开 HTTPS 的不算,整段匹配。 |
| `https_enabled` | boolean |  | true 只列开了 HTTPS(config.https 有监听端口)的站点,false 只列没开的。 |
| `package_id` | integer |  | 按基础套餐过滤。 |
| `region_id` | integer |  | 按区域过滤:接入名的主线路分组属于该区域;没有自己接入名的按所属已售套餐的共用接入名算。 |
| `node_group_id` | integer |  | 按线路分组过滤:接入名的主线路分组或备用线路分组是它。 |
| `cname_domain_id` | integer |  | 按接入根域过滤。 |
| `cname_hostname` | string |  | 按接入名主机记录精确过滤。 |
| `sync_state` | string |  | 按配置同步状态过滤:behind = 配置落后(还有在线节点没装上它最近一次修改后的配置版本); 可选值: ["behind","synced"] |

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

### POST `/api/v2/sites`

创建站点 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `tenant_id` | integer |  | 管理员代建时的属主租户(必填);租户调用时忽略,属主恒为本人。 |

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `cname` | CnameBinding |  | 接入名(CNAME):用户把域名 CNAME 到 fqdn,解析由平台按节点组生成;没有接入名时为 null。 |
| `config` | object |  | 节点配置字段(schema/site.json 的顶层字段,去掉 id、uid、upid、domains、origins、enabled、stop_code、rulesets)。 |
| `domains` | string[] | 有 | 站点绑定的域名。 |
| `enabled` | boolean |  | 是否启用 |
| `group_ids` | integer[] |  | 站点所属分组的 id。 |
| `name` | string |  | 名称 |
| `origins` | SiteOrigin[] | 有 | 源站列表。 |
| `stop_code` | integer |  | 0 = 正常;非 0 = 所有请求回这个状态码(管理员/计费设置)。 |
| `upid` | integer |  | 用户套餐 id(套餐域上线前可空;快照里空时取 tenant_id)。 |

```sh
curl -X POST "https://panel.example.com/api/v2/sites" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domains":["www.example.com"],"name":"demo","origins":[{"host":"203.0.113.10"}]}'
```

### POST `/api/v2/sites/batch`

批量操作站点 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `tenant_id` | integer |  | 管理员代建时的属主租户(必填);租户调用时忽略,属主恒为本人。 |

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `action` | string | 有 | 批量动作:set_enabled(启停)、delete(删除)、set_groups(设置分组)、update_config(合并配置)、create(批量新建)。 可选值: ["set_enabled","delete","set_groups","update_config","create"] |
| `config` | object |  | 节点配置字段(schema/site.json 的顶层字段,去掉 id、uid、upid、domains、origins、enabled、stop_code、rulesets)。 |
| `enabled` | boolean |  | 是否启用 |
| `group_ids` | integer[] |  | 站点所属分组的 id。 |
| `ids` | integer[] |  | 要操作的站点 id(最多 100 个;create 以外的动作必填)。 |
| `items` | SiteWrite[] |  | create 用:要新建的站点(最多 100 个),每条同 POST /sites 的请求体。 |

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

### POST `/api/v2/sites/checkup-fix-batch`

批量一键修复体检问题 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `batch` | string |  | 只用于 rec_type:分段修复时带上第一段返回的批次号,各段的撤销快照记在同一批里;不带则新开一批。 |
| `ids` | integer[] | 有 | 要操作的站点 id(最多 100 个;create 以外的动作必填)。 |
| `key` | string | 有 | 要修复的体检项键,含义同单站一键修复。 可选值: ["no_https","tls_old","sec_headers","waf_block","cc_mid","rec_type"] |

```sh
curl -X POST "https://panel.example.com/api/v2/sites/checkup-fix-batch" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### GET `/api/v2/sites/checkup-fix-batches`

列出最近的体检修复批次 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `tenant_id` | integer |  | 仅管理员可用:按租户过滤。租户凭据调用时忽略,只返回本租户数据。 |

```sh
curl "https://panel.example.com/api/v2/sites/checkup-fix-batches" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### GET `/api/v2/sites/origin-alerts`

源站内容不一致告警 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `site_id` | integer |  | 只看该站点。 |

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

### POST `/api/v2/sites/protect-recommend/apply`

批量套用推荐防护配置 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `ids` | integer[] | 有 | 要操作的站点 id(最多 100 个;create 以外的动作必填)。 |
| `observe_days` | integer |  | 覆盖推荐表里 waf_mode 的先观察天数(0 = 直接拦截);缺省按推荐表。 |
| `skip` | string[] |  | 用户取消勾选、本次不套用的推荐项。 |
| `type` | string | 有 | 网站类型:企业官网、电商、内容资讯、API 服务、后台管理、下载分发。 可选值: ["corporate","shop","content","api","admin","download"] |

```sh
curl -X POST "https://panel.example.com/api/v2/sites/protect-recommend/apply" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### POST `/api/v2/sites/protect-recommend/preview`

预览推荐防护配置的影响 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `ids` | integer[] | 有 | 要操作的站点 id(最多 100 个;create 以外的动作必填)。 |
| `observe_days` | integer |  | 覆盖推荐表里 waf_mode 的先观察天数(0 = 直接拦截);缺省按推荐表。 |
| `skip` | string[] |  | 用户取消勾选、本次不套用的推荐项。 |
| `type` | string |  | 网站类型:企业官网、电商、内容资讯、API 服务、后台管理、下载分发。 可选值: ["corporate","shop","content","api","admin","download"] |

```sh
curl -X POST "https://panel.example.com/api/v2/sites/protect-recommend/preview" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### POST `/api/v2/sites/protect-recommend/undo`

撤销一批推荐防护配置 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `batch` | string | 有 | 只用于 rec_type:分段修复时带上第一段返回的批次号,各段的撤销快照记在同一批里;不带则新开一批。 |
| `ids` | integer[] | 有 | 要操作的站点 id(最多 100 个;create 以外的动作必填)。 |

```sh
curl -X POST "https://panel.example.com/api/v2/sites/protect-recommend/undo" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### POST `/api/v2/sites/region-check`

地区限制保存前检查 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `region_limit` | object | 有 | 要检查的地区限制(同 Site.config.region_limit)。 |

```sh
curl -X POST "https://panel.example.com/api/v2/sites/region-check" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"region_limit":{"country":["JP"],"mode":"block"}}'
```

### POST `/api/v2/sites/select-ids`

取筛选结果的全部站点 id · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `tenant_id` | integer |  | 仅管理员可用:按租户过滤。租户凭据调用时忽略,只返回本租户数据。 |

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `app` | string |  | 按体检识别出的程序精确过滤。 |
| `domain` | string |  | 按域名子串过滤(不分大小写)。 |
| `domains` | string[] |  | 站点绑定的域名。 |
| `enabled` | boolean |  | 是否启用 |
| `group_id` | integer |  | 只取该分组里的站点。 |
| `group_ids` | integer[] |  | 站点所属分组的 id。 |
| `name` | string |  | 名称 |
| `origin` | string |  | 按源站主机子串过滤。 |
| `stop_code` | integer |  | 0 = 正常;非 0 = 所有请求回这个状态码(管理员/计费设置)。 |
| `upid` | integer |  | 用户套餐 id(套餐域上线前可空;快照里空时取 tenant_id)。 |

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

### GET `/api/v2/sites/{id}`

获取站点 · 鉴权: 用户（部分参数仅管理员）

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

### PUT `/api/v2/sites/{id}`

修改站点 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `cname` | CnameBinding |  | 接入名(CNAME):用户把域名 CNAME 到 fqdn,解析由平台按节点组生成;没有接入名时为 null。 |
| `config` | object |  | 节点配置字段(schema/site.json 的顶层字段,去掉 id、uid、upid、domains、origins、enabled、stop_code、rulesets)。 |
| `domains` | string[] |  | 站点绑定的域名。 |
| `enabled` | boolean |  | 是否启用 |
| `expected_updated_at` | string |  | 乐观锁(修改时用):调用方读到的该资源 updated_at。与库里当前值不等则回 409 stale_version、不保存;不带则不检查。 |
| `group_ids` | integer[] |  | 站点所属分组的 id。 |
| `name` | string |  | 名称 |
| `origins` | SiteOrigin[] |  | 源站列表。 |
| `stop_code` | integer |  | 0 = 正常;非 0 = 所有请求回这个状态码(管理员/计费设置)。 |
| `upid` | integer |  | 用户套餐 id(套餐域上线前可空;快照里空时取 tenant_id)。 |

```sh
curl -X PUT "https://panel.example.com/api/v2/sites/{id}" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'
```

### DELETE `/api/v2/sites/{id}`

删除站点 · 鉴权: 用户（部分参数仅管理员）

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

### POST `/api/v2/sites/{id}/checkup-fix`

一键修复体检问题 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `key` | string | 有 | 要修复的体检项键,含义同单站一键修复。 可选值: ["no_https","tls_old","sec_headers","waf_block","cc_mid","rec_type"] |

```sh
curl -X POST "https://panel.example.com/api/v2/sites/{id}/checkup-fix" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"key":"no_https"}'
```

### GET `/api/v2/sites/{id}/health`

站点回源健康状态 · 鉴权: 用户（部分参数仅管理员）

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

### GET `/api/v2/sites/{id}/l2`

查看网站分层回源 · 鉴权: 用户（部分参数仅管理员）

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

### PATCH `/api/v2/sites/{id}/l2`

修改网站分层回源 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `enabled` | boolean |  | 是否启用 |
| `l2_group_id` | integer |  | 使用的 L2 组;null = 区域默认。 |
| `l2_pick` | string |  | 本站选 L2 的方式;null = 跟默认设置。 可选值: ["region","near"] |
| `origin_l2_only` | boolean |  | 源站只允许 L2 访问:动态请求也经 L2,本区域没 L2 时借用其他区域。 |
| `origin_max_conns` | integer |  | 源站最大并发(每节点在途);0 = 不限,超了排队不报 503。 |

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

### GET `/api/v2/sites/{id}/l2-egress-ips`

源站放行清单 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `fmt` | string |  | text 的格式:ip 每行一个、nginx allow 行、iptables 规则;缺省 ip。 可选值: ["ip","nginx","iptables"] 默认: "ip" |

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

### GET `/api/v2/sites/{id}/l2-stats`

网站的分层回源统计 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `start` | string | 有 | 起始时间(含),RFC 3339。 |
| `end` | string | 有 | 结束时间(不含),RFC 3339。 |

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

### PUT `/api/v2/sites/{id}/site-type`

设置网站类型 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `type` | string | 有 | 网站类型:企业官网、电商、内容资讯、API 服务、后台管理、下载分发。 可选值: ["corporate","shop","content","api","admin","download"] |

```sh
curl -X PUT "https://panel.example.com/api/v2/sites/{id}/site-type" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"shop"}'
```

### GET `/api/v2/sites/{id}/speed`

站点加速效果 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `range` | string |  | 统计窗口,缺省 24h。 可选值: ["1h","24h","7d"] 默认: "24h" |

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

### GET `/api/v2/sites/{id}/upload-scan/exceptions`

列出站点的上传扫描例外 · 鉴权: 用户（部分参数仅管理员）

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

### POST `/api/v2/sites/{id}/upload-scan/false-positive`

标记站点的上传扫描误报 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `path` | string |  | 路径前缀(以 / 开头);不给取 /。 |
| `sha256` | string |  | 命中文件的 sha256(小写十六进制);租户提交时须是本站上传命中事件里出现过的指纹;给了且情报共享开着、sig 非空时同事务内记一条误报情报待上报。 |
| `sig` | string |  | 误报的特征名(事件规则名,如 webshell.php.eval);空 = 该路径整段不扫描(此时必须给 path)。 |

```sh
curl -X POST "https://panel.example.com/api/v2/sites/{id}/upload-scan/false-positive" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"path":"/upload/avatar/","sig":"ext:php"}'
```

### DELETE `/api/v2/sites/{id}/upload-scan/false-positive`

撤销站点标记的上传扫描误报 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `path` | string | 有 | 例外的路径前缀。 |
| `sig` | string |  | 例外的特征名;不给或空 = 路径整段例外。 |

```sh
curl -X DELETE "https://panel.example.com/api/v2/sites/{id}/upload-scan/false-positive" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### GET `/api/v2/sites/{id}/url-guard/active`

列出站点在途的全网 URL 防护 · 鉴权: 用户（部分参数仅管理员）

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

### POST `/api/v2/sites/{id}/url-guard/revoke`

手动撤销站点在途的全网 URL 防护 · 鉴权: 用户（部分参数仅管理员）

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `path` | string |  | 路径前缀(以 / 开头);不给取 /。 |

```sh
curl -X POST "https://panel.example.com/api/v2/sites/{id}/url-guard/revoke" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

网站对象:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `action` | string | 有 | 批量动作:set_enabled(启停)、delete(删除)、set_groups(设置分组)、update_config(合并配置)、create(批量新建)。 可选值: ["set_enabled","delete","set_groups","update_config","create"] |
| `added_at` | string |  | 加入时间;早期手工条目没有。 |
| `affected` | integer |  | 受影响的条数 |
| `app` | string |  | 按体检识别出的程序精确过滤。 |
| `batch` | string |  | 只用于 rec_type:分段修复时带上第一段返回的批次号,各段的撤销快照记在同一批里;不带则新开一批。 |
| `capacity_warnings` | SiteCapacityWarning[] |  | 只在建站(POST /sites)与改到别的线路分组(PUT /sites/{id})的响应里、目标线路分组有节点站数已达内存容量上限时给出;只提示不拦截,没有超限节点时不给这个字段。 (只读) |
| `checked_at` | string |  | 本次向节点要明细的时间。 |
| `cname` | CnameBinding |  | 接入名(CNAME):用户把域名 CNAME 到 fqdn,解析由平台按节点组生成;没有接入名时为 null。 |
| `config` | object |  | 节点配置字段(schema/site.json 的顶层字段,去掉 id、uid、upid、domains、origins、enabled、stop_code、rulesets)。 |
| `country` | string |  | 国家/地区编号,没有不给。 |
| `created_at` | string |  | 创建时间 (只读) |
| `default_pick` | string |  | 默认设置当前的方式(l2_pick 为 null 时生效)。 可选值: ["region","near"] |
| `domain` | string |  | 按域名子串过滤(不分大小写)。 |
| `domains` | string[] |  | 站点绑定的域名。 |
| `edge_origin_requests` | integer |  | 边缘回源请求数(命中率分母)。 |
| `enabled` | boolean |  | 是否启用 |
| `end` | string |  | 窗口右端(不含,取整到 5 分钟)。 |
| `expected_updated_at` | string |  | 乐观锁(修改时用):调用方读到的该资源 updated_at。与库里当前值不等则回 409 stale_version、不保存;不带则不检查。 |
| `found` | boolean |  | 库里查到了这个 IP(否则按未识别的访客判)。 |
| `gate_reasons` | SiteGateReasonIds |  | ids 里 WAF 增强没生效的站点按原因分组(只列有原因的;全都生效时整个字段不给)。选择器据此给 package 的站点标「套餐不含」并禁勾。 (只读) |
| `group_id` | integer |  | 只取该分组里的站点。 |
| `group_ids` | integer[] |  | 站点所属分组的 id。 |
| `group_options` | L2SiteRefGroup[] |  | 可选的自建 L2 组。 |
| `hit_rate` | number |  | 命中率 0–1;没有回源为 0。 |
| `id` | integer |  | 记录 ID (只读) |
| `ids` | integer[] |  | 要操作的站点 id(最多 100 个;create 以外的动作必填)。 |
| `ip` | string |  | 调用者的 IP。 |
| `isp` | string |  | 运营商编号,没有不给。 |
| `items` | SiteWrite[] |  | create 用:要新建的站点(最多 100 个),每条同 POST /sites 的请求体。 |
| `key` | string | 有 | 要修复的体检项键,含义同单站一键修复。 可选值: ["no_https","tls_old","sec_headers","waf_block","cc_mid","rec_type"] |
| `l2_group_id` | integer |  | 使用的 L2 组;null = 区域默认。 |
| `l2_hit_requests` | integer |  | L2 接住的回源请求数(命中率分子)。 |
| `l2_pick` | string |  | 本站选 L2 的方式;null = 跟默认设置。 可选值: ["region","near"] |
| `log` | SiteSpeedLog |  | 按原始访问日志(按采样权重折算)统计的协议分布、回源耗时分位、未命中地址抽样与边缘响应耗时,窗口同 totals。 |
| `log_keep_days` | integer |  | 原始访问日志保留天数(reports.access_log_days);窗口超出它时 log 只统计还留着的部分。 |
| `missing` | string[] |  | 选了但当前库不含数据的字段(这些选择不会命中)。 |
| `name` | string |  | 名称 |
| `node_issues` | NodeIssue[] |  | 在线节点上站点没完全生效的口或原因(列表与详情里给);都正常时不给这个字段。 (只读) |
| `nodes` | SiteHealthNode[] |  | 各在用节点的明细(按节点 id 升序)。 |
| `observe_days` | integer |  | 覆盖推荐表里 waf_mode 的先观察天数(0 = 直接拦截);缺省按推荐表。 |
| `origin` | string |  | 按源站主机子串过滤。 |
| `origin_l2_only` | boolean |  | 源站只允许 L2 访问:动态请求也经 L2,本区域没 L2 时借用其他区域。 |
| `origin_max_conns` | integer |  | 源站最大并发(每节点在途);0 = 不限,超了排队不报 503。 |
| `origin_requests` | integer |  | 实际到源站的请求数。 |
| `origin_requests_est` | integer |  | 未开分层时的估算(= 边缘回源请求数)。 |
| `origins` | SiteOrigin[] |  | 源站列表。 |
| `path` | string |  | 路径前缀(以 / 开头);不给取 /。 |
| `points` | SiteSpeedPoint[] |  | 按桶的明细(只列有流量的桶)。 |
| `prov` | string |  | 省份编号,没有不给。 |
| `publish_seq` | integer |  | 只在建站、改站的响应里给:这次写操作的序号(同响应头 Publish-Seq),拿它调 GET /config-publish/applied?seq= 查是否已推到节点。 (只读) |
| `range` | string |  | 统计窗口(1h、24h 或 7d)。 |
| `rec_ver` | integer |  | 本次用的推荐表版本。 |
| `region_limit` | object | 有 | 要检查的地区限制(同 Site.config.region_limit)。 |
| `region_names` | string[] |  | 有可用 L2 的区域名,按区域 id 排;个数等于 regions。 |
| `regions` | integer |  | 有可用 L2 的区域数。 |
| `revoked` | string[] |  | 已撤销的路径。 |
| `saved_bytes` | integer |  | 省的回源流量(L2 命中字节)。 |
| `sha256` | string |  | 命中文件的 sha256(小写十六进制);租户提交时须是本站上传命中事件里出现过的指纹;给了且情报共享开着、sig 非空时同事务内记一条误报情报待上报。 |
| `sig` | string |  | 误报的特征名(事件规则名,如 webshell.php.eval);空 = 该路径整段不扫描(此时必须给 path)。 |
| `site_id` | integer |  | 网站 id;0 = 所有网站。 |
| `skip` | string[] |  | 用户取消勾选、本次不套用的推荐项。 |
| `source` | string |  | user 手选;auto 按流量自动判定。 可选值: ["user","auto"] |
| `start` | string |  | 窗口起点。 |
| `state` | string |  | 生效状态:on 生效;off 网站没开;not_open 没开通(含网站所属租户的套餐不含分层回源);paused 全网暂停;no_l2 没有可用的 L2;revoking 生效中但即将停用。 可选值: ["on","off","not_open","paused","no_l2","revoking"] |
| `status` | string |  | disabled 没开主动健康检查;unknown 没有节点回明细;healthy 回了明细的节点上源站全部在线;unhealthy 有源站被摘除。 |
| `stop_code` | integer |  | 0 = 正常;非 0 = 所有请求回这个状态码(管理员/计费设置)。 |
| `tenant_id` | integer |  | 所属租户(用户)ID (只读) |
| `text` | string |  | 按 fmt 排好的文本,可直接粘贴到源站。 |
| `total` | integer |  | 真实命中数(可能大于 ids 的长度)。 |
| `totals` | SiteSpeedTotals |  | 整个窗口的合计。 |
| `truncated` | boolean |  | 命中数超过 100000,ids 只含前 100000 个。 |
| `type` | string | 有 | 网站类型:企业官网、电商、内容资讯、API 服务、后台管理、下载分发。 可选值: ["corporate","shop","content","api","admin","download"] |
| `updated_at` | string |  | 更新时间 (只读) |
| `upid` | integer |  | 用户套餐 id(套餐域上线前可空;快照里空时取 tenant_id)。 |
| `verdict` | string |  | 调用者访问首页的结果:pass 放行、block 被拦、log 只记录。 可选值: ["pass","block","log"] |
| `waf_gate` | SiteWafGate |  | 只在站点详情(GET /sites/{id})里给:站点属主的 WAF 增强状态与没生效的原因。owner、packages、expired_at 仅管理员响应带,租户响应只有 gate 与 reason。列表行只有 waf_gate_reason。 (只读) |
| `waf_gate_reason` | WafGateReason |  | WAF 增强(waf_enhanced)没生效的原因,gate 为 full 或 readonly 时不带。package = 平台已授权但属主没有未到期且含 WAF 增强的套餐;license = 平台没开通(从未授权、服务商撤销、授权被停用);expired = 平台授权已到期且只读缓冲期(License.readonly_days,缺省 7 天)已过,已回落基础。 可选值: ["package","license","expired"] (只读) |
