{
  "version": "2026-10-16",
  "baseUrl": "https://ly-proxy.com/api/proxy",
  "examplePolicy": "所有示例均为说明性数据，不含生产客户账密；金额、库存、延迟和流量均非实时指标。",
  "endpoints": [
    {
      "id": "get-client-dynamics-account-allow-ip-list",
      "method": "GET",
      "path": "/client/dynamics/account/allow/ip/list",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountAllowIpController.java",
      "sourceMethod": "list",
      "title": "白名单 · 查询列表",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountAllowIp",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "rows[].ipAddress",
          "type": "string",
          "description": "允许访问的 IP 地址"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "accountId": 1001,
                "ipAddress": "198.51.100.10"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "ipAddress",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "允许访问的 IP 地址",
          "example": "198.51.100.10"
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/allow/ip/list?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-allow-ip-id",
      "method": "GET",
      "path": "/client/dynamics/account/allow/ip/{id}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountAllowIpController.java",
      "sourceMethod": "getInfo",
      "title": "白名单 · 查询详情",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountAllowIp",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "data.ipAddress",
          "type": "string",
          "description": "允许访问的 IP 地址"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "accountId": 1001,
              "ipAddress": "198.51.100.10"
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "path",
          "required": true,
          "description": "记录 ID",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/allow/ip/1001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-allow-ip",
      "method": "POST",
      "path": "/client/dynamics/account/allow/ip",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountAllowIpController.java",
      "sourceMethod": "add",
      "title": "白名单 · 创建记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountAllowIp",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "ipAddress",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "允许访问的 IP 地址",
          "example": "198.51.100.10"
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "ipAddress": "198.51.100.10"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/allow/ip\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"ipAddress\":\"198.51.100.10\"}'"
    },
    {
      "id": "put-client-dynamics-account-allow-ip",
      "method": "PUT",
      "path": "/client/dynamics/account/allow/ip",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountAllowIpController.java",
      "sourceMethod": "edit",
      "title": "白名单 · 修改记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountAllowIp",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "ipAddress",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "允许访问的 IP 地址",
          "example": "198.51.100.10"
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "ipAddress": "198.51.100.10"
      },
      "curl": "curl -X PUT \"https://ly-proxy.com/api/proxy/client/dynamics/account/allow/ip\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"ipAddress\":\"198.51.100.10\"}'"
    },
    {
      "id": "delete-client-dynamics-account-allow-ip-ids",
      "method": "DELETE",
      "path": "/client/dynamics/account/allow/ip/{ids}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountAllowIpController.java",
      "sourceMethod": "remove",
      "title": "白名单 · 删除记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountAllowIp",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ids",
          "type": "Long[]",
          "in": "path",
          "required": true,
          "description": "返回模型字段",
          "example": [
            1
          ]
        }
      ],
      "requestBody": null,
      "curl": "curl -X DELETE \"https://ly-proxy.com/api/proxy/client/dynamics/account/allow/ip/1001,1002\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-balance-list",
      "method": "GET",
      "path": "/client/dynamics/account/balance/list",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountBalanceController.java",
      "sourceMethod": "list",
      "title": "流量分配记录 · 查询列表",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountBalance",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "rows[].balance",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].balanceFormat",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].balanceTotal",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].balanceTotalFormat",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].balanceUsed",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].balanceUsedFormat",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].threadsUsed",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "accountId": 1001,
                "balance": 50,
                "balanceFormat": "DEMO_VALUE",
                "balanceTotal": 1.0,
                "balanceTotalFormat": "DEMO_VALUE",
                "balanceUsed": 1.0,
                "balanceUsedFormat": "DEMO_VALUE",
                "threadsUsed": "DEMO_VALUE"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/balance/list?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-balance-id",
      "method": "GET",
      "path": "/client/dynamics/account/balance/{id}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountBalanceController.java",
      "sourceMethod": "getInfo",
      "title": "流量分配记录 · 查询详情",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountBalance",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "data.balance",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.balanceFormat",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.balanceTotal",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.balanceTotalFormat",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.balanceUsed",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.balanceUsedFormat",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.threadsUsed",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "accountId": 1001,
              "balance": 50,
              "balanceFormat": "DEMO_VALUE",
              "balanceTotal": 1.0,
              "balanceTotalFormat": "DEMO_VALUE",
              "balanceUsed": 1.0,
              "balanceUsedFormat": "DEMO_VALUE",
              "threadsUsed": "DEMO_VALUE"
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "path",
          "required": true,
          "description": "记录 ID",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/balance/1001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-balance-add",
      "method": "POST",
      "path": "/client/dynamics/account/balance/add",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountBalanceController.java",
      "sourceMethod": "add",
      "title": "流量分配记录 · 创建记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。",
        "流量池 A 仅支持整数 GB；流量池余额不足时应停止分配，不要创建新订单补偿。"
      ],
      "model": "LyProxyIpDynamicsAccountBalance",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "流量池余额不足"
          }
        }
      ],
      "params": [
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "trafficLimit",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "分配或调整流量，GB；流量池 A 按整数 GB",
          "example": 1
        }
      ],
      "requestBody": {
        "accountId": 1001,
        "trafficLimit": 1
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/balance/add\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"accountId\":1001,\"trafficLimit\":1}'"
    },
    {
      "id": "put-client-dynamics-account-balance",
      "method": "PUT",
      "path": "/client/dynamics/account/balance",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountBalanceController.java",
      "sourceMethod": "edit",
      "title": "流量分配记录 · 修改记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountBalance",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "balance",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 50
        },
        {
          "name": "balanceFormat",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "balanceTotal",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1.0
        },
        {
          "name": "balanceTotalFormat",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "balanceUsed",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1.0
        },
        {
          "name": "balanceUsedFormat",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "threadsUsed",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "balance": 50,
        "balanceFormat": "DEMO_VALUE",
        "balanceTotal": 1.0,
        "balanceTotalFormat": "DEMO_VALUE",
        "balanceUsed": 1.0,
        "balanceUsedFormat": "DEMO_VALUE",
        "threadsUsed": "DEMO_VALUE"
      },
      "curl": "curl -X PUT \"https://ly-proxy.com/api/proxy/client/dynamics/account/balance\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"balance\":50,\"balanceFormat\":\"DEMO_VALUE\",\"balanceTotal\":1.0,\"balanceTotalFormat\":\"DEMO_VALUE\",\"balanceUsed\":1.0,\"balanceUsedFormat\":\"DEMO_VALUE\",\"threadsUsed\":\"DEMO_VALUE\"}'"
    },
    {
      "id": "delete-client-dynamics-account-balance-ids",
      "method": "DELETE",
      "path": "/client/dynamics/account/balance/{ids}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountBalanceController.java",
      "sourceMethod": "remove",
      "title": "流量分配记录 · 删除记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountBalance",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "账号剩余流量不足"
          }
        }
      ],
      "params": [
        {
          "name": "ids",
          "type": "Long[]",
          "in": "path",
          "required": true,
          "description": "返回模型字段",
          "example": [
            1
          ]
        }
      ],
      "requestBody": null,
      "curl": "curl -X DELETE \"https://ly-proxy.com/api/proxy/client/dynamics/account/balance/1001,1002\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-balance-recycle",
      "method": "POST",
      "path": "/client/dynamics/account/balance/recycle",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountBalanceController.java",
      "sourceMethod": "recycle",
      "title": "回收流量",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。",
        "accountId 和 traffic 是 Query 参数，不是 JSON Body。回收数量不能超过账号可回收流量。"
      ],
      "model": "LyProxyIpDynamicsAccountBalance",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "账号剩余流量不足"
          }
        }
      ],
      "params": [
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": true,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "traffic",
          "type": "BigDecimal",
          "in": "query",
          "required": true,
          "description": "回收流量，GB；流量池 A 按整数 GB",
          "example": 1
        }
      ],
      "requestBody": null,
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/balance/recycle?accountId=1001&traffic=1\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-list",
      "method": "GET",
      "path": "/client/dynamics/account/list",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountController.java",
      "sourceMethod": "list",
      "title": "动态账号 · 查询列表",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccount",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "rows[].sourceId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].label",
          "type": "string",
          "description": "子账号显示名称"
        },
        {
          "name": "rows[].channelLabel",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].poolType",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].email",
          "type": "string",
          "description": "子账号邮箱/标识；按当前上游要求填写"
        },
        {
          "name": "rows[].account",
          "type": "string",
          "description": "代理认证账号"
        },
        {
          "name": "rows[].password",
          "type": "string",
          "description": "代理认证密码；示例值不是生产凭证"
        },
        {
          "name": "rows[].threads",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].stickyRangeStart",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].stickyRangeEnd",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].blocked",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].blockedHosts",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultPoolParametersCountries",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultPoolParametersCities",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultPoolParametersStates",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultPoolParametersZipcodes",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultPoolParametersAsns",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultPoolParametersExcludeCountries",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultPoolParametersExcludeAsn",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultPoolParametersAnonymousFilter",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultPoolParametersRotationInterval",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].trafficLimit",
          "type": "number",
          "description": "分配或调整流量，GB；流量池 A 按整数 GB"
        },
        {
          "name": "rows[].defaultEndpointHost",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].defaultEndpointPort",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].remarks",
          "type": "string",
          "description": "备注"
        },
        {
          "name": "rows[].endpoint",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].protocolse",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].capacity",
          "type": "number",
          "description": "流量容量，GB"
        },
        {
          "name": "rows[].totalTraffic",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].usedTraffic",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].remainingTraffic",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].usageRate",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "accountId": 1001,
                "sourceId": 1,
                "label": "demo-team",
                "channelLabel": "DEMO_VALUE",
                "status": "1",
                "poolType": "DEMO_VALUE",
                "email": "demo-account@example.invalid",
                "account": "demo_account",
                "password": "DEMO_PASSWORD",
                "threads": 1,
                "stickyRangeStart": 1,
                "stickyRangeEnd": 1,
                "blocked": "DEMO_VALUE",
                "blockedHosts": "DEMO_VALUE",
                "defaultPoolParametersCountries": "DEMO_VALUE",
                "defaultPoolParametersCities": "DEMO_VALUE",
                "defaultPoolParametersStates": "DEMO_VALUE",
                "defaultPoolParametersZipcodes": "DEMO_VALUE",
                "defaultPoolParametersAsns": "DEMO_VALUE",
                "defaultPoolParametersExcludeCountries": "DEMO_VALUE",
                "defaultPoolParametersExcludeAsn": "DEMO_VALUE",
                "defaultPoolParametersAnonymousFilter": "DEMO_VALUE",
                "defaultPoolParametersRotationInterval": "DEMO_VALUE",
                "trafficLimit": 1,
                "defaultEndpointHost": "dp1.ly-proxy.com",
                "defaultEndpointPort": "10000",
                "remarks": "示例备注",
                "endpoint": "dp1.ly-proxy.com:10000",
                "protocolse": "SOCKS5",
                "capacity": 10,
                "totalTraffic": 10,
                "usedTraffic": 2,
                "remainingTraffic": 8,
                "usageRate": 20
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "label",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "子账号显示名称",
          "example": "demo-team"
        },
        {
          "name": "channelLabel",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "poolType",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "email",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "子账号邮箱/标识；按当前上游要求填写",
          "example": "demo-account@example.invalid"
        },
        {
          "name": "account",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "代理认证账号",
          "example": "demo_account"
        },
        {
          "name": "password",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "代理认证密码；示例值不是生产凭证",
          "example": "DEMO_PASSWORD"
        },
        {
          "name": "threads",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "stickyRangeStart",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "stickyRangeEnd",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "blocked",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "blockedHosts",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "defaultPoolParametersCountries",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "defaultPoolParametersCities",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "defaultPoolParametersStates",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "defaultPoolParametersZipcodes",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "defaultPoolParametersAsns",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "defaultPoolParametersExcludeCountries",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "defaultPoolParametersExcludeAsn",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "defaultPoolParametersAnonymousFilter",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "defaultPoolParametersRotationInterval",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "trafficLimit",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "分配或调整流量，GB；流量池 A 按整数 GB",
          "example": 1
        },
        {
          "name": "defaultEndpointHost",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "dp1.ly-proxy.com"
        },
        {
          "name": "defaultEndpointPort",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "10000"
        },
        {
          "name": "remarks",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "备注",
          "example": "示例备注"
        },
        {
          "name": "endpoint",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "dp1.ly-proxy.com:10000"
        },
        {
          "name": "protocolse",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "SOCKS5"
        },
        {
          "name": "capacity",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "流量容量，GB",
          "example": 10
        },
        {
          "name": "totalTraffic",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 10
        },
        {
          "name": "usedTraffic",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 2
        },
        {
          "name": "remainingTraffic",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 8
        },
        {
          "name": "usageRate",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 20
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/list?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-trafficRecord",
      "method": "GET",
      "path": "/client/dynamics/account/trafficRecord",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountController.java",
      "sourceMethod": "trafficRecord",
      "title": "账号流量记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "ClientAccountStatDTO",
      "responseType": "array",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "array",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data[].requestsTotal",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].trafficTotal",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].dUsage",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": [
              {
                "requestsTotal": 100,
                "trafficTotal": 0.25,
                "dUsage": "2026-10-15"
              }
            ]
          }
        },
        {
          "label": "无记录时（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "startTime",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "查询开始时间",
          "example": "2026-10-01"
        },
        {
          "name": "endTime",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "查询结束时间",
          "example": "2026-10-15"
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/trafficRecord\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-id",
      "method": "GET",
      "path": "/client/dynamics/account/{id}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountController.java",
      "sourceMethod": "getInfo",
      "title": "动态账号 · 查询详情",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccount",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "data.sourceId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.label",
          "type": "string",
          "description": "子账号显示名称"
        },
        {
          "name": "data.channelLabel",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "data.poolType",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.email",
          "type": "string",
          "description": "子账号邮箱/标识；按当前上游要求填写"
        },
        {
          "name": "data.account",
          "type": "string",
          "description": "代理认证账号"
        },
        {
          "name": "data.password",
          "type": "string",
          "description": "代理认证密码；示例值不是生产凭证"
        },
        {
          "name": "data.threads",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.stickyRangeStart",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.stickyRangeEnd",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.blocked",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.blockedHosts",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultPoolParametersCountries",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultPoolParametersCities",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultPoolParametersStates",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultPoolParametersZipcodes",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultPoolParametersAsns",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultPoolParametersExcludeCountries",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultPoolParametersExcludeAsn",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultPoolParametersAnonymousFilter",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultPoolParametersRotationInterval",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.trafficLimit",
          "type": "number",
          "description": "分配或调整流量，GB；流量池 A 按整数 GB"
        },
        {
          "name": "data.defaultEndpointHost",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.defaultEndpointPort",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.remarks",
          "type": "string",
          "description": "备注"
        },
        {
          "name": "data.endpoint",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.protocolse",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.capacity",
          "type": "number",
          "description": "流量容量，GB"
        },
        {
          "name": "data.totalTraffic",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.usedTraffic",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.remainingTraffic",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.usageRate",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "accountId": 1001,
              "sourceId": 1,
              "label": "demo-team",
              "channelLabel": "DEMO_VALUE",
              "status": "1",
              "poolType": "DEMO_VALUE",
              "email": "demo-account@example.invalid",
              "account": "demo_account",
              "password": "DEMO_PASSWORD",
              "threads": 1,
              "stickyRangeStart": 1,
              "stickyRangeEnd": 1,
              "blocked": "DEMO_VALUE",
              "blockedHosts": "DEMO_VALUE",
              "defaultPoolParametersCountries": "DEMO_VALUE",
              "defaultPoolParametersCities": "DEMO_VALUE",
              "defaultPoolParametersStates": "DEMO_VALUE",
              "defaultPoolParametersZipcodes": "DEMO_VALUE",
              "defaultPoolParametersAsns": "DEMO_VALUE",
              "defaultPoolParametersExcludeCountries": "DEMO_VALUE",
              "defaultPoolParametersExcludeAsn": "DEMO_VALUE",
              "defaultPoolParametersAnonymousFilter": "DEMO_VALUE",
              "defaultPoolParametersRotationInterval": "DEMO_VALUE",
              "trafficLimit": 1,
              "defaultEndpointHost": "dp1.ly-proxy.com",
              "defaultEndpointPort": "10000",
              "remarks": "示例备注",
              "endpoint": "dp1.ly-proxy.com:10000",
              "protocolse": "SOCKS5",
              "capacity": 10,
              "totalTraffic": 10,
              "usedTraffic": 2,
              "remainingTraffic": 8,
              "usageRate": 20
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "path",
          "required": true,
          "description": "记录 ID",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/1001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account",
      "method": "POST",
      "path": "/client/dynamics/account",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountController.java",
      "sourceMethod": "add",
      "title": "动态账号 · 创建记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。",
        "允许先创建子账号再购买/分配流量；成功返回受影响行数状态，不直接返回新账号账密，请再查询账号列表。"
      ],
      "model": "LyProxyIpDynamicsAccount",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "trafficLimit",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "分配或调整流量，GB；流量池 A 按整数 GB",
          "example": 1
        },
        {
          "name": "label",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "子账号显示名称",
          "example": "demo-team"
        },
        {
          "name": "remarks",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "备注",
          "example": "示例备注"
        },
        {
          "name": "email",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "子账号邮箱/标识；按当前上游要求填写",
          "example": "demo-account@example.invalid"
        },
        {
          "name": "protocols",
          "type": "List<String>",
          "in": "body",
          "required": false,
          "description": "协议列表；流量池 A 使用 socks5",
          "example": [
            "socks5"
          ]
        },
        {
          "name": "country",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "US"
        }
      ],
      "requestBody": {
        "label": "demo-team",
        "email": "demo-account@example.invalid",
        "trafficLimit": 0
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"label\":\"demo-team\",\"email\":\"demo-account@example.invalid\",\"trafficLimit\":0}'"
    },
    {
      "id": "put-client-dynamics-account",
      "method": "PUT",
      "path": "/client/dynamics/account",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountController.java",
      "sourceMethod": "edit",
      "title": "动态账号 · 修改记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccount",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": true,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "trafficLimit",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "分配或调整流量，GB；流量池 A 按整数 GB",
          "example": 1
        },
        {
          "name": "label",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "子账号显示名称",
          "example": "demo-team"
        },
        {
          "name": "account",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "代理认证账号",
          "example": "demo_account"
        },
        {
          "name": "password",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "代理认证密码；示例值不是生产凭证",
          "example": "DEMO_PASSWORD"
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "remarks",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "备注",
          "example": "示例备注"
        },
        {
          "name": "sourceCode",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "protocols",
          "type": "List<String>",
          "in": "body",
          "required": false,
          "description": "协议列表；流量池 A 使用 socks5",
          "example": [
            "socks5"
          ]
        }
      ],
      "requestBody": {
        "id": 1001,
        "trafficLimit": 1,
        "label": "demo-team",
        "account": "demo_account",
        "password": "DEMO_PASSWORD",
        "accountId": 1001,
        "remarks": "示例备注",
        "sourceCode": "DEMO_VALUE",
        "protocols": [
          "socks5"
        ]
      },
      "curl": "curl -X PUT \"https://ly-proxy.com/api/proxy/client/dynamics/account\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"trafficLimit\":1,\"label\":\"demo-team\",\"account\":\"demo_account\",\"password\":\"DEMO_PASSWORD\",\"accountId\":1001,\"remarks\":\"示例备注\",\"sourceCode\":\"DEMO_VALUE\",\"protocols\":[\"socks5\"]}'"
    },
    {
      "id": "delete-client-dynamics-account-ids",
      "method": "DELETE",
      "path": "/client/dynamics/account/{ids}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountController.java",
      "sourceMethod": "remove",
      "title": "动态账号 · 删除记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccount",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ids",
          "type": "Long[]",
          "in": "path",
          "required": true,
          "description": "返回模型字段",
          "example": [
            1
          ]
        }
      ],
      "requestBody": null,
      "curl": "curl -X DELETE \"https://ly-proxy.com/api/proxy/client/dynamics/account/1001,1002\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-generate-lines",
      "method": "POST",
      "path": "/client/dynamics/account/generate-lines",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountController.java",
      "sourceMethod": "generateLines",
      "title": "生成代理线路",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。",
        "流量池 A 使用 SOCKS5。249 个标准国家/地区代码不表示所有地区实时有库存。",
        "该控制器对 GET/POST 均返回 JSON 包装；data.text 是换行连接，data.lines 是数组；dataType 不把 HTTP 响应变成纯文本。",
        "只传国家时按国家定位；当前代码仅拼接城市，省/州字段不参与账号生成。"
      ],
      "model": "DynamicsProxyLineDTO",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.lines",
          "type": "array",
          "description": "代理连接字符串数组"
        },
        {
          "name": "data.text",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.apiUrl",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.gateway",
          "type": "string",
          "description": "使用账号返回的网关，SOCKS5 示例为 dp1.ly-proxy.com:10000"
        },
        {
          "name": "data.username",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.protocol",
          "type": "string",
          "description": "SOCKS5 / HTTP；流量池 A 使用 SOCKS5"
        },
        {
          "name": "data.format",
          "type": "string",
          "description": "USER_PASS_AT_HOST_PORT / HOST_PORT_USER_PASS / HOST_PORT_AT_USER_PASS"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "lines": [
                "demo_account_c_US:DEMO_PASSWORD@dp1.ly-proxy.com:10000"
              ],
              "text": "demo_account_c_US:DEMO_PASSWORD@dp1.ly-proxy.com:10000",
              "apiUrl": "/client/dynamics/account/generate-lines?accountId=1001&countryCode=US&protocol=SOCKS5&format=USER_PASS_AT_HOST_PORT&quantity=1",
              "gateway": "dp1.ly-proxy.com:10000",
              "username": "demo_account_c_US",
              "protocol": "SOCKS5",
              "format": "USER_PASS_AT_HOST_PORT"
            }
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": true,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "countryCode",
          "type": "String",
          "in": "body",
          "required": true,
          "description": "两位国家/地区代码，例如 US、TH、GB",
          "example": "US"
        },
        {
          "name": "state",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "可选；当前生成器不将省/州拼入账号",
          "example": ""
        },
        {
          "name": "city",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "可选城市定位值，使用上游支持的名称",
          "example": ""
        },
        {
          "name": "protocol",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "SOCKS5 / HTTP；流量池 A 使用 SOCKS5",
          "example": "SOCKS5"
        },
        {
          "name": "format",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "USER_PASS_AT_HOST_PORT / HOST_PORT_USER_PASS / PROTOCOL_URL",
          "example": "USER_PASS_AT_HOST_PORT"
        },
        {
          "name": "rotationMode",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "ROTATE 或 STICKY",
          "example": "ROTATE"
        },
        {
          "name": "ttlMinutes",
          "type": "Integer",
          "in": "body",
          "required": false,
          "description": "粘性会话分钟数，服务端限制 1–120",
          "example": 5
        },
        {
          "name": "dataType",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "JSON / TEXT 标识；该控制器仍返回 JSON，连接文本在 data.text",
          "example": "TEXT"
        },
        {
          "name": "separator",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "CRLF（默认）/ LF / COMMA",
          "example": "CRLF"
        },
        {
          "name": "gateway",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "使用账号返回的网关，SOCKS5 示例为 dp1.ly-proxy.com:10000",
          "example": "dp1.ly-proxy.com:10000"
        },
        {
          "name": "quantity",
          "type": "Integer",
          "in": "body",
          "required": false,
          "description": "生成数量，1–1000",
          "example": 1
        }
      ],
      "requestBody": {
        "accountId": 1001,
        "countryCode": "US",
        "state": "",
        "city": "",
        "protocol": "SOCKS5",
        "format": "USER_PASS_AT_HOST_PORT",
        "rotationMode": "ROTATE",
        "ttlMinutes": 5,
        "dataType": "TEXT",
        "separator": "CRLF",
        "gateway": "dp1.ly-proxy.com:10000",
        "quantity": 1
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/generate-lines\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"accountId\":1001,\"countryCode\":\"US\",\"state\":\"\",\"city\":\"\",\"protocol\":\"SOCKS5\",\"format\":\"USER_PASS_AT_HOST_PORT\",\"rotationMode\":\"ROTATE\",\"ttlMinutes\":5,\"dataType\":\"TEXT\",\"separator\":\"CRLF\",\"gateway\":\"dp1.ly-proxy.com:10000\",\"quantity\":1}'"
    },
    {
      "id": "get-client-dynamics-account-generate-lines",
      "method": "GET",
      "path": "/client/dynamics/account/generate-lines",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountController.java",
      "sourceMethod": "generateLinesByQuery",
      "title": "生成代理线路（查询参数）",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。",
        "流量池 A 使用 SOCKS5。249 个标准国家/地区代码不表示所有地区实时有库存。",
        "该控制器对 GET/POST 均返回 JSON 包装；data.text 是换行连接，data.lines 是数组；dataType 不把 HTTP 响应变成纯文本。",
        "只传国家时按国家定位；当前代码仅拼接城市，省/州字段不参与账号生成。"
      ],
      "model": "DynamicsProxyLineDTO",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.lines",
          "type": "array",
          "description": "代理连接字符串数组"
        },
        {
          "name": "data.text",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.apiUrl",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.gateway",
          "type": "string",
          "description": "使用账号返回的网关，SOCKS5 示例为 dp1.ly-proxy.com:10000"
        },
        {
          "name": "data.username",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.protocol",
          "type": "string",
          "description": "SOCKS5 / HTTP；流量池 A 使用 SOCKS5"
        },
        {
          "name": "data.format",
          "type": "string",
          "description": "USER_PASS_AT_HOST_PORT / HOST_PORT_USER_PASS / HOST_PORT_AT_USER_PASS"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "lines": [
                "demo_account_c_US:DEMO_PASSWORD@dp1.ly-proxy.com:10000"
              ],
              "text": "demo_account_c_US:DEMO_PASSWORD@dp1.ly-proxy.com:10000",
              "apiUrl": "/client/dynamics/account/generate-lines?accountId=1001&countryCode=US&protocol=SOCKS5&format=USER_PASS_AT_HOST_PORT&quantity=1",
              "gateway": "dp1.ly-proxy.com:10000",
              "username": "demo_account_c_US",
              "protocol": "SOCKS5",
              "format": "USER_PASS_AT_HOST_PORT"
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": true,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "countryCode",
          "type": "String",
          "in": "query",
          "required": true,
          "description": "两位国家/地区代码，例如 US、TH、GB",
          "example": "US"
        },
        {
          "name": "state",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "可选；当前生成器不将省/州拼入账号",
          "example": ""
        },
        {
          "name": "city",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "可选城市定位值，使用上游支持的名称",
          "example": ""
        },
        {
          "name": "protocol",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "SOCKS5 / HTTP；流量池 A 使用 SOCKS5",
          "example": "SOCKS5"
        },
        {
          "name": "format",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "USER_PASS_AT_HOST_PORT / HOST_PORT_USER_PASS / PROTOCOL_URL",
          "example": "USER_PASS_AT_HOST_PORT"
        },
        {
          "name": "rotationMode",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "ROTATE 或 STICKY",
          "example": "ROTATE"
        },
        {
          "name": "ttlMinutes",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "粘性会话分钟数，服务端限制 1–120",
          "example": 5
        },
        {
          "name": "dataType",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "JSON / TEXT 标识；该控制器仍返回 JSON，连接文本在 data.text",
          "example": "TEXT"
        },
        {
          "name": "separator",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "CRLF（默认）/ LF / COMMA",
          "example": "CRLF"
        },
        {
          "name": "gateway",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "使用账号返回的网关，SOCKS5 示例为 dp1.ly-proxy.com:10000",
          "example": "dp1.ly-proxy.com:10000"
        },
        {
          "name": "quantity",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "生成数量，1–1000",
          "example": 1
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/generate-lines?accountId=1001&countryCode=US\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-endpoint-list",
      "method": "GET",
      "path": "/client/dynamics/account/endpoint/list",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountEndpointController.java",
      "sourceMethod": "list",
      "title": "网关接入点 · 查询列表",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountEndpoint",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "rows[].endpointHost",
          "type": "string",
          "description": "账号网关主机"
        },
        {
          "name": "rows[].endpointPort",
          "type": "number",
          "description": "账号网关端口"
        },
        {
          "name": "rows[].endpointStatus",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].expireTime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].useTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].limitTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].supportedProtocol",
          "type": "string",
          "description": "协议，SOCKS5 或 HTTP"
        },
        {
          "name": "rows[].remarks",
          "type": "string",
          "description": "备注"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "accountId": 1001,
                "endpointHost": "dp1.ly-proxy.com",
                "endpointPort": 10000,
                "endpointStatus": 1,
                "expireTime": "2026-11-14 12:00:00",
                "useTrafficGb": 2,
                "limitTrafficGb": 10,
                "supportedProtocol": "SOCKS5",
                "remarks": "示例备注"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "endpointHost",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "账号网关主机",
          "example": "dp1.ly-proxy.com"
        },
        {
          "name": "endpointPort",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "账号网关端口",
          "example": 10000
        },
        {
          "name": "endpointStatus",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "expireTime",
          "type": "Date",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-11-14 12:00:00"
        },
        {
          "name": "useTrafficGb",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 2
        },
        {
          "name": "limitTrafficGb",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 10
        },
        {
          "name": "supportedProtocol",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "协议，SOCKS5 或 HTTP",
          "example": "SOCKS5"
        },
        {
          "name": "remarks",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "备注",
          "example": "示例备注"
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/endpoint/list?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-endpoint-export",
      "method": "POST",
      "path": "/client/dynamics/account/endpoint/export",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountEndpointController.java",
      "sourceMethod": "export",
      "title": "网关接入点 · 导出 Excel",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountEndpoint",
      "responseType": "file",
      "responseFields": [
        {
          "name": "Body",
          "type": "binary",
          "description": "Excel .xlsx 文件字节流，不是 JSON。错误时仍可能收到 JSON，请先检查 Content-Type。"
        }
      ],
      "responses": [
        {
          "label": "Excel 下载成功",
          "status": 200,
          "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
          "text": "HTTP/1.1 200 OK\nContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\nContent-Disposition: attachment; filename=\"example.xlsx\"\n\n<binary XLSX bytes>"
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "endpointHost",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "账号网关主机",
          "example": "dp1.ly-proxy.com"
        },
        {
          "name": "endpointPort",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "账号网关端口",
          "example": 10000
        },
        {
          "name": "endpointStatus",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "expireTime",
          "type": "Date",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-11-14 12:00:00"
        },
        {
          "name": "useTrafficGb",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 2
        },
        {
          "name": "limitTrafficGb",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 10
        },
        {
          "name": "supportedProtocol",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "协议，SOCKS5 或 HTTP",
          "example": "SOCKS5"
        },
        {
          "name": "remarks",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "备注",
          "example": "示例备注"
        }
      ],
      "requestBody": null,
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/endpoint/export\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  --output example.xlsx"
    },
    {
      "id": "get-client-dynamics-account-endpoint-id",
      "method": "GET",
      "path": "/client/dynamics/account/endpoint/{id}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountEndpointController.java",
      "sourceMethod": "getInfo",
      "title": "网关接入点 · 查询详情",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountEndpoint",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "data.endpointHost",
          "type": "string",
          "description": "账号网关主机"
        },
        {
          "name": "data.endpointPort",
          "type": "number",
          "description": "账号网关端口"
        },
        {
          "name": "data.endpointStatus",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.expireTime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.useTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.limitTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.supportedProtocol",
          "type": "string",
          "description": "协议，SOCKS5 或 HTTP"
        },
        {
          "name": "data.remarks",
          "type": "string",
          "description": "备注"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "accountId": 1001,
              "endpointHost": "dp1.ly-proxy.com",
              "endpointPort": 10000,
              "endpointStatus": 1,
              "expireTime": "2026-11-14 12:00:00",
              "useTrafficGb": 2,
              "limitTrafficGb": 10,
              "supportedProtocol": "SOCKS5",
              "remarks": "示例备注"
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "path",
          "required": true,
          "description": "记录 ID",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/endpoint/1001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-endpoint",
      "method": "POST",
      "path": "/client/dynamics/account/endpoint",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountEndpointController.java",
      "sourceMethod": "add",
      "title": "网关接入点 · 创建记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountEndpoint",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "endpointHost",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "账号网关主机",
          "example": "dp1.ly-proxy.com"
        },
        {
          "name": "endpointPort",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "账号网关端口",
          "example": 10000
        },
        {
          "name": "endpointStatus",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "expireTime",
          "type": "Date",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-11-14 12:00:00"
        },
        {
          "name": "useTrafficGb",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 2
        },
        {
          "name": "limitTrafficGb",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 10
        },
        {
          "name": "supportedProtocol",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "协议，SOCKS5 或 HTTP",
          "example": "SOCKS5"
        },
        {
          "name": "remarks",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "备注",
          "example": "示例备注"
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "endpointHost": "dp1.ly-proxy.com",
        "endpointPort": 10000,
        "endpointStatus": 1,
        "expireTime": "2026-11-14 12:00:00",
        "useTrafficGb": 2,
        "limitTrafficGb": 10,
        "supportedProtocol": "SOCKS5",
        "remarks": "示例备注"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/endpoint\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"endpointHost\":\"dp1.ly-proxy.com\",\"endpointPort\":10000,\"endpointStatus\":1,\"expireTime\":\"2026-11-14 12:00:00\",\"useTrafficGb\":2,\"limitTrafficGb\":10,\"supportedProtocol\":\"SOCKS5\",\"remarks\":\"示例备注\"}'"
    },
    {
      "id": "put-client-dynamics-account-endpoint",
      "method": "PUT",
      "path": "/client/dynamics/account/endpoint",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountEndpointController.java",
      "sourceMethod": "edit",
      "title": "网关接入点 · 修改记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountEndpoint",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "endpointHost",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "账号网关主机",
          "example": "dp1.ly-proxy.com"
        },
        {
          "name": "endpointPort",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "账号网关端口",
          "example": 10000
        },
        {
          "name": "endpointStatus",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "expireTime",
          "type": "Date",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-11-14 12:00:00"
        },
        {
          "name": "useTrafficGb",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 2
        },
        {
          "name": "limitTrafficGb",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 10
        },
        {
          "name": "supportedProtocol",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "协议，SOCKS5 或 HTTP",
          "example": "SOCKS5"
        },
        {
          "name": "remarks",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "备注",
          "example": "示例备注"
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "endpointHost": "dp1.ly-proxy.com",
        "endpointPort": 10000,
        "endpointStatus": 1,
        "expireTime": "2026-11-14 12:00:00",
        "useTrafficGb": 2,
        "limitTrafficGb": 10,
        "supportedProtocol": "SOCKS5",
        "remarks": "示例备注"
      },
      "curl": "curl -X PUT \"https://ly-proxy.com/api/proxy/client/dynamics/account/endpoint\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"endpointHost\":\"dp1.ly-proxy.com\",\"endpointPort\":10000,\"endpointStatus\":1,\"expireTime\":\"2026-11-14 12:00:00\",\"useTrafficGb\":2,\"limitTrafficGb\":10,\"supportedProtocol\":\"SOCKS5\",\"remarks\":\"示例备注\"}'"
    },
    {
      "id": "delete-client-dynamics-account-endpoint-ids",
      "method": "DELETE",
      "path": "/client/dynamics/account/endpoint/{ids}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountEndpointController.java",
      "sourceMethod": "remove",
      "title": "网关接入点 · 删除记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountEndpoint",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ids",
          "type": "Long[]",
          "in": "path",
          "required": true,
          "description": "返回模型字段",
          "example": [
            1
          ]
        }
      ],
      "requestBody": null,
      "curl": "curl -X DELETE \"https://ly-proxy.com/api/proxy/client/dynamics/account/endpoint/1001,1002\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-protocol-list",
      "method": "GET",
      "path": "/client/dynamics/account/protocol/list",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountSupportProtocolController.java",
      "sourceMethod": "list",
      "title": "支持协议 · 查询列表",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountSupportProtocol",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "rows[].supportedProtocol",
          "type": "string",
          "description": "协议，SOCKS5 或 HTTP"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "accountId": 1001,
                "supportedProtocol": "SOCKS5"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "supportedProtocol",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "协议，SOCKS5 或 HTTP",
          "example": "SOCKS5"
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/protocol/list?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-protocol-id",
      "method": "GET",
      "path": "/client/dynamics/account/protocol/{id}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountSupportProtocolController.java",
      "sourceMethod": "getInfo",
      "title": "支持协议 · 查询详情",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountSupportProtocol",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "data.supportedProtocol",
          "type": "string",
          "description": "协议，SOCKS5 或 HTTP"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "accountId": 1001,
              "supportedProtocol": "SOCKS5"
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "path",
          "required": true,
          "description": "记录 ID",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/protocol/1001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-protocol",
      "method": "POST",
      "path": "/client/dynamics/account/protocol",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountSupportProtocolController.java",
      "sourceMethod": "add",
      "title": "支持协议 · 创建记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountSupportProtocol",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "supportedProtocol",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "协议，SOCKS5 或 HTTP",
          "example": "SOCKS5"
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "supportedProtocol": "SOCKS5"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/protocol\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"supportedProtocol\":\"SOCKS5\"}'"
    },
    {
      "id": "put-client-dynamics-account-protocol",
      "method": "PUT",
      "path": "/client/dynamics/account/protocol",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountSupportProtocolController.java",
      "sourceMethod": "edit",
      "title": "支持协议 · 修改记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountSupportProtocol",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "supportedProtocol",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "协议，SOCKS5 或 HTTP",
          "example": "SOCKS5"
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "supportedProtocol": "SOCKS5"
      },
      "curl": "curl -X PUT \"https://ly-proxy.com/api/proxy/client/dynamics/account/protocol\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"supportedProtocol\":\"SOCKS5\"}'"
    },
    {
      "id": "delete-client-dynamics-account-protocol-ids",
      "method": "DELETE",
      "path": "/client/dynamics/account/protocol/{ids}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountSupportProtocolController.java",
      "sourceMethod": "remove",
      "title": "支持协议 · 删除记录",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountSupportProtocol",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ids",
          "type": "Long[]",
          "in": "path",
          "required": true,
          "description": "返回模型字段",
          "example": [
            1
          ]
        }
      ],
      "requestBody": null,
      "curl": "curl -X DELETE \"https://ly-proxy.com/api/proxy/client/dynamics/account/protocol/1001,1002\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-details-list",
      "method": "GET",
      "path": "/client/dynamics/account/details/list",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageDetailsController.java",
      "sourceMethod": "list",
      "title": "用量明细 · 查询列表",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageDetails",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "rows[].host",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].port",
          "type": "string",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "rows[].dataDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].requests",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].traffic",
          "type": "number",
          "description": "回收流量，GB；流量池 A 按整数 GB"
        },
        {
          "name": "rows[].extraTraffic",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].message",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "accountId": 1001,
                "host": "DEMO_VALUE",
                "port": "62000",
                "dataDatetime": "2026-10-15 12:00:00",
                "requests": 1,
                "traffic": 1,
                "extraTraffic": "DEMO_VALUE",
                "status": "1",
                "message": "DEMO_VALUE"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": true,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "host",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/details/list?accountId=1001&pageNum=1&pageSize=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-details-export",
      "method": "POST",
      "path": "/client/dynamics/account/details/export",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageDetailsController.java",
      "sourceMethod": "export",
      "title": "用量明细 · 导出 Excel",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageDetails",
      "responseType": "file",
      "responseFields": [
        {
          "name": "Body",
          "type": "binary",
          "description": "Excel .xlsx 文件字节流，不是 JSON。错误时仍可能收到 JSON，请先检查 Content-Type。"
        }
      ],
      "responses": [
        {
          "label": "Excel 下载成功",
          "status": 200,
          "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
          "text": "HTTP/1.1 200 OK\nContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\nContent-Disposition: attachment; filename=\"example.xlsx\"\n\n<binary XLSX bytes>"
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "host",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "port",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "代理端口，读取资源返回值，不固定写死",
          "example": "62000"
        },
        {
          "name": "dataDatetime",
          "type": "Date",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-10-15 12:00:00"
        },
        {
          "name": "requests",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "traffic",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "回收流量，GB；流量池 A 按整数 GB",
          "example": 1
        },
        {
          "name": "extraTraffic",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "message",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        }
      ],
      "requestBody": null,
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/details/export\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  --output example.xlsx"
    },
    {
      "id": "get-client-dynamics-account-details-id",
      "method": "GET",
      "path": "/client/dynamics/account/details/{id}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageDetailsController.java",
      "sourceMethod": "getInfo",
      "title": "用量明细 · 查询详情",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageDetails",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "data.host",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.port",
          "type": "string",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "data.dataDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.requests",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.traffic",
          "type": "number",
          "description": "回收流量，GB；流量池 A 按整数 GB"
        },
        {
          "name": "data.extraTraffic",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "data.message",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "accountId": 1001,
              "host": "DEMO_VALUE",
              "port": "62000",
              "dataDatetime": "2026-10-15 12:00:00",
              "requests": 1,
              "traffic": 1,
              "extraTraffic": "DEMO_VALUE",
              "status": "1",
              "message": "DEMO_VALUE"
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "path",
          "required": true,
          "description": "记录 ID",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/details/1001\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-details",
      "method": "POST",
      "path": "/client/dynamics/account/details",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageDetailsController.java",
      "sourceMethod": "add",
      "title": "用量明细 · 创建记录",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageDetails",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "host",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "port",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "代理端口，读取资源返回值，不固定写死",
          "example": "62000"
        },
        {
          "name": "dataDatetime",
          "type": "Date",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-10-15 12:00:00"
        },
        {
          "name": "requests",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "traffic",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "回收流量，GB；流量池 A 按整数 GB",
          "example": 1
        },
        {
          "name": "extraTraffic",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "status",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "message",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "host": "DEMO_VALUE",
        "port": "62000",
        "dataDatetime": "2026-10-15 12:00:00",
        "requests": 1,
        "traffic": 1,
        "extraTraffic": "DEMO_VALUE",
        "status": 1,
        "message": "DEMO_VALUE"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"host\":\"DEMO_VALUE\",\"port\":\"62000\",\"dataDatetime\":\"2026-10-15 12:00:00\",\"requests\":1,\"traffic\":1,\"extraTraffic\":\"DEMO_VALUE\",\"status\":1,\"message\":\"DEMO_VALUE\"}'"
    },
    {
      "id": "put-client-dynamics-account-details",
      "method": "PUT",
      "path": "/client/dynamics/account/details",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageDetailsController.java",
      "sourceMethod": "edit",
      "title": "用量明细 · 修改记录",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageDetails",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "host",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "port",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "代理端口，读取资源返回值，不固定写死",
          "example": "62000"
        },
        {
          "name": "dataDatetime",
          "type": "Date",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-10-15 12:00:00"
        },
        {
          "name": "requests",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "traffic",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "回收流量，GB；流量池 A 按整数 GB",
          "example": 1
        },
        {
          "name": "extraTraffic",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "status",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "message",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "host": "DEMO_VALUE",
        "port": "62000",
        "dataDatetime": "2026-10-15 12:00:00",
        "requests": 1,
        "traffic": 1,
        "extraTraffic": "DEMO_VALUE",
        "status": 1,
        "message": "DEMO_VALUE"
      },
      "curl": "curl -X PUT \"https://ly-proxy.com/api/proxy/client/dynamics/account/details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"host\":\"DEMO_VALUE\",\"port\":\"62000\",\"dataDatetime\":\"2026-10-15 12:00:00\",\"requests\":1,\"traffic\":1,\"extraTraffic\":\"DEMO_VALUE\",\"status\":1,\"message\":\"DEMO_VALUE\"}'"
    },
    {
      "id": "delete-client-dynamics-account-details-ids",
      "method": "DELETE",
      "path": "/client/dynamics/account/details/{ids}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageDetailsController.java",
      "sourceMethod": "remove",
      "title": "用量明细 · 删除记录",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageDetails",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ids",
          "type": "Long[]",
          "in": "path",
          "required": true,
          "description": "返回模型字段",
          "example": [
            1
          ]
        }
      ],
      "requestBody": null,
      "curl": "curl -X DELETE \"https://ly-proxy.com/api/proxy/client/dynamics/account/details/1001,1002\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-stat-list",
      "method": "GET",
      "path": "/client/dynamics/account/stat/list",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageStatController.java",
      "sourceMethod": "list",
      "title": "用量统计 · 查询列表",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "ClientAccountStatDTO",
      "responseType": "array",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "array",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data[].requestsTotal",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].trafficTotal",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].dUsage",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": [
              {
                "requestsTotal": 100,
                "trafficTotal": 0.25,
                "dUsage": "2026-10-15"
              }
            ]
          }
        },
        {
          "label": "无记录时（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "startTime",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "查询开始时间",
          "example": "2026-10-01"
        },
        {
          "name": "endTime",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "查询结束时间",
          "example": "2026-10-15"
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/stat/list\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-dynamics-account-stat-id",
      "method": "GET",
      "path": "/client/dynamics/account/stat/{id}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageStatController.java",
      "sourceMethod": "getInfo",
      "title": "用量统计 · 查询详情",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageStat",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.accountId",
          "type": "number",
          "description": "动态账号 ID；从账号列表读取"
        },
        {
          "name": "data.dUsage",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.requests",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.traffic",
          "type": "number",
          "description": "回收流量，GB；流量池 A 按整数 GB"
        },
        {
          "name": "data.extraTraffic",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "accountId": 1001,
              "dUsage": "2026-10-15",
              "requests": 1,
              "traffic": 1,
              "extraTraffic": 1.0
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "path",
          "required": true,
          "description": "记录 ID",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/dynamics/account/stat/1001\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "post-client-dynamics-account-stat",
      "method": "POST",
      "path": "/client/dynamics/account/stat",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageStatController.java",
      "sourceMethod": "add",
      "title": "用量统计 · 创建记录",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageStat",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "dUsage",
          "type": "Date",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-10-15"
        },
        {
          "name": "requests",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "traffic",
          "type": "Double",
          "in": "body",
          "required": false,
          "description": "回收流量，GB；流量池 A 按整数 GB",
          "example": 1
        },
        {
          "name": "extraTraffic",
          "type": "Double",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1.0
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "dUsage": "2026-10-15",
        "requests": 1,
        "traffic": 1,
        "extraTraffic": 1.0
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/dynamics/account/stat\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"dUsage\":\"2026-10-15\",\"requests\":1,\"traffic\":1,\"extraTraffic\":1.0}'"
    },
    {
      "id": "put-client-dynamics-account-stat",
      "method": "PUT",
      "path": "/client/dynamics/account/stat",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageStatController.java",
      "sourceMethod": "edit",
      "title": "用量统计 · 修改记录",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageStat",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "accountId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "动态账号 ID；从账号列表读取",
          "example": 1001
        },
        {
          "name": "dUsage",
          "type": "Date",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-10-15"
        },
        {
          "name": "requests",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "traffic",
          "type": "Double",
          "in": "body",
          "required": false,
          "description": "回收流量，GB；流量池 A 按整数 GB",
          "example": 1
        },
        {
          "name": "extraTraffic",
          "type": "Double",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1.0
        }
      ],
      "requestBody": {
        "id": 1001,
        "accountId": 1001,
        "dUsage": "2026-10-15",
        "requests": 1,
        "traffic": 1,
        "extraTraffic": 1.0
      },
      "curl": "curl -X PUT \"https://ly-proxy.com/api/proxy/client/dynamics/account/stat\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"id\":1001,\"accountId\":1001,\"dUsage\":\"2026-10-15\",\"requests\":1,\"traffic\":1,\"extraTraffic\":1.0}'"
    },
    {
      "id": "delete-client-dynamics-account-stat-ids",
      "method": "DELETE",
      "path": "/client/dynamics/account/stat/{ids}",
      "group": "dynamic",
      "source": "com/ly/proxy/client/account/controller/ClientIpDynamicsAccountUsageStatController.java",
      "sourceMethod": "remove",
      "title": "用量统计 · 删除记录",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "高级维护接口。网关、协议和统计记录通常由系统/上游同步；写入记录不代表上游能力已开通。",
        "只能操作当前鉴权身份所属资源；上游配额、协议和可用地区以账号实际返回为准。"
      ],
      "model": "LyProxyIpDynamicsAccountUsageStat",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ids",
          "type": "Long[]",
          "in": "path",
          "required": true,
          "description": "返回模型字段",
          "example": [
            1
          ]
        }
      ],
      "requestBody": null,
      "curl": "curl -X DELETE \"https://ly-proxy.com/api/proxy/client/dynamics/account/stat/1001,1002\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-plan-list",
      "method": "GET",
      "path": "/client/plan/list",
      "group": "dynamic",
      "source": "com/ly/proxy/client/plan/controller/ClientIpDynamicsPlanController.java",
      "sourceMethod": "list",
      "title": "动态套餐 · 查询列表",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [],
      "model": "LyProxyIpDynamicsPlan",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].planTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].expirationDate",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].expired",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].planResidueTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].currentPlanItemId",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "planTrafficGb": 10,
                "expirationDate": "2026-11-14 12:00:00",
                "expired": 1,
                "planResidueTrafficGb": 8,
                "currentPlanItemId": 1
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "planTrafficGb",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 10
        },
        {
          "name": "expirationDate",
          "type": "Date",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-11-14 12:00:00"
        },
        {
          "name": "expired",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "planResidueTrafficGb",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 8
        },
        {
          "name": "currentPlanItemId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/plan/list?pageNum=1&pageSize=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-plan-detail",
      "method": "GET",
      "path": "/client/plan/detail",
      "group": "dynamic",
      "source": "com/ly/proxy/client/plan/controller/ClientIpDynamicsPlanController.java",
      "sourceMethod": "detail",
      "title": "查询流量池详情",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [],
      "model": "LyProxyIpDynamicsPlan",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.planTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.expirationDate",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.expired",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.planResidueTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.currentPlanItemId",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "planTrafficGb": 10,
              "expirationDate": "2026-11-14 12:00:00",
              "expired": 1,
              "planResidueTrafficGb": 8,
              "currentPlanItemId": 1
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/plan/detail\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-plan-queryMainBalance",
      "method": "GET",
      "path": "/client/plan/queryMainBalance",
      "group": "dynamic",
      "source": "com/ly/proxy/client/plan/controller/ClientIpDynamicsPlanController.java",
      "sourceMethod": "queryMainBalance",
      "title": "刷新主流量池余额",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [],
      "model": "LyProxyIpDynamicsPlan",
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/plan/queryMainBalance\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-plan-order-list",
      "method": "GET",
      "path": "/client/plan/order/list",
      "group": "shared",
      "source": "com/ly/proxy/client/plan/controller/ClientIpDynamicsPlanOrderController.java",
      "sourceMethod": "list",
      "title": "动态套餐 · 查询列表",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [],
      "model": "LyProxyIpDynamicsPlanOrder",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].planName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].planTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].expirationDate",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].expired",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].pricePerGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].planTypeId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].planResidueTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "planName": "DEMO_VALUE",
                "planTrafficGb": 10,
                "expirationDate": "2026-11-14 12:00:00",
                "expired": 1,
                "price": 5,
                "pricePerGb": 1.0,
                "planTypeId": 1,
                "planResidueTrafficGb": 8
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "记录 ID",
          "example": 1001
        },
        {
          "name": "planName",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "planTrafficGb",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 10
        },
        {
          "name": "expirationDate",
          "type": "Date",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "2026-11-14 12:00:00"
        },
        {
          "name": "expired",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "price",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "服务端实时价格，示例数值不构成报价",
          "example": 5
        },
        {
          "name": "pricePerGb",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1.0
        },
        {
          "name": "planTypeId",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "planResidueTrafficGb",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 8
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/plan/order/list?pageNum=1&pageSize=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-plan-order-id",
      "method": "GET",
      "path": "/client/plan/order/{id}",
      "group": "shared",
      "source": "com/ly/proxy/client/plan/controller/ClientIpDynamicsPlanOrderController.java",
      "sourceMethod": "getInfo",
      "title": "动态套餐 · 查询详情",
      "auth": "bearer",
      "evidence": "source-controller-and-dto",
      "notes": [],
      "model": "LyProxyIpDynamicsPlanOrder",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.planName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.planTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.expirationDate",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.expired",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "data.pricePerGb",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.planTypeId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.planResidueTrafficGb",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "planName": "DEMO_VALUE",
              "planTrafficGb": 10,
              "expirationDate": "2026-11-14 12:00:00",
              "expired": 1,
              "price": 5,
              "pricePerGb": 1.0,
              "planTypeId": 1,
              "planResidueTrafficGb": 8
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "id",
          "type": "Long",
          "in": "path",
          "required": true,
          "description": "记录 ID",
          "example": 1001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/plan/order/1001\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-ip-dynamics-planConfig",
      "method": "GET",
      "path": "/client/ip/dynamics/planConfig",
      "group": "dynamic",
      "source": "com/ly/proxy/client/ip/controller/ClientIpDynamicsController.java",
      "sourceMethod": "planConfig",
      "title": "价格计划配置",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "DynamicPlanConfigDTO",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].title",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].capacity",
          "type": "number",
          "description": "流量容量，GB"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].discount",
          "type": "number",
          "description": "折扣配置"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "title": "示例套餐",
                "capacity": 10,
                "price": 5,
                "discount": 1,
                "status": "Y"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "capacity",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "流量容量，GB",
          "example": 10
        },
        {
          "name": "title",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "示例套餐"
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/dynamics/planConfig?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-ip-dynamics-list",
      "method": "GET",
      "path": "/client/ip/dynamics/list",
      "group": "dynamic",
      "source": "com/ly/proxy/client/ip/controller/ClientIpDynamicsController.java",
      "sourceMethod": "list",
      "title": "动态IP列表",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "LyProxyIpDynamicsConfigPlan",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].title",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].capacity",
          "type": "number",
          "description": "流量容量，GB"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].discount",
          "type": "number",
          "description": "折扣配置"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "title": "示例套餐",
                "capacity": 10,
                "price": 5,
                "discount": 1,
                "status": "Y"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "capacity",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "流量容量，GB",
          "example": 10
        },
        {
          "name": "title",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "示例套餐"
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/dynamics/list?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-ip-dynamics-dayConfig",
      "method": "GET",
      "path": "/client/ip/dynamics/dayConfig",
      "group": "dynamic",
      "source": "com/ly/proxy/client/ip/controller/ClientIpDynamicsController.java",
      "sourceMethod": "dayConfig",
      "title": "天数配置",
      "auth": "bearer",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "LyProxyIpDynamicsConfigPeriod",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "rows[].days",
          "type": "number",
          "description": "有效天数"
        },
        {
          "name": "rows[].dayDiscount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "price": 5,
                "currency": "USD",
                "days": 30,
                "dayDiscount": 1,
                "status": "Y"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "days",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "有效天数",
          "example": 30
        },
        {
          "name": "discount",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "折扣配置",
          "example": 1
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/dynamics/dayConfig?pageNum=1&pageSize=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-ip-dynamics-planConfigWithOutAuth",
      "method": "GET",
      "path": "/client/ip/dynamics/planConfigWithOutAuth",
      "group": "dynamic",
      "source": "com/ly/proxy/client/ip/controller/ClientIpDynamicsController.java",
      "sourceMethod": "planConfigWithAuth",
      "title": "价格计划配置(免鉴权)",
      "auth": "public",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "DynamicPlanConfigDTO",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].title",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].capacity",
          "type": "number",
          "description": "流量容量，GB"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].discount",
          "type": "number",
          "description": "折扣配置"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "title": "示例套餐",
                "capacity": 10,
                "price": 5,
                "discount": 1,
                "status": "Y"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        }
      ],
      "params": [
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "capacity",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "流量容量，GB",
          "example": 10
        },
        {
          "name": "title",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "示例套餐"
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/dynamics/planConfigWithOutAuth?pageNum=1&pageSize=10\""
    },
    {
      "id": "get-client-ip-dynamics-dayConfigWithOutAuth",
      "method": "GET",
      "path": "/client/ip/dynamics/dayConfigWithOutAuth",
      "group": "dynamic",
      "source": "com/ly/proxy/client/ip/controller/ClientIpDynamicsController.java",
      "sourceMethod": "dayConfigWithAuth",
      "title": "天数配置(免鉴权)",
      "auth": "public",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "LyProxyIpDynamicsConfigPeriod",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "rows[].days",
          "type": "number",
          "description": "有效天数"
        },
        {
          "name": "rows[].dayDiscount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "price": 5,
                "currency": "USD",
                "days": 30,
                "dayDiscount": 1,
                "status": "Y"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        }
      ],
      "params": [
        {
          "name": "days",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "有效天数",
          "example": 30
        },
        {
          "name": "discount",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "折扣配置",
          "example": 1
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/dynamics/dayConfigWithOutAuth?pageNum=1&pageSize=10\""
    },
    {
      "id": "get-client-ip-static-confDaysList",
      "method": "GET",
      "path": "/client/ip/static/confDaysList",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticController.java",
      "sourceMethod": "confDaysList",
      "title": "静态Ip天数折扣配置",
      "auth": "bearer",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "LyProxyIpStaticConfigPeriod",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].ipType",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].days",
          "type": "number",
          "description": "有效天数"
        },
        {
          "name": "rows[].discount",
          "type": "number",
          "description": "折扣配置"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "ipType": 1,
                "merchantId": 1000,
                "days": 30,
                "discount": 1,
                "status": "Y"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "ipType",
          "type": "Long",
          "in": "query",
          "required": true,
          "description": "静态 IP 类型，0 普通/广播，1 原生",
          "example": 1
        },
        {
          "name": "days",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "有效天数",
          "example": 30
        },
        {
          "name": "discount",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "折扣配置",
          "example": 1
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/static/confDaysList?ipType=1&pageNum=1&pageSize=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-ip-static-confNumList",
      "method": "GET",
      "path": "/client/ip/static/confNumList",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticController.java",
      "sourceMethod": "confNumList",
      "title": "静态Ip数量等级折扣配置",
      "auth": "bearer",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "LyProxyIpStaticConfigPlan",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].ipType",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].totalIps",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].isExclusive",
          "type": "number",
          "description": "资源类型标识，依实际购买配置使用"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "ipType": 1,
                "totalIps": 1,
                "price": 5,
                "countryCode": "US",
                "status": "Y",
                "merchantId": 1000,
                "isExclusive": 1
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "ipType",
          "type": "Long",
          "in": "query",
          "required": true,
          "description": "静态 IP 类型，0 普通/广播，1 原生",
          "example": 1
        },
        {
          "name": "totalIps",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "price",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "服务端实时价格，示例数值不构成报价",
          "example": 5
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "countryCode",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "两位国家/地区代码，例如 US、TH、GB",
          "example": "US"
        },
        {
          "name": "isExclusive",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "资源类型标识，依实际购买配置使用",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/static/confNumList?ipType=1&pageNum=1&pageSize=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-ip-static-confDaysListWithOutAuth",
      "method": "GET",
      "path": "/client/ip/static/confDaysListWithOutAuth",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticController.java",
      "sourceMethod": "confDaysListWithOutAuth",
      "title": "静态Ip天数折扣配置(免鉴权)",
      "auth": "public",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "LyProxyIpStaticConfigPeriod",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].ipType",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].days",
          "type": "number",
          "description": "有效天数"
        },
        {
          "name": "rows[].discount",
          "type": "number",
          "description": "折扣配置"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "ipType": 1,
                "merchantId": 1000,
                "days": 30,
                "discount": 1,
                "status": "Y"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        }
      ],
      "params": [
        {
          "name": "ipType",
          "type": "Long",
          "in": "query",
          "required": true,
          "description": "静态 IP 类型，0 普通/广播，1 原生",
          "example": 1
        },
        {
          "name": "days",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "有效天数",
          "example": 30
        },
        {
          "name": "discount",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "折扣配置",
          "example": 1
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/static/confDaysListWithOutAuth?ipType=1&pageNum=1&pageSize=10\""
    },
    {
      "id": "get-client-ip-static-confNumListWithOutAuth",
      "method": "GET",
      "path": "/client/ip/static/confNumListWithOutAuth",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticController.java",
      "sourceMethod": "confNumListWithOutAuth",
      "title": "静态Ip数量等级折扣配置(免鉴权)",
      "auth": "public",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "LyProxyIpStaticConfigPlan",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].ipType",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].totalIps",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].isExclusive",
          "type": "number",
          "description": "资源类型标识，依实际购买配置使用"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "ipType": 1,
                "totalIps": 1,
                "price": 5,
                "countryCode": "US",
                "status": "Y",
                "merchantId": 1000,
                "isExclusive": 1
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        }
      ],
      "params": [
        {
          "name": "ipType",
          "type": "Long",
          "in": "query",
          "required": true,
          "description": "静态 IP 类型，0 普通/广播，1 原生",
          "example": 1
        },
        {
          "name": "totalIps",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "price",
          "type": "BigDecimal",
          "in": "query",
          "required": false,
          "description": "服务端实时价格，示例数值不构成报价",
          "example": 5
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "countryCode",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "两位国家/地区代码，例如 US、TH、GB",
          "example": "US"
        },
        {
          "name": "isExclusive",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "资源类型标识，依实际购买配置使用",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/static/confNumListWithOutAuth?ipType=1&pageNum=1&pageSize=10\""
    },
    {
      "id": "get-client-ip-static-continentConfig",
      "method": "GET",
      "path": "/client/ip/static/continentConfig",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticController.java",
      "sourceMethod": "continentConfig",
      "title": "国家配置",
      "auth": "public",
      "evidence": "production-swagger-and-source",
      "notes": [
        "地区配置字段随服务端配置变化；生产当前配置为空时，成功响应可省略 data。"
      ],
      "model": null,
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "array",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data[].code",
          "type": "string",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "data[].countries",
          "type": "array",
          "description": "返回模型字段"
        },
        {
          "name": "data[].countries[].code",
          "type": "string",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "data[].countries[].cities",
          "type": "array",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": [
              {
                "code": "Asia",
                "countries": [
                  {
                    "code": "TH",
                    "cities": [
                      "Bangkok"
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        }
      ],
      "params": [],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/static/continentConfig\""
    },
    {
      "id": "get-client-ip-static-stats",
      "method": "GET",
      "path": "/client/ip/static/stats",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticController.java",
      "sourceMethod": "stats",
      "title": "静态IP统计",
      "auth": "bearer",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": null,
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.confDaysCount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.confNumCount",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "confDaysCount": 3,
              "confNumCount": 4
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/static/stats\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
    },
    {
      "id": "get-client-ip-pool-item-merchantIpList",
      "method": "GET",
      "path": "/client/ip/pool/item/merchantIpList",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticPoolItemController.java",
      "sourceMethod": "merchantIpList",
      "title": "查询商户IP列表",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "ClientIpStaticPoolMerchantDTO",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].lastOrderId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].lastPoolId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].port",
          "type": "string",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "rows[].relayPort",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].remark",
          "type": "string",
          "description": "备注"
        },
        {
          "name": "rows[].account",
          "type": "string",
          "description": "代理认证账号"
        },
        {
          "name": "rows[].password",
          "type": "string",
          "description": "代理认证密码；示例值不是生产凭证"
        },
        {
          "name": "rows[].ip",
          "type": "string",
          "description": "代理 IP；示例使用 RFC 5737 文档地址"
        },
        {
          "name": "rows[].protocolse",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].effectiveDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].expireDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].serviceExpireTime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].unsubscribeTime",
          "type": "null",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].subscribeDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].autoRenewEnabled",
          "type": "number",
          "description": "1 开启，0 关闭"
        },
        {
          "name": "rows[].poolId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].type",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].hot",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].updateTime",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "lastOrderId": 2001,
                "lastPoolId": 3001,
                "port": "62000",
                "relayPort": "DEMO_VALUE",
                "remark": "示例备注",
                "account": "demo_account",
                "password": "DEMO_PASSWORD",
                "ip": "192.0.2.10",
                "protocolse": "SOCKS5",
                "effectiveDatetime": "2026-10-15 12:00:00",
                "expireDatetime": "2026-11-14 12:00:00",
                "serviceExpireTime": "2026-10-15 12:00:00",
                "unsubscribeTime": null,
                "subscribeDatetime": "2026-10-15 12:00:00",
                "status": 1,
                "autoRenewEnabled": 0,
                "poolId": 3001,
                "type": 1,
                "continent": "North America",
                "countryCode": "US",
                "location": "United States",
                "hot": "DEMO_VALUE",
                "updateTime": "2026-10-15 12:00:00"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "type",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "静态 IP 类型，0 普通/广播，1 原生",
          "example": 1
        },
        {
          "name": "ip",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "代理 IP；示例使用 RFC 5737 文档地址",
          "example": "192.0.2.10"
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "orderNo",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "订单号，由下单接口返回",
          "example": "N2026101500000000001"
        },
        {
          "name": "countryCode",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "两位国家/地区代码，例如 US、TH、GB",
          "example": "US"
        },
        {
          "name": "orderBy",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "orderDir",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/pool/item/merchantIpList?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-ip-pool-item-updateCreds",
      "method": "POST",
      "path": "/client/ip/pool/item/updateCreds",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticPoolItemController.java",
      "sourceMethod": "updateCreds",
      "title": "修改IP账密",
      "auth": "bearer",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。"
      ],
      "model": null,
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ip",
          "type": "String",
          "in": "body",
          "required": true,
          "description": "IP地址",
          "example": "192.0.2.10"
        },
        {
          "name": "account",
          "type": "String",
          "in": "body",
          "required": true,
          "description": "新账号",
          "example": "demo_account"
        },
        {
          "name": "password",
          "type": "String",
          "in": "body",
          "required": true,
          "description": "新密码",
          "example": "DEMO_PASSWORD"
        }
      ],
      "requestBody": {
        "ip": "192.0.2.10",
        "account": "demo_account",
        "password": "DEMO_PASSWORD"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/ip/pool/item/updateCreds\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"ip\":\"192.0.2.10\",\"account\":\"demo_account\",\"password\":\"DEMO_PASSWORD\"}'"
    },
    {
      "id": "post-client-ip-pool-item-autoRenew",
      "method": "POST",
      "path": "/client/ip/pool/item/autoRenew",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticPoolItemController.java",
      "sourceMethod": "updateAutoRenew",
      "title": "更新静态IP自动续费开关",
      "auth": "bearer",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。"
      ],
      "model": null,
      "responseType": "affected-count",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "number",
          "description": "业务载荷；部分成功响应省略此键"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "自动续费已开启",
            "data": 1
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ipList",
          "type": "List<String>",
          "in": "body",
          "required": true,
          "description": "IP列表",
          "example": [
            "192.0.2.10"
          ]
        },
        {
          "name": "autoRenewEnabled",
          "type": "Long",
          "in": "body",
          "required": true,
          "description": "自动续费开关：1开启，0关闭",
          "example": 0
        }
      ],
      "requestBody": {
        "ipList": [
          "192.0.2.10"
        ],
        "autoRenewEnabled": 1
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/ip/pool/item/autoRenew\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"ipList\":[\"192.0.2.10\"],\"autoRenewEnabled\":1}'"
    },
    {
      "id": "post-client-ip-pool-item-remark",
      "method": "POST",
      "path": "/client/ip/pool/item/remark",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticPoolItemController.java",
      "sourceMethod": "updateRemark",
      "title": "更新IP备注",
      "auth": "bearer",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。"
      ],
      "model": null,
      "responseType": "ack",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ip",
          "type": "String",
          "in": "body",
          "required": true,
          "description": "IP地址",
          "example": "192.0.2.10"
        },
        {
          "name": "remark",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "备注",
          "example": "示例备注"
        }
      ],
      "requestBody": {
        "ip": "192.0.2.10",
        "remark": "demo-team"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/ip/pool/item/remark\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"ip\":\"192.0.2.10\",\"remark\":\"demo-team\"}'"
    },
    {
      "id": "post-client-ip-pool-item-proxySpeedTest-batch",
      "method": "POST",
      "path": "/client/ip/pool/item/proxySpeedTest/batch",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticPoolItemController.java",
      "sourceMethod": "proxySpeedTestBatch",
      "title": "批量代理连通检测",
      "auth": "bearer",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "每条代理的结果在 data 数组；单条失败不会自动将顶层 code 改为失败。"
      ],
      "model": null,
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "array",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data[].line",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].protocol",
          "type": "string",
          "description": "SOCKS5 / HTTP；流量池 A 使用 SOCKS5"
        },
        {
          "name": "data[].ok",
          "type": "boolean",
          "description": "返回模型字段"
        },
        {
          "name": "data[].connectMs",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].error",
          "type": "null",
          "description": "返回模型字段"
        },
        {
          "name": "data[].ipInfoJson",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].ipSummary",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": [
              {
                "line": "socks5://demo_account:DEMO_PASSWORD@192.0.2.10:62000",
                "protocol": "socks5",
                "ok": true,
                "connectMs": 160,
                "error": null,
                "ipInfoJson": "{\"ip\":\"192.0.2.10\",\"country\":\"US\"}",
                "ipSummary": "192.0.2.10 / US"
              }
            ]
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "lines",
          "type": "List<String>",
          "in": "body",
          "required": true,
          "description": "代理连接字符串数组",
          "example": [
            "socks5://demo_account:DEMO_PASSWORD@192.0.2.10:62000"
          ]
        }
      ],
      "requestBody": {
        "lines": [
          "socks5://demo_account:DEMO_PASSWORD@192.0.2.10:62000"
        ]
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/ip/pool/item/proxySpeedTest/batch\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"lines\":[\"socks5://demo_account:DEMO_PASSWORD@192.0.2.10:62000\"]}'"
    },
    {
      "id": "post-client-ip-pool-item-proxySpeedTest-row",
      "method": "POST",
      "path": "/client/ip/pool/item/proxySpeedTest/row",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticPoolItemController.java",
      "sourceMethod": "proxySpeedTestRow",
      "title": "单条 HTTP + SOCKS5 连通检测",
      "auth": "bearer",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "同时检查 HTTP 和 SOCKS5；业务 code=200 仅表示检测执行成功，是否连通须检查 httpOk/socks5Ok。"
      ],
      "model": null,
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.ip",
          "type": "string",
          "description": "代理 IP；示例使用 RFC 5737 文档地址"
        },
        {
          "name": "data.port",
          "type": "number",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "data.httpOk",
          "type": "boolean",
          "description": "返回模型字段"
        },
        {
          "name": "data.httpMs",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.httpError",
          "type": "null",
          "description": "返回模型字段"
        },
        {
          "name": "data.httpIpInfoJson",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.socks5Ok",
          "type": "boolean",
          "description": "返回模型字段"
        },
        {
          "name": "data.socks5Ms",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.socks5Error",
          "type": "null",
          "description": "返回模型字段"
        },
        {
          "name": "data.socks5IpInfoJson",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "ip": "192.0.2.10",
              "port": 62000,
              "httpOk": true,
              "httpMs": 180,
              "httpError": null,
              "httpIpInfoJson": "{\"ip\":\"192.0.2.10\",\"country\":\"US\"}",
              "socks5Ok": true,
              "socks5Ms": 160,
              "socks5Error": null,
              "socks5IpInfoJson": "{\"ip\":\"192.0.2.10\",\"country\":\"US\"}"
            }
          }
        },
        {
          "label": "检测执行成功，但代理连接失败",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "ip": "192.0.2.10",
              "port": 62000,
              "httpOk": false,
              "httpMs": null,
              "httpError": "Connection timed out",
              "httpIpInfoJson": null,
              "socks5Ok": false,
              "socks5Ms": null,
              "socks5Error": "Connection timed out",
              "socks5IpInfoJson": null
            }
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ip",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "代理 IP；示例使用 RFC 5737 文档地址",
          "example": "192.0.2.10"
        },
        {
          "name": "port",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "代理端口，读取资源返回值，不固定写死",
          "example": "62000"
        },
        {
          "name": "account",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "代理认证账号",
          "example": "demo_account"
        },
        {
          "name": "password",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "代理认证密码；示例值不是生产凭证",
          "example": "DEMO_PASSWORD"
        }
      ],
      "requestBody": {
        "ip": "192.0.2.10",
        "port": "62000",
        "account": "demo_account",
        "password": "DEMO_PASSWORD"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/ip/pool/item/proxySpeedTest/row\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"ip\":\"192.0.2.10\",\"port\":\"62000\",\"account\":\"demo_account\",\"password\":\"DEMO_PASSWORD\"}'"
    },
    {
      "id": "get-client-ip-source-sourceIpList",
      "method": "GET",
      "path": "/client/ip/source/sourceIpList",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientIpStaticSourceController.java",
      "sourceMethod": "merchantIpList",
      "title": "merchantIpList",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [],
      "model": "ClientIpStaticPoolMerchantDTO",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].lastOrderId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].lastPoolId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].port",
          "type": "string",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "rows[].relayPort",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].remark",
          "type": "string",
          "description": "备注"
        },
        {
          "name": "rows[].account",
          "type": "string",
          "description": "代理认证账号"
        },
        {
          "name": "rows[].password",
          "type": "string",
          "description": "代理认证密码；示例值不是生产凭证"
        },
        {
          "name": "rows[].ip",
          "type": "string",
          "description": "代理 IP；示例使用 RFC 5737 文档地址"
        },
        {
          "name": "rows[].protocolse",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].effectiveDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].expireDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].serviceExpireTime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].unsubscribeTime",
          "type": "null",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].subscribeDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].autoRenewEnabled",
          "type": "number",
          "description": "1 开启，0 关闭"
        },
        {
          "name": "rows[].poolId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].type",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].hot",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].updateTime",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "lastOrderId": 2001,
                "lastPoolId": 3001,
                "port": "62000",
                "relayPort": "DEMO_VALUE",
                "remark": "示例备注",
                "account": "demo_account",
                "password": "DEMO_PASSWORD",
                "ip": "192.0.2.10",
                "protocolse": "SOCKS5",
                "effectiveDatetime": "2026-10-15 12:00:00",
                "expireDatetime": "2026-11-14 12:00:00",
                "serviceExpireTime": "2026-10-15 12:00:00",
                "unsubscribeTime": null,
                "subscribeDatetime": "2026-10-15 12:00:00",
                "status": 1,
                "autoRenewEnabled": 0,
                "poolId": 3001,
                "type": 1,
                "continent": "North America",
                "countryCode": "US",
                "location": "United States",
                "hot": "DEMO_VALUE",
                "updateTime": "2026-10-15 12:00:00"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "type",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "静态 IP 类型，0 普通/广播，1 原生",
          "example": 1
        },
        {
          "name": "ip",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "代理 IP；示例使用 RFC 5737 文档地址",
          "example": "192.0.2.10"
        },
        {
          "name": "status",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "orderNo",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "订单号，由下单接口返回",
          "example": "N2026101500000000001"
        },
        {
          "name": "countryCode",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "两位国家/地区代码，例如 US、TH、GB",
          "example": "US"
        },
        {
          "name": "orderBy",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "orderDir",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/source/sourceIpList?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-ip-pool-list",
      "method": "GET",
      "path": "/client/ip/pool/list",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientLyProxyIpStaticPoolController.java",
      "sourceMethod": "list",
      "title": "查询静态IP-IP池列表",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "ClientIpStaticPoolDTO",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].type",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].hot",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].ipTotals",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].effectiveTotals",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].configPlans",
          "type": "array",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].configPlans[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].configPlans[].ipType",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].configPlans[].totalIps",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].configPlans[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].configPlans[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].configPlans[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].configPlans[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].configPlans[].isExclusive",
          "type": "number",
          "description": "资源类型标识，依实际购买配置使用"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "type": 1,
                "continent": "North America",
                "countryCode": "US",
                "location": "United States",
                "hot": "DEMO_VALUE",
                "status": 1,
                "ipTotals": 10,
                "effectiveTotals": 1,
                "configPlans": [
                  {
                    "id": 1001,
                    "ipType": 1,
                    "totalIps": 1,
                    "price": 5,
                    "countryCode": "US",
                    "status": "Y",
                    "merchantId": 1000,
                    "isExclusive": 1
                  }
                ]
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "type",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "静态 IP 类型，0 普通/广播，1 原生",
          "example": 1
        },
        {
          "name": "sourceCode",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "sourceName",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "continent",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "North America"
        },
        {
          "name": "countryCode",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "两位国家/地区代码，例如 US、TH、GB",
          "example": "US"
        },
        {
          "name": "location",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "United States"
        },
        {
          "name": "hot",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "status",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "isExclusive",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "资源类型标识，依实际购买配置使用",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/pool/list?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-ip-pool-regionalAvailableIps",
      "method": "GET",
      "path": "/client/ip/pool/regionalAvailableIps",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientLyProxyIpStaticPoolController.java",
      "sourceMethod": "regionalAvailableIps",
      "title": "查询静态IP-可用IP列表(支持多选)",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "RegionalAvailableIpsDTO",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].type",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].ipTotals",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "type": 1,
                "continent": "North America",
                "countryCode": "US",
                "location": "United States",
                "price": 5,
                "ipTotals": 10
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "type",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "静态 IP 类型，0 普通/广播，1 原生",
          "example": 1
        },
        {
          "name": "continents",
          "type": "List<String>",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": [
            "DEMO_VALUE"
          ]
        },
        {
          "name": "countryCodes",
          "type": "List<String>",
          "in": "query",
          "required": false,
          "description": "国家代码数组，查询参数可重复传入",
          "example": [
            "US",
            "TH"
          ]
        },
        {
          "name": "locations",
          "type": "List<String>",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": [
            "DEMO_VALUE"
          ]
        },
        {
          "name": "isExclusive",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "资源类型标识，依实际购买配置使用",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/pool/regionalAvailableIps?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-ip-pool-remote-list",
      "method": "GET",
      "path": "/client/ip/pool/remote/list",
      "group": "static",
      "source": "com/ly/proxy/client/ip/controller/ClientRemotePoolController.java",
      "sourceMethod": "list",
      "title": "查询可用资源池IP列表（客户端购买指定IP）",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "ClientRemotePoolItemVO",
      "responseType": "array",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "array",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data[].ip",
          "type": "string",
          "description": "代理 IP；示例使用 RFC 5737 文档地址"
        },
        {
          "name": "data[].port",
          "type": "string",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "data[].status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "data[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "data[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].sourceName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].sourceCode",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].isSelfOwned",
          "type": "boolean",
          "description": "返回模型字段"
        },
        {
          "name": "data[].serverId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].serverName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].serverIp",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].serverPort",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": [
              {
                "id": 1001,
                "ip": "192.0.2.10",
                "port": "62000",
                "status": 1,
                "countryCode": "US",
                "location": "United States",
                "continent": "North America",
                "sourceName": "DEMO_VALUE",
                "sourceCode": "DEMO_VALUE",
                "isSelfOwned": false,
                "serverId": 1,
                "serverName": "DEMO_VALUE",
                "serverIp": "DEMO_VALUE",
                "serverPort": "DEMO_VALUE"
              }
            ]
          }
        },
        {
          "label": "无记录时（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "ip",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "代理 IP；示例使用 RFC 5737 文档地址",
          "example": "192.0.2.10"
        },
        {
          "name": "status",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消",
          "example": 1
        },
        {
          "name": "countryCode",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "两位国家/地区代码，例如 US、TH、GB",
          "example": "US"
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/ip/pool/remote/list\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-order-addStatic",
      "method": "POST",
      "path": "/client/order/addStatic",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "addStatic",
      "title": "客户端下单静态IP (只下单，不支付)",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "这里只创建待支付订单，不会直接扣款或保证交付。金额和库存由服务端核验。"
      ],
      "model": null,
      "responseType": "order-number",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "string",
          "description": "业务载荷；部分成功响应省略此键"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "订单创建成功，请在30分钟内支付",
            "data": "N2026101500000000001"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "payMode",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "支付模式: PAY_FIRST(先付), PAY_LATER(后付)",
          "example": "PAY_FIRST"
        },
        {
          "name": "currency",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "币种",
          "example": "USD"
        },
        {
          "name": "payMethod",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "支付方式: BALANCE",
          "example": "BALANCE"
        },
        {
          "name": "couponCode",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "优惠码",
          "example": ""
        },
        {
          "name": "monthCount",
          "type": "Long",
          "in": "body",
          "required": true,
          "description": "购买月数",
          "example": 1
        },
        {
          "name": "countryNums",
          "type": "List<CountryNumsItemVO>",
          "in": "body",
          "required": false,
          "description": "按国家/地区购买的数量列表",
          "example": [
            {
              "countryCode": "US",
              "location": "United States",
              "num": 1,
              "ipType": 1
            }
          ]
        },
        {
          "name": "isExclusive",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "是否独享: 0-否, 1-是",
          "example": 1
        },
        {
          "name": "ips",
          "type": "List<String>",
          "in": "body",
          "required": false,
          "description": "指定IP列表",
          "example": [
            "192.0.2.10"
          ]
        }
      ],
      "requestBody": {
        "payMode": "PAY_FIRST",
        "payMethod": "BALANCE",
        "currency": "USD",
        "monthCount": 1,
        "isExclusive": 1,
        "countryNums": [
          {
            "countryCode": "US",
            "location": "United States",
            "num": 1,
            "ipType": 1
          }
        ]
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/order/addStatic\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"payMode\":\"PAY_FIRST\",\"payMethod\":\"BALANCE\",\"currency\":\"USD\",\"monthCount\":1,\"isExclusive\":1,\"countryNums\":[{\"countryCode\":\"US\",\"location\":\"United States\",\"num\":1,\"ipType\":1}]}'"
    },
    {
      "id": "post-client-order-addDynamics",
      "method": "POST",
      "path": "/client/order/addDynamics",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "addDynamics",
      "title": "客户端下单动态IP",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。"
      ],
      "model": null,
      "responseType": "order-number",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "string",
          "description": "业务载荷；部分成功响应省略此键"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "订单创建成功，请在30分钟内支付",
            "data": "N2026101500000000001"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "domain",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "productType",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "quantity",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "线路数量，服务端校验数量上限",
          "example": 1
        },
        {
          "name": "totalAmount",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "由服务端核算的订单金额；不应只信任客户端提交值",
          "example": 5
        },
        {
          "name": "currency",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "币种，示例 USD",
          "example": "USD"
        },
        {
          "name": "payMethod",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "订单支付方式；以服务端允许值为准",
          "example": "BALANCE"
        },
        {
          "name": "payMode",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "PAY_FIRST（先创建订单，支付接口另行调用）",
          "example": "PAY_FIRST"
        },
        {
          "name": "udp",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "capacity",
          "type": "BigDecimal",
          "in": "body",
          "required": false,
          "description": "流量容量，GB",
          "example": 10
        },
        {
          "name": "configPeriodId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "周期 ID，从周期配置接口读取",
          "example": 1
        },
        {
          "name": "configPlanId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "套餐 ID，从套餐配置接口读取",
          "example": 1
        },
        {
          "name": "days",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "有效天数",
          "example": 30
        },
        {
          "name": "planId",
          "type": "Long",
          "in": "body",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        }
      ],
      "requestBody": {
        "configPlanId": 12,
        "configPeriodId": 3,
        "capacity": 10,
        "days": 30,
        "currency": "USD",
        "payMode": "PAY_FIRST",
        "payMethod": "BALANCE"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/order/addDynamics\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"configPlanId\":12,\"configPeriodId\":3,\"capacity\":10,\"days\":30,\"currency\":\"USD\",\"payMode\":\"PAY_FIRST\",\"payMethod\":\"BALANCE\"}'"
    },
    {
      "id": "get-client-order-regionalAvailableIps",
      "method": "GET",
      "path": "/client/order/regionalAvailableIps",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "regionalAvailableIps",
      "title": "查询静态IP资源池(获取出口IP)",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "AdminRegionalAvailableIpsDTO",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].type",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "rows[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].ipTotals",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].effectiveTotals",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "type": 1,
                "continent": "North America",
                "countryCode": "US",
                "location": "United States",
                "price": 5,
                "ipTotals": 10,
                "effectiveTotals": 1
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "type",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "静态 IP 类型，0 普通/广播，1 原生",
          "example": 1
        },
        {
          "name": "continents",
          "type": "List<String>",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": [
            "DEMO_VALUE"
          ]
        },
        {
          "name": "countryCodes",
          "type": "List<String>",
          "in": "query",
          "required": false,
          "description": "国家代码数组，查询参数可重复传入",
          "example": [
            "US",
            "TH"
          ]
        },
        {
          "name": "locations",
          "type": "List<String>",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": [
            "DEMO_VALUE"
          ]
        },
        {
          "name": "ipFuzzyField",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "isExclusive",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "资源类型标识，依实际购买配置使用",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/order/regionalAvailableIps?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-order-dataStatistics",
      "method": "GET",
      "path": "/client/order/dataStatistics",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "dataStatistics",
      "title": "数据统计",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "ClientDataStatisticsDTO",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.nextPayDays",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.regularipTotal",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.regularExpiringSoon",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.premiumIpTotal",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.premiumExpiringSoon",
          "type": "number",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "nextPayDays": 30,
              "regularipTotal": 1,
              "regularExpiringSoon": 0,
              "premiumIpTotal": 1,
              "premiumExpiringSoon": 0
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/order/dataStatistics\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-order-orderList",
      "method": "GET",
      "path": "/client/order/orderList",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "orderList",
      "title": "订单列表",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "ClientOrderDetailDTO",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderNo",
          "type": "string",
          "description": "订单号，由下单接口返回"
        },
        {
          "name": "rows[].domain",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].productName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].productType",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].quantity",
          "type": "number",
          "description": "线路数量，服务端校验数量上限"
        },
        {
          "name": "rows[].originalAmount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].totalAmount",
          "type": "number",
          "description": "由服务端核算的订单金额；不应只信任客户端提交值"
        },
        {
          "name": "rows[].discountAmount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].couponCode",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].couponName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].couponType",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].couponValue",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "rows[].status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].paidStatus",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].payMethod",
          "type": "string",
          "description": "订单支付方式；以服务端允许值为准"
        },
        {
          "name": "rows[].payMode",
          "type": "string",
          "description": "PAY_FIRST（先创建订单，支付接口另行调用）"
        },
        {
          "name": "rows[].totalIps",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].udp",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].staticCountryNums",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].effectiveDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].expireDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].nextNotifyTime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].notifyCount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems",
          "type": "array",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].orderItems[].orderId",
          "type": "number",
          "description": "订单 ID，不是订单号字符串"
        },
        {
          "name": "rows[].orderItems[].orderType",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems[].poolId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].orderItems[].currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "rows[].orderItems[].days",
          "type": "number",
          "description": "有效天数"
        },
        {
          "name": "rows[].orderItems[].discount",
          "type": "number",
          "description": "折扣配置"
        },
        {
          "name": "rows[].orderItems[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].orderItems[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems[].ip",
          "type": "string",
          "description": "代理 IP；示例使用 RFC 5737 文档地址"
        },
        {
          "name": "rows[].orderItems[].protocolse",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems[].effectiveDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems[].expireDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems[].unsubscribeTime",
          "type": "null",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderItems[].account",
          "type": "string",
          "description": "代理认证账号"
        },
        {
          "name": "rows[].orderItems[].password",
          "type": "string",
          "description": "代理认证密码；示例值不是生产凭证"
        },
        {
          "name": "rows[].orderItems[].port",
          "type": "string",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "rows[].orderItems[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].staticIp",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "merchantId": 1000,
                "orderNo": "N2026101500000000001",
                "domain": "DEMO_VALUE",
                "productName": "DEMO_VALUE",
                "productType": 1,
                "quantity": 1,
                "originalAmount": 1.0,
                "totalAmount": 5,
                "discountAmount": 1.0,
                "couponCode": "",
                "couponName": "DEMO_VALUE",
                "couponType": "DEMO_VALUE",
                "couponValue": 1.0,
                "currency": "USD",
                "status": 1,
                "paidStatus": 10,
                "payMethod": "BALANCE",
                "payMode": "PAY_FIRST",
                "totalIps": 1,
                "udp": "DEMO_VALUE",
                "staticCountryNums": "DEMO_VALUE",
                "effectiveDatetime": "2026-10-15 12:00:00",
                "expireDatetime": "2026-11-14 12:00:00",
                "nextNotifyTime": "2026-10-15 12:00:00",
                "notifyCount": 1,
                "orderItems": [
                  {
                    "id": 1001,
                    "orderId": 2001,
                    "orderType": 1,
                    "poolId": 3001,
                    "price": 5,
                    "currency": "USD",
                    "days": 30,
                    "discount": 1,
                    "continent": "North America",
                    "countryCode": "US",
                    "location": "United States",
                    "ip": "192.0.2.10",
                    "protocolse": "SOCKS5",
                    "effectiveDatetime": "2026-10-15 12:00:00",
                    "expireDatetime": "2026-11-14 12:00:00",
                    "unsubscribeTime": null,
                    "account": "demo_account",
                    "password": "DEMO_PASSWORD",
                    "port": "62000",
                    "status": "Y"
                  }
                ],
                "staticIp": "DEMO_VALUE"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "productName",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "orderNo",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "订单号，由下单接口返回",
          "example": "N2026101500000000001"
        },
        {
          "name": "domain",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "DEMO_VALUE"
        },
        {
          "name": "productType",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/order/orderList?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-order-orderDetail-orderId",
      "method": "GET",
      "path": "/client/order/orderDetail/{orderId}",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "orderDetail",
      "title": "订单详情",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "ClientOrderDetailDTO",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderNo",
          "type": "string",
          "description": "订单号，由下单接口返回"
        },
        {
          "name": "data.domain",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.productName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.productType",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.quantity",
          "type": "number",
          "description": "线路数量，服务端校验数量上限"
        },
        {
          "name": "data.originalAmount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.totalAmount",
          "type": "number",
          "description": "由服务端核算的订单金额；不应只信任客户端提交值"
        },
        {
          "name": "data.discountAmount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.couponCode",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.couponName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.couponType",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.couponValue",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "data.status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "data.paidStatus",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.payMethod",
          "type": "string",
          "description": "订单支付方式；以服务端允许值为准"
        },
        {
          "name": "data.payMode",
          "type": "string",
          "description": "PAY_FIRST（先创建订单，支付接口另行调用）"
        },
        {
          "name": "data.totalIps",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.udp",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.staticCountryNums",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.effectiveDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.expireDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.nextNotifyTime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.notifyCount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems",
          "type": "array",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data.orderItems[].orderId",
          "type": "number",
          "description": "订单 ID，不是订单号字符串"
        },
        {
          "name": "data.orderItems[].orderType",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems[].poolId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "data.orderItems[].currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "data.orderItems[].days",
          "type": "number",
          "description": "有效天数"
        },
        {
          "name": "data.orderItems[].discount",
          "type": "number",
          "description": "折扣配置"
        },
        {
          "name": "data.orderItems[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "data.orderItems[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems[].ip",
          "type": "string",
          "description": "代理 IP；示例使用 RFC 5737 文档地址"
        },
        {
          "name": "data.orderItems[].protocolse",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems[].effectiveDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems[].expireDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems[].unsubscribeTime",
          "type": "null",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderItems[].account",
          "type": "string",
          "description": "代理认证账号"
        },
        {
          "name": "data.orderItems[].password",
          "type": "string",
          "description": "代理认证密码；示例值不是生产凭证"
        },
        {
          "name": "data.orderItems[].port",
          "type": "string",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "data.orderItems[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "data.staticIp",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "id": 1001,
              "merchantId": 1000,
              "orderNo": "N2026101500000000001",
              "domain": "DEMO_VALUE",
              "productName": "DEMO_VALUE",
              "productType": 1,
              "quantity": 1,
              "originalAmount": 1.0,
              "totalAmount": 5,
              "discountAmount": 1.0,
              "couponCode": "",
              "couponName": "DEMO_VALUE",
              "couponType": "DEMO_VALUE",
              "couponValue": 1.0,
              "currency": "USD",
              "status": 1,
              "paidStatus": 10,
              "payMethod": "BALANCE",
              "payMode": "PAY_FIRST",
              "totalIps": 1,
              "udp": "DEMO_VALUE",
              "staticCountryNums": "DEMO_VALUE",
              "effectiveDatetime": "2026-10-15 12:00:00",
              "expireDatetime": "2026-11-14 12:00:00",
              "nextNotifyTime": "2026-10-15 12:00:00",
              "notifyCount": 1,
              "orderItems": [
                {
                  "id": 1001,
                  "orderId": 2001,
                  "orderType": 1,
                  "poolId": 3001,
                  "price": 5,
                  "currency": "USD",
                  "days": 30,
                  "discount": 1,
                  "continent": "North America",
                  "countryCode": "US",
                  "location": "United States",
                  "ip": "192.0.2.10",
                  "protocolse": "SOCKS5",
                  "effectiveDatetime": "2026-10-15 12:00:00",
                  "expireDatetime": "2026-11-14 12:00:00",
                  "unsubscribeTime": null,
                  "account": "demo_account",
                  "password": "DEMO_PASSWORD",
                  "port": "62000",
                  "status": "Y"
                }
              ],
              "staticIp": "DEMO_VALUE"
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "orderId",
          "type": "Long",
          "in": "path",
          "required": true,
          "description": "订单 ID，不是订单号字符串",
          "example": 2001
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/order/orderDetail/2001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-order-continuePay-orderNo",
      "method": "POST",
      "path": "/client/order/continuePay/{orderNo}",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "continuePay",
      "title": "继续支付待支付订单",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。"
      ],
      "model": null,
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.orderNo",
          "type": "string",
          "description": "订单号，由下单接口返回"
        },
        {
          "name": "data.orderId",
          "type": "number",
          "description": "订单 ID，不是订单号字符串"
        },
        {
          "name": "data.amount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.totalAmount",
          "type": "number",
          "description": "由服务端核算的订单金额；不应只信任客户端提交值"
        },
        {
          "name": "data.paidStatus",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.productType",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.paid",
          "type": "boolean",
          "description": "返回模型字段"
        },
        {
          "name": "data.paymentType",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.paymentName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.payUrl",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.sessionId",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.clientSecret",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "data.countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "data.successUrl",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.airwallexEnv",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "data.payMessage",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "orderNo": "N2026101500000000001",
              "orderId": 2001,
              "amount": 5,
              "totalAmount": 5,
              "paidStatus": 10,
              "productType": 1,
              "paid": false,
              "paymentType": "STRIPE",
              "paymentName": "余额支付",
              "payUrl": "https://checkout.example.invalid/demo",
              "sessionId": "cs_DEMO_SESSION",
              "clientSecret": "DEMO_VALUE",
              "currency": "USD",
              "countryCode": "US",
              "successUrl": "DEMO_VALUE",
              "airwallexEnv": "DEMO_VALUE",
              "status": 0,
              "payMessage": "checkout_created"
            }
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "orderNo",
          "type": "String",
          "in": "path",
          "required": true,
          "description": "订单号，由下单接口返回",
          "example": "N2026101500000000001"
        },
        {
          "name": "payment",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "支付渠道；BALANCE 为余额，STRIPE 为支付宝主通道，EPAY_ALIPAY 为备用",
          "example": "STRIPE"
        }
      ],
      "requestBody": {
        "payment": "STRIPE"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/order/continuePay/N2026101500000000001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"payment\":\"STRIPE\"}'"
    },
    {
      "id": "post-client-order-cancel-orderNo",
      "method": "POST",
      "path": "/client/order/cancel/{orderNo}",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "cancelPendingOrder",
      "title": "取消待支付订单",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。"
      ],
      "model": null,
      "responseType": "boolean",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "boolean",
          "description": "业务载荷；部分成功响应省略此键"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": true
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "orderNo",
          "type": "String",
          "in": "path",
          "required": true,
          "description": "订单号，由下单接口返回",
          "example": "N2026101500000000001"
        }
      ],
      "requestBody": null,
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/order/cancel/N2026101500000000001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-order-purchasedList",
      "method": "GET",
      "path": "/client/order/purchasedList",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "purchasedList",
      "title": "已购买IP详情列表",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "ClientOrderItemStaticDTO",
      "responseType": "page",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "total",
          "type": "number",
          "description": "匹配记录总数"
        },
        {
          "name": "rows",
          "type": "array",
          "description": "分页记录数组"
        },
        {
          "name": "rows[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "rows[].orderId",
          "type": "number",
          "description": "订单 ID，不是订单号字符串"
        },
        {
          "name": "rows[].orderType",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].poolId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].price",
          "type": "number",
          "description": "服务端实时价格，示例数值不构成报价"
        },
        {
          "name": "rows[].currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "rows[].days",
          "type": "number",
          "description": "有效天数"
        },
        {
          "name": "rows[].discount",
          "type": "number",
          "description": "折扣配置"
        },
        {
          "name": "rows[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "rows[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].ip",
          "type": "string",
          "description": "代理 IP；示例使用 RFC 5737 文档地址"
        },
        {
          "name": "rows[].protocolse",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].effectiveDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].expireDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].unsubscribeTime",
          "type": "null",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].account",
          "type": "string",
          "description": "代理认证账号"
        },
        {
          "name": "rows[].password",
          "type": "string",
          "description": "代理认证密码；示例值不是生产凭证"
        },
        {
          "name": "rows[].port",
          "type": "string",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "rows[].status",
          "type": "string",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "rows[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].orderNo",
          "type": "string",
          "description": "订单号，由下单接口返回"
        },
        {
          "name": "rows[].domain",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].productName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].productType",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].quantity",
          "type": "number",
          "description": "线路数量，服务端校验数量上限"
        },
        {
          "name": "rows[].totalAmount",
          "type": "number",
          "description": "由服务端核算的订单金额；不应只信任客户端提交值"
        },
        {
          "name": "rows[].paidStatus",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].payMethod",
          "type": "string",
          "description": "订单支付方式；以服务端允许值为准"
        },
        {
          "name": "rows[].totalIps",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "rows[].udp",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 1,
            "rows": [
              {
                "id": 1001,
                "orderId": 2001,
                "orderType": 1,
                "poolId": 3001,
                "price": 5,
                "currency": "USD",
                "days": 30,
                "discount": 1,
                "continent": "North America",
                "countryCode": "US",
                "location": "United States",
                "ip": "192.0.2.10",
                "protocolse": "SOCKS5",
                "effectiveDatetime": "2026-10-15 12:00:00",
                "expireDatetime": "2026-11-14 12:00:00",
                "unsubscribeTime": null,
                "account": "demo_account",
                "password": "DEMO_PASSWORD",
                "port": "62000",
                "status": "Y",
                "merchantId": 1000,
                "orderNo": "N2026101500000000001",
                "domain": "DEMO_VALUE",
                "productName": "DEMO_VALUE",
                "productType": 1,
                "quantity": 1,
                "totalAmount": 5,
                "paidStatus": 10,
                "payMethod": "BALANCE",
                "totalIps": 1,
                "udp": "DEMO_VALUE"
              }
            ]
          }
        },
        {
          "label": "空列表",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "查询成功",
            "total": 0,
            "rows": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "continent",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "North America"
        },
        {
          "name": "countryCode",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "两位国家/地区代码，例如 US、TH、GB",
          "example": "US"
        },
        {
          "name": "location",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": "United States"
        },
        {
          "name": "ip",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "代理 IP；示例使用 RFC 5737 文档地址",
          "example": "192.0.2.10"
        },
        {
          "name": "port",
          "type": "String",
          "in": "query",
          "required": false,
          "description": "代理端口，读取资源返回值，不固定写死",
          "example": "62000"
        },
        {
          "name": "orderType",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        },
        {
          "name": "pageNum",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "页码，从 1 开始",
          "example": 1
        },
        {
          "name": "pageSize",
          "type": "Integer",
          "in": "query",
          "required": false,
          "description": "每页条数",
          "example": 10
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/order/purchasedList?pageNum=1&pageSize=10\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-order-beenPurchased",
      "method": "GET",
      "path": "/client/order/beenPurchased",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "beenPurchased",
      "title": "是否已购买",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": null,
      "responseType": "boolean",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "boolean",
          "description": "业务载荷；部分成功响应省略此键"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": true
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "productType",
          "type": "Long",
          "in": "query",
          "required": false,
          "description": "返回模型字段",
          "example": 1
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/order/beenPurchased\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-order-renewIpList",
      "method": "POST",
      "path": "/client/order/renewIpList",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "renewIpList",
      "title": "续费IP (Item模式)",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "续费生成待支付订单，data 是订单号。1 个月延长 30 天；后续仍需确认支付与资源交付状态。"
      ],
      "model": null,
      "responseType": "order-number",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "string",
          "description": "业务载荷；部分成功响应省略此键"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "订单创建成功，请在30分钟内支付",
            "data": "N2026101500000000001"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ipList",
          "type": "List<String>",
          "in": "body",
          "required": true,
          "description": "目标 IP 列表",
          "example": [
            "192.0.2.10"
          ]
        },
        {
          "name": "monthCount",
          "type": "Long",
          "in": "body",
          "required": true,
          "description": "月数；1 个月按 30 天计算",
          "example": 1
        }
      ],
      "requestBody": {
        "ipList": [
          "192.0.2.10"
        ],
        "monthCount": 1
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/order/renewIpList\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"ipList\":[\"192.0.2.10\"],\"monthCount\":1}'"
    },
    {
      "id": "post-client-order-renewStatic",
      "method": "POST",
      "path": "/client/order/renewStatic",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "renewStatic",
      "title": "续费静态IP (Order模式)",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "续费生成待支付订单，data 是订单号。1 个月延长 30 天；后续仍需确认支付与资源交付状态。"
      ],
      "model": null,
      "responseType": "order-number",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "string",
          "description": "业务载荷；部分成功响应省略此键"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "订单创建成功，请在30分钟内支付",
            "data": "N2026101500000000001"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "ipList",
          "type": "List<String>",
          "in": "body",
          "required": true,
          "description": "需要续费的IP地址列表",
          "example": [
            "192.0.2.10"
          ]
        },
        {
          "name": "monthCount",
          "type": "Long",
          "in": "body",
          "required": true,
          "description": "续费时长(月)",
          "example": 1
        },
        {
          "name": "payMethod",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "支付方式 (BALANCE=余额支付)",
          "example": "BALANCE"
        }
      ],
      "requestBody": {
        "ipList": [
          "192.0.2.10"
        ],
        "monthCount": 1
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/order/renewStatic\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"ipList\":[\"192.0.2.10\"],\"monthCount\":1}'"
    },
    {
      "id": "get-client-order-getMerchantIpsByOrderNo",
      "method": "GET",
      "path": "/client/order/getMerchantIpsByOrderNo",
      "group": "shared",
      "source": "com/ly/proxy/client/order/controller/ClientOrderController.java",
      "sourceMethod": "getMerchantIpsByOrderNo",
      "title": "按订单号查询交付 IP",
      "auth": "merchant",
      "evidence": "source-controller-and-dto",
      "notes": [],
      "model": null,
      "responseType": "array",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "array",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data[].id",
          "type": "number",
          "description": "记录 ID"
        },
        {
          "name": "data[].merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].lastOrderId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].lastPoolId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].port",
          "type": "string",
          "description": "代理端口，读取资源返回值，不固定写死"
        },
        {
          "name": "data[].relayPort",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].remark",
          "type": "string",
          "description": "备注"
        },
        {
          "name": "data[].account",
          "type": "string",
          "description": "代理认证账号"
        },
        {
          "name": "data[].password",
          "type": "string",
          "description": "代理认证密码；示例值不是生产凭证"
        },
        {
          "name": "data[].ip",
          "type": "string",
          "description": "代理 IP；示例使用 RFC 5737 文档地址"
        },
        {
          "name": "data[].protocolse",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].effectiveDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].expireDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].serviceExpireTime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].unsubscribeTime",
          "type": "null",
          "description": "返回模型字段"
        },
        {
          "name": "data[].subscribeDatetime",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "data[].autoRenewEnabled",
          "type": "number",
          "description": "1 开启，0 关闭"
        },
        {
          "name": "data[].poolId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data[].type",
          "type": "number",
          "description": "静态 IP 类型，0 普通/广播，1 原生"
        },
        {
          "name": "data[].continent",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].countryCode",
          "type": "string",
          "description": "两位国家/地区代码，例如 US、TH、GB"
        },
        {
          "name": "data[].location",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].hot",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data[].updateTime",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": [
              {
                "id": 1001,
                "merchantId": 1000,
                "lastOrderId": 2001,
                "lastPoolId": 3001,
                "port": "62000",
                "relayPort": "DEMO_VALUE",
                "remark": "示例备注",
                "account": "demo_account",
                "password": "DEMO_PASSWORD",
                "ip": "192.0.2.10",
                "protocolse": "SOCKS5",
                "effectiveDatetime": "2026-10-15 12:00:00",
                "expireDatetime": "2026-11-14 12:00:00",
                "serviceExpireTime": "2026-10-15 12:00:00",
                "unsubscribeTime": null,
                "subscribeDatetime": "2026-10-15 12:00:00",
                "status": 1,
                "autoRenewEnabled": 0,
                "poolId": 3001,
                "type": 1,
                "continent": "North America",
                "countryCode": "US",
                "location": "United States",
                "hot": "DEMO_VALUE",
                "updateTime": "2026-10-15 12:00:00"
              }
            ]
          }
        },
        {
          "label": "无记录时（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": []
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [
        {
          "name": "orderNo",
          "type": "String",
          "in": "query",
          "required": true,
          "description": "订单号，由下单接口返回",
          "example": "N2026101500000000001"
        }
      ],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/order/getMerchantIpsByOrderNo?orderNo=N2026101500000000001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "post-client-payment-order-pay-orderNo",
      "method": "POST",
      "path": "/client/payment/order/pay/{orderNo}",
      "group": "shared",
      "source": "com/ly/proxy/client/payment/base/controller/PayOrderController.java",
      "sourceMethod": "payOrder",
      "title": "订单支付",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。",
        "余额支付成功与外部收银台创建成功不同；跳转 URL 不是付款证明。请重新查询订单和 IP/流量资源。"
      ],
      "model": null,
      "responseType": "payment",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.paymentType",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.paymentName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderId",
          "type": "number",
          "description": "订单 ID，不是订单号字符串"
        },
        {
          "name": "data.orderNo",
          "type": "string",
          "description": "订单号，由下单接口返回"
        },
        {
          "name": "data.amount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.totalAmount",
          "type": "number",
          "description": "由服务端核算的订单金额；不应只信任客户端提交值"
        },
        {
          "name": "data.currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "data.productType",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.paidStatus",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.paid",
          "type": "boolean",
          "description": "返回模型字段"
        },
        {
          "name": "data.status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "data.payMessage",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "paymentType": "BALANCE",
              "paymentName": "余额支付",
              "orderId": 2001,
              "orderNo": "N2026101500000000001",
              "amount": 5,
              "totalAmount": 5,
              "currency": "USD",
              "productType": 1,
              "paidStatus": 20,
              "paid": true,
              "status": 1,
              "payMessage": "success"
            }
          }
        },
        {
          "label": "外部收银台创建成功，尚未付款",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "orderNo": "N2026101500000000001",
              "orderId": 2001,
              "amount": 5,
              "totalAmount": 5,
              "paidStatus": 10,
              "productType": 1,
              "paid": false,
              "paymentType": "STRIPE",
              "paymentName": "余额支付",
              "payUrl": "https://checkout.example.invalid/demo",
              "sessionId": "cs_DEMO_SESSION",
              "clientSecret": "DEMO_VALUE",
              "currency": "USD",
              "countryCode": "US",
              "successUrl": "DEMO_VALUE",
              "airwallexEnv": "DEMO_VALUE",
              "status": 0,
              "payMessage": "checkout_created"
            }
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "余额不足"
          }
        }
      ],
      "params": [
        {
          "name": "orderNo",
          "type": "String",
          "in": "path",
          "required": true,
          "description": "订单号，由下单接口返回",
          "example": "N2026101500000000001"
        },
        {
          "name": "payment",
          "type": "String",
          "in": "body",
          "required": false,
          "description": "支付方式",
          "example": "BALANCE"
        }
      ],
      "requestBody": {
        "payment": "BALANCE"
      },
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/payment/order/pay/N2026101500000000001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  --data '{\"payment\":\"BALANCE\"}'"
    },
    {
      "id": "post-client-payment-order-epaySync-orderNo",
      "method": "POST",
      "path": "/client/payment/order/epaySync/{orderNo}",
      "group": "shared",
      "source": "com/ly/proxy/client/payment/base/controller/PayOrderController.java",
      "sourceMethod": "epaySync",
      "title": "Epay order payment sync confirmation",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [
        "此接口会修改数据或创建业务记录。文档只展示代码，不会自动发送请求。"
      ],
      "model": null,
      "responseType": "payment",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.paymentType",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.paymentName",
          "type": "string",
          "description": "返回模型字段"
        },
        {
          "name": "data.orderId",
          "type": "number",
          "description": "订单 ID，不是订单号字符串"
        },
        {
          "name": "data.orderNo",
          "type": "string",
          "description": "订单号，由下单接口返回"
        },
        {
          "name": "data.amount",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.totalAmount",
          "type": "number",
          "description": "由服务端核算的订单金额；不应只信任客户端提交值"
        },
        {
          "name": "data.currency",
          "type": "string",
          "description": "币种，示例 USD"
        },
        {
          "name": "data.productType",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.paidStatus",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.paid",
          "type": "boolean",
          "description": "返回模型字段"
        },
        {
          "name": "data.status",
          "type": "number",
          "description": "状态值依对象而异；静态资源 1 有效、2 过期、3 取消"
        },
        {
          "name": "data.payMessage",
          "type": "string",
          "description": "返回模型字段"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "paymentType": "BALANCE",
              "paymentName": "余额支付",
              "orderId": 2001,
              "orderNo": "N2026101500000000001",
              "amount": 5,
              "totalAmount": 5,
              "currency": "USD",
              "productType": 1,
              "paidStatus": 20,
              "paid": true,
              "status": 1,
              "payMessage": "success"
            }
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        },
        {
          "label": "业务失败（示例，msg 以实际返回为准）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 500,
            "msg": "参数或业务校验失败，请检查输入"
          }
        }
      ],
      "params": [
        {
          "name": "orderNo",
          "type": "String",
          "in": "path",
          "required": true,
          "description": "订单号，由下单接口返回",
          "example": "N2026101500000000001"
        }
      ],
      "requestBody": null,
      "curl": "curl -X POST \"https://ly-proxy.com/api/proxy/client/payment/order/epaySync/N2026101500000000001\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    },
    {
      "id": "get-client-merchant-walletInfo",
      "method": "GET",
      "path": "/client/merchant/walletInfo",
      "group": "shared",
      "source": "com/ly/proxy/client/merchant/base/controller/ClientMerchantController.java",
      "sourceMethod": "walletInfo",
      "title": "仪表盘余额信息",
      "auth": "merchant",
      "evidence": "production-swagger-and-source",
      "notes": [],
      "model": "LyProxyMerchantWallet",
      "responseType": "object",
      "responseFields": [
        {
          "name": "code",
          "type": "number",
          "description": "业务状态；200 成功，非 HTTP 状态码"
        },
        {
          "name": "msg",
          "type": "string",
          "description": "说明文字，随语言/业务场景变化"
        },
        {
          "name": "data",
          "type": "object",
          "description": "业务载荷；部分成功响应省略此键"
        },
        {
          "name": "data.merchantId",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.balance",
          "type": "number",
          "description": "返回模型字段"
        },
        {
          "name": "data.totalAmount",
          "type": "number",
          "description": "由服务端核算的订单金额；不应只信任客户端提交值"
        }
      ],
      "responses": [
        {
          "label": "成功返回（示例）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功",
            "data": {
              "merchantId": 1000,
              "balance": 50,
              "totalAmount": 5
            }
          }
        },
        {
          "label": "业务对象为空时（data 可省略）",
          "status": 200,
          "contentType": "application/json",
          "body": {
            "code": 200,
            "msg": "操作成功"
          }
        },
        {
          "label": "鉴权失败（公共错误形状）",
          "status": 401,
          "contentType": "application/json",
          "body": {
            "code": 401,
            "msg": "认证失败，请重新登录或检查商户密钥"
          }
        }
      ],
      "params": [],
      "requestBody": null,
      "curl": "curl -X GET \"https://ly-proxy.com/api/proxy/client/merchant/walletInfo\" \\\n  -H \"x-merchant-code: YOUR_MERCHANT_CODE\" \\\n  -H \"x-merchant-token: YOUR_MERCHANT_TOKEN\""
    }
  ],
  "guideCopy": {
    "zh": {
      "authDesc": "接口鉴权方式逐条标注：商户密钥接口携带 x-merchant-code 与 x-merchant-token；登录令牌接口携带 Authorization: Bearer。公开配置接口无需登录。",
      "endpointDesc": "每个接口均包含返回示例。分页读取 rows/total；对象读取 data；无数据成功可省略 data；文件导出返回二进制。",
      "dynamicIntro": "动态账号、流量池与线路生成接口，含成功、空数据与错误示例。流量池 A 使用 SOCKS5。",
      "dynamicQuickDesc": "可先创建子账号，购买并分配流量后再生成线路使用。",
      "staticIntro": "用于查询静态住宅代理库存、批量下单、续费、修改账密、检测代理连通性和查询订单。"
    },
    "en": {
      "authDesc": "Authentication is marked per endpoint. Merchant APIs use x-merchant-code and x-merchant-token; session APIs use Authorization: Bearer. Public configuration endpoints require no login.",
      "endpointDesc": "Every operation includes response examples. Pages use rows/total, objects use data, acknowledgement responses may omit data, and exports return binary files.",
      "dynamicIntro": "Dynamic accounts, traffic pools and connection generation with success, empty and error examples. Pool A uses SOCKS5.",
      "dynamicQuickDesc": "Create a sub-account first if needed, then purchase and allocate traffic before generating connections.",
      "staticIntro": "Query static residential inventory, create and renew orders, update credentials, test proxies and query order status."
    }
  }
}