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
    }
}