套餐目录
可购买套餐、套餐分组和升级包。
查询套餐组列表
分页查询套餐组,并按排序值升序返回。普通登录用户仅能看到 `enable` 为 1 的套餐组;管理员可查看全部套餐组。
创建套餐组
以管理员身份创建套餐组。套餐组名称在系统内必须唯一;未提供的备注保存为空字符串,排序默认 100,启用状态默认启用。
删除套餐组
以管理员身份删除一个或多个套餐组。路径参数支持英文逗号分隔多个套餐组 ID;每个套餐组必须存在且未关联任何套餐,任一校验失败都会回滚本次删除。
获取套餐组详情
按 ID 获取套餐组详情。接口仅要求登录,查询时不按 `enable` 过滤,因此普通用户也可读取已停用套餐组的详情。
更新套餐组
以管理员身份更新套餐组。路径中的套餐组 ID 会覆盖请求体中的同名字段;未提供的字段保持原值,至少应提交一个与原值不同的字段。
查询套餐升级规则
分页查询套餐升级规则,按升级包 ID 倒序返回。普通用户仅能看到已启用的规则:未传 `upid` 时只返回未绑定基础套餐的规则,传入 `upid` 时返回未绑定规则及绑定到该用户套餐所用基础套餐的规则。管理员可查看全部,并可用 `enable` 筛选。
创建套餐升级规则
以管理员身份创建套餐升级规则。名称必须唯一;普通资源类型必须提供增加数量,`custom_cc_rule` 类型的数量由服务端强制设为 1。金额以系统最小货币单位保存。
删除套餐升级规则
以管理员身份删除一个或多个套餐升级规则。路径参数支持英文逗号分隔多个规则 ID;每条规则必须存在且未被任何用户套餐升级记录引用,任一检查失败都会回滚本次操作。
获取套餐升级详情
按 ID 获取套餐升级规则详情。任何登录用户都可读取启用规则;停用规则仅管理员可读取。
更新套餐升级规则
以管理员身份更新一条升级规则。请求体必须是 JSON 对象,路径中的规则 ID 会覆盖请求体 ID。服务端每次都会更新 `update_at`,因此空对象也会成功。注意:传入 `type` 会被校验并参与数量处理,但当前服务端不会将新的 `type` 写入数据库。
查询套餐列表
分页查询套餐,按排序值升序返回。普通用户仅能查询已启用的非专属套餐;传 `mine` 时仅查询 `owner` 包含当前用户 ID 的专属套餐。管理员可查看全部,并可按启用状态筛选。
创建套餐
以管理员身份创建套餐。主线路组必须属于所选区域且至少配置一条启用线路;CNAME 域名必须存在;套餐名称必须唯一,并必须选择至少一个套餐组。创建成功后会同步该区域的 OpenResty 配置。
批量更新套餐
以管理员身份批量更新套餐。请求体必须为 JSON 数组,每个元素必须包含现有套餐 ID;未提供的字段保持原值。服务端每次都会更新各套餐的 `update_at`,即仅传 ID 也会成功。可选 `sync-item` 用于将指定配置同步到使用该套餐的用户套餐、网站和四层转发。
删除套餐
以管理员身份删除一个或多个套餐。路径参数支持英文逗号分隔多个套餐 ID;每条套餐必须存在且未被任何用户套餐引用。删除时会同时移除套餐与套餐组的关联,任一检查失败都会回滚本次操作。
获取套餐详情
获取一条套餐记录。普通用户只能读取启用套餐,管理员可读取停用套餐。传入 `duration` 时,服务端会按当前登录用户的有效折扣和可用优惠码试算该周期价格,并在返回数据中附加价格字段。
更新指定套餐
以管理员身份更新一条套餐。请求体必须为 JSON 对象;路径中的套餐 ID 会覆盖请求体中的 ID。未提供的字段保持原值,且服务端每次都会更新 `update_at`,因此空对象也会成功。`sync-item` 可将指定配置同步到使用该套餐的用户套餐、网站和四层转发。