docker api docs
前置说明
- 所有
http
请求方法统一为POST
, 请求参数均使用json
格式(除非接口文档中有特殊说明), 响应均返回json
格式数据
- 所有
http
请求均需要在http-header
头携带x-token
参数, x-token
参数值通过登录授权接口获取,没有值时传空字串
http
请求可选功能: 在http-header
头携带x-trace-id
参数, 参数值建议使用uuid
生成,用于接口调用链路追踪
- 参数、字段名称优先使用
snake_case
格式,其他格式是为了与docker
命令返回或三方接口保持一致
接口返回结果数据格式
字段 |
值类型 |
备注 |
code |
int |
状态码,非200为异常 |
message |
string |
状态码对应的信息 |
ack |
string |
请求接口时携带的 x-trace-id,用于链路追踪 |
data |
JsonObject |
返回数据的 JSON 对象 |
接口文档的响应只写data
字段。
接口地址统一的ip+port
盒子主机ip:8999
盒子服务健康检查以及获取设备唯一识别码
请求方式: GET
请求地址: /health-check
响应data
字段 |
值类型 |
备注 |
device_id |
string |
设备唯一识别码 |
例子
curl --location 'http://192.168.1.23:8999/health-check'
{
"code": 200,
"message": "docker api service is OK",
"ack": "",
"data": {
"device_id": "284d4338746a161ee5759bc5f42c079d"
}
}
获取当前网络在线的设备列表
请求方式: GET
请求地址: /query-yjz
响应data
字段 |
值类型 |
备注 |
list |
JsonObjectArray |
在线设备列表 |
list.host_ip |
string |
在线设备主机ip |
list.device_id |
string |
在线设备主机唯一识别码 |
例子
curl --location 'http://192.168.1.27:8999/query-yjz'
{
"code": 200,
"message": "scan completed",
"ack": "",
"data": {
"list": [
{
"host_ip": "192.168.1.217",
"device_id": "d44d9053d56b6075a3e15da513085051"
}
]
}
}
获取系统配置信息
接口地址
/api/v1/get/sys-config
入参
无
响应data
字段 |
值类型 |
备注 |
docker_image_list |
JsonObjectArray |
系统镜像列表 |
docker_image_list.repository |
string |
镜像仓库地址 |
docker_image_list.tag |
string |
镜像tag版本号信息 |
docker_image_list.is_ready |
boolean |
镜像是否就绪. true: 已就绪, false: 需要摘取 |
ins_slot_price |
int64 |
实例槽每月单价,单位:分 |
ins_slot_price_hum |
string |
实例槽每月单价 |
mobile_model_list |
JsonObject{镜像版号}[] |
手机型号配置表 |
mobile_model_list<>.model_id |
int |
手机型号编号 |
mobile_model_list<>.model_name |
string |
手机型号描述 |
mobile_model_list<>.model_name |
string |
手机型号描述 |
ins_slot_combo_list |
JsonObjectArray |
实例槽套餐列表 |
ins_slot_combo_list.price |
string |
实例槽价格 |
ins_slot_combo_list.duration |
string |
实例槽有效时长 |
ins_slot_combo_list.style |
int |
实例槽套餐类型,目前支持 1,6,12 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/get/sys-config' \
--header 'X-Token: 0d644a0b639d3c64ea5ffc5355081626' \
--header 'Content-Type: application/json' \
--data '{}'
{
"code": 200,
"message": "ok",
"ack": "aea6c939-0bee-42b6-a450-99d73eb4455c",
"data": {
"docker_image_list": [
{
"repository": "registry.cn-beijing.aliyuncs.com/cloudvphone/xy_vm_phone",
"tag": "v24.06.29.01",
"description": "亚矩阵云操作系统",
"is_ready": false
}
],
"ins_slot_price": 300,
"ins_slot_price_hum": "3.00元/月",
"mobile_model_list": {
"v24.06.29.01": [
{
"model_id": 1000,
"model_name": "三星 SAMSUNG-A51",
"model": "SAMSUNG-A51"
},
{
"model_id": 1001,
"model_name": "三星 SAMSUNG-A71",
"model": "SAMSUNG-A71"
}
]
},
"ins_slot_combo_list": [
{
"price": "3.00元",
"duration": "30",
"style": 1
},
{
"price": "18.00元",
"duration": "60",
"style": 6
},
{
"price": "36.00元",
"duration": "360",
"style": 12
}
]
}
}
查询是否有新版本
接口地址: /api/v1/check-new-version
入参
参数 |
值类型 |
是否必传 |
备注 |
lang |
string |
可选 |
消息多语言. zh-CN, en-US |
响应data
字段 |
值类型 |
备注 |
latest_app_version_code |
int |
最新版本号 |
upgrade_flag |
int |
升级标识. 1: 不需要; 2: 需要 |
upgrade_url |
string |
升级包下载地址 |
upgrade_message |
string |
升级包描述信息 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/check-new-version' \
--header 'X-Token: 522728707cfee0d907bfa7e913f2e630' \
--header 'Content-Type: application/json' \
--data '{}'
`
{
"code": 200,
"message": "ok",
"ack": "4eb960d2-220e-40c3-a350-a2166b6fc48e",
"data": {
"latest_app_version_code": 1,
"upgrade_flag": 1,
"upgrade_url": "",
"upgrade_message": "已经是最新版本"
}
}
升级 api 服务
接口地址: /api/v1/upgrade
入参
参数 |
值类型 |
是否必传 |
备注 |
lang |
string |
可选 |
消息多语言. zh-CN, en-US |
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/upgrade' \
--header 'X-Token: 522728707cfee0d907bfa7e913f2e630' \
--header 'Content-Type: application/json' \
--data '{}'
`
{
"code": 200,
"message": "ok",
"ack": "4eb960d2-220e-40c3-a350-a2166b6fc48e",
"data": {
"result": "已经是最新版本"
}
}
获取实例列表
接口地址: /api/v1/docker/container/list
入参
无参数提交
响应data
字段 |
值类型 |
备注 |
list |
ContainerArray |
实例对象列表 |
list.Id |
string |
实例id |
list.name |
string |
实例名称 |
list.slot_idx |
int |
实例槽编号 |
list.expires |
int64 |
实例过期时间,unix毫秒时间戳 |
list.status |
int |
实例槽当前状态: 100: 未购买过; 101: 有效且空闲; 102: 有效且正在使用; 103: 购买过但已过期; |
list.created_at |
int64 |
云手机创建时间,unix毫秒时间戳 |
list.container_stat |
int |
云手机运行状态: 1: 运行中; 2: 已停 |
list.host_ip_port |
JsonObject |
云手机的ip和adb端口,桥接模式下, ip为空,采用盒子的ip即可 |
list.host_ip_port.host_ip |
string |
云手机 ip |
list.host_ip_port.host_port |
string |
云手机 adb 端口 |
list.running_time_desc |
string |
云手机运行时长描述 |
list.image_repository |
string |
云手机系统镜像仓库地址 |
list.image_desc |
string |
云手机系统镜像描述 |
list.image_version |
string |
云手机系统镜像版本信息 |
list.expired_flag |
bool |
实例槽是否即将过期 |
list.hardware_info |
JsonObject |
云手机硬件信息 |
list.hardware_info.resolution |
string |
云手机分辨率 |
list.hardware_info.model_name |
string |
云手机机型 |
list.hardware_info.memory_size |
string |
云手机内存大小 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/docker/container/list' \
--header 'X-Trace-Id: 3d9136d4-08a9-42c1-96c3-41850f65e6f5' \
--header 'X-Device-Id: 284d4338746a161ee5759bc5f42c079d' \
--header 'X-Token: c7bdb5bf13aaa8c0f1d86b58469be0ae' \
--header 'Content-Type: application/json' \
--data '{
}'
{
"code": 200,
"message": "ok",
"ack": "3d9136d4-08a9-42c1-96c3-41850f65e6f5",
"data": {
"device_id": "284d4338746a161ee5759bc5f42c079d",
"list": [
{
"Id": "",
"name": "",
"slot_idx": 1,
"expires": 1725282511861,
"status": 101,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
},
{
"Id": "e7b7568b62ae6a61b8eaa93f68ae026ec8d170eaee791a0ac7c41565a8d5adf7",
"name": "s-2-1722740552549",
"slot_idx": 2,
"expires": 1725282511861,
"status": 102,
"created_at": 1722740555741,
"container_stat": 0,
"host_ip_port": {
"host_ip": "192.168.1.117",
"host_port": "5555"
},
"running_time_desc": "21秒",
"image_repository": "registry.cn-beijing.aliyuncs.com/cloudvphone/xy_vm_phone",
"image_desc": "亚矩阵云操作系统",
"image_version": "v24.06.29.01",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "1920x1280",
"model_name": "小米 XIAOMI-MixFold",
"memory_size": "4GB"
}
},
{
"Id": "aae939459710ef6bc2455bf19b4950fd7df4df635afa39b8d25c672fc17ecf0c",
"name": "s-3-1722737299026",
"slot_idx": 3,
"expires": 1725282511861,
"status": 102,
"created_at": 1722737302073,
"container_stat": 0,
"host_ip_port": {
"host_ip": "192.168.1.159",
"host_port": "5555"
},
"running_time_desc": "12秒",
"image_repository": "registry.cn-beijing.aliyuncs.com/cloudvphone/xy_vm_phone",
"image_desc": "亚矩阵云操作系统",
"image_version": "v24.06.29.01",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "1920x1280",
"model_name": "三星 SAMSUNG-M32",
"memory_size": "4GB"
}
},
{
"Id": "",
"name": "",
"slot_idx": 4,
"expires": 0,
"status": 100,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
},
{
"Id": "",
"name": "",
"slot_idx": 5,
"expires": 0,
"status": 100,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
},
{
"Id": "",
"name": "",
"slot_idx": 6,
"expires": 0,
"status": 100,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
},
{
"Id": "",
"name": "",
"slot_idx": 7,
"expires": 0,
"status": 100,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
},
{
"Id": "",
"name": "",
"slot_idx": 8,
"expires": 0,
"status": 100,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
},
{
"Id": "",
"name": "",
"slot_idx": 9,
"expires": 0,
"status": 100,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
},
{
"Id": "",
"name": "",
"slot_idx": 10,
"expires": 0,
"status": 100,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
},
{
"Id": "",
"name": "",
"slot_idx": 11,
"expires": 0,
"status": 100,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
},
{
"Id": "",
"name": "",
"slot_idx": 12,
"expires": 0,
"status": 100,
"created_at": 0,
"container_stat": 0,
"host_ip_port": {
"host_ip": "",
"host_port": ""
},
"running_time_desc": "",
"image_repository": "",
"image_desc": "",
"image_version": "",
"expired_flag": false,
"screenshot": "",
"hardware_info": {
"resolution": "",
"model_name": "",
"memory_size": ""
}
}
],
"device_macvlan_ip_addr_pool": {
"start": "192.168.1.80",
"end": "192.168.1.92"
}
}
}
创建安卓容器
接口地址: /api/v1/docker/container/create
入参
参数 |
值类型 |
是否必传 |
备注 |
image |
string |
是 |
镜像仓库名称 |
image_tag |
string |
是 |
镜像的标签版本号 |
model_id |
int |
是 |
机型编号,传 111 表示机型随机 |
ins_name_slot_list |
JsonObjectArray |
是 |
实例槽和云手机名称列表 |
ins_name_slot_list.name |
string |
是 |
云手机名称. 注: 如果业务方希望通过 name 操作云手机,请保证 name 唯一 |
ins_name_slot_list.slot_idx |
int |
是 |
实例槽编号 |
响应data
字段 |
值类型 |
备注 |
op_result_list |
JsonObjectArray |
操作结果列表 |
op_result_list.name |
string |
云手机名称 |
op_result_list.ctr_ip |
string |
云手机ip |
op_result_list.ctr_port |
int |
云手机端口 |
op_result_list.ins_slot_idx |
int |
云手机所在实例槽编号 |
op_result_list.op_result |
int |
操作结果. 1: 成功; 2: 名称重复; 3: 实例槽无效; 4: 实例槽已被使用; 5: 实例槽操作失败 |
由于创建和启动安卓容器耗时较长, 如果超时,需要通过/api/v1/docker/container/get/android-boot-status
接口查询容器状态。
例子
curl --location 'http://192.168.1.23:8999/api/v1/docker/container/create' \
--header 'X-Trace-Id: 3d9136d4-08a9-42c1-96c3-41850f65e6f5' \
--header 'X-Device-Id: 58e79e40334ea7e0f1183189ac892645' \
--header 'X-Token: a3f336082c19f881c5815498c0637132' \
--header 'Content-Type: application/json' \
--data '{
"image": "registry.cn-beijing.aliyuncs.com/cloudvphone/xy_vm_phone",
"image_tag": "v24.06.29.01",
"model_id": 1001,
"ins_name_slot_list": [
{
"name": "s-2-03CE6523-4C85-F2BA-8750-6F8576872454",
"slot_idx": 2
}
]
}'
{
"code": 200,
"message": "ok",
"ack": "92ec1f6c-0236-494f-8a52-6835f75da691",
"data": {
"op_result_list": [
{
"name": "s-2-03CE6523-4C85-F2BA-8750-6F8576872454",
"ctr_ip": "192.168.1.60",
"port": 5555,
"ins_slot_idx": 2,
"op_result": 1
}
]
}
}
查询安卓容器boot状态
接口地址: /api/v1/docker/container/get/android-boot-status
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待操作容器id |
name |
string |
有条件可选 |
待操作容器名 |
timeout |
int |
可选 |
最多延时执行时的超时时间, 1~60.单位: 秒 |
响应data
无
code 说明: 1031000: 安卓容器不存在; 1031001: 安卓容器未启动或超时; 200:安卓容器已启动
例子
curl --location 'http://192.168.1.23:8999/api/v1/docker/container/get/android-boot-status' \
--header 'X-Trace-Id: 3d9136d4-08a9-42c1-96c3-41850f65e6f5' \
--header 'X-Device-Id: 58e79e40334ea7e0f1183189ac892645' \
--header 'X-Token: 0d644a0b639d3c64ea5ffc5355081626' \
--header 'Content-Type: application/json' \
--data '{
"name": "s-2-04CE6523-4C85-F2BA-8750-6F8576872454"
}'
{
"code": 1031001,
"message": "安卓容器未启动或超时",
"ack": "3d9136d4-08a9-42c1-96c3-41850f65e6f5",
"data": {}
}
根据实例槽号查云手机ip+port
接口地址: /api/v1/ins-slot-status
入参
参数 |
值类型 |
是否必传 |
备注 |
slot_idx |
int |
是 |
实例槽编号 |
响应data
字段 |
值类型 |
备注 |
status |
int |
实例槽状态. 101: 有效且空闲; 102: 有效且正在使用 |
host_ip |
string |
云手机真实ip |
host_port |
string |
云手机adb端口 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/ins-slot-status' \
--header 'X-Trace-Id: 3d9136d4-08a9-42c1-96c3-41850f65e6f5' \
--header 'X-Token: bc636464aa4b452232446c7a8948b438' \
--header 'Content-Type: application/json' \
--data '{
"slot_idx": 5
}'
{
"code": 200,
"message": "ok",
"ack": "3d9136d4-08a9-42c1-96c3-41850f65e6f5",
"data": {
"status": 101,
"host_ip": "",
"host_port": ""
}
}
使用 Id 或 name 查询云手机 ip+port
接口地址: /api/v1/get/cloud-phone/status
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待停止容器id |
name |
string |
有条件可选 |
待停止容器名 |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
status |
int |
云手机状态. 1: 运行中; 2: 已停止; 3: 不存在 |
host_ip |
string |
云手机真实ip |
host_port |
string |
云手机adb端口 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/get/cloud-phone/status' \
--header 'X-Trace-Id: 3d9136d4-08a9-42c1-96c3-41850f65e6f5' \
--header 'X-Token: bc636464aa4b452232446c7a8948b438' \
--header 'Content-Type: application/json' \
--data '{
"Id": "d85f10f7b8090dfe5237156d383eeb6637655e918297741804805f82b7b0fe86"
}'
{
"code": 200,
"message": "ok",
"ack": "3d9136d4-08a9-42c1-96c3-41850f65e6f5",
"data": {
"status": 1,
"host_ip": "192.168.1.5",
"host_port": "5555"
}
}
停止安卓容器
接口地址: /api/v1/docker/container/stop
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待停止容器id |
name |
string |
有条件可选 |
待停止容器名 |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
重启安卓容器
接口地址: /api/v1/docker/container/restart
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待重启容器id |
name |
string |
有条件可选 |
待重启容器名 |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
删除安卓容器
接口地址: /api/v1/docker/container/remove
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待删除容器id |
name |
string |
有条件可选 |
待删除容器名 |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
重置安卓容器
接口地址: /api/v1/docker/container/reset
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待重置容器id |
name |
string |
有条件可选 |
待重置容器名 |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
运行现有云机
接口地址: /api/v1/docker/container/reload
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待重置容器id |
name |
string |
有条件可选 |
待重置容器名 |
dest_ins_slot |
int |
是 |
目标实例槽编号 |
force |
int |
可选 |
是否强制运行. 1: 若当前实例槽位存在其他的容器则先关闭在运行该容器; 0:(默认值) |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
此接口耗时较长,如果超时,需要通过/api/v1/docker/container/get/android-boot-status
接口查询容器状态。
例子
curl --location 'http://192.168.1.23:8999/api/v1/docker/container/reload' \
--header 'X-Trace-Id: 3d9136d4-08a9-42c1-96c3-41850f65e6f5' \
--header 'X-Device-Id: 58e79e40334ea7e0f1183189ac892645' \
--header 'X-Token: a3f336082c19f881c5815498c0637132' \
--header 'Content-Type: application/json' \
--data '{
"name": "s-2-04CE6523-4C85-F2BA-8750-6F8576872454",
"dest_ins_slot": 2
}'
设置 apps list
接口地址: /api/v1/docker/container/set/apps-list
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待操作容器id |
name |
string |
有条件可选 |
待操作容器名 |
apps_show_list |
List |
可选 |
可显示的应用列表 |
apps_show_list.pkg |
string |
是 |
包名 |
apps_show_list.versionCode |
string |
是 |
包 version code |
apps_show_list.versionCode |
string |
是 |
包 version code |
apps_show_list.label |
string |
是 |
包名称 |
apps_hide_list |
List |
可选 |
需要隐藏的应用列表 |
apps_hide_list.pkg |
string |
是 |
包名 |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
例子
curl --location 'http://192.168.0.136:8999/api/v1/docker/container/set/apps-list' \
--header 'X-Trace-Id: 2a13ef-61b8fe43a3-730b59909-9d95ed7' \
--header 'X-Device-Id: ddc79316de844ac2597f8da8959db782' \
--header 'X-Token: a1214a4f62140f2facb20a1a356a35d1' \
--header 'Content-Type: application/json' \
--data '{
"Id": "8b29d65af235952779518de0d19748575ad71d184930aacd038bb9322484b937",
"apps_show_list": [
{
"pkg": "com.tencent.mobileqq",
"versionCode": "4030",
"versionName": "8.9.55",
"label": "QQ"
},
{
"pkg": "com.tencent.mm",
"versionCode": "2380",
"versionName": "8.0.37",
"label": "WeChat"
}
],
"apps_hide_list": [
{
"pkg": "com.taobao.taobao"
}
]
}'
{
"code": 200,
"message": "ok",
"ack": "2a13ef-61b8fe43a3-730b59909-9d95ed7",
"data": {
"result": "操作成功"
}
}
设置云手机基本参数属性
接口地址: /api/v1/docker/container/set/device-info
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待操作容器id |
name |
string |
有条件可选 |
待操作容器名 |
oaid |
string |
可选 |
国内手机厂商的开放匿名标识(OAID).(不设置此属性时,不传此字段) |
aaid |
string |
可选 |
海外手机平台的安卓广告标识.(不设置此属性时,不传此字段) |
vaid |
string |
可选 |
开发者匿名设备标识符 (不设置此属性时,不传此字段) |
udid |
string |
可选 |
- (不设置此属性时,不传此字段) |
androidId |
string |
可选 |
安卓设备ID (不设置此属性时,不传此字段) |
wifimac |
string |
可选 |
wifi地址 (不设置此属性时,不传此字段) |
wifiname |
string |
可选 |
wifi名称 (不设置此属性时,不传此字段) |
btaddr |
string |
可选 |
蓝牙地址 (不设置此属性时,不传此字段) |
btname |
string |
可选 |
蓝牙名称 (不设置此属性时,不传此字段) |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
设置云手机基本参数属性
接口地址: /api/v1/docker/container/set/sim-info
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待操作容器id |
name |
string |
有条件可选 |
待操作容器名 |
sim_serial |
string |
可选 |
sim卡序列号 (不设置此属性时,不传此字段) |
sim_operator |
string |
可选 |
运营商信息 (不设置此属性时,不传此字段) |
sim_operator_country |
string |
可选 |
运营商地区 (不设置此属性时,不传此字段) |
sim_operator_number |
string |
可选 |
电话号码 (不设置此属性时,不传此字段) |
sim_operator_numeric |
string |
可选 |
MCC + MNC (不设置此属性时,不传此字段) |
sim_state |
string |
可选 |
开启状态, 如: READY (不设置此属性时,不传此字段) |
enable_telephony |
boolean |
可选 |
开启状态, 如: true (不设置此属性时,不传此字段) |
imei_id |
string |
可选 |
IMEI (不设置此属性时,不传此字段) |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
手机设置属性
接口地址: /api/v1/docker/container/set/property
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待操作容器id |
name |
string |
有条件可选 |
待操作容器名 |
property_list |
JsonObjectArray |
是 |
待设置的属性列表 |
property_list.key |
string |
是 |
待设置的属性名 |
property_list.val |
string |
可选 |
待设置的属性值 |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
例子
curl --location 'http://192.168.0.136:8999/api/v1/docker/container/set/property' \
--header 'X-Trace-Id: 2a13ef-61b8fe43a3-730b59909-9d95ed7' \
--header 'X-Device-Id: ddc79316de844ac2597f8da8959db782' \
--header 'X-Token: a1214a4f62140f2facb20a1a356a35d1' \
--header 'Content-Type: application/json' \
--data '{
"Id": "8b29d65af235952779518de0d19748575ad71d184930aacd038bb9322484b937",
"property_list": [
{"key": "ssk.dev.info.btaddr", "val": "94:eb:2c:7f:be:fd"},
{"key": "ssk.dev.info.btname", "val": "ctv"}
]
}'
{
"code": 200,
"message": "ok",
"ack": "2a13ef-61b8fe43a3-730b59909-9d95ed7",
"data": {
"result": "操作成功"
}
}
设置应用root权限
接口地址: /api/v1/docker/container/set/root-app
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待操作容器id |
name |
string |
有条件可选 |
待操作容器名 |
pkg_list |
StringArray |
是 |
待设置包名列表 |
注: Id 和 name 二选一
响应data
无
例子
curl --location 'http://192.168.0.103:8999/api/v1/docker/container/set/root-app' \
--header 'X-Token: a3f336082c19f881c5815498c0637132' \
--header 'Content-Type: application/json' \
--data '{
"Id": "919b03a5679acab4b2439a1e245df019f911f4cd0f78f5c2ac2b34b502e3fc2a",
"pkg_list": [
"com.tencent.mm",
"com.taobao.taobao"
]
}'
{
"code": 200,
"message": "ok",
"ack": "1a580605-eec3-49a1-8215-5a2fcd6afe00",
"data": {}
}
设置受保护应用
接口地址: /api/v1/docker/container/set/protected-app
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待操作容器id |
name |
string |
有条件可选 |
待操作容器名 |
pkg_list |
StringArray |
是 |
待设置包名列表,最多支持10个 |
注: Id 和 name 二选一
响应data
无
例子
curl --location 'http://192.168.0.103:8999/api/v1/docker/container/set/protected-app' \
--header 'X-Token: a3f336082c19f881c5815498c0637132' \
--header 'Content-Type: application/json' \
--data '{
"Id": "919b03a5679acab4b2439a1e245df019f911f4cd0f78f5c2ac2b34b502e3fc2a",
"pkg_list": [
"com.tencent.mm",
"com.taobao.taobao"
]
}'
{
"code": 200,
"message": "ok",
"ack": "1a580605-eec3-49a1-8215-5a2fcd6afe00",
"data": {}
}
安装应用
请求方式: 文件表单上传
接口地址: /api/v1/docker/container/install-pkg
文件表单字段
字段名 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待操作容器id |
name |
string |
有条件可选 |
待操作容器名 |
file |
File |
是 |
待安装应用文件 |
wait4Exit |
string |
可选 |
是否等待命令执行结果, true: 等待; false: 异步提交.默认异步提交 |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/docker/container/install-pkg' \
--header 'X-Token: a3f336082c19f881c5815498c0637132' \
--form 'Id="b36bc28e70044af5665312c29f69608ee3e869622dde2fe8dad893659dc03f14"' \
--form 'name=""' \
--form 'wait4Exit="false"' \
--form 'file=@"/Users/hy0kl/Downloads/copilot.xhs-release-v1.0.0-3.apk"'
{
"code": 200,
"message": "ok",
"ack": "cbab42f7-e96f-4dfc-a77b-52243c4f1dec",
"data": {
"result": "命令已提交"
}
}
执行 adb shell 命令
接口地址: /api/v1/docker/container/exec/adb-shell-cmd
入参
参数 |
值类型 |
是否必传 |
备注 |
Id |
string |
有条件可选 |
待操作容器id |
name |
string |
有条件可选 |
待操作容器名 |
cmd |
String |
是 |
命令 |
wait4Exit |
string |
可选 |
是否等待命令执行结果, true: 等待; false: 异步提交.默认异步提交 |
注: Id 和 name 二选一
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/docker/container/exec/adb-shell-cmd' \
--header 'X-Token: 0d644a0b639d3c64ea5ffc5355081626' \
--header 'Content-Type: application/json' \
--data '{
"Id": "b36bc28e70044af5665312c29f69608ee3e869622dde2fe8dad893659dc03f14",
"cmd": "ls -lht /sdcard/",
"wait4exit": "true"
}'
{
"code": 200,
"message": "ok",
"ack": "6e4946ab-8f5c-411f-b564-dd163cf58608",
"data": {
"result": "total 52K\ndrwxrws--- 2 u0_a67 media_rw 4.0K 2024-08-24 16:58 Documents\ndrwxrws--- 3 u0_a67 media_rw 4.0K 2024-08-24 16:09 Movies\ndrwxrws--- 3 u0_a67 media_rw 4.0K 2024-08-24 16:09 Music\ndrwxrws--- 3 u0_a67 media_rw 4.0K 2024-08-24 16:09 Pictures\ndrwxrws--- 2 u0_a67 media_rw 4.0K 2024-08-24 16:09 Audiobooks\ndrwxrws--- 2 u0_a67 media_rw 4.0K 2024-08-24 16:09 Recordings\ndrwxrws--- 2 u0_a67 media_rw 4.0K 2024-08-24 16:09 Alarms\ndrwxrws--- 2 u0_a67 media_rw 4.0K 2024-08-24 16:09 DCIM\ndrwxrws--- 2 u0_a67 media_rw 4.0K 2024-08-24 16:09 Notifications\ndrwxrws--- 2 u0_a67 media_rw 4.0K 2024-08-24 16:09 Podcasts\ndrwxrws--- 2 u0_a67 media_rw 4.0K 2024-08-24 16:09 Ringtones\ndrwxrws--- 2 u0_a67 media_rw 4.0K 2024-08-24 16:09 Download\ndrwxrws--x 5 media_rw media_rw 4.0K 2024-08-24 16:09 Android\n"
}
}
获取新镜像
接口地址: /api/v1/docker/image/pull
入参
参数 |
值类型 |
是否必传 |
备注 |
repository |
string |
是 |
镜像仓库名称 |
tag |
string |
是 |
镜像标签版本号 |
响应data
字段 |
值类型 |
备注 |
result |
string |
操作结果 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/docker/image/pull' \
--header 'X-Token: 0bf33906426b6d714eb58cc94079fc56' \
--header 'Content-Type: application/json' \
--data '{
"repository": "registry.cn-beijing.aliyuncs.com/cloudvphone/gms",
"tag": "v24.06.29.01"
}'
{
"code": 200,
"message": "ok",
"ack": "4b870d7b-4997-426b-90a5-4d5e927e33d0",
"data": {
"result": "命令已提交"
}
}
异步查询获取镜像的进度
接口地址: /api/v1/docker/image/pull/progress
入参
参数 |
值类型 |
是否必传 |
备注 |
repository |
string |
是 |
镜像仓库名称 |
tag |
string |
是 |
镜像标签版本号 |
响应data
字段 |
值类型 |
备注 |
progress |
int |
进度,0-100 |
例子
curl --location 'http://192.168.1.23:8999/api/v1/docker/image/pull/progress' \
--header 'X-Token: 0bf33906426b6d714eb58cc94079fc56' \
--header 'Content-Type: application/json' \
--data '{
"repository": "registry.cn-beijing.aliyuncs.com/cloudvphone/gms",
"tag": "v24.06.29.01"
}'
{
"code": 200,
"message": "ok",
"ack": "daf5af62-de78-47b0-81d6-cf048cbfa903",
"data": {
"progress": 100
}
}