## IP 站点 (`ip-sites`)

用 IP 加自定义端口对外提供加速的站点;须先在用户套餐里选好 IP。

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

### GET `/api/v2/ip-sites`

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

查询参数:

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

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

### POST `/api/v2/ip-sites`

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

查询参数:

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

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `config` | object |  | 节点配置字段(同站点 config;kind 恒为 ip,listen_addrs 发布时由绑定现取)。 |
| `enabled` | boolean |  | 是否启用 |
| `ip_ids` | integer[] |  | 绑定的池内 IP id(按次序)。 |
| `name` | string |  | 名称 |
| `origins` | IpSiteOrigin[] |  | 源站列表。 |
| `stop_code` | integer |  | 0 = 正常;非 0 = 所有请求回这个状态码(管理员/计费设置)。 |
| `upid` | integer |  | 用户套餐 id。 |

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

### GET `/api/v2/ip-sites/available-ips`

IP 站点可选 IP · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `upid` | integer | 有 | 用户套餐 ID。 |
| `scope` | string |  | pool 整池;mine 只列已选。 可选值: ["pool","mine"] 默认: "pool" |
| `tenant_id` | integer |  | 仅管理员可用:按租户过滤。租户凭据调用时忽略,只返回本租户数据。 |

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

### POST `/api/v2/ip-sites/port-check`

IP 站点端口预检 · 鉴权: 用户（部分参数仅管理员）

查询参数:

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

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `http_ports` | integer[] |  | 要检查的 HTTP 端口列表;超出 1~65535 的不拒,结果里标 range。 |
| `https_ports` | integer[] |  | 要检查的 HTTPS 端口列表;超出 1~65535 的不拒,结果里标 range。 |
| `ip_ids` | integer[] | 有 | 绑定的池内 IP id(按次序)。 |
| `site_id` | integer |  | 改站时给:本站自己占的不算占用。 |
| `upid` | integer | 有 | 用户套餐 id。 |

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

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

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

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

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

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

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `config` | object |  | 节点配置字段(同站点 config;kind 恒为 ip,listen_addrs 发布时由绑定现取)。 |
| `enabled` | boolean |  | 是否启用 |
| `ip_ids` | integer[] |  | 绑定的池内 IP id(按次序)。 |
| `name` | string |  | 名称 |
| `origins` | IpSiteOrigin[] |  | 源站列表。 |
| `stop_code` | integer |  | 0 = 正常;非 0 = 所有请求回这个状态码(管理员/计费设置)。 |
| `upid` | integer |  | 用户套餐 id。 |

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

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

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

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

IP 站点对象:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `access_addrs` | string[] |  | 访问地址 ip:端口。 (只读) |
| `config` | object |  | 节点配置字段(同站点 config;kind 恒为 ip,listen_addrs 发布时由绑定现取)。 |
| `created_at` | string |  | 创建时间 (只读) |
| `enabled` | boolean |  | 是否启用 |
| `hints` | string[] |  | 提示(如节点没上报在听端口,跳过了该项检查)。 (只读) |
| `http_ports` | integer[] |  | 要检查的 HTTP 端口列表;超出 1~65535 的不拒,结果里标 range。 |
| `https_ports` | integer[] |  | 要检查的 HTTPS 端口列表;超出 1~65535 的不拒,结果里标 range。 |
| `id` | integer |  | 记录 ID (只读) |
| `ip_ids` | integer[] |  | 绑定的池内 IP id(按次序)。 |
| `ips` | IpSiteIp[] |  | 绑定的池内 IP 详情。 (只读) |
| `items` | AvailableIp[] |  | 本页条目 |
| `name` | string |  | 名称 |
| `origins` | IpSiteOrigin[] |  | 源站列表。 |
| `ports` | object[] |  | 逐端口检查结果。 |
| `site_id` | integer |  | 改站时给:本站自己占的不算占用。 |
| `stop_code` | integer |  | 0 = 正常;非 0 = 所有请求回这个状态码(管理员/计费设置)。 |
| `tenant_id` | integer |  | 所属租户(用户)ID (只读) |
| `updated_at` | string |  | 更新时间 (只读) |
| `upid` | integer |  | 用户套餐 id。 |
