# API接口列表
# WebSDK授权
# 获取sdkToken
# 基本信息
Path: /open/v1/sdk_token/register
Method: POST
接口描述: 当云流后台启用了sdkToken验证时,WebSDK初始化时需要传递额外参数sdkToken,否则没有权限使用WebSDK访问云流相关内容。 该接口可用于获取WebSDK访问令牌,作为WebSDK的初始化参数sdkToken的值,用于WebSDK可以有对应的权限访问云流相关内容。获取的sdkToken不可缓存使用,每次刷新页面或者重新初始化webSDK,都应重新获取sdkToken。
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| token_type | int | 是 | 0 | 要获取的sdkToken类型 0:应用、会议 1:流路 |
| group_no | string | 否 | 应用识别码或会议编号,token_type为0时必填 | |
| conn_token | string | 否 | 流路访问token,token_type为1时必填 | |
| auth_level | int | 否 | 认证级别 0 可以访问游客模式资源 1 可以直接访问游客模式以及登录模式资源 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ sdk_token | string | sdkToken | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"sdk_token": "123ff418a7ca22e454e18bbe12fbd2b7"
},
"msg": "注册成功"
}
# 云应用相关
# 创建云应用
# 基本信息
Path: /open/v1/app_cloud/add
Method: POST
接口描述: 一个接口创建应用,包括应用分组,应用,流路等
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| name | string | 是 | 测试应用 | 应用名称 |
| app_mode_no | string | 是 | xxxxxxxx | 应用模板编号ID |
| path | string | 是 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 应用路径 |
| view_process | string | 否 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 视图路径 |
| args | string | 否 | 参数 | |
| pre_start_streamer_count | int | 是 | 1 | 预启动数量(1.针对启动加载慢的应用程序,可设置提前启动,用户访问无需加载立即进入。2.预启动数量最大不能超过累计流路数) |
| streamer_count | int | 是 | 1 | 流路数(流路数取决于机器性能,性能越好可开流路数越多) |
| app_group_nos | []string | 否 | ["XXXXXXXXXXXXXXXX"] | 应用分组编号列表 |
| app_data | string | 是 | 示例见app_data数组内对象参数 | 服务器列表json字符串 |
app_data数组内对象参数
app_data参数示例:
[{"computer_no":"7d9777496407477d9f7c6728a883c56d","path":"F:\web\dolit211101-alpha\files\v3\aa\pp.exe","view_process":"","args":"","pre_start_streamer_count":1,"streamer_count":2},{"computer_no":"6c64ed19a53d4de6b3387c61626312b0","path":"F:\web\dolit211101-alpha\files\v2\aa\pp.exe","view_process":"","args":"","pre_start_streamer_count":1,"streamer_count":3}]
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| computer_no | string | 是 | xxxxxxx | 服务器ID(可从app_cloud/computer_list列表获取) |
| path | string | 否 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 应用路径,当前参数如果为空,则自动使用body内的path参数值填充 |
| view_process | string | 否 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 视图路径,当前参数如果为空,则自动使用body内的 view_process 参数值填充 |
| args | string | 否 | 参数,当前参数如果为空,则自动使用body内的 args 参数值填充 | |
| pre_start_streamer_count | int | 是 | 1 | 预启动数量(1.针对启动加载慢的应用程序,可设置提前启动,用户访问无需加载立即进入。2.预启动数量最大不能超过累计流路数),当前参数如果为0,则自动使用body内的 pre_start_streamer_count 参数值填充 |
| streamer_count | int | 是 | 1 | 流路数(流路数取决于机器性能,性能越好可开流路数越多),当前参数如果为0,则自动使用body内的 streamer_count 参数值填充 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ app_cate_no | string | 应用编号ID | ||
| ├─ app_code | string | 应用识别码 | ||
| ├─ url | string | web链接地址 | ||
| ├─ android_url | string | 安卓链接地址 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"app_cate_no":"bd6a2fda4dfc4a11a5fb706b5651623b",
"app_code":"bd60pw25347c",
"url":"xxxxxx",
"android_url":"xxxxxxx",
},
"msg":"添加成功"
}
# 编辑云应用
# 基本信息
Path: /open/v1/app_cloud/edit
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_cate_no | string | 是 | xxxxxxxx | 应用编号ID(添加应用或应用列表获取) |
| name | string | 是 | 测试应用 | 应用名称 |
| app_mode_no | string | 是 | xxxxxxxx | 应用模板编号ID |
| path | string | 是 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 应用路径 |
| view_process | string | 否 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 视图路径 |
| args | string | 否 | 参数 | |
| pre_start_streamer_count | int | 是 | 1 | 预启动数量(1.针对启动加载慢的应用程序,可设置提前启动,用户访问无需加载立即进入。2.预启动数量最大不能超过累计流路数) |
| streamer_count | int | 是 | 1 | 流路数(流路数取决于机器性能,性能越好可开流路数越多) |
| app_group_nos | []string | 否 | ["XXXXXXXXXXXXXXXX"] | 应用分组编号列表 |
| app_data | string | 是 | 示例见app_data数组内对象参数 | 服务器列表json字符串 |
app_data数组内对象参数
app_data参数示例:
[{"app_no":"cd7b0dcf9fe148fca6e852e795971abc","computer_no":"7d9777496407477d9f7c6728a883c56d","path":"F:\web\dolit211101\files\v3\aa\pp.exe","view_process":"","args":"","pre_start_streamer_count":1,"streamer_count":1},{"app_no":"","computer_no":"98c23d36b31a47e8b8be1a26dd863f61","path":"F:\web\dolit21110\files\v2\aa\pp.exe","view_process":"","args":"","pre_start_streamer_count":1,"streamer_count":2}]
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_no | string | 否 | xxxxxxxx | 应用主键ID(从app_cloud/computer_list列表接口传app_cate_no参数时获取,该参数与列表中的computer_no一一对应) |
| computer_no | string | 是 | xxxxxx | 服务器ID (从app_cloud/computer_list列表获取,需要和app_no对应) |
| path | string | 是 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 应用路径,应用路径,当前参数如果为空,则自动使用body内的path参数值填充 |
| view_process | string | 否 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 视图路径,应用路径,当前参数如果为空,则自动使用body内的view_process参数值填充 |
| args | string | 否 | 参数,当前参数如果为空,则自动使用body内的 args 参数值填充 | |
| pre_start_streamer_count | int | 是 | 1 | 预启动数量(1.针对启动加载慢的应用程序,可设置提前启动,用户访问无需加载立即进入。2.预启动数量最大不能超过累计流路数),当前参数如果为空,则自动使用body内的 pre_start_streamer_count 参数值填充 |
| streamer_count | int | 是 | 1 | 流路数(流路数取决于机器性能,性能越好可开流路数越多),当前参数如果为空,则自动使用body内的 streamer_count 参数值填充 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ app_cate_no | string | 应用编号ID | ||
| ├─ app_code | string | 应用识别码 | ||
| ├─ url | string | web链接地址 | ||
| ├─ android_url | string | 安卓链接地址 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"app_cate_no":"bd6a2fda4dfc4a11a5fb706b5651623b",
"app_code":"bd60pw25347c",
"url":"xxxxxx",
"android_url":"xxxxxxx",
},
"msg":"添加成功"
}
# 服务器列表
# 基本信息
Path: /open/v1/app_cloud/computer_list
Method: GET
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| page | int | 否 | 1 | 分页-当前页码 |
| limit | int | 否 | 10 | 分页-每页数量 |
| name | string | 否 | xxxxxxxx | 服务器名称 |
| cate_no | string | 否 | xxxxxxxx | 服务器分组ID |
| app_cate_no | string | 否 | xxxxxxxx | 应用ID,编辑应用调用此接口时必填 |
| ip | string | 否 | 10.0.0.1 | 服务器IP |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ page_no | number | |||
| ├─ page_total | number | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ computer_no | string | 服务器id | ||
| ├─ name | string | 服务器名称 | ||
| ├─ ip | string | 服务器ip | ||
| ├─ rdp_port | number | rdp端口号 | ||
| ├─ computer_cate_no | string | 分组id | ||
| ├─ nature | number | 分类 1虚拟机2物理机3入口服务器 | ||
| ├─ info | string | 备注 | ||
| ├─ guard_port | number | 调度服务端口,默认8050 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ cpu_percent | number | cpu使用情况 | ||
| ├─ mem_percent | number | 内存使用情况 | ||
| ├─ disk_percent | string | 磁盘使用情况 | ||
| ├─ ip_local | string | 服务器辅助ip(升级用,内网模式可省略) | ||
| ├─ web_cloud_port | number | web服务端口,默认9000 | ||
| ├─ app_cate_no | string | 应用ID | ||
| ├─ app_no | string | 服务器应用ID | ||
| ├─ cate_name | string | 分组名 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"result":[
{
"computer_no":"7d9777496407477d9f7c6728a883c56d",
"name":"10.0.0.182-",
"ip":"10.0.0.182",
"rdp_port":3389,
"nature":2,
"info":"",
"guard_port":0,
"create_time":"2023-02-09 10:17:22",
"update_time":"2023-02-09 10:17:22",
"cpu_percent":0,
"mem_percent":0,
"disk_percent":"",
"ip_local":"",
"web_cloud_port":0,
"cpu_max_limit":0,
"gpu_max_limit":0,
"computer_cate_no":"",
"cate_name":"",
"app_no":"cd7b0dcf9fe148fca6e852e795971abc",
"app_cate_no":"bd6a2fda4dfc4a11a5fb706b5651623b",
"path":"F:\\web\\dolit211101\\files\\v3\\aa\\pp.exe",
"view_process":"",
"args":"",
"pre_start_streamer_count":1,
"streamer_count":1
},
{
"computer_no":"98c23d36b31a47e8b8be1a26dd863f61",
"name":"39.92.34.99-10.0.0.182",
"ip":"39.92.34.99",
"rdp_port":3389,
"nature":2,
"info":"",
"guard_port":8050,
"create_time":"2023-02-08 17:54:24",
"update_time":"2023-02-08 17:54:24",
"cpu_percent":0,
"mem_percent":0,
"disk_percent":"",
"ip_local":"10.0.0.182",
"web_cloud_port":0,
"cpu_max_limit":0,
"gpu_max_limit":0,
"computer_cate_no":"",
"cate_name":"",
"app_no":"c0e5f4fcb61042f0ab972199bf53f2e6",
"app_cate_no":"bd6a2fda4dfc4a11a5fb706b5651623b",
"path":"F:\\web\\dolit2\\files\\v2\\aa\\pp.exe",
"view_process":"",
"args":"",
"pre_start_streamer_count":1,
"streamer_count":2
},
{
"computer_no":"d0f1a8ea7a66485f875245a22aa2dd84",
"name":"内网172",
"ip":"10.0.0.172",
"rdp_port":3389,
"nature":1,
"info":"",
"guard_port":8050,
"create_time":"2022-04-13 15:53:42",
"update_time":"2023-02-09 17:34:06",
"cpu_percent":17.19,
"mem_percent":50,
"disk_percent":"[\"91.39\",\"94.70\",\"71.89\"]",
"ip_local":"10.0.0.172",
"web_cloud_port":9000,
"cpu_max_limit":0,
"gpu_max_limit":0,
"computer_cate_no":"",
"cate_name":"XXXX",
"app_no":"f6764d5ad7fa4c7f827660c1b039be3f",
"app_cate_no":"",
"path":"C:\\Windows\\system32\\mspaint.exe",
"view_process":"C:\\Windows\\system32\\mspaint.exe",
"args":"",
"pre_start_streamer_count":0,
"streamer_count":0
}
],
"total":3,
"page_no":1,
"page_total":5
},
"msg":"获取成功"
}
# 云应用列表
# 基本信息
Path: /open/v1/app_cloud/list
Method: GET
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| page | int | 否 | 1 | 分页-当前页码 |
| limit | int | 否 | 10 | 分页-每页数量 |
| cate_name | string | 否 | xxxxxxxx | 应用名称(模糊搜索) |
| app_code | string | 否 | xxxxxxxx | 应用code(模糊搜索) |
| status | string | 否 | xxxxxxxx | 应用状态:1正常,2停用 |
| app_cate_no | string | 否 | xxxxxxxx | 应用ID |
| computer_no | string | 否 | xxxxxxxx | 服务器ID |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ page_no | number | |||
| ├─ page_total | number | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ app_cate_no | string | 应用id | ||
| ├─ app_cate_visit_id | string | 应用访问码 | ||
| ├─ name | string | 应用名称 | ||
| ├─ app_code | string | 应用code | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ code_rate | number | 码率 | ||
| ├─ path | string | 应用路径 | ||
| ├─ pre_start_streamer_count | number | 预启动流路数 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ streamer_count | number | 应用流路数 | ||
| ├─ mode_name | string | 模板名称 | ||
| ├─ app_mode_no | string | 模板编号ID | ||
| ├─ is_desk | integer | 是否是桌面模式,1是,2不是 | ||
| ├─ app_type | integer | 应用类型 1:app 2:game | ||
| ├─ is_check_online | integer | 没有人连接的时候是否自动关闭流路,1开启,2关闭 | ||
| ├─ check_online_interval | integer | 没有人连接的时候自动关闭流路的缓冲时间(单位:秒) | ||
| ├─ mouse_type | integer | 相对定位(普通模式下支持右键拖曳的兼容模式) 2绝对定位 3 远端相对定位(runType=box) | ||
| ├─ win_multiple | integer | 是否禁止开启多窗口捕获,1是,2否 | ||
| ├─ pic_cut | integer | 是否应用内截取画面,1是,2否 | ||
| ├─ capture | integer | 截取模式 1:内置2:通用 | ||
| ├─ mode_type | integer | 模板类型:1总平台添加,2自己添加 | ||
| ├─ audio_capture | integer | 音频模型: 1 声卡模式 2 内置模式 | ||
| ├─ is_open_ue_plugin_args | integer | 是否启动ue插件参数。1 开启 2 关闭 默认 关闭 (对接了ue消息插件的ue类型应用可以选择开启) | ||
| ├─ container_type | integer | 虚拟化方式 1 多会话 rdp2 单控制台沙盒 3 多离线会话独立沙盒 | ||
| ├─ mode | integer | 运行方式 1 容器2 沙盒3. 极速沙盒4. 云桌面 5.独显沙盒 | ||
| ├─ url | integer | web链接 | ||
| ├─ android_url | integer | 客户端链接 | ||
| ├─ total_computer_count | integer | 服务器数量 | ||
| ├─ total_streamer_count | integer | 最大流路数 | ||
| ├─ total_online_streamer_count | integer | 在线流路数 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"page_no":1,
"page_total":4,
"result":[
{
"app_cate_no":"9f71cf3389cb478685435d2d229a9cef",
"app_cate_visit_id":"9f7sx241464b",
"name":"测试应用4001",
"app_code":"9f7sx241464b",
"update_time":"2023-02-10T10:49:52+08:00",
"create_time": "2023-02-10T10:49:52+08:00",
"code_rate":5,
"path":"F:\\web\\dolit211101-alpha\\files\\v1\\aa\\pp.exe",
"pre_start_streamer_count":1,
"streamer_count":1,
"mode_name":"144_sandbox-测试001",
"app_mode_no":"6d39fc637c8272146d65b9f0fa3a0772",
"is_desk":2,
"is_console_desk":2,
"is_check_online":2,
"check_online_interval":10,
"mouse_type":3,
"win_multiple":2,
"pic_cut":2,
"capture":1,
"mode_type":5,
"audio_capture":2,
"is_open_ue_plugin_args":2,
"container_type":2,
"mode":5,
"fps":60,
"landscape":1,
"bitrate":5,
"resolution_width":1920,
"resolution_height":1080,
"is_auto_restart":2,
"display_rocker":1,
"full_screen":2,
"touch":1,
"random_use_streamer":1,
"render_off_screen":1,
"is_multi_op":2,
"double_screen":2,
"view_max_count":0,
"introduce":"",
"setting":"{\"AdvancedSeting\":false,\"IsOpenUePluginArgs\":false,\"MouseType\":false,\"IsAutoRestart\":false,\"ViewMaxCount\":false,\"DoubleScreen\":false,\"VisitType\":false,\"IsMultiOp\":false,\"RandomUseStreamer\":false,\"RenderOffScreen\":false,\"AppType\":false,\"ViewPath\":true,\"Args\":true,\"DPI\":false,\"Bitrate\":false,\"OpenAudio\":false,\"MobileSeting\":false,\"FullScreen\":false,\"Touch\":false,\"DisplayRocker\":false,\"Landscape\":false,\"Fps\":false}",
"open_audio":1,
"url":"http://10.0.0.111:8085/s?loadType=app&group=9f7sx241464b&runType=box",
"total_streamer_count": 2,
"total_online_streamer_count": 2,
"total_computer_count": 1,
"android_url":"dlca://streamer?info=1778f608cf60c7e45fd41b1ccc5fc09c4b13946951c45d80eea690ba204303e7ff8a5155180b7c2e6ca982554680129c0d42f07c284ffb839efc7f6b9367093184bed15573342007ee31a2ca6efea9fb6b70c3c6b653e720c238a4cb056e99d9f7fa88530b4e661879bc4b7a70364b31feed5c8b2f2f944e501d2f41780f0a271d0b656e01b6f1d5f4d9355857d5054247ff61714d72e90a87da00793d2de0d4c44a6878bf09c1ce2b31ba747af08085",
"base_app_id":706
}
],
"total":35
},
"msg":"获取成功"
}
# 删除云应用
# 基本信息
Path: /open/v1/app_cloud/del_batch
Method: POST
接口描述: 可单个或多个应用删除
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_cate_nos | string | 是 | xxxxxxxx | 应用ID,多个之间用英文逗号拼接 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ app_cate_nos | string | 应用编号ID,多个时间用英文逗号拼接 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"app_cate_nos":"1a6a1f3093f8480ba4319c2fd9400bde,8197a2102cde42728ec915d9a746394e"
},
"msg":"操作成功"
}
# 禁用启用云应用
# 基本信息
Path: /open/v1/app_cloud/disable_batch
Method: POST
接口描述: 可单个,可批量操作
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| status | int | 是 | 1 | 状态,1启用,2禁用 |
| app_cate_nos | string | 是 | xxxxxxxx | 应用ID,多个之间用英文逗号拼接 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ app_cate_nos | string | 应用编号ID,多个之间用英文逗号拼接 | ||
| ├─ status | int | 状态,1启用,2禁用 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"app_cate_nos":"1a6a1f3093f8480ba4319c2fd9400bde,8197a2102cde42728ec915d9a746394e",
"status":2
},
"msg":"操作成功"
}
# 一键创建云应用
# 基本信息
Path: /open/v1/app_cloud/add_common
Method: POST
接口描述: 一个接口创建应用,包括服务器,应用分组,应用,流路等
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_name | string | 是 | 测试应用 | 应用名称 |
| app_mode_no | string | 是 | xxxxxxxx | 应用模板编号ID |
| exe_path | string | 是 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 应用路径 |
| view_path | string | 否 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 视图路径 |
| args | string | 否 | 参数 | |
| mark | string | 否 | 备注 | |
| pre_start_streamer_count | int | 是 | 1 | 预启动数量(1.针对启动加载慢的应用程序,可设置提前启动,用户访问无需加载立即进入。2.预启动数量最大不能超过累计流路数) |
| streamer_count | int | 是 | 1 | 流路数(流路数取决于机器性能,性能越好可开流路数越多) |
| app_data | string | 是 | 示例见app_data数组内对象参数 | 服务器列表json字符串 |
app_data数组内对象参数
app_data参数示例:
[{"peer":"10.0.0.182","exe_path":"F:\web\dolit211101-alpha\files\v3\aa\pp.exe","view_path":"","args":"","pre_start_streamer_count":1,"streamer_count":2},{"peer":"10.0.0.183,39.93.34.99","exe_path":"F:\web\dolit211101-alpha\files\v2\aa\pp.exe","view_path":"","args":"","pre_start_streamer_count":1,"streamer_count":3}]
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| peer | string | 是 | 10.0.0.21,39.28.124.3 | 服务器IP,如果局域网IP和公网IP都需要,参数如示例;如果只有局域网IP或公网IP,则如:10.0.0.21 |
| exe_path | string | 是 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 应用路径,当前参数如果为空,则自动使用body内的exe_path参数值填充 |
| view_path | string | 否 | F:\web\dolit211101-alpha\files\v3\aa\pp.exe | 视图路径,当前参数如果为空,则自动使用body内的view_path参数值填充 |
| args | string | 否 | 参数,当前参数如果为空,则自动使用body内的 args 参数值填充 | |
| pre_start_streamer_count | int | 是 | 1 | 预启动数量(1.针对启动加载慢的应用程序,可设置提前启动,用户访问无需加载立即进入。2.预启动数量最大不能超过累计流路数),当前参数如果为0,则自动使用body内的 pre_start_streamer_count 参数值填充 |
| streamer_count | int | 是 | 1 | 流路数(流路数取决于机器性能,性能越好可开流路数越多),当前参数如果为0,则自动使用body内的 streamer_count 参数值填充 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ app_cate_no | string | 应用编号ID | ||
| ├─ app_code | string | 应用识别码 | ||
| ├─ url | string | web链接地址 | ||
| ├─ android_url | string | 安卓链接地址 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"app_cate_no":"bd6a2fda4dfc4a11a5fb706b5651623b",
"app_code":"bd60pw25347c",
"url":"xxxxxx",
"android_url":"xxxxxxx",
},
"msg":"添加成功"
}
# 云应用分组
# 分组列表
# 基本信息
Path: /open/v1/app_group/list
Method: GET
接口描述: 一个接口获取应用分组列表
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| page | int | 否 | 1 | 当前请求的页码 |
| limit | int | 否 | 10 | 每页返回数据条数,默认10条 |
| mode | int | 否 | xxxx | 模式 |
| app_cate_id | string | 否 | xxxxxxxx | 应用ID |
| name | string | 否 | xxxx | 组名称 |
| comment | string | 否 | xxxxxxxxx | 备注 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ app_group_no | string | 应用分组编号 | ||
| ├─ name | string | 分组名称 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ admin_id | string | 用户ID | ||
| ├─ app_count | number | 云应用数量 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"result": [
{
"app_group_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "测试",
"create_time": "2024-05-15T11:33:29+08:00",
"update_time": "2024-05-15T11:33:29+08:00",
"admin_id": 123,
"app_count": 0
}
],
"total": 1
},
"msg": "获取成功"
}
# 添加分组
# 基本信息
Path: /open/v1/app_group/add
Method: POST
接口描述: 添加云应用分组
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| name | string | 是 | 测试组 | 组名称 |
| comment | string | 否 | XXXXXX | 备注 |
| cover_image | string | 否 | XXXXXXXXXXXXXXXXX | 封面图片 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ app_group_no | string | 应用分组编号 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"app_group_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"msg": "添加成功"
}
# 编辑分组
# 基本信息
Path: /open/v1/app_group/edit
Method: POST
接口描述: 编辑云应用分组信息
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_group_no | string | 是 | xxxxxxxxxx | 分组编号 |
| name | string | 是 | xxx | 分组名称 |
| comment | string | 否 | 分组备注 | 备注 |
| cover_image | string | 否 | 封面图片 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":null,
"msg":"操作成功"
}
# 删除分组
# 基本信息
Path: /open/v1/app_group/del
Method: GET
接口描述: 删除云应用分组
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_group_no | string | 是 | xxxxxxxxxx | 分组编号 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":null,
"msg":"删除成功"
}
# 应用文件管理
# 应用文件上传
# 基本信息
Path: /open/v1/app/file_upload
Method: POST
接口描述: 文件上传接口,如果直接使用接口中返回的应用存储路径,需要所有节点都配置相同的文件存储目录。
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | multipart/form-data;boundary= | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| upload_type | text | 是 | 1 | 1 选择本地文件 2 使用网络下载地址 默认1 |
| file | text | 是 | file文件,upload_type 为1时选择上传的文件 | |
| file_download_url | text | 否 | upload_type为2时,提供文件的下载地址,支持zip以及exe文件。 | |
| is_sync_use_intranet | text | 否 | 1 | 文件同步功能是否内网地址通信 , 1 内网 2 公网ip (需要配置公网ip并开通端口,默认使用8050端口) |
| is_sync_specified_computer | text | 否 | 1 | 根据computer_no_list同步到指定机器 2 同步到所有机器【代理权限后台列表中的所有机器】 默认 1 |
| computer_no_list | text | 否 | xxxx,yyyy | 要同步的渲染机服务器编号,多个服务器用英文逗号分割 (使用时暂不允许服务器列表存在交叉使用,比如应用a 选择同步a,b机器,应用b同步到c,d机器是正确的用法,应用a 选择同步a,b机器,应用b同步到b,c机器是错误的用法,会导致应用并集同步。) |
| start_exe_name | text | 否 | test.exe | 启动的exe文件。如果上传的是压缩包,并且解压后根目录有多个exe,可以指定某个名称的exe作为启动文件。 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | integer | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"md5": "6784be19a5f870544c8e564c768eff23",
"native_path": "E:/uploadsoft/files/20230227/00/02/210/test.exe",
"path": "E:/uploadsoft/files/20230227/00/02/210/test.exe",
"view_path": "E:/uploadsoft/files/20230227/00/02/210/test.exe",
"path_list": [
"E:/uploadsoft/files/20230227/00/02/210/test.exe"
],
"domain": "http://10.0.0.105:8050",
"size": 15250920
},
"msg": "success"
}
# 应用文件删除
# 基本信息
Path: /open/v1/app/file_delete
Method: POST
接口描述: 文件删除接口,支持按照指定md5的方式删除,以及按照指定文件名删除
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| delete_type | text | 是 | 1 | 1 指定文件md5删除 2 指定上传时的文件名删除 默认1 |
| is_sync_use_intranet | text | 否 | 1 | 文件同步功能是否内网地址通信 , 1 内网 2 公网ip (需要配置公网ip并开通端口,默认使用8050端口) |
| is_delete_cms_backup_file | text | 否 | 1 | 是否同步删除cms管理端保存的文件 1 删除 2 保留 默认2保留 |
| computer_no_list | text | 否 | xxxx,yyyy | 要进行文件删除的渲染机服务器编号,多个服务器用英文逗号分割 |
| file_md5_list | text | 否 | xxxx,yyyy | 文件md5列表字符串 多个md5用逗号分割,delete_type是1时有效 |
| file_name_list | text | 否 | bbbb.zip,aaaa.zip | 文件名称列表字符串 多个文件用逗号或者自定义分隔符分割,delete_type是2时有效 |
| file_name_list_sep | text | 否 | bbbb.zip,aaaa.zip | file_name_list中文件名列表指定分隔符,默认英文逗号,小于10位有效 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | integer | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"success_request_count": 2
},
"msg": "success"
}
# 应用文件同步
# 基本信息
Path: /open/v1/app/file_sync
Method: POST
接口描述: 本接口用来修复文件缺失或者新增的服务器节点
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| sync_type | text | 是 | 1 | 1 文件指定服务器混合同步(原有服务器A、B,新增C,computer_no_list参数可以传[A,B,C],C节点将拥有AB节点的文件) 2 文件同步到后台全部渲染节点(所有节点都将获取相同的文件)。 默认1 |
| is_sync_use_intranet | text | 否 | 1 | 文件同步功能是否内网地址通信 , 1 内网 2 公网ip (需要配置公网ip并开通端口,默认使用8050端口) |
| computer_no_list | text | 否 | xxxx,yyyy | 要同步的渲染机服务器编号字符串,多个服务器用英文逗号分割 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | integer | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "success"
}
# 应用模板
# 获取应用模板
# 基本信息
Path: /open/v1/app_mode/index
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| page | 否 | 1 | 当前请求的页码 |
| limit | 否 | 10 | 每页返回数据条数,默认10条 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ page_no | number | |||
| ├─ page_total | number | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ mode_name | string | 模板名称 | ||
| ├─ addtime | string | 添加时间 | ||
| ├─ app_mode_no | string | 模板编号 | ||
| ├─ is_desk | integer | 是否是桌面模式,1是,2不是 | ||
| ├─ app_type | integer | 应用类型 1:app 2:game | ||
| ├─ is_check_online | integer | 没有人连接的时候是否自动关闭流路,1开启,2关闭 | ||
| ├─ check_online_interval | integer | 没有人连接的时候自动关闭流路的缓冲时间(单位:秒) | ||
| ├─ mouse_type | integer | 相对定位(普通模式下支持右键拖曳的兼容模式) 2绝对定位 3 远端相对定位(runType=box) | ||
| ├─ win_multiple | integer | 是否禁止开启多窗口捕获,1是,2否 | ||
| ├─ pic_cut | integer | 是否应用内截取画面,1是,2否 | ||
| ├─ capture | integer | 截取模式 1:内置2:通用 | ||
| ├─ mode_type | integer | 模板类型:1总平台添加,2自己添加 | ||
| ├─ audio_capture | integer | 音频模型: 1 声卡模式 2 内置模式 | ||
| ├─ is_open_ue_plugin_args | integer | 是否启动ue插件参数。1 开启 2 关闭 默认 关闭 (对接了ue消息插件的ue类型应用可以选择开启) | ||
| ├─ container_type | integer | 虚拟化方式 1 多会话 rdp2 单控制台沙盒 3 多离线会话独立沙盒 | ||
| ├─ mode | integer | 运行方式 1 容器2 沙盒3. 极速沙盒4. 云桌面 5.独显沙盒 | ||
| ├─ total | integer | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"page_no": 2,
"page_total": 5,
"result": [
{
"mode_name": "console",
"create_time": "2021-12-25T11:53:41+08:00",
"app_mode_no": "xxxx193607537df53bad37cec2cf7632",
"is_desk": 2,
"app_type": 2,
"is_check_online": 2,
"check_online_interval": 10,
"mouse_type": 1,
"win_multiple": 1,
"pic_cut": 1,
"capture": 1,
"mode_type": 2,
"audio_capture": 2,
"is_open_ue_plugin_args": 2,
"container_type": 2,
"mode": 5
}
],
"total": 25
},
"msg": "获取成功"
}
# 获取总平台应用模板(V1版本,已废弃)
# 基本信息
Path: /open/v1/app_mode/mode_base
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| page | 否 | 1 | 当前请求的页码 |
| limit | 否 | 10 | 每页返回数据条数,默认10条 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ page_no | number | |||
| ├─ page_total | number | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ mode_name | string | 模板名称 | ||
| ├─ addtime | string | 添加时间 | ||
| ├─ mode_no | string | 模板编号 | ||
| ├─ is_desk | number | 是否是桌面模式,1是,2不是 | ||
| ├─ app_type | number | 应用类型 1:app 2:game | ||
| ├─ is_check_online | number | 没有人连接的时候是否自动关闭流路,1开启,2关闭 | ||
| ├─ check_online_interval | number | 没有人连接的时候自动关闭流路的缓冲时间(单位:秒) | ||
| ├─ mouse_type | number | 相对定位(普通模式下支持右键拖曳的兼容模式) 2绝对定位 3 远端相对定位(runType=box) | ||
| ├─ win_multiple | number | 是否禁止开启多窗口捕获,1是,2否 | ||
| ├─ pic_cut | number | 是否应用内截取画面,1是,2否 | ||
| ├─ capture | number | 截取模式 1:内置2:通用 | ||
| ├─ mode_type | number | 模板类型:1总平台添加,2自己添加 | ||
| ├─ audio_capture | number | 音频模型: 1 声卡模式 2 内置模式 | ||
| ├─ is_open_ue_plugin_args | number | 是否启动ue插件参数。1 开启 2 关闭 默认 关闭 (对接了ue消息插件的ue类型应用可以选择开启) | ||
| ├─ container_type | number | 虚拟化方式 1 多会话 rdp2 单控制台沙盒 3 多离线会话独立沙盒 | ||
| ├─ mode | number | 运行方式 1 容器2 沙盒3. 极速沙盒4. 云桌面 5.独显沙盒 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"page_no": 2,
"page_total": 5,
"result": [
{
"mode_name": "console",
"create_time": "2021-12-25T11:53:41+08:00",
"app_mode_no": "9873193607537df53bad37cec2cf7632",
"is_desk": 2,
"app_type": 2,
"is_check_online": 2,
"check_online_interval": 10,
"mouse_type": 1,
"win_multiple": 1,
"pic_cut": 1,
"capture": 1,
"mode_type": 2,
"audio_capture": 2,
"is_open_ue_plugin_args": 2,
"container_type": 2,
"mode": 5
}
],
"total": 25
},
"msg": "获取成功"
}
# 服务器区域
# 添加服务器区域
# 基本信息
Path: /open/v1/computer_area/add
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| name | text | 是 | 服务器区域名称 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ computer_cate_no | string | 服务器区域id | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"computer_cate_no": "c6e8327e154741819fee8bae2e54ea44"
},
"msg": "添加成功"
}
# 修改服务器区域
# 基本信息
Path: /open/v1/computer_area/edit
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| computer_cate_no | text | 是 | 要修改的服务器区域id | |
| name | text | 否 | 服务器区域名称 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "操作成功"
}
# 删除服务器区域
# 基本信息
Path: /open/v1/computer_area/del
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| computer_cate_no | text | 是 | 要删除的服务器区域id |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "删除成功"
}
# 获取服务器区域列表
# 基本信息
Path: /open/v1/computer_area/index
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| page | 否 | 1 | 当前请求的页码 |
| limit | 否 | 10 | 每页返回数据条数,默认10条 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ page_no | number | |||
| ├─ page_total | number | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ computer_cate_no | string | 服务器区域id | ||
| ├─ name | string | 服务器区域名称 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"page_no": 3,
"page_total": 8,
"result": [
{
"computer_cate_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "济南1",
"create_time": "2021-12-08 11:06:44",
"update_time": "2021-12-30 10:28:43"
}
],
"total": 8
},
"msg": "获取成功"
}
# 资源调度
# 获取当前应用流路
# 基本信息
Path: /open/v1/apply/best
Method: GET;POST(路径与处理逻辑与 GET 相同)。若 cloudreve_mounts 较长或参数较多,建议使用 POST,将鉴权参数与业务参数放在 Body(application/x-www-form-urlencoded 或 application/json),避免 Query 过长。
接口描述:
根据 cpu、内存、gpu 使用情况,筛选出当前应用的最佳流路返回。
公共鉴权参数(与其它 open/v1 接口一致):app_key、rand_str、request_time、sign 等。GET 时参数多在 Query;POST 时多在 Body,签名算法与其它 open/v1 接口一致(详见文档首页「签名算法」)。若文档对 GET 约定「完整 query 参与签名」,请以服务端验签逻辑为准;POST 方式更适合传递较长的 cloudreve_mounts。
Cloudreve 云盘模式(可选):当传入 cloud_disk_mode=cloudreve 时,服务端在启动流路时一并下发云盘挂载配置(cloudreve_mounts),并关闭单路径 rclone、NAS 网络盘等其它挂载方式;渲染端/CloudApp 需支持解析对应启动参数。每项须带 disk_id(云盘唯一标识,1~15 字符,仅字母/数字/下划线,同请求内不可重复);展示名放在 name 字段。
session_id 与启动占用锁(必填):须传 session_id(客户端会话标识,建议与 WebSDK 侧 sessionId 一致)。选路成功后会写入 Redis 启动占用锁(StreamerUsedAccountLabel / StreamerUsedSessionIdLabel,TTL 见配置 startLockTime,默认 20 秒),防止启动至客户端连上之前被其它会话抢占。同一 session_id 重复请求会续期锁;若目标流路已被其它 session 占用,可能选路失败(如「该应用暂无资源可用,请稍后重试」)或在加锁阶段失败。未传 session_id 时返回「session_id不能为空」。
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded 或 application/json | 是 | GET 可用默认表单方式;POST 可与 Body 类型一致 |
Query / Body(GET 多为 Query;POST 多为 Body;以下为业务参数;须与 app_key、rand_str、request_time、sign 等一并传递)
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_cate_no | string | 与 app_cate_id / app_code_id 三选一 | xxxxxxxx | 应用组编号(32 位) |
| app_cate_id | number | 与 app_cate_no / app_code_id 三选一 | 应用组 ID | |
| app_code_id | string | 与上述三选一 | 应用识别码 | |
| session_id | string | 是 | sess_abc123 | 会话标识(必填);用于粘性选路与启动占用锁,建议与 WebSDK sessionId 一致 |
| meeting_id | number | 否 | 0 | 会议 ID |
| type | number | 否 | 0 | 访问地址类型 |
| minute | number | 否 | 14400 | token 有效分钟数 |
| phone | string | 否 | 验证方式为短信时填写 | |
| user_data_path | string | 否 | 用户数据路径(非 cloudreve 时按原逻辑) | |
| cloud_disk_mode | string | 否 | cloudreve | 传 cloudreve 启用 Cloudreve 多盘挂载模式;不传则走原有挂载逻辑 |
| cloudreve_mounts | string | 否 | 见下方 | JSON 数组字符串;放在 Query 时通常需 URL 编码;放在 POST Body 时按表单/JSON 转义即可。数组非空时每项必填 disk_id(≤15 字符,字母/数字/下划线,请求内唯一);另可含 name、type、url、vendor、user、pass 等。可与 cloud_disk_mode=cloudreve 联用;空数组 [] 表示不下发具体盘配置(仍视为 cloudreve 模式) |
cloudreve_mounts 示例(编码前 JSON):
[
{
"disk_id": "disk_1",
"name": "资料盘B",
"type": "webdav",
"url": "http://10.LAN.IP:5212/dav",
"vendor": "other",
"user": "user@example.com",
"pass": "访问口令或应用密码"
}
]
将上述 JSON 压缩为单行字符串 后:若在 Query 中传递,需对参数值做 URL 编码并参与签名相关拼接;若在 POST Body 中传递,按表单或 JSON 常规转义即可。
GET 请求示例(Query,须含 session_id):
/open/v1/apply/best?app_key=...&rand_str=...&request_time=...&sign=...&app_cate_no=32位应用组编号&session_id=sess_abc123
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ streamerInfo | object [] | item 类型: object | ||
| ├─ control_addr | string | 控制接口地址 | ||
| ├─ server_addr | string | http接口地址 | ||
| ├─ server_area | string | http接口地区 | ||
| ├─ speed_addr | number | 测速接口地址 | ||
| ├─ conn_count | string | 连接数 | ||
| ├─ ip | number | IP | ||
| ├─ session_id | string | session_id | ||
| ├─ uid | number | UID | ||
| ├─ streamer_no | string | 流路编号 | ||
| ├─ token | string | token信息 | ||
| ├─ minute | string | 时长(分钟) | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"streamerInfo":[
{
"control_addr":"ws://127.0.0.1:9000/ws/proxy/controldata?sign=xxxxxx\u0026t=1705633403\u0026uid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"server_addr":"http://127.0.0.1:9000",
"server_area":"",
"speed_addr":"ws://127.0.0.1:9000/speed?reqTime=1705633403\u0026userKey=21h9odu2\u0026userSign=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"conn_count":0,
"ip":"127.0.0.1",
"session_id":"sess_abc123",
"uid":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"streamer_no":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"minute": 14400
}
]
},
"msg":"查询成功"
}
# 启动空闲流路(V1版本,已废弃)
# 基本信息
Path: /open/v1/apply/idle_unstart_streamer
Method: POST
接口描述:
查找一台空闲的流路,并绑定到指定的应用,并启动该流路,注册token,返回该流路的访问地址,针对需要实时分配和关闭的需求
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_code | text | 是 | 要启动的应用唯一码 | |
| app_args | text | 是 | 应用启动参数 | |
| minute | text | 否 | 生成的访问地址的有效期(分钟) | |
| type | text | 否 | 生成的访问地址的类型 0 主控允许旁观 1 主控不允许旁观2 仅允许旁观 不填默认 0 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ url | string | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"url": "http://10.0.0.172:9000/app?token=xxxx9hh4xqusvvphtmidyifgygf5gvrh&sk=xxxxac3d9064d61874eb8c3a44b1d9e5"
},
"msg": "启动流路成功"
}
# 获取预启动空闲流路(V1版本,已废弃)
# 基本信息
Path: /open/v1/apply/idle_prestart_streamer
Method: POST
接口描述:
查找一台空闲的流路,并绑定到指定的应用,优先返回在线但是没有人连接的流路
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_code | text | 是 | 要启动的应用唯一码 | |
| app_args | text | 是 | 应用启动参数 | |
| is_force_idle | text | 否 | 1 | 是否强制只返回空闲流路 1 强制 |
| type | text | 否 | 1 | 生成的访问地址的类型 0 主控允许旁观 1 主控不允许旁观2 仅允许旁观 不填默认 0 |
| minute | text | 否 | 1440 | 生成的访问地址的有效期(分钟) |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ url | string | 访问地址 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"url": "http://10.0.0.172:9000/app?token=xxxxxtontm1m5yehzkekgyo0p1et40vh&sk=xxxx4ec50a35308ecc882a745a967841"
},
"msg": "获取流路成功"
}
# 服务器管理
# 添加服务器
# 基本信息
Path: /open/v1/computer/add
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| name | text | 是 | 服务器名称 | |
| ip | text | 是 | 服务器地址 | |
| ip_local | text | 否 | 服务器局域网ip | |
| computer_cate_no | text | 否 | 服务器分组id | |
| web_cloud_port | text | 否 | 9000 | web服务端口,默认9000 |
| guard_port | text | 否 | 8050 | 调度服务端口,默认8050 |
| client_port_start | text | 否 | 串流起始端口号,每一路串流从这个端口号递增 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ computer_no | number | 服务器id | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"computer_no": "xxxxf775f6724645b8e3d063c50cb787"
},
"msg": "添加成功"
}
# 修改服务器
# 基本信息
Path: /open/v1/computer/edit
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| computer_no | text | 是 | 要修改的服务器id | |
| name | text | 否 | 服务器名称 | |
| ip | text | 否 | 服务器地址 | |
| ip_local | text | 否 | 服务器局域网ip | |
| rdp_port | text | 否 | 3389 | 服务器rdp端口号 |
| guard_port | text | 否 | 调度服务端口,默认8050 | |
| computer_cate_no | text | 否 | 服务器分组id | |
| web_cloud_port | text | 否 | web服务端口,默认9000 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "修改成功"
}
# 删除服务器
# 基本信息
Path: /open/v1/computer/del
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| computer_no | text | 是 | 要删除的服务器id |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "数据成功"
}
# 获取服务器列表
# 基本信息
Path: /open/v1/computer/index
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| page | 否 | 1 | 当前请求的页码 |
| limit | 否 | 10 | 每页返回数据条数,默认10条 |
| name | 否 | 华北 | 按名称筛选 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ page_no | number | |||
| ├─ page_total | number | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ computer_no | string | 服务器id | ||
| ├─ name | string | 服务器名称 | ||
| ├─ ip | string | 服务器ip | ||
| ├─ rdp_port | number | rdp端口号 | ||
| ├─ computer_cate_no | string | 分组id | ||
| ├─ nature | number | 分类 1虚拟机2物理机3入口服务器 | ||
| ├─ info | string | 备注 | ||
| ├─ guard_port | number | 调度服务端口,默认8050 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ cpu_percent | number | cpu使用情况 | ||
| ├─ mem_percent | number | 内存使用情况 | ||
| ├─ disk_percent | string | 磁盘使用情况 | ||
| ├─ ip_local | string | 服务器辅助ip(升级用,内网模式可省略) | ||
| ├─ web_cloud_port | number | web服务端口,默认9000 | ||
| ├─ cate_name | string | 分组名 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"page_no": 1,
"page_total": 2,
"result": [
{
"computer_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "172外网",
"ip": "10.0.0.172",
"rdp_port": 3389,
"nature": 1,
"info": "",
"guard_port": 8050,
"create_time": "2021-11-09 15:31:39",
"update_time": "2021-11-11 14:16:32",
"cpu_percent": 30.08,
"mem_percent": 16,
"disk_percent": "[\"39.78\",\"76.25\",\"77.81\",\"13.38\",\"17.22\",\"81.17\"]",
"ip_local": "",
"web_cloud_port": 9000,
"computer_cate_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"cate_name": "济南区"
}
],
"total": 2
},
"msg": "获取成功"
}
# 统计相关
# 并发数(实时)
# 基本信息
Path: /open/v1/stat/concurrency_list
Method: GET
接口描述: 当前系统运行中的资源数量
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ streamer_no | string | 流路id | ||
| ├─ computer_no | string | 服务器id | ||
| ├─ status | number | 在线状态 1在线 0 不在线 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ end_time | string | 到期时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ app_no | string | 应用id | ||
| ├─ client_port | number | 串流服务端口号 | ||
| ├─ device_id | string | 设置id | ||
| ├─ password | string | 流路密码 | ||
| ├─ fps | number | 帧率 | ||
| ├─ bitrate | number | 码率 | ||
| ├─ audio_device | string | 音频设置名 | ||
| ├─ open_audio | number | 是否开启音频 | ||
| ├─ protocol | number | 协议 1 http 2 https | ||
| ├─ memo | string | 备注 | ||
| ├─ verify_type | number | 验证类型 1token验证,2,临时密码,3短信验证 | ||
| ├─ url_password | string | 访问密码 verify_type=2的时候有效 | ||
| ├─ computer_name | string | 服务器名称 | ||
| ├─ app_name | string | 应用名称 | ||
| ├─ ip | string | 服务器ip | ||
| ├─ web_cloud_port | number | web服务端口号 | ||
| ├─ guard_port | number | 调度服务端口号 | ||
| ├─ container_type | number | 虚拟化方式 1 多会话 rdp2 单控制台沙盒 3 多离线会话独立沙盒 | ||
| ├─ streamer_key | string | 流路key | ||
| ├─ active_client_count | number | 在线客户端数量,请求参数is_flush_online_client=1的时候有效 | ||
| ├─ is_online | boolean | 是否在线,请求参数is_flush_online_client=1的时候有效 | ||
| ├─ total | number | 实时并发数量 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"result":[
{
"streamer_no":"xxxx",
"status":1,
"create_time":"2022-05-27T15:10:44+08:00",
"end_time":"2024-08-30T23:59:59+08:00",
"update_time":"2023-01-13T14:21:52+08:00",
"client_port":3426,
"device_id":"xxxx",
"password":"F3ZgA5QdQT3L6Z",
"fps":60,
"bitrate":5,
"audio_device":"Line 1 (Virtual Audio Cable)",
"open_audio":1,
"protocol":1,
"memo":"",
"verify_type":1,
"url_password":"",
"app_no":"",
"computer_no":"",
"computer_name":"58.56.66.177-192.168.0.103(对应原100)",
"app_name":"通用经典诵读按图索骥192.168.0.100",
"ip":"127.0.0.1",
"web_cloud_port":0,
"guard_port":0,
"container_type":2,
"streamer_key":"",
"active_client_count":0,
"is_online":false
},
],
"total":2
},
"msg":"获取成功"
}
# 总节点数
# 基本信息
Path: /open/v1/stat/computer_total
Method: GET
接口描述: 当前系统部署节点数量
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ total | number | 总数 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"total":4
},
"msg":"获取成功"
}
# 离线结点数
# 基本信息
Path: /open/v1/stat/computer_offline
Method: GET
接口描述: 当前系统离线中的节点
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ total | number | 数量 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"total":4
},
"msg":"获取成功"
}
# 应用数
# 基本信息
Path: /open/v1/stat/app_total
Method: GET
接口描述: 上传应用的数量
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ total | number | 总数 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"total":4
},
"msg":"获取成功"
}
# 渲染服务器运行监控
# 基本信息
Path: /open/v1/computer/info
Method: GET
接口描述: CPU、GPU、内存、发送接收速率、磁盘
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| computer_no | text | 是 | 服务器id |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ cpu_max_limit | number | cpu可使用的最大值。超过该值不再接收新的流路启动。0代表无限制 | ||
| ├─ cpu_percent | number | cpu使用率% | ||
| ├─ gpu_avg_percent | number | gpu使用率% | ||
| ├─ disk_percent | string | 磁盘使用情况 | ||
| ├─ gpu_count | number | gpu数量 | ||
| ├─ gpu_max_limit | number | gpu可使用的最大值。当前空限度最大的那张显卡超过该值不再接收新的流路启动。0代表无限制 | ||
| ├─ mem_percent | number | 内存使用率 | ||
| ├─ net_recv_value | string | 接收速率 | ||
| ├─ net_sent_value | string | 发送速率 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"cpu_max_limit":0,
"cpu_percent":0.14,
"disk_percent":"[\"14.47\",\"10.10\"]",
"gpu_avg_percent":0,
"gpu_count":0,
"gpu_max_limit":0,
"mem_percent":19,
"net_recv_value":"0",
"net_sent_value":"0"
},
"msg":"查询成功"
}
# 渲染服务器运行警报
# 基本信息
Path: /open/v1/stat/computer_warning
Method: GET
接口描述: CPU负载过高数 GPU负载过高数 内存负载过高数量 磁盘负载过高数量 ip列表
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| limit | int | 否 | 10 | 每页返回数据条数,默认10条 |
| page | int | 否 | 1 | 当前请求的页码 |
| rule_name | string | 否 | 规则名称模糊搜索 | |
| info | string | 否 | 报警内容模糊搜索 | |
| log_type | string | 否 | disk | 记录类型精确搜索,类型参数:cpu,gpu,disk,memory |
| computer_name | string | 否 | 机器名称模糊搜索 | |
| start_time | int | 否 | 记录起始时间戳(秒) | |
| end_time | int | 否 | 记录结束时间戳(秒) |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ computer_no | string | 服务器id | ||
| ├─ log_no | string | 记录ID | ||
| ├─ computer_ip | string | 服务器ip | ||
| ├─ computer_ip_local | string | 服务器辅助ip(升级用,内网模式可省略) | ||
| ├─ log_type | string | 记录类型:cpu gpu disk memory | ||
| ├─ info | string | 报警详情 | ||
| ├─ create_time | number | 创建时间戳(秒) | ||
| ├─ update_time | number | 更新时间戳(秒) | ||
| ├─ rule_name | string | 规则名称 | ||
| ├─ rule_no | string | 规则主键ID | ||
| ├─ computer_name | string | 机器名称 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"result": [
{
"computer_no": "xxxx",
"log_no": "xxxx",
"computer_ip": "10.0.0.172",
"computer_ip_local": "",
"log_type": "disk",
"info": "磁盘利用率:[C: 76%][D: 83%][E: 70%],超过预警值50%",
"create_time": 1673600040,
"update_time":1673600040,
"rule_name": "报警规则-50",
"rule_no": "xxxx",
"computer_name": "测试机器"
}
],
"total": 1
},
"msg": "获取成功"
}
# 应用使用次数、时长
# 基本信息
Path: /open/v1/stat/app_use_total
Method: GET
接口描述: 应用总使用次数 应用总使用时长 应用今日使用总次数 应用今日使用总时长
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ duration | number | 总的使用时长(秒) | ||
| ├─ times | number | 总的使用次数 | ||
| ├─ today_duration | number | 今日使用时长(秒) | ||
| ├─ today_times | string | 今日使用次数 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"duration":1055805,
"times":1768,
"today_duration":0,
"today_times":0
},
"msg":"获取成功"
}
# 应用使用次数排行
# 基本信息
Path: /open/v1/stat/app_times_list
Method: GET
接口描述: 应用总使用次数TOP10
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| limit | 否 | 10 | 默认10条 |
| start_time | 否 | 1636793640 | 搜索某个时间段内,起始时间戳(秒) |
| end_time | 否 | 1636793640 | 搜索某个时间段内,结束时间戳(秒) |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ result | object [] | 数据列表 | item 类型: object | |
| ├─ app_no | string | 应用id | ||
| ├─ name | string | 应用名称 | ||
| ├─ app_code | string | 应用识别码 | ||
| ├─ path | string | 应用启动完整路径 | ||
| ├─ view_process | string | 应用视图进程完整路径 | ||
| ├─ is_desk | number | 是否是桌面模式 1 是 2 否 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ app_mode_no | string | 所属应用模板编号 | ||
| ├─ cate_name | string | 所属应用分组,空字符代表未分组 | ||
| ├─ computer_no | string | 所属服务器id,空代表未分配服务器 | ||
| ├─ computer_name | string | 所属服务器名称,空字符代表未分配服务器 | ||
| ├─ ip | string | 所属服务器ip,空代表未分配服务器 | ||
| ├─ app_cate_no | string | 所属应用分组id,空字符串代表未设置分组 | ||
| ├─ num | number | 应用使用次数 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"result":[
{
"app_no":"xxxxxfda9dc8308b3d806627b2d59249",
"name":"一年级-古诗1",
"app_code":"01yonge",
"path":"XXXX\\一年级\\一年级\\yonge\\yonge.exe",
"view_process":"XXXX\\一年级\\一年级\\yonge\\yonge.exe",
"args":"",
"is_desk":2,
"mark":"导入的应用",
"create_time":"2021-11-12T11:18:10+08:00",
"update_time":"2022-03-24T13:38:32+08:00",
"app_mode_no":"xxxxadd7d2c6224189e6cb7d5e953c3b",
"app_cate_no":"xxxx0961346f0565ccb42a2eca8b1fa1",
"computer_no":"xxxx3fc706dcfa7a30ee2797b20efc71",
"computer_name":"cpu1",
"cate_name":"一年级",
"ip":"58.56.66.177",
"num":1758
},
],
"total":231
},
"msg":"获取成功"
}
# 应用使用时长排行
# 基本信息
Path: /open/v1/stat/app_duration_list
Method: GET
接口描述: 应用总使用时长TOP10
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| limit | 否 | 10 | 默认10条 |
| start_time | 否 | 1636793640 | 搜索某个时间段内,起始时间戳(秒) |
| end_time | 否 | 1636793640 | 搜索某个时间段内,结束时间戳(秒) |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ result | object [] | 数据列表 | item 类型: object | |
| ├─ app_no | string | 应用id | ||
| ├─ name | string | 应用名称 | ||
| ├─ app_code | string | 应用识别码 | ||
| ├─ path | string | 应用启动完整路径 | ||
| ├─ view_process | string | 应用视图进程完整路径 | ||
| ├─ is_desk | number | 是否是桌面模式 1 是 2 否 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ app_mode_no | string | 所属应用模板编号 | ||
| ├─ cate_name | string | 所属应用分组,空字符代表未分组 | ||
| ├─ computer_no | string | 所属服务器id,空代表未分配服务器 | ||
| ├─ computer_name | string | 所属服务器名称,空字符代表未分配服务器 | ||
| ├─ ip | string | 所属服务器ip,空代表未分配服务器 | ||
| ├─ app_cate_no | string | 所属应用分组id,空字符串代表未设置分组 | ||
| ├─ duration | number | 应用使用时长(秒) | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"result":[
{
"app_no":"xxx32903386136399e7b17b01bac1xxx",
"name":"小学古代开笔礼我体验192.168.0.100",
"app_code":"xxxxxxxx",
"path":"XXXX\\guoxueziyuan\\新加密好国学\\小学古代礼仪\\开笔礼\\我体验\\KaiBiLi.exe",
"view_process":"XXXX\\guoxueziyuan\\新加密好国学\\小学古代礼仪\\开笔礼\\我体验\\KaiBiLi.exe",
"args":"",
"is_desk":2,
"mark":"导入的应用",
"create_time":"2021-11-12T11:19:05+08:00",
"update_time":"2021-12-09T10:34:57+08:00",
"app_mode_no":"xxx2c8053f4d2c4b131f8f25f3c54f7c",
"app_cate_no":"xxx458a5b0854ce20d001528df422c90",
"computer_no":"xxx3fc706dcfa7a30ee2797b20efc71",
"computer_name":"58.56.66.177-192.168.0.100",
"cate_name":"小学XXXX",
"ip":"58.56.66.177",
"duration":1029930
},
],
"total":231
},
"msg":"获取成功"
}
# 应用在各省使用的次数统计
# 基本信息
Path: /open/v1/stat/app_times_province
Method: GET
接口描述: 应用总使用时长TOP10
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| start_time | 否 | 1636793640 | 搜索某个时间段内,起始时间戳(秒) |
| end_time | 否 | 1636793640 | 搜索某个时间段内,结束时间戳(秒) |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ result | object [] | 数据列表 | item 类型: object | |
| ├─ app_cate_no | string | 应用分组id | ||
| ├─ name | string | 应用分组名称 | ||
| ├─ app_type | number | 1app 2 game | ||
| ├─ app_cate_visit_id | string | 应用组访问码 | ||
| ├─ province_list | object [] | 省份数据列表 | item 类型: object | |
| ├─ province_name | string | 省级名称 | ||
| ├─ times | number | 次数 | ||
| ├─ ips | string [] | ip数组 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"result":[
{
"app_cate_no":"xxxx34eaaafac8c53b668e53a68xxxxx",
"name":"弟子规1",
"app_type":1,
"app_cate_visit_id":"xxxx34eaaafa",
"province_list":[
{
"province_name":"北京",
"ips":[
"127.0.0.1"
],
"times":1
},
{
"province_name":"山东省",
"ips":[
"127.0.0.1",
"127.0.0.1"
],
"times":15
},
{
"province_name":"广东省",
"ips":[
"127.0.0.1",
"127.0.0.1",
"127.0.0.1"
],
"times":4
},
{
"province_name":"河南省",
"ips":[
"127.0.0.1"
],
"times":1
}
]
}
],
"total":231
},
"msg":"获取成功"
}
# 应用统计(按日趋势与各应用汇总)
# 基本信息
Path: /open/v1/stat/app_stats
Method: GET
接口描述:
按统计日期汇总应用使用指标(默认在线峰值),并返回各应用在筛选条件下的汇总数据。等价管理端 /app/statsApp。同时返回按日趋势列表 result 与各应用汇总列表 resultApp。
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| type | 否 | people | 指标类型。省略或其它非下列取值时按在线峰值统计:online_peak(在线峰值,默认);people:人数;duration:使用时长(分钟,库内秒数除以 60 后保留 2 位小数);times:使用次数 |
| appId | 否 | 10 | 应用 id,筛选指定应用 |
| startTime | 否 | 2026-05-01 | 统计日期下限,格式 YYYY-MM-DD。与 endTime 同时存在时使用闭区间 BETWEEN;仅传本参数时使用 >= |
| endTime | 否 | 2026-05-31 | 统计日期上限,格式 YYYY-MM-DD。与 startTime 同时存在时参与 BETWEEN;仅传本参数时使用 <(不含等于) |
- 本接口日期参数为
YYYY-MM-DD字符串,与同章节排行类接口的 Unix 秒级start_time/end_time不同,请勿混用。
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ result | object [] | 按日趋势列表 | item 类型: object | |
| ├─ statistic_date | string | 统计日期,格式 YYYY-MM-DD | ||
| ├─ num | number | 当日汇总值,含义由请求参数 type 决定 | ||
| ├─ resultApp | object [] | 各应用汇总列表 | item 类型: object | |
| ├─ app_id | number | 应用 id | ||
| ├─ name | string | 应用名称 | ||
| ├─ num | number | 该应用在筛选条件下的汇总值,含义由 type 决定 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code":200,
"data":{
"result":[
{
"statistic_date":"2026-05-01",
"num":120
},
{
"statistic_date":"2026-05-02",
"num":98
}
],
"resultApp":[
{
"app_id":10,
"name":"示例应用A",
"num":500
},
{
"app_id":11,
"name":"示例应用B",
"num":320
}
]
},
"msg":"获取成功"
}
# 流路
# 添加流路
# 基本信息
Path: /open/v1/streamer/add
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| computer_no | text | 是 | 服务器id | |
| end_date | text | 是 | 2022-12-30 | 流路到期时间 |
| app_no | text | 是 | 应用id | |
| open_audio | text | 否 | 1 | 是否开启音频 1 开启 2 不开启 |
| bitrate | text | 否 | 8 | 码率 |
| verify_type | text | 否 | 1 | 访问方式 1 token访问2,临时密码,3短信验证 |
| protocol | text | 否 | 1 | 协议类型 1:http 2:https 目前只支持1 |
| url_password | text | 否 | url访问密码 verify_type为2时有效 | |
| view_max_count | text | 否 | 0 | 旁观排队人数,0为不限人数 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ streamer_no | string | 流路id | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"streamer_no": "88ec5a4a9bac4b0bb6c2c7a73a6cc92f"
},
"msg": "流路添加成功"
}
# 修改流路
# 基本信息
Path: /open/v1/streamer/edit
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| streamer_no | text | 是 | 要修改的流路id | |
| computer_no | text | 是 | 服务器id | |
| end_date | text | 是 | 2022-12-30 | 流路到期时间 |
| app_no | text | 是 | 应用id | |
| open_audio | text | 否 | 1 | 是否开启音频 1 开启 2 不开启 |
| bitrate | text | 否 | 10 | 码率 |
| verify_type | text | 否 | 1 | 访问方式 1 token访问2,临时密码,3短信验证 |
| url_password | text | 否 | url访问密码 verify_type为2时有效 | |
| protocol | text | 否 | 1 | 协议类型 1:http 2:https 目前只支持1 |
| fps | text | 否 | 30 | 帧率 |
| view_max_count | text | 否 | 0 | 旁观排队人数,0为不限人数 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "修改成功"
}
# 关闭流路
# 基本信息
Path: /open/v1/streamer/stop_cloudapp
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| streamer_no | text | 是 | 要关闭的流路id |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "停止成功"
}
# 删除流路
# 基本信息
Path: /open/v1/streamer/del
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| streamer_no | text | 是 | 要删除的流路id |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "删除成功"
}
# 启动流路
# 基本信息
Path: /open/v1/streamer/start_cloudapp
Method: POST
接口描述:
按 streamer_no 调用守护进程启动云应用。云盘参数语义与 GET/POST /open/v1/apply/best 一致:cloud_disk_mode=cloudreve 时传入 cloudreve_mounts(JSON 数组字符串),启动时挂载 Cloudreve/WebDAV 等云盘。
须传 session_id(与 apply/best 相同,建议与 WebSDK sessionId 一致)。启动前写入 Redis 占用锁(StreamerUsedAccountLabel / StreamerUsedSessionIdLabel,TTL 见配置 startLockTime,默认 20 秒);同一 session 续期,其它 session 已占用时返回「当前资源已被抢占,请重试」。未传 session_id 时返回「session_id不能为空」。
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 | 含 OpenAPI 验签字段 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_key | string | 是 | OpenAPI 验签 | |
| rand_str | string | 是 | 32 位随机串 | |
| request_time | number | 是 | 秒级时间戳 | |
| sign | string | 是 | 详见文档首页「签名算法」 | |
| streamer_no | string | 是 | 流路编号 | |
| session_id | string | 是 | sess_abc123 | 会话标识(必填);启动占用锁,建议与 WebSDK sessionId 一致 |
| user_data_path | string | 否 | 用户数据路径 | |
| cloud_disk_mode | string | 否 | cloudreve | 与 cloudreve_mounts 配合;传 cloudreve 时启用云盘挂载 |
| cloudreve_mounts | string | 否 | 见 /open/v1/apply/best 示例 | JSON 数组字符串;数组非空时每项必填 disk_id,字段含义同「获取当前应用流路」 |
# 请求示例
Content-Type: application/x-www-form-urlencoded:
app_key=your_app_key&rand_str=32位随机字符串&request_time=1715760000&sign=签名&streamer_no=目标流路编号&session_id=sess_abc123&user_data_path=&cloud_disk_mode=cloudreve&cloudreve_mounts=[{"disk_id":"disk_1","name":"资料盘B","type":"webdav","url":"http://10.LAN.IP:5212/dav","vendor":"other","user":"user@example.com","pass":"访问口令或应用密码"}]
# 返回数据
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | number | 200 表示成功;201 等非 200 表示失败(如缺少 session_id、资源被抢占、启动失败等) |
| msg | string | 成功时多为「启动成功」;失败时如「session_id不能为空」「当前资源已被抢占,请重试」 |
| data | object | 成功时多为空对象 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "启动成功"
}
# 流路列表
# 基本信息
Path: /open/v1/streamer/index
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| page | 否 | 1 | 当前请求的页码 |
| limit | 否 | 10 | 每页返回数据条数,默认10条 |
| is_flush_online_client | 否 | 0 | 是否强制刷新流路在线状态 |
| cpu_no | 否 | 服务器id | |
| app_code | 否 | 应用唯一码 | |
| app_cate_no | 否 | 应用ID | |
| device_id | 否 | 设备ID | |
| streamer_no | 否 | 流路ID |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ page_no | number | |||
| ├─ page_total | number | |||
| ├─ result | object [] | 资源列表 | item 类型: object | |
| ├─ streamer_no | string | 流路id | ||
| ├─ computer_no | string | 服务器id | ||
| ├─ status | number | 在线状态 1在线 0 不在线 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ end_time | string | 到期时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ app_no | string | 应用id | ||
| ├─ client_port | number | 串流服务端口号 | ||
| ├─ device_id | string | 设置id | ||
| ├─ password | string | 流路密码 | ||
| ├─ fps | number | 帧率 | ||
| ├─ bitrate | number | 码率 | ||
| ├─ audio_device | string | 音频设置名 | ||
| ├─ open_audio | number | 是否开启音频 | ||
| ├─ protocol | number | 协议 1 http 2 https | ||
| ├─ memo | string | 备注 | ||
| ├─ verify_type | number | 验证类型 1token验证,2,临时密码,3短信验证 | ||
| ├─ url_password | string | 访问密码 verify_type=2的时候有效 | ||
| ├─ computer_name | string | 服务器名称 | ||
| ├─ app_name | string | 应用名称 | ||
| ├─ ip | string | 服务器ip | ||
| ├─ web_cloud_port | number | web服务端口号 | ||
| ├─ guard_port | number | 调度服务端口号 | ||
| ├─ container_type | number | 虚拟化方式 1 多会话 rdp2 单控制台沙盒 3 多离线会话独立沙盒 | ||
| ├─ streamer_key | string | 流路key | ||
| ├─ active_client_count | number | 在线客户端数量,请求参数is_flush_online_client=1的时候有效 | ||
| ├─ is_online | boolean | 是否在线,请求参数is_flush_online_client=1的时候有效 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"page_no": 1,
"page_total": 6,
"result": [
{
"streamer_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": 0,
"create_time": "2022-01-07T13:57:13+08:00",
"end_time": "2022-12-30T23:59:59+08:00",
"update_time": "2022-01-08T09:49:44+08:00",
"client_port": 10717,
"device_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"password": "w1WhPQ18qWF1G4",
"fps": 60,
"bitrate": 12,
"audio_device": "Line 1 (Virtual Audio Cable)",
"open_audio": 2,
"protocol": 1,
"memo": "",
"verify_type": 1,
"url_password": "1234",
"app_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"computer_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"computer_name": "10.0.0.135",
"app_name": "画图板",
"ip": "10.0.0.135",
"web_cloud_port": 9000,
"guard_port": 8050,
"container_type": 1,
"streamer_key": "8efa6b9bdcf53503425063c6b39d8f39",
"active_client_count": 0,
"is_online": false
},
{
"streamer_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": 0,
"create_time": "2022-01-05T17:31:32+08:00",
"end_time": "2022-12-30T23:59:59+08:00",
"update_time": "2022-01-05T17:58:17+08:00",
"client_port": 10716,
"device_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"password": "M75RMHffLF6Lbe",
"fps": 60,
"bitrate": 12,
"audio_device": "Line 1 (Virtual Audio Cable)",
"open_audio": 2,
"protocol": 1,
"memo": "",
"verify_type": 1,
"url_password": "1234",
"app_no": "455ad269f52213204a5353f62fde2b92",
"computer_no": "4326ee3224092ec41bf715f604e501b8",
"computer_name": "10.0.0.135",
"app_name": "画图板",
"ip": "10.0.0.135",
"web_cloud_port": 9000,
"guard_port": 8050,
"container_type": 1,
"streamer_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"active_client_count": 0,
"is_online": false
}
],
"total": 12
},
"msg": "获取成功"
}
# 流路详情
# 基本信息
Path: /open/v1/streamer/detail
Method: POST
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| streamer_no | 是 | 流路主键ID |
# 返回数据
| 名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|---|
| code | number | 非必须 | |||
| data | object | 非必须 | |||
| ├─ result | object | 非必须 | |||
| ├─ streamer_no | string | 非必须 | 流路id | ||
| ├─ status | number | 非必须 | 在线状态 1在线 0 不在线 | ||
| ├─ create_time | string | 非必须 | 创建时间 | ||
| ├─ end_time | string | 非必须 | 到期时间 | ||
| ├─ update_time | string | 非必须 | 更新时间 | ||
| ├─ client_port | number | 非必须 | 串流服务端口号 | ||
| ├─ device_id | string | 非必须 | 设置id | ||
| ├─ password | string | 非必须 | 流路密码 | ||
| ├─ fps | number | 非必须 | 帧率 | ||
| ├─ bitrate | number | 非必须 | 码率 | ||
| ├─ audio_device | string | 非必须 | 音频设置名 | ||
| ├─ open_audio | number | 非必须 | 是否开启音频 | ||
| ├─ protocol | number | 非必须 | 协议 1 http 2 https | ||
| ├─ memo | string | 非必须 | 备注 | ||
| ├─ verify_type | number | 非必须 | 验证类型 1token验证,2,临时密码,3短信验证 | ||
| ├─ url_password | string | 非必须 | 访问密码 verify_type=2的时候有效 | ||
| ├─ app_no | string | 非必须 | 应用id | ||
| ├─ computer_no | string | 非必须 | 服务器id | ||
| ├─ computer_name | string | 非必须 | 服务器名称 | ||
| ├─ app_name | string | 非必须 | 应用名称 | ||
| ├─ ip | string | 非必须 | 服务器ip | ||
| ├─ web_cloud_port | number | 非必须 | web服务端口号 | ||
| ├─ guard_port | number | 非必须 | 调度服务端口号 | ||
| ├─ container_type | number | 非必须 | 虚拟化方式 1 多会话 rdp2 单控制台沙盒 3 多离线会话独立沙盒 | ||
| ├─ streamer_key | string | 非必须 | 流路key | ||
| ├─ active_client_count | number | 非必须 | 在线客户端数量,请求参数is_flush_online_client=1的时候有效 | ||
| ├─ is_online | boolean | 非必须 | 是否在线,请求参数is_flush_online_client=1的时候有效 | ||
| msg | string | 非必须 |
# 返回示例
{
"code": 200,
"data": {
"result": {
"streamer_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": 0,
"create_time": "2022-01-05T17:31:32+08:00",
"end_time": "2022-12-30T23:59:59+08:00",
"update_time": "2022-01-05T17:58:17+08:00",
"client_port": 10716,
"device_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"password": "M75RMHffLF6Lbe",
"fps": 60,
"bitrate": 12,
"audio_device": "Line 1 (Virtual Audio Cable)",
"open_audio": 2,
"protocol": 1,
"memo": "",
"verify_type": 1,
"url_password": "1234",
"app_no": "455ad269f52213204a5353f62fde2b92",
"computer_no": "4326ee3224092ec41bf715f604e501b8",
"computer_name": "10.0.0.135",
"app_name": "画图板",
"ip": "10.0.0.135",
"web_cloud_port": 9000,
"guard_port": 8050,
"container_type": 1,
"streamer_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"active_client_count": 0,
"is_online": false
}
},
"msg": "获取成功"
}
# 更新运行流路配置
# 基本信息
Path: /open/v1/streamer/live_update_by_streamer_no
Method: POST
接口描述:
按流路 streamer_no 在流路已与 CMS WebSocket 在线时,热更新运行中可调参数及可选 Cloudreve 云盘参数。本接口使用 open/v1 鉴权(app_key、rand_str、request_time、sign)。
须至少满足:传入至少一项运行参数(如 code_rate、path、fps 等),或 传入 cloud_disk_mode。
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_key | string | 是 | OpenAPI 验签 | |
| rand_str | string | 是 | 32 位随机串 | |
| request_time | number | 是 | 秒级时间戳 | |
| sign | string | 是 | 详见文档首页「签名算法」 | |
| streamer_no | string | 是 | 目标流路编号 | |
| cloud_disk_mode | string | 否 | cloudreve | 与 cloudreve_mounts 配合 |
| cloudreve_mounts | string | 否 | 见「获取当前应用流路」示例 | JSON 数组字符串;数组非空时每项必填 disk_id,含义同「获取当前应用流路」 |
| code_rate | number | 否 | 5 | 码率(M),下发为 video_bitrate |
| path | string | 否 | C:\app\demo.exe | 应用路径 |
| args | string | 否 | --mode=default | 启动参数 |
| view_process | string | 否 | C:\app\view.exe | View 进程路径 |
| resolution_width | number | 否 | 1920 | 须与 resolution_height 同时传 |
| resolution_height | number | 否 | 1080 | 须与 resolution_width 同时传 |
| view_max_count | number | 否 | 3 | 旁观会话上限 |
| fps | number | 否 | 30 | 应用帧率与视频流帧率一并更新 |
| open_audio | number | 否 | 1 | 1 开启 2 关闭 |
| render_off_screen | number | 否 | 1 | 离屏渲染,1 是 2 否 |
| is_auto_restart | number | 否 | 1 | 访问后自动重启等语义,1 是 2 否 |
| is_multi_op | number | 否 | 2 | 多人操作,1 是 2 否 |
# 请求示例
Content-Type: application/x-www-form-urlencoded,Body 示例(键值对,与上表字段同级):
app_key=your_app_key&rand_str=32位随机字符串&request_time=1715760000&sign=签名&streamer_no=目标流路编号&cloud_disk_mode=cloudreve&cloudreve_mounts=[{"disk_id":"disk_1","name":"资料盘B","type":"webdav","url":"http://10.LAN.IP:5212/dav","vendor":"other","user":"user@example.com","pass":"访问口令或应用密码"}]&code_rate=5&path=C:\app\demo.exe&args=--mode=default&view_process=C:\app\view.exe&resolution_width=1920&resolution_height=1080&view_max_count=3&fps=30&open_audio=1&render_off_screen=1&is_auto_restart=1&is_multi_op=2
# 返回数据
# 响应结构
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | number | 200 表示成功 |
| msg | string | 成功时多为「运行流路配置更新指令已下发」 |
| data | object | 成功时多为空对象 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "运行流路配置更新指令已下发"
}
# 按用户查询当前流路、应用使用情况
# 基本信息
Path: /open/v1/streamer/list_by_user
Method: GET、POST(逻辑相同;POST 推荐使用 application/x-www-form-urlencoded,验签字段与业务字段同级)
接口描述:
按用户或会话维度查询云流渲染当前流路及对应应用组的使用情况(使用记录、连接/下线时间、应用组信息、实时在线状态等),支持分页与按使用状态筛选。
适用场景:对接方根据 CMS 用户、客户 uid/session_id 或流路访问用户名,查询其关联流路的占用、应用使用记录及在线情况。
验签: 与其它 /open/v1/** 接口一致(app_key、rand_str、request_time、sign)。
# 请求参数
Query(GET)或 Body(POST,form)
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| app_key | 是 | OpenAPI 商户密钥 | |
| rand_str | 是 | 随机字符串 | |
| request_time | 是 | 1710000000 | Unix 秒级时间戳 |
| sign | 是 | 签名 | |
| uid | 否* | abc123 | 客户标识(与 WebSDK / 申请资源时一致) |
| session_id | 否* | sess_xxx | 客户会话 id |
| user_id | 否* | 12 | CMS 后台用户 id |
| account | 否* | zhangsan | CMS 用户登录名 |
| name | 否* | 张三 | CMS 用户姓名 |
| username | 否* | guest01 | 流路访问地址用户名(添加流路地址时填写,非 CMS 登录名) |
| status | 否 | all | 使用记录筛选:all(默认,全部)、in_use/online(使用中)、offline(已下线)、unused(已创建未使用) |
| page | 否 | 1 | 当前页码,从 1 开始,默认 1 |
| limit | 否 | 10 | 每页条数,默认 10,最大 100 |
公共验签参数(app_key、rand_str、request_time、sign)与其它 /open/v1/** 接口相同,见文档「公共参数」章节。
* user_id、account、name、username、uid、session_id 至少填写一项;可同时传多个,条件为 AND。
列表按使用记录 id 降序(最新在前)。
# 返回数据
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | number | 200 成功,非 200 失败 |
| msg | string | 提示信息 |
| data.result | array | 当前页流路使用记录,元素字段见下表 |
| data.total | number | 符合条件的总条数 |
| data.page_no | number | 当前页码 |
| data.page_total | number | 总页数 |
data.result[] 元素字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| used_id | number | 使用记录主键 id |
| streamer_detail_id | number | 流路访问令牌(streamer_detail)id |
| used_status | number | 使用记录状态:0 已创建未使用、1 正在使用、2 已下线 |
| used_status_text | string | 上项文案:unused / in_use / offline |
| stream_status | string | 流路进程实时状态:offline 离线;online_idle 在线但当前无客户端连接;online_in_use 在线且使用中 |
| reg_type | number | 连接角色:0 主控、1 旁观 |
| reg_type_text | string | 上项文案:main_control / spectator |
| platform | number | 客户端平台(如 0 Windows、1 Android、2 Web 等,与业务约定一致) |
| area | string | 客户来源区域 |
| create_time | number | 记录创建时间(Unix 秒) |
| conn_time | number | 连接时间(Unix 秒),未连接时为 0 |
| offline_time | number | 下线时间(Unix 秒),未下线时为 0 |
| expire_time | number | 有效过期时间(Unix 秒) |
| default_period | number | 默认允许在线时长(分钟) |
| add_time | number | 记录写入时间(Unix 秒) |
| streamer_no | string | 流路编号 |
| streamer_id | number | 流路 id |
| device_id | string | 流路设备标识(与守护进程、Redis 心跳关联) |
| streamer_db_status | number | 流路表中的状态字段(辅助信息) |
| app_id | number | 应用组 id(对应 app_cate.id) |
| app_cate_no | string | 应用组编号 |
| app_code | string | 应用组识别码 |
| app_name | string | 应用组名称 |
| computer_no | string | 渲染节点编号 |
| computer_name | string | 渲染节点名称 |
| computer_ip | string | 渲染节点 IP |
| detail_username | string | 流路访问地址用户名 |
| session_id | string | 客户会话 id |
| uid | string | 客户标识(与申请资源、WebSDK 一致) |
| token | string | 本次访问 token |
| client_ip | string | 客户端 IP |
| account | string | 流路侧账号标识(used 表 account 字段) |
| active_client_count | number | 当前连接客户端数量(Redis 统计) |
| is_streamer_online | boolean | 流路进程是否在线(Redis 心跳) |
# 返回示例
{
"code": 200,
"msg": "获取成功",
"data": {
"result": [
{
"streamer_no": "st_abc123",
"stream_status": "online_in_use",
"used_status_text": "in_use",
"app_id": 100,
"app_cate_no": "639c8543b0c34adbab293333b46c69a6",
"app_code": "444q3r134763",
"app_name": "示例应用组",
"session_id": "710e6ebfd935c24dd10441bdc3108455",
"uid": "12",
"conn_time": 1710000000,
"offline_time": 0,
"active_client_count": 1,
"is_streamer_online": true
}
],
"total": 128,
"page_no": 1,
"page_total": 7
}
}
# 返回失败示例
{
"code": 201,
"msg": "uid、session_id、user_id、account、name、username 至少填写一项",
"data": {}
}
# 按用户批量停止使用中的流路
# 基本信息
Path: /open/v1/streamer/stop_cloudapp_by_user
Method: POST(推荐 application/x-www-form-urlencoded,验签字段与业务字段同级)
接口描述:
按用户或会话维度,批量停止当前使用中(used_status=1) 的云流渲染流路。
单次最多处理 100 条使用中的流路(按 streamer_id 去重后计数)。
验签: 与其它 /open/v1/** 接口一致(app_key、rand_str、request_time、sign)。
# 请求参数
Body(POST,form)
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| app_key | 是 | OpenAPI 商户密钥 | |
| rand_str | 是 | 随机字符串 | |
| request_time | 是 | 1710000000 | Unix 秒级时间戳 |
| sign | 是 | 签名 | |
| uid | 否* | abc123 | 客户标识 |
| session_id | 否* | sess_xxx | 客户会话 id |
| user_id | 否* | 12 | CMS 后台用户 id |
| account | 否* | zhangsan | CMS 用户登录名 |
| name | 否* | 张三 | CMS 用户姓名 |
| username | 否* | guest01 | 流路访问地址用户名 |
* user_id、account、name、username、uid、session_id 至少填写一项;可同时传多个,条件为 AND。
# 返回数据
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | number | 200 成功(含部分成功),非 200 失败 |
| msg | string | 提示信息 |
| data.total | number | 本次处理的流路数(去重后) |
| data.success_count | number | 停止成功数 |
| data.fail_count | number | 停止失败数 |
| data.results | array | 每条流路停止结果 |
data.results[] 元素字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| streamer_no | string | 流路编号 |
| streamer_id | number | 流路 id |
| success | boolean | 是否停止成功 |
| message | string | 单条结果说明 |
# 返回示例
{
"code": 200,
"msg": "批量停止部分成功",
"data": {
"total": 2,
"success_count": 1,
"fail_count": 1,
"results": [
{
"streamer_no": "st_abc123",
"streamer_id": 10,
"success": true,
"message": "停止成功"
},
{
"streamer_no": "st_def456",
"streamer_id": 11,
"success": false,
"message": "停止失败,请稍后重试"
}
]
}
}
# 返回失败示例
{
"code": 201,
"msg": "uid、session_id、user_id、account、name、username 至少填写一项",
"data": {}
}
# 按用户批量热更新使用中的流路配置
# 基本信息
Path: /open/v1/streamer/live_update_by_user
Method: POST(推荐 application/x-www-form-urlencoded,验签字段与业务字段同级)
接口描述:
按用户或会话维度,对当前使用中(used_status=1) 的云流渲染流路批量热更新运行参数及可选 Cloudreve 云盘参数。单条流路逻辑与「更新运行流路配置」(live_update_by_streamer_no)一致:目标流路须已与 CMS WebSocket 在线。
须至少满足:传入至少一项运行参数(如 code_rate、path、fps 等),或 传入 cloud_disk_mode。
单次最多处理 100 条使用中的流路(按 streamer_id 去重后计数)。
验签: 与其它 /open/v1/** 接口一致(app_key、rand_str、request_time、sign)。
# 请求参数
Body(POST,form)
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| app_key | 是 | OpenAPI 商户密钥 | |
| rand_str | 是 | 随机字符串 | |
| request_time | 是 | 1710000000 | Unix 秒级时间戳 |
| sign | 是 | 签名 | |
| uid | 否* | abc123 | 客户标识 |
| session_id | 否* | sess_xxx | 客户会话 id |
| user_id | 否* | 12 | CMS 后台用户 id |
| account | 否* | zhangsan | CMS 用户登录名 |
| name | 否* | 张三 | CMS 用户姓名 |
| username | 否* | guest01 | 流路访问地址用户名 |
| cloud_disk_mode | 否** | cloudreve | 与 cloudreve_mounts 配合 |
| cloudreve_mounts | 否** | 见「获取当前应用流路」示例 | JSON 数组字符串;含义同「更新运行流路配置」 |
| code_rate | 否** | 5 | 码率(M) |
| path | 否** | C:\app\demo.exe | 应用路径 |
| args | 否** | --mode=default | 启动参数 |
| view_process | 否** | C:\app\view.exe | View 进程路径 |
| resolution_width | 否** | 1920 | 须与 resolution_height 同时传 |
| resolution_height | 否** | 1080 | 须与 resolution_width 同时传 |
| view_max_count | 否** | 3 | 旁观会话上限 |
| fps | 否** | 30 | 应用帧率与视频流帧率一并更新 |
| open_audio | 否** | 1 | 1 开启 2 关闭 |
| render_off_screen | 否** | 1 | 离屏渲染,1 是 2 否 |
| is_auto_restart | 否** | 1 | 1 是 2 否 |
| is_multi_op | 否** | 2 | 多人操作,1 是 2 否 |
* user_id、account、name、username、uid、session_id 至少填写一项;可同时传多个,条件为 AND。
** 运行参数与 cloud_disk_mode 至少传入一项。
# 请求示例
app_key=your_app_key&rand_str=32位随机字符串&request_time=1715760000&sign=签名&uid=customer_001&code_rate=5&cloud_disk_mode=cloudreve&cloudreve_mounts=[{"disk_id":"disk_1","name":"资料盘","type":"webdav","url":"http://10.LAN.IP:5212/dav"}]
# 返回数据
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | number | 200 成功(含部分成功),非 200 失败 |
| msg | string | 提示信息 |
| data.total | number | 本次处理的流路数(去重后) |
| data.success_count | number | 热更新下发成功数 |
| data.fail_count | number | 失败数 |
| data.results | array | 每条流路热更新结果 |
data.results[] 元素字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| streamer_no | string | 流路编号 |
| streamer_id | number | 流路 id |
| success | boolean | 是否下发成功 |
| message | string | 单条结果说明(成功多为「运行流路配置更新指令已下发」;失败常见「流路未在线或未建立 WebSocket 连接」) |
# 返回示例
{
"code": 200,
"msg": "批量热更新部分成功",
"data": {
"total": 2,
"success_count": 1,
"fail_count": 1,
"results": [
{
"streamer_no": "st_abc123",
"streamer_id": 10,
"success": true,
"message": "运行流路配置更新指令已下发"
},
{
"streamer_no": "st_def456",
"streamer_id": 11,
"success": false,
"message": "流路未在线或未建立 WebSocket 连接,无法更新运行配置"
}
]
}
}
# 返回失败示例
{
"code": 201,
"msg": "uid、session_id、user_id、account、name、username 至少填写一项",
"data": {}
}
# 流路授权
# 生成并获取访问地址
# 基本信息
Path: /open/v1/streamer/get_streamer_addr
Method: POST
接口描述: (需启动流路后调用,流路关闭状态下不可用)
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| streamer_no | text | 是 | ||
| type | text | 否 | 1 | 返回token类型说明 0 主控允许旁观 1 主控不允许旁观2 仅允许旁观 不填默认 0 |
| minute | text | 否 | 1440 | 有效时长(分钟) 不填默认24小时 |
| is_delay | text | 否 | 1 | 获取访问地址时是否强制重置为最新设置的有效期 |
| is_create_new | text | 否 | 1 | 是否创建新token |
| username | text | 否 | test | 用户名 |
| mark | text | 否 | 测试地址 | 备注 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ addr_no | number | 流路访问地址id | ||
| ├─ client_url | string | 客户端访问链接 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ minute | number | 有效分钟数 | ||
| ├─ token | string | token | ||
| ├─ type | number | token类型 0 主控允许旁观 1 主控不允许旁观2 仅允许旁观 不填默认 0 | ||
| ├─ web_url | string | 网页端访问地址 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"addr_no": "48f1c4223c164b31b9551f5e811774ff",
"client_url": "dlca://10.0.0.135:10717?token=od78tsc0ufgt46cqsgremw2ulczrwb3f",
"create_time": "2022-01-08T10:01:56+08:00",
"minute": 30,
"token": "od78tsc0ufgt46cqsgremw2ulczrwb3f",
"type": 2,
"web_url": "http://10.0.0.135:9000/app?token=od78tsc0ufgt46cqsgremw2ulczrwb3f&sk=8efa6b9bdcf53503425063c6b39d8f39"
},
"msg": "获取流路访问地址成功"
}
# token查询流路使用详情
# 基本信息
Path: /open/v1/streamer/get_streamer_used_detail
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| token | 是 | 流路地址token | |
| page | 否 | 1 | 分页,当前页码 |
| limit | 否 | 10 | 分页,每页数量,默认10 |
# 返回数据
| 名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|---|
| code | number | 非必须 | 状态码,200代表成功,非200代表失败 | ||
| data | object | 非必须 | |||
| ├─ result | object [] | 非必须 | item 类型: object | item 类型: object | |
| ├─ client_ip | string | 必须 | 客户端ip | ||
| ├─ token | string | 必须 | |||
| ├─ account | string | 必须 | |||
| ├─ create_time | number | 必须 | 创建时间 | ||
| ├─ conn_time | number | 必须 | 连接时间 | ||
| ├─ default_period | number | 必须 | 默认有效期(分钟) | ||
| ├─ offline_time | number | 必须 | 实际下线时间 | ||
| ├─ expire_time | number | 必须 | 实际过期时间 | ||
| ├─ status | number | 必须 | token状态 0未分配1在线2已下线 | ||
| ├─ total | number | 非必须 | |||
| ├─ page_no | string | 必须 | |||
| ├─ page_total | string | 必须 | |||
| msg | string | 非必须 | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"page_no": 1,
"page_total": 1,
"result": [
{
"id": 37834,
"client_ip": "",
"token": "zypwg39vddss2l592t7m5w5wxaqap8wp",
"account": "",
"create_time": 1638624355,
"conn_time": 1638624365,
"default_period": 60000,
"offline_time": 1638628007,
"expire_time": 1642224365,
"status": 2
},
{
"id": 37803,
"client_ip": "",
"token": "zypwg39vddss2l592t7m5w5wxaqap8wp",
"account": "",
"create_time": 1638624355,
"conn_time": 1638624365,
"default_period": 60000,
"offline_time": 1638625291,
"expire_time": 1642224365,
"status": 2
}
],
"total": 2
},
"msg": "获取成功"
}
# 访问地址使用详情
# 基本信息
Path: /open/v1/streamer/get_streamer_addr_used_detail
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| addr_no | 是 | 流路授权地址id |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ client_ip | string | 客户端ip | ||
| ├─ token | string | token | ||
| ├─ create_time | number | 创建时间 | ||
| ├─ conn_time | number | 连接时间 | ||
| ├─ default_period | number | 默认有效期(分钟) | ||
| ├─ offline_time | number | 实际下线时间 | ||
| ├─ expire_time | number | 实际过期时间 | ||
| ├─ status | number | token状态 0未分配1在线2已下线 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"result": [
{
"client_ip": "",
"token": "od78tsc0ufgt46cqsgremw2ulczrwb3f",
"create_time": 1641607316,
"conn_time": 1641607394,
"default_period": 20,
"offline_time": 1641608596,
"expire_time": 1641609194,
"status": 2
}
],
"total": 3
},
"msg": "获取成功"
}
# 重置访问地址授权时间
# 基本信息
Path: /open/v1/streamer/reset_streamer_addr
Method: POST
接口描述: 重置访问地址授权时间 ,需启动流路后调用,流路关闭状态下不可用
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| addr_no | text | 是 | 流路访问地址id | |
| minute | text | 否 | 1440 | 重置为新的有效时间(分钟数) |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ client_url | string | 客户端访问地址 | ||
| ├─ web_url | string | 网页端访问地址l | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"client_url": "dlca://10.0.0.135:10716?token=1fe2wnkq62w8p7erolxhns3p0a4j9878",
"web_url": "http://10.0.0.135:9000/app?token=1fe2wnkq62w8p7erolxhns3p0a4j9878&sk=ea9acf6971183c28da8d4f0f1966c8bb"
},
"msg": "临时链接生成成功"
}
# 访问会话详情
# 基本信息
Path: /open/v1/streamer/get_session
Method: GET
接口描述: 查询指定会话id(sessionId)的上下线时间,可配合WebSDK参数中的自定义sessionId使用
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| session_id | 是 | 访问会话Id(sessionId) |
# 返回数据
# 响应结构
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | number | 响应状态码(200表示成功,201表示失败) |
| msg | string | 响应信息描述 |
| data | array | 会话信息数组(成功时返回) |
# data数组中的对象元素结构
| 字段名 | 类型 | 说明 |
|---|---|---|
| conn_time | number | 上线时间(时间戳) |
| offline_time | number | 下线时间(时间戳,0表示未下线) |
| expire_time | number | 过期时间(时间戳) |
| token | string | 访问令牌 |
| status | number | 会话状态(1表示在线,2表示离线) |
| session_id | string | 会话id |
| client_ip | string | 客户端IP地址 |
| app_code | string | 应用识别码 |
| name | string | 应用名称 |
| is_apply_session | boolean | 是否为apply接口指定的会话(预留) |
# 返回示例
{
"code": 200,
"msg": "查询成功",
"data": [{
"conn_time": 1752827792,
"offline_time": 0,
"expire_time": 1758011020,
"token": "sd9my2ugvtx51o6317hvmmct5jgfyho9",
"status": 1,
"session_id": "710e6ebfd935c24dd10441bdc3108455",
"client_ip": "10.0.0.107",
"app_code": "444q3r134763",
"name": "kmtest18",
"is_apply_session": true
}, {
"conn_time": 1752827020,
"offline_time": 1752827792,
"expire_time": 1758011020,
"token": "sd9my2ugvtx51o6317hvmmct5jgfyho9",
"status": 2,
"session_id": "710e6ebfd935c24dd10441bdc3108455",
"client_ip": "10.0.0.107",
"app_code": "444q3r134763",
"name": "kmtest18",
"is_apply_session": true
}]
}
# 返回失败示例
{
"code": 201,
"data": {},
"msg": "查询记录失败"
}
# 应用(V1版本,已废弃)
# 修改应用
# 基本信息
Path: /open/v1/app/edit
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_no | text | 是 | 要修改的应用id | |
| computer_no | text | 是 | 要修改的关联机器id | |
| name | text | 否 | 应用名称 | |
| app_cate_no | text | 否 | 应用分组id,可使用应用分组列表接口获取 | |
| app_code | text | 否 | mspaint | 应用识别码,可自由设置。如果不填,则必须选择应用分组id,自动使用应用分组的app_code,都填,则优先使用应用分组的app_code |
| path | text | 否 | 应用启动进程完整路径 | |
| view_process | text | 否 | 应用视图进程完整路径 | |
| args | text | 否 | 应用启动参数 | |
| app_mode_no | text | 否 | 应用模板id |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "操作成功"
}
# 返回示例
{
"code": 201,
"data": {},
"msg": "操作失败"
}
# 删除应用
# 基本信息
Path: /open/v1/app/del
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_no | text | 是 | 要删除的应用id |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "操作成功"
}
# 返回示例
{
"code": 201,
"data": {},
"msg": "数据不存在或已删除,请刷新后重试"
}
# 应用列表
# 基本信息
Path: /open/v1/app/index
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| limit | 否 | 10 | 每页返回数据条数,默认10条 |
| page | 否 | 1 | 当前请求的页码 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ page_no | number | 当前页码 | ||
| ├─ page_total | number | 总页数 | ||
| ├─ result | object [] | 数据列表 | item 类型: object | |
| ├─ app_no | string | 应用id | ||
| ├─ name | string | 应用名称 | ||
| ├─ app_code | string | 应用识别码 | ||
| ├─ path | string | 应用启动完整路径 | ||
| ├─ view_process | string | 应用视图进程完整路径 | ||
| ├─ is_desk | number | 是否是桌面模式 1 是 2 否 | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ app_mode_no | string | 所属应用模板编号 | ||
| ├─ cate_name | string | 所属应用分组,空字符代表未分组 | ||
| ├─ computer_no | string | 所属服务器id,空代表未分配服务器 | ||
| ├─ computer_name | string | 所属服务器名称,空字符代表未分配服务器 | ||
| ├─ ip | string | 所属服务器ip,空代表未分配服务器 | ||
| ├─ app_cate_no | string | 所属应用分组id,空字符串代表未设置分组 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"page_no": 1,
"page_total": 67,
"result": [
{
"app_no": "xxxx43fc37dc40e39d519027bbb0b5b2",
"name": "记事本111",
"app_code": "asdasd",
"path": "ccc",
"view_process": "ccc1",
"args": "args",
"is_desk": 2,
"mark": "",
"create_time": "2022-01-07T15:59:20+08:00",
"update_time": "2022-01-08T16:47:19+08:00",
"app_mode_no": "5d333cf62497f2115908007cfd754834",
"app_cate_no": "",
"computer_no": "ebcb4c6cde0e116bd4771b2e17a57f9b",
"computer_name": "西北",
"cate_name": "",
"ip": "39.91.33.96"
},
{
"app_no": "xxxx8d27f7e0721ad7418861a6954bdb",
"name": "记事本",
"app_code": "121211",
"path": "C:\\Windows\\system32\\mspaint.exe",
"view_process": "1111sad",
"args": "",
"is_desk": 2,
"mark": "",
"create_time": "2022-01-06T10:07:03+08:00",
"update_time": "2022-01-06T16:04:08+08:00",
"app_mode_no": "xxxxb88100d7956a62db1bd6dc5d980f",
"app_cate_no": "",
"computer_no": "xxxx19fd82dfcaacd4480bdfb1bc1b18",
"computer_name": "10.0.0.172",
"cate_name": "",
"ip": "10.0.0.172"
}
],
"total": 133
},
"msg": "获取成功"
}
# 应用详情
# 基本信息
Path: /open/v1/app/detail
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| app_no | 是 | 应用id,可通过应用列表接口获取 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 | |
|---|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | |||
| data | object | 数据 | |||
| ├─ app_no | string | 应用id | |||
| ├─ computer_no | string | 必须 | 所属服务器id,空代表未分配服务器 | ||
| ├─ name | string | 应用名称 | |||
| ├─ app_code | string | 应用识别码 | |||
| ├─ path | string | 应用启动完整路径 | |||
| ├─ view_process | string | 应用视图进程完整路径 | |||
| ├─ is_desk | number | 必须 | 是否是桌面模式 1 是 2 否 | ||
| ├─ create_time | string | 创建时间 | |||
| ├─ update_time | string | 必须 | 更新时间 | ||
| 必须 | 所属应用模板id | ||||
| ├─ app_mode_no | string | 所属应用模板编号 | |||
| ├─ cate_name | string | 必须 | 所属应用分组,空字符代表未分组 | ||
| ├─ computer_name | string | 所属服务器名称,空字符代表未分配服务器 | |||
| ├─ ip | string | 所属服务器ip,空代表未分配服务器 | |||
| ├─ app_cate_no | string | 必须 | 所属应用分组id,空代表未设置分组 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"app_no": "88f08d27f7e0721ad7418861a6954bdb",
"name": "记事本",
"app_code": "121211",
"path": "C:\\Windows\\system32\\mspaint.exe",
"view_process": "1111sad",
"args": "",
"is_desk": 2,
"mark": "",
"create_time": "2022-01-06T10:07:03+08:00",
"update_time": "2022-01-06T16:04:08+08:00",
"app_mode_no": "f062b88100d7956a62db1bd6dc5d980f",
"app_cate_no": "da667cee490767f33a3959dab25d4fec",
"computer_no": "b9ec19fd82dfcaacd4480bdfb1bc1b18",
"computer_name": "10.0.0.172",
"cate_name": "测试分类",
"ip": "10.0.0.172"
},
"msg": "获取成功"
}
# 添加应用
# 基本信息
Path: /open/v1/app/add
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| name | text | 是 | mspaint | 应用名称eg:记事本 |
| computer_no | text | 是 | 所关联服务器id,可使用服务器列表接口获取服务器id | |
| app_mode_no | text | 是 | 应用模板id,可使用应用模板列表接口获取应用模板 | |
| app_cate_no | text | 否 | 应用分组id,可使用应用分组列表接口获取 | |
| app_code | text | 否 | mspaint | 应用识别码,可自由设置。如果不填,则必须选择应用分组id,自动使用应用分组的app_code,都填,则优先使用应用分组的app_code |
| path | text | 是 | C:\Windows\system32\mspaint.exe | 应用安装的全路径 |
| view_process | text | 是 | C:\Windows\system32\mspaint.exe | UE的应用往往视图进程与启动进程不一致,此时需单独设置,否则与path保持一致即可 |
| args | text | 否 | -start=1 | 应用启动需要的参数,默认留空 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ app_no | string | 应用id | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"app_no": "827c43fc37dc40e39d519027bbb0b5b2"
},
"msg": "添加成功"
}
# 应用分组(V1版本,已废弃)
# 获取应用分组
# 基本信息
Path: /open/v1/app_cate/index
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| limit | 是 | 10 | 每页返回数据条数,默认10条 |
| page | 是 | 1 | 当前请求的页码 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ page_no | number | |||
| ├─ page_total | number | |||
| ├─ result | object [] | item 类型: object | ||
| ├─ app_cate_no | string | 应用分组id | ||
| ├─ app_code | string | 应用Code | ||
| ├─ name | string | 应用分组名 | ||
| ├─ app_type | number | 应用类型(关联应用后自动绑定生成) 1app 2 game | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ total | number | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"page_no": 1,
"page_total": 5,
"result": [
{
"app_cate_no": "xxxxf998a1e54c27354994fbd3392d46",
"name": "111测试",
"app_code": "5295ab3",
"app_type": 1,
"create_time": "2022-01-07T13:56:03+08:00",
"update_time": "2022-01-08T16:03:10+08:00"
},
{
"app_cate_no": "xxxxf998a1e54c27354994fbd3392d46",
"name": "测试分类",
"app_code": "5295absa3",
"app_type": 1,
"create_time": "2021-12-20T17:24:21+08:00",
"update_time": "2021-12-20T17:24:21+08:00"
},
],
"total": 43
},
"msg": "获取成功"
}
# 添加应用分组
# 基本信息
Path: /open/v1/app_cate/add
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| name | text | 是 | 应用分组名称 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ app_cate_no | string | 应用分组id | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"app_cate_no": "17698a16787f461a9d71d2918667d631"
},
"msg": "添加成功"
}
# 修改应用分组
# 基本信息
Path: /open/v1/app_cate/edit
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_cate_no | text | 是 | 应用分组id | |
| name | text | 否 | 新的分组名 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "操作成功"
}
# 删除应用分组
# 基本信息
Path: /open/v1/app_cate/del
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_cate_no | text | 是 | 应用分组id |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
成功:
{
"code": 200,
"data": {},
"msg": "操作成功"
}
失败:
{
"code": 201,
"data": {},
"msg": "当前数据不存在,请刷新后重试"
}
# 修改应用分组的授权地址
# 基本信息
Path: /open/v1/app_cate/temp_edit
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_cate_temp_no | text | 是 | 应用分组的授权地址id | |
| phone | text | 否 | 手机号 | |
| username | text | 否 | 用户名 | |
| minute | text | 否 | 1440 | 有效时间 |
| mark | text | 否 | 备注 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "操作成功"
}
# 应用分组的授权地址列表
# 基本信息
Path: /open/v1/app_cate/temp_list
Method: GET
接口描述:
# 请求参数
Query
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| page | 否 | 1 | 当前请求的页码 |
| limit | 否 | 10 | 每页返回数据条数,默认10条 |
| app_cate_no | 是 | 应用分组id | |
| is_auto_create | 否 | 如果当前应用分组没有授权地址,是否自动添加 0:不自动创建 1:自动创建 默认0 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | 数据 | ||
| ├─ page_no | integer | 页码 | ||
| ├─ page_total | integer | 总页数 | ||
| ├─ result | object [] | 数据结果 | item 类型: object | |
| ├─ app_cate_user_no | string | 授权地址id | ||
| ├─ username | string | 用户名 | ||
| ├─ phone | string | 手机号 | ||
| ├─ minute | number | 有效期(分钟数) | ||
| ├─ delay | number | 最好一次延期分钟数 | ||
| ├─ token | string | token | ||
| ├─ create_time | string | 创建时间 | ||
| ├─ update_time | string | 更新时间 | ||
| ├─ online_duration | number | 在线时长 | ||
| ├─ use_num | number | 使用次数 | ||
| ├─ type | number | token类型 0 主控允许旁观 1 主控不允许旁观 0 主控允许旁观 1 主控不允许旁观 2 该token仅允许旁观 | ||
| ├─ url | string | |||
| ├─ android_url | string | web地址访问url | ||
| ├─ total | number | 安卓地址访问url | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"page_no": 1,
"page_total": 1,
"result": [
{
"app_cate_user_no": "6a990eb5c3d444e09394e6bf58e66d81",
"username": "auto api",
"phone": "apiUser1641628922",
"minute": 43200,
"delay": 0,
"mark": "自动创建",
"token": "f8ae54af1dc0b372b484c56ad889f69f",
"create_time": "2022-01-08T16:02:03+08:00",
"update_time": "2022-01-08T16:02:03+08:00",
"online_duration": 0,
"use_num": 0,
"type": 0,
"app_cate_no": 0,
"url": "http://app.dolit.cloud/app?info=xxxxxxx",
"android_url": "dlca://streamer?cate_id=402&app_key=xx812f2b3f1a254421d829161f0493ac&token=f8ae54af1dc0b372b484c56ad889f69f"
}
],
"total": 1
},
"msg": "获取成功"
}
# 延期应用分组的授权地址
# 基本信息
Path: /open/v1/app_cate/tempDelay
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_cate_temp_no | text | 是 | 应用分组的授权地址id | |
| delay | text | 是 | 1000 | 延期的分钟数 |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | number | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {},
"msg": "延期成功"
}
# 添加应用分组的授权地址
# 基本信息
Path: /open/v1/app_cate/add_temp
Method: POST
接口描述:
# 请求参数
Headers
| 参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| Content-Type | application/x-www-form-urlencoded | 是 |
Body
| 参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
|---|---|---|---|---|
| app_cate_no | text | 是 | 应用分组id | |
| phone | text | 否 | 手机号(登录获取验证码用) | |
| username | text | 否 | 用户名 | |
| minute | text | 否 | 1440 | 有效时间(分钟) |
# 返回数据
| 名称 | 类型 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|
| code | integer | 状态码,200代表成功,非200代表失败 | ||
| data | object | |||
| ├─ app_cate_temp_no | integer | 应用分组的授权地址id | ||
| msg | string | 状态信息 |
# 返回示例
{
"code": 200,
"data": {
"app_cate_temp_no": "d65fd78f9d5f49e294572d65278d768d"
},
"msg": "添加成功"
}
← 接口使用指南