ARMCLOUD 开发者文档中心
  • 简体中文
  • English
  • 简体中文
  • English
  • 产品介绍
  • 产品计费
  • 服务端 OpenAPI
    • 使用指南
    • 接口签名v1.0
    • 接口文档
    • OpenAPI 3.1规范(AI工具专用)
    • LLMs.txt (AI快速参考)
    • 错误码说明
    • 回调业务类型码
    • 实例列表
    • 安卓改机属性列表
    • 更新日志
  • Android端 SDK
    • 示例搭建
    • 接口说明
    • 回调函数
    • 错误码
    • 更新日志
  • Web H5端 SDK
    • 示例搭建
    • 接口说明
    • 回调函数
    • 错误码
    • 更新日志
  • Windows PC端 SDK
    • 示例搭建
    • 接口说明
    • 回调函数
    • 更新日志
  • 端侧与云机通信开发
    • AIDL接入方式
    • 系统服务API(aidl)
  • 场景解决方案
    • 类XP、LSP Hook框架
    • 传感器数据动态仿真
  • 常见问题
    • 平台基础问题
    • 存储相关问题
    • 网络连接问题
    • 应用管理问题
    • 开发集成问题
    • 性能优化问题
    • 计费相关问题
    • 技术支持
  • 相关协议
    • 云手机SDK隐私政策

📑 接口文档导航

本文档包含 140+ API接口,涵盖云手机全生命周期管理

🚀 快速开始

  • API域名 - 选择正确的服务区域
  • 接口限流规则 - 了解调用频率限制

📦 接口分类总览

分类说明主要功能
🔐 SDK Token签发临时Token获取与管理获取临时Token、清除Token
💾 板卡管理板卡资源的查询与操作板卡列表、算力查询、重启重置
📱 实例管理云手机实例全生命周期管理实例操作、属性设置、ADB调试、屏幕交互、数据注入
🔔 回调管理异步任务回调配置回调地址配置、各类任务回调通知
📁 文件管理文件上传下载与管理云盘上传、实例文件操作
📦 应用管理应用安装、启停与黑白名单应用安装卸载、黑白名单管理
🌐 网存2.0新一代网络存储方案存储实例管理、备份还原
💿 网存1.0经典网络存储管理存储创建、开关机、备份删除
🛡️ 应用安全策略V2.0应用安全管控应用安全策略配置
💽 镜像管理系统镜像查询获取镜像列表
👥 账户管理子账户与权限管理子账户管理、板卡授权

API域名

重要提示

请根据您的服务区域选择正确的API域名

区域域名适用范围
国内中国大陆地区用户
海外海外及港澳台地区用户

接口限流规则

限流提醒

所有OpenAPI接口都受到访问频率限制,请合理控制调用频率。详细限流规则请参考 使用指南 - 接口限流说明

主要限流规则:

用户类型QPS限制(每秒)每分钟限制计算方式
测试用户200次/秒5,000次/分钟滑动窗口,Access Key级别
付费用户2,000次/秒30,000次/分钟滑动窗口,Access Key级别

重要说明

  • 每个Access Key独立计算限流,不同Key之间不共享额度
  • 单个Access Key下所有接口调用共享同一个限流额度
  • 必须同时满足QPS和每分钟两个维度的限制

限流响应:当触发限流时返回HTTP 429状态码和错误信息

{
  "msg": "Too many requests. Please try again later..",
  "code": 429,
  "data": null
}

响应头说明:

响应头说明示例
X-RateLimit-Limit当前限流周期的请求上限,根据限流类型而定200
X-RateLimit-Remaining当前限流周期剩余可用请求数150
X-RateLimit-Reset当前限流周期重置时间戳(Unix时间戳)1618900361
X-RateLimit-Type触发的限流类型qps

SDK Token签发

签发临时 STS Token,用于对接入云手机服务的用户进行鉴权。

获取SDK临时Token

接口地址

/openapi/open/token/stsToken

请求方式

GET

请求数据类型

application/json

请求示例

package com.xiaosuan.api.utils;

import com.alibaba.fastjson.TypeReference;
import com.xiaosuan.armcloud.sdk.configure.ArmCloudConfig;
import com.xiaosuan.armcloud.sdk.constant.ArmCloudApiEnum;
import com.xiaosuan.armcloud.sdk.http.DefaultHttpExecutor;
import com.xiaosuan.armcloud.sdk.model.Result;
import com.xiaosuan.armcloud.sdk.service.ArmCloudApiService;
import com.xiaosuan.armcloud.sdk.service.impl.ArmCloudApiServiceImpl;

import java.util.HashMap;

public class test {
    /**
     * 获取sts_token
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        ArmCloudConfig armCloudConfig = new ArmCloudConfig();
        armCloudConfig.setOpenUrl("https://xxx");
        armCloudConfig.setService("armcloud-paas");
        armCloudConfig.setHost("xxx");
        armCloudConfig.setAk("xxxxxx");
        armCloudConfig.setSk("xxxxxx");
        ArmCloudApiService armcloudApiService = new ArmCloudApiServiceImpl(armCloudConfig, new DefaultHttpExecutor());
        Result<Object> result = armcloudApiService.execute(ArmCloudApiEnum.STS_TOKEN,new HashMap<>(), new TypeReference<Result<Object>>() {});
        System.out.println(result);

    }
}

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─tokenxxxx-xxxx-xxxxx-xxxxStringsdk通信token

响应示例

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": {
  "token": "xxxx-xxxx-xxxxx-xxxx"
 }
}

获取SDK临时Token(根据padCode)

签发临时 STS Token,用于对接入云手机服务的用户进行鉴权(该token只能用于请求的padCode)。

接口地址

/openapi/open/token/stsTokenByPadCode

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeACXXXXXString是实例code

请求示例

{"padCode":"AC32010230001"}

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─tokenxxxx-xxxx-xxxx-xxxxStringsdk通信token

响应示例

{"code":200,"msg":"success","ts":1735209109185,"data":{"token":"xxx-xxx-xxx-xxxx"}}

清除SDK授权Token

接口地址

/openapi/open/token/clearStsToken

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
token123String是

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject

响应示例

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": null
}

错误码

错误码错误说明操作建议
120008token不属于当前用户参考接口说明,检查请求参数和传值

清除SDK临时Token(根据padCode)

接口地址

/openapi/open/token/clearStsTokenByPadCode

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeACXXXXXString是实例code

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1757656454505Long时间戳
datanullObject响应数据(本接口清除token无返回值)
traceIdextrgsyx962oString链路追踪ID

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1757656454505,
  "data": null,
  "traceId": "extrgsyx962o"
}

板卡管理

板卡列表

根据查询条件分页获取板卡列表。

接口地址

/openapi/open/device/list

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
page1Integer是页码
rows10Integer是条数
padAllocationStatus2Integer否实例分配状态:-2删除失败 -1分配失败 0-未分配;1-分配中 2-已分配 3-删除中
deviceStatus1Integer否物理机状态 0-离线;1-在线
armServerCodeXS-MARS3500SA-0019String否服务器code
deviceCode192.168.230.100String否板卡code
deviceIp172.31.3.3String否deviceIp
armServerStatus1Integer否服务器状态 0-离线;1-在线
idc1String否机房Id
deviceIpListString[]否
├─172.31.3.3String否板卡IP

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─page1Integer当前页
├─rows10Integer每页的数量
├─size1Integer当前页的数量
├─total1Integer总记录数
├─totalPage1Integer总页数
├─pageDataobject[]列表
├─├─id11236Integer板卡id
├─├─deviceLevelm2-3String云机实例级别
├─├─deviceCodeAC32010250020String物理机编号
├─├─deviceOutCode03-58614134b4357321String外部物理机编码
├─├─deviceStatus172.31.3.0/24Integer物理机状态 0-离线;1-在线
├─├─deviceIp172.31.3.3Integer物理机IP
├─├─idc1Integer外部机房编码
├─├─armServerCodeACS32010260000StringARM服务器编码
├─├─createByadminString创建者
├─├─createTime2025-01-02 10:56:13String创建时间
├─├─padAllocationStatus2Integer实例分配状态:-2删除失败 -1分配失败 0-未分配;1-分配中 2-已分配 3-删除中
├─├─clusterCode001String集群code
├─├─macAddress52:74:01:b8:58:40StringMAC地址
├─├─initStatus1String初始化状态 0-初始化失败 1-初始化成功 2-初始化中
├─├─cbsInfo2.0.8String板卡CBS信息
├─├─nodeId1String刀片ID
├─├─position3String卡槽位置
├─├─gateway192.168.3.1String板卡网关

请求示例

{
    "padAllocationStatus": 2,
        "deviceStatus": 1,
        "armServerCode": "ACS32010260000",
        "deviceCode": "AC32010250020",
        "deviceIpList": [
        "172.31.3.3"
    ],
        "deviceIp": "172.31.3.3",
        "armServerStatus": 1
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1737626655161,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 1,
            "total": 1,
            "totalPage": 1,
            "pageData": [
            {
                "page": 1,
                "rows": 10,
                "id": 11236,
                "deviceLevel": "m2-3",
                "deviceCode": "AC32010250020",
                "deviceOutCode": "03-58614134b4357321",
                "deviceStatus": true,
                "deviceIp": "172.31.3.3",
                "idc": "1",
                "armServerCode": "ACS32010260000",
                "createBy": "admin",
                "createTime": "2025-01-02 10:56:13",
                "padAllocationStatus": 2,
                "deleteFlag": false,
                "clusterCode": "001",
                "macAddress": "52:74:01:b8:58:40",
                "initStatus": 1,
                "cbsInfo": "2.0.8",
                "nodeId": "1",
                "position": "3",
                "gateway": null
            }
        ]
    }
}

指定板卡查询所属账户

根据板卡编号查询所属账户。

接口地址

/openapi/open/device/queryDeviceOwner

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
deviceCodeZSC250403MxxxxString是板卡编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString接口请求状态信息
dataObject业务返回数据
├─deviceCodeZSC250403MxxxxString板卡编号
├─customerAccountxxxString板卡所属账户
traceIdextrgsyx962oString链路追踪ID
请求示例
{
    "deviceCode":"ZSC250403Mxxxx"
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1772447216373,
        "data": {
        "deviceCode": "ZSC250403Mxxxx",
            "customerAccount": "xxxx"
    },
    "traceId": "feslqausejuo"
}

查询算力使用情况

汇总算力单元的使用情况。

校验说明:子账号只能查询自身;指定查询时子账号列表必须属于当前主账号的下属账号集合。

接口地址

/openapi/open/device/computeUsage

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
queryRange0Integer否查询范围:0-主账号及全部子账号;1-仅自身(默认);2-指定子账号列表
subCustomerIds[862, 863]Long[]否子账号ID列表,queryRange=2 时必填

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]账户算力使用列表
├─customerId10001Long客户ID
├─customerAccounttest001String客户账号
├─usedCompute2Long已使用算力数量
├─totalCompute8Long总算力数量

请求示例

{
  "queryRange": 0
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1737626655161,
  "data": [
    {
      "customerId": 10001,
      "customerAccount": "master001",
      "usedCompute": 4,
      "totalCompute": 12
    },
    {
      "customerId": 10002,
      "customerAccount": "sub001",
      "usedCompute": 1,
      "totalCompute": 4
    }
  ]
}

板卡重启

断电重启板卡, 将影响板卡上创建的所有实例

该接口一般用在重启实例也无法恢复的情况

接口地址

/openapi/open/device/powerReset

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
deviceIpsString[]是
├─172.31.4.124String是物理设备IP
type2String[]是重启类型 1:硬重启 2:断电重启

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─deviceIp172.31.4.124String物理设备IP
├─errorMsg“”String失败的原因
├─deviceOutCodeAC22030010000String云机编号

请求示例

{
 "deviceIps": [
  "172.31.4.124"
 ],
 "type":2
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1713773577581,
    "data": [
        {
            "taskId": 1,
            "deviceIp": "172.31.4.124",
            "errorMsg": null,
            "deviceOutCode": "AC22030010000"
        }
    ]
}

错误码

错误码错误说明操作建议
110030执行断电重启命令失败,参数请求不合规参数请求不合规
110032物理IP不存在请检查物理设备IP是否正确
110033执行断电重启命令失败联系相关人员

重置板卡

重置板卡,清除对应实例并重启板卡

接口地址

/openapi/open/device/resetDevice

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
remark确认删除String是重置备注信息
deviceIpsString[]是物理机Ip列表(最少1个,最大128个)
├─172.31.3.3String是板卡IP

响应参数

参数名示例值参数类型参数描述
code200Integer响应码
msgsuccessString
ts1713773577581Long
data1个板卡删除实例!String消息内容

请求示例

{
    "deviceIps": [
        "172.31.3.3"
    ],
        "remark": "1"
}

响应示例

{
    "msg": "success",
        "code": 200,
        "data": "1个板卡删除实例!",
        "ts": 1739954448827
}

错误码

错误码错误说明操作建议
110060板卡不存在确认下板卡IP是否正确

查询最新预热成功镜像

获取最近预热成功的镜像ID列表,最多返回3个记录。

接口地址

/openapi/open/device/getLatestWarmupSuccessImages

请求方式

GET

请求数据类型

无

请求Query参数

参数名示例值参数类型是否必填参数描述
customerId178Long否客户ID(管理员可传此参数查询指定客户的镜像,普通用户忽略此参数)

说明:

  • 普通用户:无需传参数,自动查询当前用户的预热成功镜像
  • 管理员用户:可传 customerId 参数查询指定客户的预热成功镜像

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1713773577581Long时间戳
traceIdewab8qjqbaioString链路追踪ID
dataWarmupSuccessImageVO[]最新预热成功镜像信息列表,最多3个
├─ customerId178Long客户ID
├─ customerAccounttestaString客户账号
├─ customerName张三String客户名称
├─ imageIdIMG-20250305001String镜像ID
├─ imageVersion20251027_1String镜像版本
├─ imageDesc测试String镜像描述
├─ supportF2fs1Integer是否支持f2fs(1:支持 0:不支持)
├─ fileTag0Integer文件标签(1:可删除 0:不能删除)
├─ androidVersion13Integer安卓版本

请求示例

/openapi/open/device/getLatestWarmupSuccessImages

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1713773577581,
    "traceId": "ewab8qjqbaio",
    "data": [
        {
            "customerId": 178,
            "customerAccount": "testa",
            "customerName": "张三",
            "imageDesc": "测试",
            "imageVersion": "20251027_1",
            "imageId": "IMG-20250305001",
            "fileTag": 1,
            "supportF2fs": 1,
            "androidVersion": 13
        },
        {
            "customerId": 178,
            "customerAccount": "testa",
            "customerName": "张三",
            "imageDesc": "测试",
            "imageVersion": "20251027_1",
            "imageId": "IMG-20250304002",
            "fileTag": 1,
            "supportF2fs": 1,
            "androidVersion": 13
        },
        {
            "customerId": 178,
            "customerAccount": "testa",
            "customerName": "张三",
            "imageDesc": "测试",
            "imageVersion": "20251027_1",
            "imageId": "IMG-20250303005",
            "fileTag": 1,
            "supportF2fs": 1,
            "androidVersion": 12
        }
    ]
}

网存2.0

一、网存2.0对比网存1.0

NetPadV2FlowDoc.png

  • 大幅优化了 API 接口,降低开机/关机任务失败率。
  • 网存2.0将实例与存储二合一,无需再进行复杂的存储块与实例关系管理,删除实例即删除实例与对应存储。

二、快速入门

netPadV2UseDoc.png

  1. 购买板卡获得算力
  2. 查询板卡信息
  3. 设置板卡规格(多开数)
  4. 创建网存实例
  5. 使用刚创建好的实例或之前关机的实例进行开机
  6. 完成业务关机
  7. 将单个实例克隆成多个后使用(克隆出的实例是单独的实体,可以修改实例的机型属性、镜像版本等)

三、API 接口

创建网存实例

用于创建网存2.0实例接口,支持批量创建,单次最多创建100个实例。

接口地址

/openapi/open/pad/v2/net/storage/res/create

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
clusterCode001String是集群编码,标识实例所属集群
specificationCodeSPEC_001String是规格代码,定义实例的硬件规格
imageIdIMG_123456String是镜像ID,用于创建实例的系统镜像
number5Integer是实例数量,必须在1-100之间
storageSize32Integer是存储大小(GB),必须大于0,支持:4,8,16,32,64,128,256
screenLayoutCodeLAYOUT_001String否屏幕布局编码,非随机ADI模板且未传入ADI模板参数时必填
randomADITemplatesfalseBoolean否是否随机选择ADI模板,默认false
excludeRealPhoneTemplateIds[101,102]List<Long>否随机ADI模板时需排除的模板ID列表,randomADITemplates为true时生效
realPhoneTemplateId12345Long否ADI模板ID,指定使用的ADI模板
countryCodeSGString否国家编码。仅首次开机生效,为空时使用创建时传入的国家编码,如都为空则默认SG。
groupId0Integer否分组ID,默认为公共池。

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data[ {...} ]Object[]创建结果列表
├─ padCodeACN1234567890123String实例编码
├─ padName网存实例001String实例名称
├─ status0Integer实例状态

请求示例

{
  "clusterCode": "001",
  "specificationCode": "SPEC_001",
  "imageId": "IMG_123456",
  "number": 5,
  "storageSize": 32,
  "screenLayoutCode": "LAYOUT_001",
  "randomADITemplates": true,
  "excludeRealPhoneTemplateIds": [101, 102],
  "countryCode": "SG"
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN1234567890123",
      "clusterCode": "001",
      "storageSize": 32
    },
    {
      "padCode": "ACN1234567890124",
      "clusterCode": "001", 
      "storageSize": 32
    }
  ],
  "ts": 1742536327373
}

错误码

错误码错误说明操作建议
100000集群编码不能为空提供有效的集群编码
100000规格代码不能为空提供有效的规格代码
100000镜像ID不能为空提供有效的镜像ID
100000实例数量必须在1-100之间调整实例数量到有效范围内
100000存储大小必须大于0提供有效的存储大小
100000屏幕布局编码不能为空在非随机ADI模板并且未指定ADI模板时下提供屏幕布局编码
100000DNS格式错误确认DNS格式是否正确
110044实例规格不存在确认规格代码是否正确,联系管理员确认规格配置
110041镜像不存在确认镜像ID是否正确,检查镜像是否可用
110045屏幕布局不存在确认屏幕布局编码是否正确
110099ADI模板不存在,请检查参数确认ADI模板ID是否正确
220003暂不支持当前存储规格,请参考文档设置使用支持的存储规格:4,8,16,32,64,128,256GB
220009当前集群存储容量不足,请联系管理员联系管理员增加存储容量或删除清理实例
110077获取实例MAC失败,请重试稍后重试或联系管理员
网存实例批量开机

用于对多个网存实例进行批量开机操作

接口地址

/openapi/open/pad/v2/net/storage/batch/boot/on

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes["ACN250321HRKNE3F", "ACN250321HRKNE3G"]String[]是需要开机的实例编码列表,数量范围1-200个
dns8.8.8.8String否DNS配置
countryCodeSGString否国家编码(具体查看:https://chahuo.com/country-code-lookup.html)
androidProp{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}Object否安卓属性配置,参考 安卓改机属性列表(注意: )
timeout1800Integer否超时时间(秒),范围300-7200秒(5分钟-120分钟)
imageIdimg-25081965158String否镜像ID,支持开机时更换镜像ID,每次开机传入时均可生效。
regenSimtrueBoolean否是否需要根据国家编码重新生成sim信息(注意:之前只有在首次开机时才会根据国家编码生成sim信息,regenSim为ture不管是否首次开机都会根据国家编码生成sim信息,默认false)
certCodeACN631098529xxxxxString否指定证书编码,不传系统默认选择证书

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200不代表实例操作成功,实例是否操作成功需要自行判断successList)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data{...}Object操作结果数据
├─ successList[{...}]Array操作成功的列表(异步回调,代表当前异步执行成功,业务结果需等待回调)
├─ successList[].taskId13023Integer任务ID
├─ successList[].padCodeACN280512603291648String实例编码
├─ successList[].vmStatus0Integer实例状态
├─ failList[{...}]Array操作失败的列表,由于业务校验不通过或是其他异常导致的无法操作
├─ failList[].padCodeACN279133733257216String实例编码
├─ failList[].errCode110028String错误码
├─ failList[].errMsg实例不存在String失败原因
请求示例
{
  "padCodes": ["ACN250321HRKNE3F", "ACN250321HRKNE3G"],
  "dns": "8.8.8.8",
  "countryCode": "US",
  "androidProp": {"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"},
  "timeout": 1800
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1752480095637,
    "data": {
        "successList": [
            {
                "taskId": 10111,
                "padCode": "ACN281696605700096",
                "vmStatus": 0
            }
        ],
        "failList": [
            {
                "errCode": 110028,
                "padCode": "ACN281696605700095",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700094",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700093",
                "errMsg": "实例不存在"
            }
        ]
    }
}

错误码

错误码错误说明操作建议
100000实例编码列表不能为空确保padCodes参数不为空
100000实例数量范围1-200确保padCodes数量在1-200范围内
100000超时时间必须在5分钟-120分钟之间确保timeout参数在300-7200秒范围内
100000DNS格式错误确认DNS格式是否正确
110042存在不属于当前用户的实例检查实例是否属于当前用户
110071存在非网存实例确认实例类型为网存实例
110079存在未释放算力的实例等待算力释放后重试
111070请勿重复操作,当前实例正在开机中等待当前开机操作完成后重试
111076请勿重复操作,当前实例正在关机中等待关机操作完成后重试
111071存在非关机且非开机失败状态的实例,不允许操作开机确认实例状态为关机或开机失败状态
111074网存实例批量开机失败(系统异常)系统异常,请稍后重试或联系技术支持
110074获取算力单元失败,请重试稍后重试或联系管理员
110075获取实例IP失败,请重试稍后重试
110076ARM服务器网段不存在联系管理员检查网段配置
2200014当前集群下没有可用的算力资源,算力资源不足,请联系管理员处理等待算力资源释放或联系管理员
111079当前实例所属板卡已离线稍后重试或联系管理员
111081不支持网存1.0实例使用网存2.0实例调用接口
网存实例批量关机

用于对网存2.0实例进行批量关机操作。支持同时关机多个实例,只有运行中或关机失败状态的实例才能进行关机操作。

接口地址

/openapi/open/pad/v2/net/storage/batch/off

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes["ACN250321HRKNE3F", "ACN250321HRKNE3G"]String[]是需要关机的实例编码列表,最多允许同时关机200个实例
timeout1800Integer否超时时间(秒),范围:300-7200秒(5分钟-120分钟)
forceDelfalseBoolean否 是否强制删除(会直接关机并删除实例,) 默认为false CBS版本2.3.5以上支持

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200不代表实例操作成功,实例是否操作成功需要自行判断successList)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data{...}Object操作结果数据
├─ successList[{...}]Array操作成功的列表(异步回调,代表当前异步执行成功,业务结果需等待回调)
├─ successList[].taskId13023Integer任务ID
├─ successList[].padCodeACN280512603291648String实例编码
├─ successList[].vmStatus0Integer实例状态
├─ failList[{...}]Array操作失败的列表,由于业务校验不通过或是其他异常导致的无法操作
├─ failList[].padCodeACN279133733257216String实例编码
├─ failList[].errCode110028String错误码
├─ failList[].errMsg实例不存在String失败原因

请求示例

{
  "padCodes": ["ACN250321HRKNE3F", "ACN250321HRKNE3G"],
  "timeout": 1800
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1752480095637,
    "data": {
        "successList": [
            {
                "taskId": 10111,
                "padCode": "ACN281696605700096",
                "vmStatus": 0
            }
        ],
        "failList": [
            {
                "errCode": 110028,
                "padCode": "ACN281696605700095",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700094",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700093",
                "errMsg": "实例不存在"
            }
        ]
    }
}

错误码

错误码错误说明操作建议
100000实例编码列表不能为空确保padCodes参数不为空
100000实例数量范围1-200确保实例数量在1-200范围内
100000超时时间必须在5分钟-120分钟之间设置合理的超时时间(300-7200秒)
110028实例不存在检查实例编码是否正确
110071存在非网存实例确保操作的都是网存实例
110042存在不属于当前用户的实例检查实例归属权限
111072实例未绑定算力,无法关机确保实例已绑定算力资源
111073网存实例连续关机失败检查实例状态,联系管理员处理
111070请勿重复操作,当前实例正在开机中等待当前开机操作完成后重试
111076请勿重复操作,当前实例正在关机中等待关机操作完成后重试
111078存在非运行中且非关机失败状态的实例,不允许操作关机确认实例状态为运行中或关机失败
111079当前实例所属板卡已离线稍后重试或联系管理员
111080CBS版本不支持强制删除有需要请联系管理员升级CBS版本
111081不支持网存1.0实例使用网存2.0实例调用接口
网存实例批量删除

用于批量删除网存实例,支持传入多个实例进行批量删除操作。

接口地址

/openapi/open/pad/v2/net/storage/batch/delete

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes["ACN250321HRKNE3F", "ACN250321HRKNE3G"]String[]是需要删除的实例编码列表,数量范围1-200个
timeout1800Integer否超时时间(秒),范围300-7200秒(5分钟-120分钟)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200不代表全部实例操作成功,实例是否操作成功需要自行判断successList)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data{...}Object操作结果数据
├─ successList[{...}]Array操作成功的列表(异步回调,代表当前异步执行成功,业务结果需等待回调)
├─ successList[].taskId13023Integer任务ID
├─ successList[].padCodeACN280512603291648String实例编码
├─ successList[].vmStatus0Integer实例状态
├─ failList[{...}]Array操作失败的列表,由于业务校验不通过或是其他异常导致的无法操作
├─ failList[].padCodeACN279133733257216String实例编码
├─ failList[].errCode110028String错误码
├─ failList[].errMsg实例不存在String失败原因
├─ completeList[{...}]Array操作完成的列表,不需要进行异步操作的实例
├─ completeList[].padCodeACN279133733257231String实例编码

请求示例

{
  "padCodes": ["ACN250321HRKNE3F", "ACN250321HRKNE3G"],
  "timeout": 1800
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1752480095637,
    "data": {
        "successList": [
            {
                "taskId": 10111,
                "padCode": "ACN281696605700096",
                "vmStatus": 0
            }
        ],
        "failList": [
            {
                "errCode": 110028,
                "padCode": "ACN281696605700095",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700094",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700093",
                "errMsg": "实例不存在"
            }
        ],
        "completeList": [
            {
                "padCode": "ACN281696605700096"
            }
        ]
    }
}

错误码

错误码错误说明操作建议
100000实例编码列表不能为空检查padCodes参数是否传递
100000实例数量范围1-200检查padCodes数组长度是否在有效范围内
100000超时时间必须在5分钟-120分钟之间检查timeout参数是否在300-7200秒范围内
110028实例不存在检查传入的实例编码是否正确
110042存在不属于当前用户的实例检查实例是否属于当前登录用户
110071存在非网存实例确认传入的实例都是网存实例
111070请勿重复操作,当前实例正在开机中等待开机操作完成后再进行删除
111073当前实例非关机状态实例不允许删除确保所有实例都处于关机状态再进行删除
111077请勿重复操作,当前实例正在删除中等待当前删除操作完成
111079当前实例所属板卡已离线稍后重试或联系管理员
111081不支持网存1.0实例使用网存2.0实例调用接口
网存实例克隆

用于对单个网存实例进行克隆操作,支持指定克隆数量和备注信息。该接口只支持关机状态且已开机过的网存2.0实例。另外需要特别注意:

接口地址

/openapi/open/pad/v2/net/storage/clone

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeACN250321HRKNE3FString是需要克隆的原始实例编码
number2Integer是克隆数量,范围1-100个

响应参数

参数名示例值参数类型参数描述
code200Integer状态码,200表示成功
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data{...}Object克隆结果信息
├─ successList[{...}]Array操作成功的列表(异步回调,代表当前异步执行成功,业务结果需等待回调)
├─ successList[].taskId13023Integer任务ID
├─ successList[].padCodeACN280512603291648String实例编码
├─ successList[].vmStatus0Integer实例状态
├─ failList[{...}]Array操作失败的列表,由于业务校验不通过或是其他异常导致的无法操作
├─ failList[].padCodeACN279133733257216String实例编码
├─ failList[].errCode110028String错误码
├─ failList[].errMsg实例不存在String失败原因

请求示例

{  
    "padCode": "ACN250321HRKNE3F",
    "number": 2,
    "remark": "测试克隆"  
}  

响应示例

{
    "msg": "success",
    "code": 200,
    "data": {
        "successList": [
            {
                "taskId": 13023,
                "padCode": "ACN250321HRKNE3F",
                "vmStatus": 0
            }
        ],
        "failList": []
    },
    "ts": 1742536327373
}

回调示例

{
  "endTime": 1754724268268,
  "padCode": "ACN319190980034587",
  "taskBusinessType": 1304,
  "taskContent": "[\"ACN319348753039360\",\"ACN319348753039363\",\"ACN319348753039366\",\"ACN319348753039369\",\"ACN319348753039372\",\"ACN319348753039375\",\"ACN319348753039378\",\"ACN319348753039381\",\"ACN319348753039384\",\"ACN319348753039387\"]",
  "taskId": 10682,
  "taskResult": "Success",
  "taskStatus": 3
}

错误码

错误码错误说明操作建议
100000请求参数不正确检查请求参数是否完整
100000实例编号不能为空确保padCode参数不为空
100000克隆数量不能为空且必须大于0确保number参数大于0且不为空
100000克隆数量不能超过100确保number参数不超过100
111081不支持网存1.0实例确保实例类型为网存V2实例
110028实例不存在检查实例编码是否正确
111083非关机状态的实例不允许克隆确保实例状态为关机状态
111085实例不存在开机行为,不允许克隆确保实例至少开机过一次
111082网存存储单元不存在检查实例存储配置是否正常
111086实例开机后未产生数据,不允许克隆确保实例有有效的存储数据
111087CBS版本不支持克隆,请升级CBS版本后重试请联系升级CBS版本
111084请勿重复操作,当前实例正在克隆中最好不要并发调用
111070请勿重复操作,当前实例正在开机中最好不要并发调用
111076请勿重复操作,当前实例正在关机中最好不要并发调用
111077请勿重复操作,当前实例正在删除中最好不要并发调用
500系统异常系统异常,请稍后重试或联系技术支持

应用安全策略V2.0

一、API 接口

分页查询应用安全策略组列表

用于分页查询应用安全策略组列表,支持按策略组名称和类型进行筛选,使用lastId+rows方式分页查询。

接口地址

/openapi/open/appSecurityPolicyGroup/pageList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
policyName测试策略组String否策略组名称(模糊查询)
policyType0Integer否策略组类型(0-黑名单,1-白名单)
lastId0Long否上次查询的最后一条记录ID,首次查询传null或0
rows10Integer是查询数量,范围1-1000,默认10

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data{...}Object分页结果数据
├─ pageData[{...}]Array策略组列表
├─ pageData[].id123Long策略组ID
├─ pageData[].policyName测试策略组String策略组名称
├─ pageData[].policyType0Integer策略组类型(0-黑名单,1-白名单)
├─ pageData[].appCount5Integer应用数量
├─ pageData[].padCount10Integer实例数量
├─ pageData[].remark备注信息String备注
├─ pageData[].createTime2025-01-29 10:00:00String创建时间
├─ pageData[].updateTime2025-01-29 10:00:00String更新时间
├─ lastId123Long最后一条记录ID,用于下次分页查询
├─ rows10Integer查询数量
├─ size10Integer当前页的数量
├─ hasNexttrueBoolean是否还有下一页

请求示例

{
  "policyName": "测试",
  "policyType": 0,
  "lastId": 0,
  "rows": 10
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": {
    "pageData": [
      {
        "id": 123,
        "policyName": "测试策略组",
        "policyType": 0,
        "appCount": 5,
        "padCount": 10,
        "remark": "备注信息",
        "createTime": "2025-01-29 10:00:00",
        "updateTime": "2025-01-29 10:00:00"
      }
    ],
    "lastId": 123,
    "rows": 10,
    "size": 10,
    "hasNext": true
  },
  "ts": 1742536327373
}
查询应用安全策略组详情

用于根据策略组ID查询应用安全策略组的详细信息,包括关联的应用和实例信息。

接口地址

/openapi/open/appSecurityPolicyGroup/detail

请求方式

POST

请求数据类型

application/json

请求参数

参数名示例值参数类型是否必填参数描述
id123Long是策略组ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data{...}Object策略组详情数据
├─ id123Long策略组ID
├─ policyName测试策略组String策略组名称
├─ policyType0Integer策略组类型(0-黑名单,1-白名单)
├─ appNum5Integer应用数量
├─ padNum10Integer实例数量
├─ remark备注信息String备注
├─ appInfos[{...}]Array应用信息列表
├─ appInfos[].fileId456Long文件ID
├─ appInfos[].appId789Long应用ID
├─ appInfos[].appName测试应用String应用名称
├─ appInfos[].packageNamecom.test.appString包名
├─ appInfos[].appVersionNo1Integer应用版本号
├─ appInfos[].appVersionName1.0.0String应用版本名称
├─ padInfos[{...}]Array实例信息列表
├─ padInfos[].padcodeACN1234567890123String实例code
├─ padInfos[].padTyperealString实例类型(real-云真机 virtual-虚拟机)
├─ padInfos[].padImageIdimg_123456String实例镜像ID
├─ padInfos[].padImageAosp10String实例镜像AOSP版本
├─ padInfos[].padImageVersion20251023_2String实例镜像版本
├─ padInfos[].padIp192.168.1.100String实例IP

请求示例

POST /openapi/open/appSecurityPolicyGroup/detail?id=123

响应示例

{
  "msg": "success",
  "code": 200,
  "data": {
    "id": 123,
    "policyName": "测试策略组",
    "policyType": 0,
    "appNum": 5,
    "padNum": 10,
    "remark": "备注信息",
    "appInfos": [
      {
        "fileId": 456,
        "appId": 789,
        "appName": "测试应用",
        "packageName": "com.test.app",
        "appVersionNo": 1,
        "appVersionName": "1.0.0"
      }
    ],
    "padInfos": [
      {
        "padcode": "ACN1234567890123",
        "padType": "real",
        "padImageId": "img_123456",
        "padImageAosp": "10",
        "padImageVersion": "20251023_2",
        "padIp": "192.168.1.100"
      }
    ]
  },
  "ts": 1742536327373
}
新增/更新应用安全策略组

用于新增或更新应用安全策略组。当传入id时更新,不传id时新增。

接口地址

/openapi/open/appSecurityPolicyGroup/save

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
id123Long否策略组ID(更新时必填,新增时可为空)
policyName测试策略组String是策略组名称(不可重复)
policyType0Integer是策略组类型(0-黑名单,1-白名单)
remark备注信息String否备注
appInfos[{...}]Array否应用信息列表(传null不做更新,传空数组[]清空)
├─ appInfos[].appId789Long否应用ID(appId和packageName二选一)通过应用上传可获取到appId
├─ appInfos[].packageNamecom.test.appString否包名(appId和packageName二选一)appId有效时该字段不生效
padCodes["ACN1234567890123"]String[]否实例code列表(传null不做更新,传空数组[]清空)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data123Long策略组ID

请求示例

{
  "policyName": "测试策略组",
  "policyType": 0,
  "remark": "备注信息",
  "appInfos": [
    {
      "appId": 789
    },
    {
      "packageName": "com.test.app"
    }
  ],
  "padCodes": ["ACN1234567890123"]
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": 123,
  "ts": 1742536327373
}
删除应用安全策略组

用于根据策略组ID删除应用安全策略组。

接口地址

/openapi/open/appSecurityPolicyGroup/delete

请求方式

POST

请求数据类型

application/json

请求参数

参数名示例值参数类型是否必填参数描述
id123Long是策略组ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
datanullObject无数据返回

请求示例

POST /openapi/open/appSecurityPolicyGroup/delete?id=123

响应示例

{
  "msg": "success",
  "code": 200,
  "data": null,
  "ts": 1742536327373
}
实例更换策略组

用于将实例更换为指定的策略组集合,入参为实例编号 + 策略组id集合。

接口地址

/openapi/open/appSecurityPolicyGroup/changePadPolicyGroups

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeACN1234567890123String是实例编号
policyGroupIds[123, 456]Long[]是策略组ID集合(最多100个)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
datanullObject无数据返回

请求示例

{
  "padCode": "ACN1234567890123",
  "policyGroupIds": [123, 456]
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": null,
  "ts": 1742536327373
}
查询实例关联策略组

用于根据实例编号集合查询每个实例关联的全部策略组。

接口地址

/openapi/open/appSecurityPolicyGroup/queryPadPolicyGroups

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes["ACN1234567890123", "ACN1234567890124"]String[]是实例编号集合

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data[{...}]Array实例关联策略组列表
├─ padCodeACN1234567890123String实例编号
├─ policyGroups[{...}]Array关联的策略组列表
├─ policyGroups[].id123Long策略组ID
├─ policyGroups[].policyName测试策略组String策略组名称
├─ policyGroups[].policyType0Integer策略组类型(0-黑名单,1-白名单)
├─ policyGroups[].appCount5Integer应用数量
├─ policyGroups[].remark备注信息String备注

请求示例

{
  "padCodes": ["ACN1234567890123", "ACN1234567890124"]
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN1234567890123",
      "policyGroups": [
        {
          "id": 123,
          "policyName": "测试策略组",
          "policyType": 0,
          "appCount": 5,
          "remark": "备注信息"
        }
      ]
    }
  ],
  "ts": 1742536327373
}
策略组追加更新

用于策略组追加更新,可追加应用或实例。入参为策略组id + 应用集合 + 实例编号集合。

接口地址

/openapi/open/appSecurityPolicyGroup/appendRelations

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
policyGroupId123Long是策略组ID
appInfos[{...}]Array否应用信息列表(最多100个),每个应用信息appId和packageName二选一
├─ appInfos[].appId789Long否应用ID(appId和packageName二选一)
├─ appInfos[].packageNamecom.test.appString否包名(appId和packageName二选一)同时存在时以有效appId为准
padCodes["ACN1234567890123"]String[]否实例编号集合(最多100个)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
datanullObject无数据返回

请求示例

{
  "policyGroupId": 123,
  "appInfos": [
    {
      "appId": 789
    },
    {
      "packageName": "com.test.app"
    }
  ],
  "padCodes": ["ACN1234567890123"]
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": null,
  "ts": 1742536327373
}
策略组删除应用/实例

用于策略组删除应用/实例,应用列表与实例列表不能同时为空。

接口地址

/openapi/open/appSecurityPolicyGroup/removeRelations

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
policyGroupId123Long是策略组ID
appInfos[{...}]Array否应用信息列表(最多100个),每个应用信息appId和packageName二选一
├─ appInfos[].appId789Long否应用ID(appId和packageName二选一)
├─ appInfos[].packageNamecom.test.appString否包名(appId和packageName二选一)同时存在时以有效appId为准
padCodes["ACN1234567890123"]String[]否实例编号集合(最多100个)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
datanullObject无数据返回

请求示例

{
  "policyGroupId": 123,
  "appInfos": [
    {
      "appId": 789
    },
    {
      "packageName": "com.test.app"
    }
  ],
  "padCodes": ["ACN1234567890123"]
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": null,
  "ts": 1742536327373
}

网存1.0

创建网存实例

用于在指定集群中创建网存实例(默认类型为虚拟机)

接口地址

/openapi/open/pad/net/storage/res/create

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
clusterCode001String是集群代码,标识实例所属集群
specificationCodem2-3String是规格代码,定义实例的性能配置
imageIdimg-25021828327String是镜像ID,指定系统镜像
screenLayoutCoderealdevice_1440x3120x560String是屏幕布局代码
number2Integer是需要创建的实例数量
dns8.8.8.8String否DNS服务器地址
storageSize16Integer是存储大小(GB)
randomADITemplatestrueboolean否随机ADI模板(该值为true为真机,并随机填充一个adi模板)
excludeRealPhoneTemplateIds[36,37]Long[]否随机ADI模板时需排除的模板ID列表,randomADITemplates为true时生效
realPhoneTemplateId36Integer否真实设备模板ID
groupId0Integer否分组ID,默认为公共池。

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536074329Long时间戳
data实例创建成功String业务返回信息
├─padCodeACN250424UPHQOTGInteger实例编号
├─screenLayoutCoderealdevice_1440x3120x560String屏幕布局编号
├─netStorageResId“ZSC250424G4S6RH1-ACN250424UPHQOTG”String网存code
├─deviceLevel“m2-4”String实例规格
├─clusterCode“006”String集群编号

请求示例

{
  "clusterCode": "001",
  "specificationCode": "m2-3",
  "imageId": "img-25021828327",
  "screenLayoutCode": "realdevice_1440x3120x560",
  "isolateCpu": true,
  "isolateMemory": true,
  "number": 2,
  "isolateStorage": true,
  "dns": "8.8.8.8",
  "storageSize": 16,
  "randomADITemplates": true,
  "excludeRealPhoneTemplateIds": [36, 37],
  "realPhoneTemplateId": 36
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN250424UPHQOTG",
      "cloudVendorType": 3,
      "memory": 8192,
      "groupId": 0,
      "storage": 45,
      "padIp": null,
      "streamType": 1,
      "padSn": 1,
      "armServerCode": null,
      "screenLayoutCode": "realdevice_1440x3120x560",
      "netStorageResSize": 16,
      "imageId": "img-25041475147",
      "dns": "8.8.8.8",
      "dataSize": 17179869184,
      "dataSizeAvailable": null,
      "cpu": -1,
      "clusterCode": "006",
      "netStorageResId": "ZSC250424G4S6RH1-ACN250424UPHQOTG",
      "realPhoneTemplateId": null,
      "dataSizeUsed": null,
      "netStorageResFlag": 1,
      "deviceLevel": "m2-4",
      "online": 0,
      "socModel": "MACS2080",
      "streamStatus": 0,
      "status": 1
    }
  ],
  "ts": 1745465574610
}

错误码

错误码错误说明操作建议
220003暂不支持当前存储规格,请参考文档设置当前支持固定存储值(4, 16, 32, 64, 128, 256)
110099ADI模板不存在,请检查参数确认ADI模板的值存在且未被禁用
110044实例规格不存在目前支持m2-1~10
220009当前网存容量不足,请联系管理员联系管理员增加网存容量或者删除掉一些不用的实例释放空间
110041镜像不存在确认镜像ID是否正确
110045屏幕布局不存在确认屏幕布局代码是否正确

网存实例开机

用于在指定集群中对网存实例进行开机操作。如果传入国家code无法匹配,将使用默认code:SG

接口地址

/openapi/open/pad/net/storage/on

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
clusterCode001String否集群代码,标识实例所属集群
androidProp{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}Object否参考 安卓改机属性列表(注意: )
countryCodeSGString否国家编码(具体查看:https://chahuo.com/country-code-lookup.html)
padCodes["ACN250321HRKNE3F"]String[]是需要开机的实例编码列表,最多允许同时开机200个实例
imageIdimg-25081965158String否镜像ID,支持开机时更换镜像ID,每次开机传入时均可生效。
regenSimtrueBoolean否是否需要根据国家编码重新生成sim信息(注意:之前只有在首次开机时才会根据国家编码生成sim信息,regenSim为ture不管是否首次开机都会根据国家编码生成sim信息,默认false)
certCodeACN631098529xxxxxString否指定证书编码,不传系统默认选择证书

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data[ {...} ]Object[]实例状态信息列表
├─ padCodeACN250321HRKNE3FString实例编码
├─ vmStatus0Integer实例状态(0 表示已启动)
├─ taskId13023Integer后台任务ID

请求示例

{
  "clusterCode": "001",
  "padCodes": ["ACN250321HRKNE3F"], 
   "countryCode":"US",
   "androidProp": "{\"persist.sys.cloud.wifi.mac\": \"D2:48:83:70:66:0B\"}"
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN250321HRKNE3F",
      "vmStatus": 0,
      "taskId": 13023
    }
  ],
  "ts": 1742536327373
}

错误码

错误码错误说明操作建议
110095没有可以开机的实例,请检查实例状态确认实例状态是否为关机状态
220011频繁操作网存实例,请稍后再试稍后再试
110101未找到与实例规格匹配的板卡,请前往板卡列表设置规格。确认实例的规格跟板卡规格一致,并且板卡有算力未被占用

网存实例关机

用于在指定集群中对网存实例执行关机操作。

接口地址

/openapi/open/pad/net/storage/off

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
clusterCode001String否集群代码,标识实例所属集群
padCodes["ACN250321HRKNE3F"]String[]是需要关机的实例编码列表
forceDelfalseBoolean否 是否强制删除(会直接关机并删除实例,) 默认为false CBS版本2.3.5以上支持

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536327373Long时间戳
data[ {...} ]Object[]关机结果信息列表
├─ padCodeACN250321HRKNE3FString实例编码
├─ vmStatus0Integer实例状态(0 表示已关机)
├─ taskId13023Integer后台任务ID

请求示例

{
  "clusterCode": "001",
  "padCodes": ["ACN250321HRKNE3F"]
}

响应示例

{
"msg": "success",
"code": 200,
"data": [
{
"padCode": "ACN250321HRKNE3F",
"vmStatus": 0,
"taskId": 13023
}
],
"ts": 1742536327373
}

错误码

错误码错误说明操作建议
110094没有可以关机的实例,请检查实例状态确认实例状态(关机状态跟开机中状态无法关机)

删除网存实例

用于在指定集群中删除指定的网存实例。

接口地址

/openapi/open/pad/net/storage/delete

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
clusterCode""String否集群代码,标识实例所属集群(可为空)
padCodes["ACN250321GYWUP8J"]String[]是需要删除的实例编码列表

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742536423100Long时间戳
data[ {...} ]Object[]删除结果信息列表
├─ padCodeACN250321GYWUP8JString实例编码
├─ vmStatus0Integer实例状态(0 表示已删除或已关机)
├─ taskId13025Integer后台任务ID

请求示例

{
  "clusterCode": "",
  "padCodes": ["ACN250321GYWUP8J"]
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN250321GYWUP8J",
      "vmStatus": 0,
      "taskId": 13025
    }
  ],
  "ts": 1742536423100
}

错误码

错误码错误说明操作建议
110096当前实例状态无法删除,请检查实例状态确认实例状态(只有关机状态的实例可以允许被删除)

查询网存集群详情

用于查询指定集群的存储资源信息,包括已使用存储容量、总存储容量以及剩余可用存储容量等。

接口地址

/openapi/open/pad/net/detail/storageCapacity/available

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
clusterCode"002"String是集群编号,用于查询指定集群的存储资源信息

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742476224830Long时间戳
data{}Object返回的数据对象
data.netStorageResListnullObject网存资源列表
data.storageCapacityUsedTotal0Integer已使用存储容量
data.storageCapacityTotal0Integer总存储容量
data.storageCapacityAvailable0Integer剩余可用存储容量

请求示例

{
  "clusterCode": "002"
}

响应示例

{
  "code": 200,
  "data": [
    {
      "clusterCode": "001",
      "netStorageResList": [
        {
          "clusterCode": "001",
          "createTime": "2025-04-11 11:51:00",
          "dcCode": "001",
          "netStorageResId": 5,
          "storageCapacity": 800,
          "storageCapacityUsed": 0,
          "updateBy": "0",
          "updateTime": "2025-04-23 19:10:00"
        }
      ],
      "storageCapacityAvailable": 800,
      "storageCapacityTotal": 800,
      "storageCapacityUsedTotal": 0
    }
  ],
  "msg": "success",
  "ts": 1745406673542
}

设置网存集群板卡规格

用于设置指定设备的板卡规格等级。

接口地址

/openapi/open/device/net/setDeviceLevel

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
deviceCodes["ACD250320R4I7OLM", "ACD250320UEH4OV3"]Array是设备编码列表,包含需要设置规格的板卡的编码
deviceLevel"m2-8"String是设置的设备规格等级

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1742526263389Long时间戳
data""String业务返回信息

请求示例

{
  "deviceCodes": ["ACD250320R4I7OLM", "ACD250320UEH4OV3"],
  "deviceLevel": "m2-8"
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": "",
  "ts": 1742526263389
}
错误码错误说明操作建议
220002当前规格不存在,请检查参数确认规格代码是否正确
220007操作的板卡不存在,请检查参数确认板卡编码是否正确
220008当前板卡存在运行中的算力单元,无法修改板卡上有运行的实例,无法修改规格,需要先将板卡上的实例关机

网存存储备份

用于发起网存存储备份任务,系统将为每个传入的网存资源编号生成一个对应的备份任务。

接口地址

/openapi/open/pad/net/storage/pad/backup

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
remark谷歌验证已经登录String是备份标记信息
padCodes["ACN250403SFPIB1N"]List<String>是实例padCode,最少 1 个,最多 200 个

响应参数

网存存储资源编号列表

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1743664828338Long时间戳
data[ { "padCode": "ZSC2504034L6B26X-ACN250403SFPIB1N", "vmStatus": 0, "taskId": 10350 } ]List<GeneratePadTaskVO>备份存储code列表

请求示例

{
  "padCodes": [
    "ACN250403SFPIB1N"
  ],
  "remark": "谷歌验证已经登录"
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ZSC2504034L6B26X-ACN250403SFPIB1N",
      "vmStatus": 0,
      "taskId": 10350
    }
  ],
  "ts": 1743664828338
}
错误码错误说明操作建议
220009无法操作不属于自己的存储单元,请检查参数确认存储code填写正确
220010处于开机中的网存无法备份,请检查数据存储只有关机状态才允许备份
220001当前批次实例中存在未关机的实例,请检查实例状态

指定网存ID的网存实例开机(还原)

用于为指定网存资源编号(netStorageResUnitCode)绑定的实例开机。如果传入国家code无法匹配,将使用默认code:SG 在进行指定存储开机时,以下情形需要进行拦截:

  1. 跨设备类型:

    • 虚拟机 —— 云真机
    • 云真机 —— 虚拟机
  2. 跨真机品牌、型号(实例未开机除外):

    • A品牌云真机 —— B品牌云真机(例如:Samsung —— Xiaomi)
    • A品牌1型号云真机 —— A品牌2型号云真机(例如:Samsung Galaxy A53 —— Samsung Galaxy A71)
  3. 跨镜像版本:

    • 安卓13 —— 安卓14
    • 安卓13 —— 安卓10
    • 安卓14 —— 安卓13
    • 安卓14 —— 安卓10
    • 安卓10 —— 安卓13
    • 安卓10 —— 安卓14

接口地址

/openapi/open/pad/net/storage/specifiedCode/on

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
clusterCode"001"String否集群编码
padCode"ACN250403FKAX2HX"String是实例编号
netStorageResUnitCode"ZSC250403MMGUFGN-ACN250403ZIMD9KJ"String否网络存储资源编号(可选)
androidProp{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}Object否参考 安卓改机属性列表
countryCodeSGString否国家编码(具体查看:https://chahuo.com/country-code-lookup.html)
certCodeACN631098529xxxxxString否指定证书编码,不传系统默认选择证书

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1743664443188Long时间戳
data{ "padCode": "ACN250403FKAX2HX", "vmStatus": 0, "taskId": 10341 }GeneratePadTaskVO任务详情

请求示例

{
  "clusterCode": "001",
  "padCode": "ACN250403FKAX2HX",
  "netStorageResUnitCode": "ZSC250403MMGUFGN-ACN250403ZIMD9KJ", 
   "countryCode":"US",
   "androidProp": "{\"persist.sys.cloud.wifi.mac\": \"D2:48:83:70:66:0B\"}"
}

响应示例

{
  "clusterCode": "001",
  "padCode": "ACN250403FKAX2HX",
  "netStorageResUnitCode": "ZSC250403MMGUFGN-ACN250403ZIMD9KJ"
}

错误码

错误码错误说明操作建议
110095没有可以开机的实例,请检查实例状态确认实例状态是否为关机状态
220011频繁操作网存实例,请稍后再试稍后再试
110101未找到与实例规格匹配的板卡,请前往板卡列表设置规格。确认实例的规格跟板卡规格一致,并且板卡有算力未被占用

网存存储删除

用于删除指定网存存储资源。


接口地址

POST /openapi/open/pad/net/storage/pad/delete


请求数据类型

application/json


请求参数

参数名示例值参数类型是否必填参数描述
netStorageResUnitCodes["ZSC250407XLYILP4-ACN250407XRY4CW9"]List<String>是需要删除的网存存储资源编号列表,最多支持 200 个

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1744026334273Long时间戳
data[{"padCode": "ZSC250407XLYILP4-ACN250407XRY4CW9", "vmStatus": 0, "taskId": 10159}]List<GeneratePadTaskVO>每个存储资源对应的删除任务结果列表

请求示例

{
  "netStorageResUnitCodes": [
    "ZSC250407XLYILP4-ACN250407XRY4CW9"
  ]
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ZSC250407XLYILP4-ACN250407XRY4CW9",
      "vmStatus": 0,
      "taskId": 10159
    }
  ],
  "ts": 1744026334273
}

错误码错误码说明

获取网存实例使用详情

用于查询网存实例使用详情,按设备等级分组。


接口地址

POST /openapi/open/pad/netPad/group/deviceLevel


请求数据类型

application/json


请求参数

参数名示例值参数类型是否必填参数描述
clusterCode"001"String是集群编码

响应参数

参数名示例值参数类型参数描述
totalNumber16Long总算力数量
onNumber2Long已开机数量
deviceLevel"m2-8"String规格

请求示例

{
  "clusterCode": "001"
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "totalNumber": 16,
      "onNumber": 2,
      "deviceLevel": "m2-8"
    },
    {
      "totalNumber": 9,
      "onNumber": 1,
      "deviceLevel": "m2-3"
    }
  ],
  "ts": 1744024331175
}

网存存储详情查询

用于查询网存存储资源的详细信息,支持分页查询。


接口地址

POST /openapi/open/netStorage/resUnit/net/storage/pad/resUnit


请求数据类型

application/json


请求参数

参数名示例值参数类型是否必填参数描述
page3Integer是当前页码
rows10Integer是每页显示条数

响应参数

参数名示例值参数类型参数描述
total27Integer总记录数
size7Integer当前页记录数
totalPage3Integer总页数
page3Integer当前页码
pageData[...]List<NetStorageResUnitVO>当前页的数据列表

NetStorageResUnitVO字段说明

字段名示例值参数类型参数描述
netStorageResUnitId87Long网络存储详情 ID
shutdownFlag0Integer是否有实例开关机(0: 关机,1: 开机)
netStorageResUnitCode"ZSC25040761D2GP8-ACN250407XRY4CW9"String网络存储详情 Code
clusterCode"001"String集群 Code
padCode"ACN250407XRY4CW9"String实例 Code
netStorageResUnitSize16Long网络存储大小 (单位:GB)

请求示例

{
  "page": 3,
  "rows": 10
}

响应示例

{
  "msg": "success",
  "code": 200,
  "data": {
    "total": 27,
    "size": 7,
    "totalPage": 3,
    "page": 3,
    "pageData": [
      {
        "shutdownFlag": 0,
        "padCode": "ACN250407XRY4CW9",
        "netStorageResUnitCode": "ZSC25040761D2GP8-ACN250407XRY4CW9",
        "clusterCode": "001",
        "netStorageResUnitId": 87,
        "netStorageResUnitSize": 16
      }
      // ... 更多网存实例对象
    ],
    "rows": 10
  },
  "ts": 1744023373581
}

网存存储块查询(查询存储块是否存在及详情)


接口地址

POST /openapi/open/netStorage/resUnit/pad/net/storage/unit/detail


请求数据类型

application/json


请求参数

参数名示例值参数类型是否必填参数描述
netStorageResUnitCodeZSC250403MMGUFGN-ACxxxxxxxxxString是网存存储块唯一编码

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString接口请求状态信息
data-Object业务返回数据
├─ existtrueBoolean存储块是否存在,true=存在/false=不存在
├─ netStorageResUnitCodeZSC250403MMGUFGN-ACxxxxxxxxxString入参的存储块编码(回显)
├─ clusterCode001String存储块所属集群编码(存在时返回,不存在为null)
├─ padCodeACN250403ZIMD9xxString存储块关联的网存实例编码(存在时返回,不存在为null)
├─ storageSize32Integer存储块大小(GB)(存在时返回,不存在为null)

请求示例

{
  "netStorageResUnitCode": "ZSC250403MMGUFGN-ACN25040xxxxxxxxx"
}

响应示例

{
  "code": 200,
  "msg": "success",
  "data": {
    "exist": true,
    "netStorageResUnitCode": "ZSC250403MMGUFGN-ACN250403Zxxxxx",
    "clusterCode": "001",
    "padCode": "ACN250403ZIMDxxx",
    "storageSize": 32
  }
}

错误码

错误码错误说明操作建议
100000网存存储块编码不能为空检查并传入有效的netStorageResUnitCode
110028网存存储块编码格式错误确认编码符合平台规范格式
220009无访问该存储块权限确认存储块归属当前用户
500系统异常稍后重试或联系技术支持

证书管理

上传证书

用于上传谷歌根证书(Keybox的XML结构)

接口地址

/openapi/open/certificate/google/root/upload

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
certCodeGCA202603090xxxString否证书唯一编码(自定义 / 系统生成)
certName谷歌根证书_v1.0String是证书名称
certContentxxxxString是证书内容(转为字符串上传)
certTypeROOTString否证书类型,固定值 "ROOT",默认值 "ROOT"

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─ certCodeGCA202603090xxxString证书唯一编码(自定义 / 系统生成)
├─ certName谷歌根证书_v1.0String证书名称
├─ status1Integer上传状态(0 成功,1 失败
├─ errorMsg证书格式错误String失败原因(仅 status=1 时返回)

请求示例

{
    "certName": "谷歌根证书_v1.0",
    "certContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Keyboxes>\n  <Keybox DeviceID=\"DEVICE_SAMPLE_ID\">\n    <Key algorithm=\"ecdsa\">\n      <PrivateKey>MIIBS...[PKCS8_PRIVATE_KEY]...A=</PrivateKey>\n      <CertificateChain>\n        <NumberOfCertificates>1</NumberOfCertificates>\n        <Certificate>MIIC...[BASE64_CERTIFICATE]...Q==</Certificate>\n      </CertificateChain>\n    </Key>\n    <Key algorithm=\"rsa\">\n      <PrivateKey>MIIEv...[PKCS8_PRIVATE_KEY]...E=</PrivateKey>\n      <CertificateChain>\n        <NumberOfCertificates>1</NumberOfCertificates>\n        <Certificate>MIID...[BASE64_CERTIFICATE]...S==</Certificate>\n      </CertificateChain>\n    </Key>\n  </Keybox>\n</Keyboxes>"
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1773211788170,
        "data": {
        "certCode": "GCA202603090xxx",
            "certName": "谷歌根证书_v1.0",
            "status": 0,
            "errorMsg": null
    },
    "traceId": "ffo6go7g0we8"
}

证书规范模板

<?xml version="1.0" encoding="UTF-8"?>
<Keyboxes>
    <Keybox DeviceID="TEST_DEVICE_002">

        <Key algorithm="ecdsa">
            <PrivateKey> [此处填入 1 段 Base64 私钥] </PrivateKey>
            <CertificateChain>
                <NumberOfCertificates>4</NumberOfCertificates>
                <Certificate> [第 1 级:叶子/用户证书 (Leaf)] </Certificate>
                <Certificate> [第 2 级:中级证书 1 (Intermediate 1)] </Certificate>
                <Certificate> [第 3 级:中级证书 2 (Intermediate 2)] </Certificate>
                <Certificate> [第 4 级:根证书 (Root)] </Certificate>
            </CertificateChain>
        </Key>

        <Key algorithm="rsa">
            <PrivateKey> [此处填入 1 段 Base64 私钥] </PrivateKey>
            <CertificateChain>
                <NumberOfCertificates>4</NumberOfCertificates>
                <Certificate> [第 1 级:叶子/用户证书 (Leaf)] </Certificate>
                <Certificate> [第 2 级:中级证书 1 (Intermediate 1)] </Certificate>
                <Certificate> [第 3 级:中级证书 2 (Intermediate 2)] </Certificate>
                <Certificate> [第 4 级:根证书 (Root)] </Certificate>
            </CertificateChain>
        </Key>

    </Keybox>
</Keyboxes>

根据证书编码查询

根据证书的唯一编码查询证书

接口地址

/openapi/open/certificate/google/root/query

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
certCodeGCA202603090xxxString否证书唯一编码(精确查询/不传查询所有)
certName谷歌根证书_v1.0String否证书名称(模糊查询)
rows10Integer否查询数量,范围1-1000,默认10

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─ certCodeGCA202603090xxxString证书唯一编码(自定义 / 系统生成)
├─ certName谷歌根证书_v1.0String证书名称
├─ ├─efficienttrueBoolean上传状态(0 成功,1 失败

请求示例

{
    "certCode":"GCA202603090xxx"
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1773370014107,
        "data": [
        {
            "certCode": "GCA202603090xxx",
            "certName": "谷歌根证书_v1.0",
            "efficient": true
        }
    ],
        "traceId": "ffuppeig3qbk"
}

实例管理

修改实例WIFI属性

修改指定实例的WIFI列表属性(此接口与一建新机设置WIFI二选一,否则会出现覆盖问题)

接口地址

/openapi/open/pad/setWifiList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是实例编号
wifiJsonListString[]是wifi属性列表
├─SSID110101String是wifi名称 (不支持中文)
├─BSSID02:31:00:00:00:01String是接入点mac地址
├─MAC02:00:10:00:00:00String是wifi网卡mac地址
├─IP02:00:10:00:00:00String是wifi网络IP
├─MAC02:00:10:00:00:00String是wifi网卡mac地址
├─gateway192.168.120.1String是wifi网关
├─DNS11.1.1.1String是DNS1
├─DNS28.8.8.8String是DNS2
├─hessid0Integer否网络标识符
├─anqpDomainId0Integer否ANQP(Access Network Query Protocol)域ID
├─capabilities""String否WPA/WPA2等信息
├─level0Integer否信号强度(RSSI)
├─linkSpeed500Integer否当前Wi-Fi连接速率
├─txLinkSpeed600Integer否上传链路速度
├─rxLinkSpeed700Integer否下载链路速度
├─frequency2134Integer否Wi-Fi信道频率
├─distance-1Integer否估算的AP距离
├─distanceSd-1Integer否估算距离的标准差
├─channelWidth0Integer否信道带宽
├─centerFreq00Integer否中心频率0
├─centerFreq1-1Integer否中心频率1
├─is80211McRTTResponderfalseBoolean否是否支持 802.11mc(Wi-Fi RTT,测距技术

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─ taskId1Integer任务ID
├─ padCodeAC2025030770RString实例编号
├─ vmStatus1Integer实例在线状态:0-离线,1-在线

请求示例

{
    "padCodes":["AC2025030770R92X"],
        "wifiJsonList":[
        {
            "SSID": "110101",
            "BSSID": "02:31:00:00:00:01",
            "MAC": "02:00:10:00:00:00",
            "IP": "192.168.120.15",
            "gateway": "192.168.120.1",
            "DNS1": "1.1.1.1",
            "DNS2": "8.8.8.8",
            "hessid": 0,
            "anqpDomainId": 0,
            "capabilities": "",
            "level": 0,
            "linkSpeed": 500,
            "txLinkSpeed": 600,
            "rxLinkSpeed": 700,
            "frequency": 2413,
            "distance": -1,
            "distanceSd": -1,
            "channelWidth": 0,
            "centerFreq0": -1,
            "centerFreq1": -1,
            "is80211McRTTResponder": true
        }
    ]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1741676855566,
        "data": [
        {
            "taskId": 14904,
            "padCode": "AC2025030770R92X",
            "vmStatus": 0
        }
    ]
}

实例详情

查询指定实例的属性信息,包括系统属性信息和设置信息。

接口地址

/openapi/open/pad/padDetails

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
page1Integer否页码
rows10Integer否每页记录数
padCodesString[]否
├─AC21020010391String否实例编号
padIpsString[]否
├─192.168.1.1String否实例ip
vmStatus1String否实例在线状态:0-离线,1-在线
controlStatus1String否受控状态(推流状态):1-非受控,2-受控
faultStatus14String否实例运行状态 14-异常 其他-正常
deviceStatus0String否物理机在线状态:0-离线,1-在线
groupId2Integer否分组ID
idcCodeHNCS-C-01String否机房编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756360093771Long时间戳
traceIdewc83bwudvr4String链路追踪ID
dataObject响应数据
├─ page1Integer当前页
├─ rows10Integer每页记录数
├─ size10Integer当前页的数量
├─ total13398Integer总记录数
├─ totalPage1340Integer总页数
├─ pageDataobject[]列表
├─ ├─ padId552Long实例ID
├─ ├─ padCodeACP250331GLMP7YXString云机编号
├─ ├─ customerIdnullLong客户ID
├─ ├─ imageIdimg-25032628136String镜像ID
├─ ├─ deviceLevelm2-6String实例规格
├─ ├─ dcInfoObject机房信息
├─ ├─ ├─ id1Long机房ID
├─ ├─ ├─ dcName小算测试-机房String机房名称
├─ ├─ ├─ dcCode001String机房编码
├─ ├─ ├─ areachangshaString地区
├─ ├─ ├─ ossEndpointnullStringOSS公网接口地址
├─ ├─ ├─ ossEndpointInternalnullStringOSS内网接口地址
├─ ├─ ├─ ossFileEndpointnullString文件访问地址
├─ ├─ ├─ ossScreenshotEndpointnullString截图访问地址
├─ ├─ padStatus15Integer实例状态(10-运行中,11-重启中,12-重置中,13-升级中,14-异常,15-未就绪,16-备份中,17-恢复数据中,18-关机,19-关机中,20-开机中,21-关机失败,22-开机失败,23-删除中,24-删除失败,25-已删除,26-克隆中)
├─ ├─ deviceStatus1Integer物理机状态(0-离线,1-在线)
├─ ├─ online0Integer实例在线状态(0-离线,1-在线)
├─ ├─ streamStatus0Integer实例推流状态(0-空闲,1-推流中)
├─ ├─ dataSizenullLong存储总容量(字节)
├─ ├─ dataSizeUsednullLong存储已使用容量(字节)
├─ ├─ adbOpenStatusnullStringadb 开关状态(1 开启;为空/0 关闭)
├─ ├─ deviceIp172.31.1.4String板卡 IP
├─ ├─ screenLayoutCodemultiple-portrait-basicString屏幕布局编码
├─ ├─ mac""StringMAC 地址
├─ ├─ netStorageResIdnullString网存ID
├─ ├─ dns192.168.50.15String实例 DNS
├─ ├─ memorynullInteger内存大小
├─ ├─ cpu-1IntegerCPU 大小
├─ ├─ socModelMACS2080StringSoC 型号
├─ ├─ netStorageResFlag0Integer网存标记(1 网存实例;0 本地实例)
├─ ├─ netStorageResSizenullLong网存实例大小(GB)
├─ ├─ realPhoneTemplateId389Long真实机型模板ID
├─ ├─ clusterCodeZEG3650947String集群编码
├─ ├─ padIpnullString实例 IP
├─ ├─ updateNetStorageResFlagfalseBoolean是否指定网存ID开机
├─ ├─ targetStorageResIdnullString指定的网存ID
├─ ├─ armIp192.168.200.50StringARM 服务器 IP
├─ ├─ countryCodenullString国家代码
├─ ├─ typevirtualString实例类型(virtual-虚拟机 / real-云真机)
├─ ├─ armServerId179Long服务器ID
├─ ├─ lastComputeUnitCodenullString最后开机使用的算力编号
├─ ├─ lastDeviceCodenullString最后开机使用的板卡编号
├─ ├─ lastDeviceIpnullString最后开机使用的板卡IP
├─ ├─ cloneFlagnullString克隆标志(0-否,1-是)
├─ ├─ baseResUnitCodenullString克隆实例的基础存储code
├─ ├─ cbsInfo2.0.14StringCBS 信息
├─ ├─ firstBoottrueBoolean是否首次开机

请求示例

{
 "page": 1,
 "rows": 10,
 "padCodes": ["AC21020010391"],
 "padIps":["192.168.1.1"],
 "vmStatus":"1",
 "controlStatus":"1",
 "faultStatus":"14",
 "deviceStatus":"0"
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756360093771,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 10,
            "total": 13398,
            "totalPage": 1340,
            "pageData": [
            {
                "padId": 552,
                "padCode": "ACP250331GLMP7YX",
                "customerId": null,
                "imageId": "img-25032628136",
                "deviceLevel": "m2-6",
                "dcInfo": {
                    "id": 1,
                    "dcName": "小算测试-机房",
                    "dcCode": "001",
                    "area": "changsha",
                    "ossEndpoint": null,
                    "ossEndpointInternal": null,
                    "ossFileEndpoint": null,
                    "ossScreenshotEndpoint": null
                },
                "padStatus": 15,
                "deviceStatus": 1,
                "online": 0,
                "streamStatus": 0,
                "dataSize": null,
                "dataSizeUsed": null,
                "adbOpenStatus": null,
                "deviceIp": "172.31.1.4",
                "screenLayoutCode": "multiple-portrait-basic",
                "mac": "",
                "netStorageResId": null,
                "dns": "192.168.50.15",
                "memory": null,
                "cpu": -1,
                "socModel": "MACS2080",
                "netStorageResFlag": 0,
                "netStorageResSize": null,
                "realPhoneTemplateId": 389,
                "clusterCode": "ZEG3650947",
                "padIp": null,
                "updateNetStorageResFlag": false,
                "targetStorageResId": null,
                "armIp": "192.168.200.50",
                "countryCode": null,
                "type": "virtual",
                "armServerId": 179,
                "lastComputeUnitCode": null,
                "lastDeviceCode": null,
                "lastDeviceIp": null,
                "cloneFlag": null,
                "baseResUnitCode": null,
                "cbsInfo": "2.0.14",
                "firstBoot": true
            }
        ]
    },
    "traceId": "ewc83bwudvr4"
}

代码示例

// java 调用示例
PadDetailsRequest requestParam = new PadDetailsRequest();
List<String> padCodes = new ArrayList<>();
padCodes.add("AC22010041147");
requestParam.setPadCodes(padCodes);
Result<Page<PadDetailsResponse>> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_DETAILS, requestParam,new TypeReference<Result<Page<PadDetailsResponse>>>() {});

实例详情-精简版

查询实例的基础属性信息。

接口地址

/openapi/open/pad/padBaseInfoList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
lastId1234Long否上一次查询返回的lastId,首次查询可不传或者传null
rows10Integer否每页记录数,最大支持单页 1000条
padCodesString[]否
├─ACP250331GLXXXXXString否实例编号
padIpsString[]否
├─192.168.1.1String否实例ip
online1Integer否实例在线状态:0-离线,1-在线
padStatus14Integer否实例运行状态 14-异常 其他-正常
computeOccupiedtrueBoolean否筛选算力占用情况,true-占用算力,false-未占用算力
netStorageResFlag1Integer否网存标记:1-网存实例,0-本地实例

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756360093771Long时间戳
traceIdewc83bwudvr4String链路追踪ID
dataObject响应数据
├─ rows10Integer每页记录数
├─ size10Integer当前页的数量
├─ lastId1234Long最后一条记录ID,用于下次分页查询
├─ hasNexttrueBoolean是否还有下一页
├─ pageDataobject[]列表
├─ ├─ padCodeACP250331GLXXXXXString实例编号
├─ ├─ padIpnullString实例 IP
├─ ├─ padStatus15Integer实例运行状态(10-运行中,11-重启中,12-重置中,13-升级中,14-异常,15-未就绪,16-备份中,17-恢复数据中,18-关机,19-关机中,20-开机中,21-关机失败,22-开机失败,23-删除中,24-删除失败,25-已删除,26-克隆中)
├─ ├─ online0Integer实例在线状态(0-离线,1-在线)
├─ ├─ computeOccupiedtrueBoolean算力占用情况,true-占用算力,false-未占用算力
├─ ├─ netStorageResFlag1Integer网存标记:1-网存实例,0-本地实例
├─ ├─ deviceStatus1Integer板卡状态:0-离线,1-在线

请求示例

{
 "lastId": null,
 "rows": 10,
 "padCodes": ["ACP250331GLXXXXX"],
 "padIps":["192.168.1.1"],
 "online":1,
 "padStatus":10,
 "computeOccupied":true, 
 "netStorageResFlag":1
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1756360093771,
    "data": {
        "rows": 10,
        "size": 10,
        "lastId": 552,
        "hasNext": true,
        "pageData": [{
            "padCode": "ACP250331GLXXXXX",
            "padIp": null,
            "padStatus": 15,
            "online": 0,
            "computeOccupied": true,
            "netStorageResFlag":1,
            "deviceStatus": 1
        }]
    }, 
    "traceId": "f9lvinjx337k"
}

实例重启

对指定实例执行重启操作,用以解决系统无响应、卡死等问题。

接口地址

/openapi/open/pad/restart

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC21020010001String是实例编号
groupIdsInteger[]否
├─1Integer否实例组ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC21020010001String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─ taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC22030022693"
 ],
 "groupIds": [1]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756313806284,
        "data": [
        {
            "taskId": 4844869,
            "padCode": "ATP250818261XVMO",
            "vmStatus": 0,
            "taskStatus": 1
        }
    ],
        "traceId": "ewab9x88fkzk"
}

错误码

错误码错误说明操作建议
10001重启失败联系管理员
110004执行重启命令失败稍后再次重启
110028实例不存在请检查实例是否存在

代码示例

// java 调用示例
public class SDKExample {
    private final ArmCloudApiService armCloudApiService;

    public SDKExample() {
        ArmCloudConfig armCloudConfig = new ArmCloudConfig();
        armCloudConfig.setOpenUrl("https://openapi-hk.armcloud.net");
        armCloudConfig.setService("armcloud-paas");
        armCloudConfig.setHost("openapi.armcloud.net");
        armCloudConfig.setAk("your access_key_id");
        armCloudConfig.setSk("your secret_access_key");
        armCloudApiService = new ArmCloudApiServiceImpl(armCloudConfig, new DefaultHttpExecutor());
    }

    @Test
    public void test() throws Exception {
        RestartRequest requestParam = new RestartRequest();
        List<String> padCodes = new ArrayList<>();
        padCodes.add("AC22010041147");
        requestParam.setPadCodes(padCodes);
        Result<PadTaskResponse> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_RESTART, requestParam, new TypeReference<Result<PadTaskResponse>>() {});
    }
}

实例重置

注意:实例重置清除系统所有数据。请谨慎使用,每次重置之后会将公网IP恢复到默认值

对实例执行重置操作,将会清理云机所有数据

接口地址

/openapi/open/pad/reset

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC21020010001String是实例编号
groupIdsInteger[]否
├─1Integer否实例组ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC21020010001String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─ taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC21020010001"
 ],
 "groupIds": [1]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756313781715,
        "data": [
        {
            "taskId": 760459892,
            "padCode": "ATP250817PIJLWRP",
            "vmStatus": 0,
            "taskStatus": 1
        }
    ],
        "traceId": "ewab8lv65yio"
}

错误码

错误码错误说明操作建议
10002重置失败联系管理员
110005执行重置命令失败稍后再次重置

代码示例

// java 调用示例
 ResetRequest requestParam = new ResetRequest();
List<String> padCodes = new ArrayList<>();
padCodes.add("AC22010041147");
requestParam.setPadCodes(padCodes);
Result<PadTaskResponse> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_RESET, requestParam, new TypeReference<Result<PadTaskResponse>>() {});

查询实例属性

查询指定实例的属性信息,包括系统属性信息和设置信息。

接口地址

/openapi/open/pad/padProperties

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeAC21020010001String是实例编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─padCodeAC21020010001String实例编号
├─modemPropertiesListObject[]Modem-属性列表
├─├─propertiesNameIMEIString属性名称
├─├─propertiesValue412327621057784String属性值
├─systemPropertiesListObject[]系统-属性列表
├─├─propertiesNamero.build.idString属性名称
├─├─propertiesValueQQ3A.200805.001String属性值
├─settingPropertiesListObject[]setting-属性列表
├─├─propertiesNamero.build.tagsString属性名称
├─├─propertiesValuerelease-keysString属性值
├─oaidPropertiesListObject[]oaid-属性列表
├─├─propertiesNameoaidString属性名称
├─├─propertiesValue001String属性值

请求示例

{
 "padCode": "AC21020010001"
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": {
  "padCode": "AC21020010001",
  "modemPropertiesList": [
   {
    "propertiesName": "IMEI",
    "propertiesValue": "412327621057784"
   }
  ],
  "systemPropertiesList": [
   {
    "propertiesName": "ro.build.id",
    "propertiesValue": "QQ3A.200805.001"
   }
  ],
  "settingPropertiesList": [
   {
    "propertiesName": "ro.build.tags",
    "propertiesValue": "release-keys"
   }
  ],
  "oaidPropertiesList": [
   {
    "propertiesName": "oaid",
    "propertiesValue": "001"
   }
  ]
 }
}

错误码

错误码错误说明操作建议
110028实例不存在请检查实例是否正确

代码示例

// java 调用示例
PadPropertiesRequest requestParam = new PadPropertiesRequest();
requestParam.setPadCode("AC22010041147");
Result<PadPropertiesResponse> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_GET_PROPERTIES, requestParam,new TypeReference<Result<PadPropertiesResponse>>() {});

批量查询实例属性

批量查询指定实例的属性信息,包括系统属性信息和设置信息。

接口地址

/openapi/open/pad/batchPadProperties

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是实例数量不多余200个
├─AC21020010001String是实例编号
├─AC21020010002String是实例编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─padCodeAC21020010001String实例编号
├─modemPropertiesListObject[]Modem-属性列表
├─├─propertiesNameIMEIString属性名称
├─├─propertiesValue412327621057784String属性值
├─systemPropertiesListObject[]系统-属性列表
├─├─propertiesNamero.build.idString属性名称
├─├─propertiesValueQQ3A.200805.001String属性值
├─settingPropertiesListObject[]setting-属性列表
├─├─propertiesNamero.build.tagsString属性名称
├─├─propertiesValuerelease-keysString属性值
├─oaidPropertiesListObject[]oaid-属性列表
├─├─propertiesNameoaidString属性名称
├─├─propertiesValue001String属性值

请求示例

{
    "padCodes": [
        "AC21020010001",
        "AC21020010002"
    ]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": [
        {
            "padCode": "AC21020010001",
            "modemPropertiesList": [
                {
                    "propertiesName": "IMEI",
                    "propertiesValue": "412327621057784"
                }
            ],
            "systemPropertiesList": [
                {
                    "propertiesName": "ro.build.id",
                    "propertiesValue": "QQ3A.200805.001"
                }
            ],
            "settingPropertiesList": [
                {
                    "propertiesName": "ro.build.tags",
                    "propertiesValue": "release-keys"
                }
            ],
            "oaidPropertiesList": [
                {
                    "propertiesName": "oaid",
                    "propertiesValue": "001"
                }
            ]
        },
        {
            "padCode": "AC21020010002",
            "modemPropertiesList": [
                {
                    "propertiesName": "IMEI",
                    "propertiesValue": "412327621057784"
                }
            ],
            "systemPropertiesList": [
                {
                    "propertiesName": "ro.build.id",
                    "propertiesValue": "QQ3A.200805.001"
                }
            ],
            "settingPropertiesList": [
                {
                    "propertiesName": "ro.build.tags",
                    "propertiesValue": "release-keys"
                }
            ],
            "oaidPropertiesList": [
                {
                    "propertiesName": "oaid",
                    "propertiesValue": "001"
                }
            ]
        }
    ]
}

错误码

错误码错误说明操作建议
110028实例不存在请检查实例是否正确

代码示例

// java 调用示例
PadPropertiesRequest requestParam = new PadPropertiesRequest();
List<String> padCodes = new ArrayList<>();
padCodes.add("AC21020010001");
padCodes.add("AC21020010002");
requestParam.setPadCodes(padCodes);
Result<List<PadPropertiesResponse>> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_POST_PROPERTIES, requestParam,new TypeReference<Result<PadPropertiesResponse>>() {});

修改实例属性

动态修改实例的属性信息,包括系统属性和设置

实例需要处于开机状态,该接口为即时生效

参考 实例属性列表

接口地址

/openapi/open/pad/updatePadProperties

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC21020010001String是实例编号
modemPersistPropertiesListObject[]否Modem-持久化-属性列表
├─propertiesNameIMEIString否属性名称
├─propertiesValue412327621057784String否属性值
modemPropertiesListObject[]否Modem-非持久化-属性列表
├─propertiesNameIMEIString否属性名称
├─propertiesValue412327621057784String否属性值
systemPersistPropertiesListObject[]否系统-持久化-属性列表
├─propertiesNamero.build.idString否属性名称
├─propertiesValueQQ3A.200805.001String否属性值
systemPropertiesListObject[]否系统-非持久化-属性列表
├─propertiesNamero.build.idString否属性名称
├─propertiesValueQQ3A.200805.001String否属性值
settingPropertiesListObject[]否setting-属性列表
├─propertiesNamero.build.tagsString否属性名称
├─propertiesValuerelease-keysString否属性值
oaidPropertiesListObject[]否oaid-属性列表
├─propertiesNameoaidString否属性名称
├─propertiesValue001String否属性值
webkitPropertiesListObject[]否webkit-属性列表
├─propertiesNameoaidString否属性名称
├─propertiesValue001String否属性值

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC21020010001String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)

请求示例

{
 "padCodes": [
  "AC21020010001"
 ],
 "modemPersistPropertiesList": [
   {
    "propertiesName": "IMEI",
    "propertiesValue": "412327621057784"
   }
  ],
 "modemPropertiesList": [
   {
    "propertiesName": "IMEI",
    "propertiesValue": "412327621057784"
   }
  ],
  "systemPersistPropertiesList": [
   {
    "propertiesName": "ro.build.id",
    "propertiesValue": "QQ3A.200805.001"
   }
  ],
  "systemPropertiesList": [
   {
    "propertiesName": "ro.build.id",
    "propertiesValue": "QQ3A.200805.001"
   }
  ],
  "settingPropertiesList": [
   {
    "propertiesName": "ro.build.tags",
    "propertiesValue": "release-keys"
   }
  ],
  "oaidPropertiesList": [
   {
    "propertiesName": "oaid",
    "propertiesValue": "001"
   }
  ], 
   "webkitPropertiesList": [
     {
      "propertiesName": "oaid",
      "propertiesValue": "001"
     }
    ]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1717570916196,
 "data": [
  {
   "taskId": 36,
   "padCode": "AC22030010001",
   "vmStatus": 1
  }
 ]
}

错误码

错误码错误说明操作建议
110011执行修改属性命令失败请稍后重试
110028实例不存在请检查实例是否正确
110027实例编号集合存在重复项请检查实例是否存在重复的

代码示例

// java 调用示例
UpdatePadPropertiesRequest requestParam = new UpdatePadPropertiesRequest();
List<String> padCodes = new ArrayList<>();
padCodes.add("AC22010041147");
requestParam.setPadCodes(padCodes);

List<PadPropertiesSub> subs = new ArrayList<>();
PadPropertiesSub sub = new PadPropertiesSub();
sub.setPropertiesName("oaid");
sub.setPropertiesValue("123456789");
subs.add(sub);
requestParam.setSystemPropertiesList(subs);
Result<List<GeneratePadResponse>> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_UPDATE_PROPERTIES, requestParam,new TypeReference<Result<List<GeneratePadResponse>>>() {});

修改实例安卓改机属性

静态设置安卓改机属性,需要重启实例才能够生效,一般用于修改设备信息

该接口与修改实例属性接口的区别在于生效时机,该接口生效时间为每次开机初始化

设置实例属性后,属性数据会持久化存储,重启或重置实例无需再调用该接口

参考 安卓改机属性列表

使用该接口需要对安卓系统有一定的理解,部分属性可能会影响实例正常启动,如果改机后,导致实例异常,可以通过调用实例重置接口恢复正常

接口地址

/openapi/open/pad/updatePadAndroidProp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeAC32010210001String否实例id
restartfalseBoolean否设置完成后自动重启(默认false)
props{}Object是系统属性(此字段为key-value定义)
├─ro.product.vendor.nameOP52D1L1String是属性设置

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务id
├─padCodeAC32010210001String实例id
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCode": "AC32010210001",
 "props": {
  "ro.product.vendor.name": "OP52D1L1"
 },
 "restart": false
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756313781338,
        "data": {
        "taskId": 760459884,
            "padCode": "AC32010160134",
            "vmStatus": 0,
            "taskStatus": 1
    },
    "traceId": "ewab8l4lqu4g"
}

根据国家Code修改SIM卡信息

静态设置安卓改机属性,需要重启实例才能够生效,一般用于修改设备信息

该接口与修改实例安卓改机属性接口具有相同功能.区别在于该接口会随机生成SIM卡信息,并且每次都会重启

设置实例属性后,属性数据会持久化存储,重启或重置实例无需再调用该接口

接口地址

/openapi/open/pad/replacePadAndroidPropByCountry

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeAC32010210001String是实例id
countryCodeUSString否国家code
props{}Object否系统属性(此字段为key-value定义)
├─ro.product.vendor.nameOP52D1L1String否属性设置

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756360113813Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject响应数据
├─taskId10002486Long任务ID
├─padCodeACN342712020172800String实例编号
├─vmStatus0Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
    "padCode": "AC32010250001",
        "props": {
        "persist.sys.cloud.phonenum": "1234578998"
    },
    "countryCode": "US"
}

响应示例1

{
    "code": 200,
        "msg": "success",
        "ts": 1756360113813,
        "data": {
        "taskId": 10002486,
            "padCode": "ACN342712020172800",
            "vmStatus": 0,
            "taskStatus": 1
    },
    "traceId": "ewc84g8si0oy"
}

响应示例2

{
   "code": 500,
   "msg": "目前不支持国家编码: XX",
   "ts": 1753521350163,
   "data": null
}

错误码

错误码错误说明操作建议
110065参数请求不合规,请参考接口文档检查参数,参考接口文档
110028实例不存在请检查实例编号是否正确

停止推流

停止指定实例推流,断开实例连接。

接口地址

/rtc/open/room/dissolveRoom

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC11010000031String是实例编号
├─AC22020020700String是实例编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]
├─taskId1234567890Long任务ID
├─successListObject[]成功集合
├─├─padCodeAC11010000031String实例编号
├─failListObject[]失败集合
├─├─padCodeAC22020020700String实例编号
├─├─errorCode120005Integer错误码
├─├─errorMsg实例不存在String失败的原因

请求示例

{
    "padCodes": ["AC11010000031","AC22020020700"]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
     "data": {
     "taskId": 1234567890,
     "successList": [
              {
                  "padCode": "AC11010000031"
              }
          ],
          "failList": [
      {
                  "padCode": "AC22020020700",
      "errorCode": 120005,
      "errorMsg": "实例不存在"
              }
    ]
     },
    "traceId": "ewab9njt3gn4"

}

错误码

错误码错误说明操作建议
120005实例不存在请检查实例编号是否正确
120004中止推流错误,指令服务异常请稍后重试

批量申请RTC连接Token

批量申请当前账号下多个实例的RTC Token连接信息,连接信息根据Pad进行分组返回。

当Pad无法连接时不会返回RTC Toekn信息,msg字段会显示无法连接原因。

目前此接口仅支持生产 ArmcloudRTC Token。如出现此接口暂不支持此功能等异常消息时请联系相关人员重新配置推流信息

生成的token暂不支持刷新延长有效期。当过期后需重新申请新token

加密数据需使用AES GCM模式解密,密钥为padCode

接口地址

/rtc/open/room/batchApplyToken

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
userId202String是业务方自定义用户ID,此字段用来生成房间信息。实现一个用户跟GameServer处于一个房间。调用方需做用户级唯一性,如使用同一个userId生成不同的Toekn连接同一个GamerServer会导致上一个已建立的连接断开
expire3600Integer否token有效期(单位:秒。默认86400)
padsObject[]是实例列表
├─padCodeAC11010000031String是实例编号
├─videoStreamObject否推流配置
├─├─resolution07String否分辨率
├─├─frameRate30String否帧率
├─├─bitrate2000String否码率

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─roomToken001j7Tb2jAyAzR6UtLv3cgclCFhw6Q==Stringtoken
├─roomCodeAC22030010181202String房间号
├─appIdj7Tb2GcE9rN5oF6xP3A4qwerString应用ID
├─padCodeAC22030010181String实例ID
├─signalServerLnBbVX4AD1CA4uyoN1kXp:P8H01PaGZDHEFDString信令地址(需使用AES GCM模式解密)
├─stunspL25iYgaA12RNmdCYR/:SUJD21Bz4S6HE88GzVNStringstuns地址(需使用AES GCM模式解密)
├─turnsdoF22kA7Z6OiVP1br29:rA1R4d6Vyk9eStringturns地址(需使用AES GCM模式解密)
├─msgconnect pad failString错误信息

请求示例

{
 "userId": "202",
 "expire": 3600,
 "pads": [
  {
   "padCode": "AC22010010842",
   "videoStream ": {
    "resolution": "1",
    "frameRate": "30",
    "bitrate": "2000"
   }
  },
  {
   "padCode": "AC22030010181",
   "videoStream ": {
    "resolution": "1",
    "frameRate": "30",
    "bitrate": "2000"
   }
  }
 ]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1721305008916,
 "data": [
  {
   "roomToken": null,
   "roomCode": "AC22010010842202",
   "appId": "j7Tb2GcE9rN5oF6xP3A4qwer",
   "streamType": 2,
   "videoCodec": "",
   "reportSdkLog": false,
   "padCode": "AC22010010842",
   "msg": "connect pad fail",
   "signalServer": null,
   "stuns": null,
   "turns": null
  },
  {
   "roomToken": "001j7Tb2GcE9rN15oF6xP3A4qwerNwDyCHIRtQrGxZABAAC1ZuzKkAEAABAAQUMyMjAzMDAxMDE4MA12D1TIwMgMAMjAyAQAEALVm7MqQAQAAIABpLvj5zX3dnyN/8UvRsLJnHWA4zR6UtLv3cgclCFhw6Q==",
   "roomCode": "AC22030010181202",
   "appId": "j7Tb2GcE9rN5oF6xP3A4qwer",
   "streamType": 2,
   "videoCodec": "",
   "reportSdkLog": false,
   "padCode": "AC22030010181",
   "msg": null,
   "signalServer": "LnBbVX4AD1CA4uyoN1kXp:P8H01PaGZDHEFDsnU6nRCbOFzvL2smbG9HxKh+XP5WHC",
   "stuns": "pL25iYgaA12RNmdCYR/:SUJD21Bz4S6HE88GzVN8rANlfL9925iaHW+ilJAaWldPpoBKqwoEq0Ggon0HhDc4a6v0pg=",
   "turns": "doF22kA7Z6OiVP1br29:rA1R4d6Vyk9efIFX6qPPMyKs7OhmxFA7xBr65P8NA/Rxb31Js6VOaO3Zrtd3h9uM/mNYUy5mJOQ4j8TJ8DjfBFaEHVNOAcF5tzgbg8iksGhNONfv8hHw=="
  }
 ]
}

错误码

错误码错误说明操作建议
120005实例不存在请检查实例编号是否正确
120007此接口暂不支持此功能联系相关人员更改推流配置

申请RTC共享房间Token

用于实现多个实例在一个房间中,实例接收房间广播消息进行处理与实现获取公共流

房间号生成规则:terimer + userId + paas用户标识 例如:terimer = pc,userId=123,paas用户标识=qwer

房间号为:pc123qwer

接口地址

/rtc/open/room/share/applyToken

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
userId202String是调用方业务用户ID
terminalpcString是终端
expire3600Integer否token有效期 单位秒。默认1小时
pushPublicStreamtrueBoolean否是否推送公共流(默认false)
padsArray是需要加入共享房间的实例列表
├─padCodeAC22010010842String是实例id
├─├─videoStreamObject否推流配置
├─├─├─videoStream1String否
├─├─├─frameRate30String否
├─├─├─bitrate2000String否

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─roomToken00165b7AS149e52467a4016f050b8cQQBDjDJKuTAbString房间Token
├─roomCodeandroid_12345String房间号
├─appId65b749e52467a4016f050b8cString应用id

请求示例

{
 "userId": "202",
 "terminal": "pc",
 "expire": 3600,
 "pushPublicStream": true,
 "pads": [
  {
   "padCode": "AC22010010842",
   "videoStream": {
    "resolution": "1",
    "frameRate": "30",
    "bitrate": "2000"
   }
  },
  {
   "padCode": "AC22030010181",
   "videoStream": {
    "resolution": "1",
    "frameRate": "30",
    "bitrate": "2000"
   }
  }
 ]
}

响应示例

{
 "code": 200,
 "msg": null,
 "data": {
  "roomToken": "00165b7AS149e52467a4016f050b8cQQBDjDJKuTAbnZVwU52UOAENSTTExMDEwMDAwMDExAwAxMjMFAAAAXBTnZQEAXBTnZQIAXBTnZQMAXBTnZQQAAAAAACAADCbuyT9crLX9MNUCWyFhsFXwb4nuFPxfgE7MqHjv4yQ=",
  "roomCode": "android_12345",
  "appId": "65b749e52467a4016f050b8c"
 }
}

修改实例时区

接口地址

/openapi/open/pad/updateTimeZone

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
timeZoneAsia/ShanghaiString是UTC标准时间
padCodesArray是实例列表

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─vmStatus实例状态Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC32010140003"
 ],
 "timeZone": "Asia/Shanghai"
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756313802157,
        "data": [
        {
            "taskId": 760460229,
            "padCode": "ACP250417QAGGQ3S",
            "vmStatus": 0,
            "taskStatus": 1
        }
    ],
        "traceId": "ewab9p712ww0"
}

修改实例语言

接口地址

/openapi/open/pad/updateLanguage

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
languagezhString是语言
countryCNString否国家
padCodesArray是实例列表

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─vmStatus实例状态Integer实例在线状态(0:离线;1:在线)
├─ taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC32010140026"
 ],
 "language": "zh",
 "country": ""
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1717570663080, 
 "traceId": "ewab9p712ww0",
 "data": [
  {
   "taskId": 24,
   "padCode": "AC32010140026",
   "vmStatus": 1, 
      "taskStatus": 1

  }
 ]
}

修改实例SIM卡信息

接口地址

/openapi/open/pad/updateSIM

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
imei868034031518269String否IMEI号
imeisv00String否版本号
operatorShortnamCMSSString否运营商简称
operatorLongnameCHINA MOBILEString否运营商全称
iccid89860002191807255576String否SIM卡的唯一标识
imsi460074008004488String否前缀为sim卡运营商号:MCC(3位)+MNC(2位或3位)
phonenum18511112222String否电话号码
mcc502String否网络所属国家
mnc146String否移动设备网络代码
padCodesArray是实例列表
type1String是网络类型
tac871420String是追踪区域码
cellid870091003String是基站 ID
narfcn99240String是用于 5G 网络中标识信道的频点编号
physicalcellid6CString是用来标识 5G 或 LTE 网络中的特定小区

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─vmStatus实例状态Integer实例在线状态(0:离线;1:在线)

请求示例

{
    "padCodes": ["AC32010230011"],
        "imei": "868034031518269",
        "imeisv": "00",
        "operatorLongname": "CHINA MOBILE",
        "operatorShortnam": "CMSS",
        "iccid": "89860002191807255576",
        "imsi": "460074008004488",
        "phonenum": "861234566",
        "type": "9",
        "mcc": "502",
        "mnc": "146",
        "tac": "871420",
        "cellid": "870091003",
        "narfcn": "99240",
        "physicalcellid": "6C"
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1717570663080,
 "data": [
  {
   "taskId": 24,
   "padCode": "AC32010140033",
   "vmStatus": 1
  }
 ]
}

设置实例经纬度

接口地址

/openapi/open/pad/gpsInjectInfo

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
longitude116.397455Float是经度
latitude39.909187Float是纬度
altitude8Float否海拔 (需要更新到最新镜像)
speed8Float否速度,m/s (20251024之后的镜像)
bearing0Float否速度方向,° (20251024之后的镜像)
horizontalAccuracyMeters0.1Float否水平精度 (20251024之后的镜像)
padCodesArray是实例列表

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
traceIdewc84g8si0oyString链路追踪ID
msgsuccessString响应消息
ts1756021167163Long时间戳
dataBoolean

请求示例

{
 "padCodes": [
  "AC32010030001"
 ],
 "longitude": 116.397455,
 "latitude": 39.909187,
 "altitude": 8
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1717570663080,
 "traceId": "ewab9p712ww0",
 "data": true
}

执行任务:查询代理出口IP信息

该接口仅创建任务并返回任务ID与执行状态等信息,结果需要通过/task-center/open/task/padTaskDetail查询,返回字段taskResult对应pad_task.result。

接口地址

/openapi/open/network/proxy/info

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesArray是实例列表

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─vmStatus实例状态Integer实例在线状态(0:离线;1:在线)
├─ taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
  "padCodes": [
    "AC32010140012"
  ]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756348835040,
        "data": [
        {
            "taskId": 14294,
            "padCode": "ACP250820SBM4NEU",
            "vmStatus": 0,
            "taskStatus": 1
        }
    ],
        "traceId": "ewbrcry0frb4"
}

一键新机 ⭐

注意:一键新机会清除系统所有数据。请谨慎使用!

一键新机功能,将当前实例数据全部清空,并重新设置安卓属性

  • 虚拟机直接设置安卓属性,然后清空所有数据
  • 云真机直接清空所有数据(等同于重置),并且添加SIM信息,如果有传入模板id,会替换adi模板.如果没有传入模板,并且replacementRealAdiFlag为true.会随机挑选一个模板Id
  • 注意:如果不传国家信息,或者传入的国家信息服务找不到,会默认设置上新加坡的SIM信息
  • 如果传入的国家不支持,会返回错误500,提示:目前不支持国家编码XX

路径格式转换规则说明:

  1. /data/system/... -> /system/...
  2. /data/misc/... -> /misc/...
  3. /data/data/... -> /data/... (去掉第二个 data,例如 /data/data/com.xx -> /data/com.xx)
  4. 裸路径补全前缀:system/... -> /system/...;misc/... -> /misc/...;data/... -> /data/...
  5. /sdcard/... -> /media/0/... (将 /sdcard 开头的路径转换为 /media/0 开头)
  6. 其他路径:保持不变

接口地址

/openapi/open/pad/replacePad

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes[]Array是实例id列表
countryCodeSGString否国家编码(具体查看:https://chahuo.com/country-code-lookup.html)
realPhoneTemplateId65Long否模板id(从/openapi/open/realPhone/template/list接口获取)
androidProp{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}Object否参考 安卓改机属性列表
replacementRealAdiFlagfalseBoolean否真机是否随机adi模板(false 不随机 true 随机)
excludeRealPhoneTemplateIds[101,102]Long[]否随机ADI模板时需排除的模板ID列表
certificate参考手机根证书String否手机根证书
wipeDatatrueBoolean否是否清除用户数据,默认true(CBS2.4.4以上版本支持)
wipeSpecificData["/fonts","/media"]String[]否wipeData为false该参数生效;需要清除哪些数据
keepSpecificData["/fonts","/media"]String[]否wipeData为false该参数生效;需要保留哪些数据(与wipeSpecificData互斥)
enableCpuCoreConfigtrueBoolean否是否启用CPU大小核配置,本功能基于 Android cpuset 机制,为云手机物理机上的多个容器提供静态错峰的 CPU 资源分配方案。通过精细化划分大小核(Little/Big Cores)资源,显著提升单容器的性能稳定性与用户体验。

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject
├─taskId12818Long任务ID
├─padCodeAC22030010124String实例编号
├─vmStatus实例状态Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
  "padCodes": ["AC32010250031"],
  "countryCode": "SG",
  "realPhoneTemplateId": 210,
  "androidProp": {
    "persist.sys.cloud.battery.level": "67",
    "persist.sys.cloud.gps.lat": "1.3657",
    "persist.sys.cloud.gps.lon": "103.6464",
    "persist.sys.cloud.imsinum": "525050095718767"
  },
  "replacementRealAdiFlag": true,
  "excludeRealPhoneTemplateIds": [101, 102],
  "certificate": "手机根证书",
  "wipeData": false,
  "wipeSpecificData": ["/fonts", "/media"]
}

响应示例1

{
  "code": 200,
  "msg": "success",
  "ts": 1732270378320,
  "data": {
    "taskId": 8405,
    "padCode": "AC32010250031",
    "vmStatus": 2,
    "taskStatus": 1
  },
  "traceId": "ewab8qjqbaio"
}

响应示例2

{
   "code": 500,
   "msg": "目前不支持国家编码: xx",
   "ts": 1753521350163,
   "data": null,
    "traceId": "ewab8qjqbaio"

}

查询一键新机支持国家列表

接口地址

/openapi/open/info/country

请求方式

GET

请求数据类型

application/json

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]
├─codeADString国家编码
├─nameAndorraString国家名称(英文)

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1730192434383,
  "traceId": "ewab8qjqbaio",
  "data": [{
    "code": "AD",
    "name": "Andorra"
  }]
}

更新通讯录

fileUniqueId和info必填一个

接口地址

/openapi/open/pad/updateContacts

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes[]Array是实例id列表
fileUniqueIdcfca25a2c62b00e065b417491b0cf07ffcString否通讯录文件ID
operateType-1Interger否-1 新增联系人 0 删除联系人 1 覆盖联系人 ,默认为-1
infoObject[]否通讯录信息
├─firstNametomString否姓名
├─phone13111111111String否手机号
├─emailtom@gmail.comString否邮箱

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject
├─taskId12818Long任务ID
├─padCodeAC22030010124String实例编号
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)
├─vmStatus实例状态Integer实例在线状态(0:离线;1:在线)

请求示例

{
  "fileUniqueId": "cfca25a2c62b00e065b417491b0cf07ffc",
  "info": [{
    "firstName": "tom",
    "phone": "13111111111",
    "email": "xxxxx@gmail.com"
  }],
  "padCodes": [
    "AC32010180326"
  ]
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1756373645105,
  "data": [
    {
      "taskId": 392077,
      "padCode": "ATP250822LBOD8V7",
      "vmStatus": 0,
      "taskStatus": 1
    }
  ],
  "traceId": "ewcs8ow5u328"
}

实例设置代理

接口地址

/openapi/open/network/proxy/set

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
account2222String否账号
password2222String否密码
ip47.76.241.5String否IP
port2222Integer否端口
enabletrueBoolean是启用
padCodesArray是实例列表
proxyTypevpnString否支持参数:proxy、vpn
proxyNamesocks5String否支持参数:socks5、http-relay(包含http、https)
bypassPackageListArray否包名 设置该包名不走代理
bypassIpListArray否ip 设置该ip不走代理
bypassDomainListArray否域名 设置该域名不走代理
sUoTtrueBoolean否是否开启udp连接 默认为false

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─vmStatus实例状态Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC32010140023"
 ],
 "account": "2222",
 "password": "2222",
 "ip": "47.76.241.5",
 "port": 2222,
 "enable": true,
    "bypassPackageList":[],
    "bypassIpList":[],
    "bypassDomainList":[],
    "sUoT":true
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756313787216,
        "data": [
        {
            "taskId": 22323879,
            "padCode": "ACN250828ED53YMG",
            "vmStatus": 0,
            "taskStatus": 1
        }
    ],
        "traceId": "ewab8whwonb4"
}

实时查询已安装的应用列表

接口地址

/openapi/open/pad/listInstalledApp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesAC32010250001String[]是实例编号
appNameString否应用名称

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewc84g8si0oyString链路追踪ID
ts1756021167163Long时间戳
dataObject
├─padCodeAC32010250001String实例编号
├─appsObject[]应用集合
├─├─appName测试appString应用名称
├─├─packageNamecom.xxx.xxxString包名
├─├─versionCode150600String版本号
├─├─versionName15.6.0String版本名称
├─├─appState0Integer0 已完成 1安装中 2下载中

请求示例

{
 "padCodes": ["AC32010250001"],
 "appName": ""
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756313784076,
        "data": [
        {
            "padCode": "ACP250417KYBOAXK",
            "apps": [
                {
                    "appName": "WeChat",
                    "packageName": "com.tencent.mm",
                    "versionCode": "2900",
                    "versionName": "8.0.62",
                    "appState": 0
                }
            ]
        }
    ],
        "traceId": "ewab8qh6vwg1"
}

设置应用自启动

用于单个或多个实例配置应用开机自启动功能。本接口为覆盖修改,若需修改自启动应用以新自启动应用清单覆盖当前自启动应用清单再调用本接口即可。

  • 当 applyAllInstances=true 时,不下发任务,配置保存到数据库,等下次开机才生效,应用于所有实例(包括未来新建的实例)
  • 当 applyAllInstances=false 时,下发任务到指定实例,任务执行后立即生效
  • padCodes 和 applyAllInstances 互斥,优先使用 applyAllInstances

目前只支持安卓13、14、15

接口地址

openapi/open/pad/setKeepAliveApp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesAC32010250001String[]否实例编号(applyAllInstances=false时必填)
applyAllInstancesfalseBoolean是是否应用所有实例模式(true时不下发任务,等下次开机才生效;与padCodes互斥,优先级更高)
appInfosObject[]否
├─serverNamecom.example/com.example.service.TaskServiceString是com.xxx.xxx(包名)/com.xxx.xxx.service.DomeService (需要启动的服务完整路径)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datanull

请求示例

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "serverName": "com.example/com.example.service.TaskService"
  }
 ],
 "applyAllInstances": false
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1736326542985,
        "data": [{
        "taskId": 10074,
        "padCode": "AC32010250011",
        "errorMsg": null
    }]
}

设置应用保活(新)

用于单个或多个实例配置应用保活功能,并设置保活应用名单。开启后,名单内的应用在实例内存不足时不会被系统杀死。默认对应用保活进行持久化配置(实例重启也会生效) 本接口为覆盖修改,若需修改保活应用以新保活应用清单覆盖当前保活应用清单再调用本接口即可。

接口地址

openapi/open/pad/setKeepAliveApp/new

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesAC32010250001String[]是实例编号(最多500个)
appInfosObject[]是保活应用列表,空数组表示清空(最多保活3个应用)
├─packageNamecom.tencent.mmString否应用包名,留空或空数组表示清空

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datanull

请求示例

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "packageName": "com.tencent.mm"
  }]
}

清空保活列表示例

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": []
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1736326542985,
    "data": null
}

设置应用隐藏

下发隐藏包名列表到指定实例,允许包名列表为空(为空则清空隐藏列表并下发空列表)。需要注意:当应用未安装时,设置不会生效,需在安装后进行重启才可生效。

接口地址

openapi/open/pad/setHideAppList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesAC32010250001String[]是实例编号(最多200个)
appInfosObject[]是隐藏应用列表,空数组表示清空(0-200个)
├─packageNamecom.tencent.mmString否应用包名,留空或空数组表示清空

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datanull

请求示例

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "packageName": "com.tencent.mm"
  }]
}

清空隐藏列表示例

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": []
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1736326542985,
    "data": null
}

隐藏辅助服务

下发需隐藏辅助服务权限的应用列表到指定实例,设置成功后被设置隐藏权限的应用将不会被同实例上其他应用检测到申请了辅助服务权限。 说明: 1.指定应用本身能获取到自己开了无障碍 2.三方应用获取不到指定应用开了无障碍 3.无障碍列表里面也没有这个指定应用

接口地址

/openapi/open/pad/setHideAccessibilityAppList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes["AC32010250001"]String[]是实例编号数组(最多200个)
appInfos[]Object[]是隐藏应用列表对象数组,传空数组[]表示清空(0-200个)
├─packageNamecom.tencent.mmString是(数组非空时)应用包名。特殊值:传 * 或 ALL 表示隐藏所有应用的辅助服务权限

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datanull

请求示例 - 隐藏指定应用

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "packageName": "com.tencent.mm"
  }]
}

请求示例 - 清空隐藏列表

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": []
}

请求示例 - 隐藏所有应用

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "packageName": "*"
  }]
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1736326542985,
    "data": null
}

修改真机ADI模板

修改实例云真机ADI模版, 传入云真机模版ID

必要条件:

  1. 实例创建时,需要创建为云真机类型
  2. 实例创建时的安卓版本,需要和目标的ADI安卓版本一致

接口地址

/openapi/open/pad/replaceRealAdiTemplate

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC21020010001String是实例编号
wipeDatafalseBoolean是是否清除数据
realPhoneTemplateId186Long是云真机模板id

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC21020010001String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": ["AC32010250011"],
 "wipeData": true,
 "realPhoneTemplateId": 186
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1736326542985,
 "data": [{
  "taskId": 10074,
  "padCode": "AC32010250011",
  "errorMsg": null,
   "taskStatus": 1
 }]
}

错误码

错误码错误说明操作建议
110028实例不存在联系管理员
110064当前实例中有不满足升级真机条件,请检查实例检查实例是否是真机
110099ADI模板不存在,请检查参数检查ADI模板信息

异步执行ADB命令

在一个或多个云手机实例中异步执行命令

接口地址

/openapi/open/pad/asyncCmd

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22020020793String是实例编号
scriptContentcd /root;lsString是ADB命令,多条命令使用分号隔开

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewc84g8si0oyString链路追踪ID
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22020020793String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)

请求示例

{
    "padCodes": [
        "AC22020020793"
    ],
    "scriptContent": "cd /root;ls"
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1717570297639,
  "traceId": "ewab8whwonb4",
  "data": [
  {
   "taskId": 14,
   "padCode": "AC22030010001",
   "vmStatus": 1
  },
  {
   "taskId": 15,
   "padCode": "AC22030010002",
   "vmStatus": 0
  }
 ]
}

错误码

错误码错误说明操作建议
110003执行ADB命令失败联系管理员
110012命令执行超时请稍后重试

开关Root权限

在一个或多个云手机实例中开关root权限。 开个单个应用root,需要指定包名,否则会抛出异常.(云真机产品,在调用此接口时,不建议设置全局root权限,会有被风控检测到的可能。)

接口地址

/openapi/open/pad/switchRoot

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22020020793String是实例编号
globalRootfalseBoolean否是否开启全局root权限,默认不开启
packageNamecom.exampleString否应用包名(非全局root必传)多个包名通过,连接
rootStatusroot开启状态Integer是root状态,0:关闭 1:开启

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22020020793String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)

请求示例

{
  "padCodes": [
    "AC32010250002"
  ],
  "globalRoot": false,
  "packageName": "com.android.ftpeasys",
  "rootStatus": 0
}


响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1717570297639,
 "data": [
  {
   "taskId": 14,
   "padCode": "AC32010250002",
   "vmStatus": 1
  }
 ]
}

错误码

错误码错误说明操作建议
110003执行ADB命令失败联系管理员
110089开启单个root包名不能为空开启单个应用root时,包名不能为空

本地截图

实例截图。

接口URL

openapi/open/pad/screenshot

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC21020010231String是实例编号
rotation0Integer是截图画面横竖屏旋:0:截图方向不做处理,默认;1:截图画面旋转为竖屏时:a:手机竖屏的截图,不做处理。b:手机横屏的截图,截图顺时针旋转90度。
broadcastfalseBoolean否事件是否广播(默认false)
definitionfalseInteger否清晰度 取值范围0-100
resolutionHeightfalseInteger否分辨率 - 高 大于1
resolutionWidthfalseInteger否分辨率 - 宽 大于1

响应参数

参数名示例值参数类型是否必填参数描述
code200Integer是状态码
msgsuccessString是响应消息
ts1756021167163Long是时间戳
dataObject[]
├─taskId1Integer否任务ID
├─padCodeAC21020010231String否实例编号
├─vmStatus1Integer是实例在线状态(0:离线;1:在线)

请求示例

{
 "padCodes": [
  "AC21020010231"
 ],
 "rotation": 0,
 "broadcast": false,
    "definition": 50,
    "resolutionHeight": 1920,
    "resolutionWidth": 1080
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1717570337023,
 "data": [
  {
   "taskId": 16,
   "padCode": "AC22030010001",
   "vmStatus": 1
  },
  {
   "taskId": 17,
   "padCode": "AC22030010002",
   "vmStatus": 0
  }
 ]
}

错误码

错误码错误说明操作建议
110001截图失败请重试
110004执行重启命令失败稍后再次重启
110028实例不存在请检查实例是否存在

获取实例实时预览图片

获取指定的实例,当前时间下的屏幕截图。 调用此接口,会给实例返回一个url和到期时间,在有效期内,通过访问这个url,可以获取实时的云机屏幕截图。 可以批量传多个实例编号,批量获取预览图url。

接口地址

/openapi/open/pad/getLongGenerateUrl

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC11010000031String是实例编号(最多支持100个实例)
formatpngString否图片格式,枚举值:png、jpg、webp(CBS2.3.7以上版本支持),默认jpg
height50String否缩放高度(像素,不传或超出设备当前高度则使用设备当前高度)
width50String否缩放宽度(像素,不传或超出设备当前宽度则使用设备当前宽度)
quality60String否图片质量(百分比:0~100,不传或不在参数范围内则默认为60%)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─padCodeAC11010000031String实例编号
├─urlhttp://xxx.armcloud.pngString访问地址
├─expireAt1756024767163LongURL到期时间(毫秒时间戳)
├─successtrueBoolean是否成功生成URL
├─reason实例状态异常String失败原因(成功时为空)

请求示例

{
    "padCodes": [
        "AC11010000031",
        "AC11010000032"
    ], 
    "format": "png"
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756021167163,
        "data": [
        {
            "padCode": "AC11010000031",
            "url": "http://xxx.armcloud.png",
            "expireAt": 1756024767163,
            "success": true,
            "reason": ""
        },
        {
            "padCode": "AC11010000032",
            "url": "",
            "expireAt": null,
            "success": false,
            "reason": "实例状态异常"
        }
    ]
}

获取实例实时预览图片(高性能)

注意:新接口默认不接收尺寸、清晰度、格式等转换参数,输出图像保持云端原始分辨率与格式。若客户有特殊需求,请自行后处理。 获取指定的实例,当前时间下的屏幕截图。 调用此接口,会给实例返回一个url和到期时间,在有效期内,通过访问这个url,可以获取实时的云机屏幕截图。 可以批量传多个实例编号,批量获取预览图url。 接口说明: 高性能模式:CBS不再对截图进行任何编解码和转码处理,仅作数据透传通道,减少中间环节开销 原始输出:直接输出Rom生成的原始截图数据,保持云端原始分辨率与格式 参数简化:不接收尺寸、清晰度、格式等转换参数 对比旧接口性能优化后效果: 内存占用减少:避免原始图像完整加载至内存进行软编解码,减少双倍内存占用 响应速度提升:恢复流式传输优势,降低系统资源消耗。

接口地址

/openapi/open/pad/getLongGenerateUrlRaw

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC11010000031String是实例编号(最多支持100个实例)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─padCodeAC11010000031String实例编号
├─urlhttp://xxx.armcloud.pngString访问地址
├─expireAt1756024767163LongURL到期时间(毫秒时间戳)
├─successtrueBoolean是否成功生成URL
├─reason实例状态异常String失败原因(成功时为空)

请求示例

{
    "padCodes": [
        "AC11010000031",
        "AC11010000032"
    ]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756021167163,
        "data": [
        {
            "padCode": "AC11010000031",
            "url": "http://xxx.armcloud.png",
            "expireAt": 1756024767163,
            "success": true,
            "reason": ""
        },
        {
            "padCode": "AC11010000032",
            "url": "",
            "expireAt": null,
            "success": false,
            "reason": "实例状态异常"
        }
    ]
}

升级镜像

批量实例镜像升级

接口地址

/openapi/open/pad/upgradeImage

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22030010182String是实例编号
imageIdmg-24061124017String是镜像ID
wipeDatafalseBoolean是是否清除实例数据(data分区), true清除,false不清除
enableCpuCoreConfigtrueBoolean否是否启用CPU大小核配置,本功能基于 Android cpuset 机制,为云手机物理机上的多个容器提供静态错峰的 CPU 资源分配方案。通过精细化划分大小核(Little/Big Cores)资源,显著提升单容器的性能稳定性与用户体验。

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]
├─padCodeAC22030010182String实例编号
├─taskId1Integer任务ID
├─errorMsg“”String错误信息

请求示例

{
    "padCodes": [
        "AC22030010182"
    ],
    "wipeData": false,
    "imageId": "mg-24061124017"
}

响应示例

{
 "code": 200,
  "traceId": "ewab8whwonb4",
  "msg": "success",
 "ts": 1718594881432,
 "data": [
  {
   "taskId": 63,
   "padCode": "AC22030010182",
   "errorMsg": null
  }
 ]
}

错误码

错误码错误说明操作建议
110041镜像不存在镜像id传参有误
110037执行升级镜像指令失败实例状态有误,联系管理员
110038执行升级镜像命令失败实例状态有误,联系管理员

升级真机镜像

批量实例真机镜像升级

接口地址

/openapi/open/pad/virtualRealSwitch

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22030010182String是实例编号
imageIdmg-24061124017String是镜像ID
wipeDatafalseBoolean是是否清除实例数据(data分区), true清除,false不清除
realPhoneTemplateId178Integer否真机模板ID upgradeImageConvertType=real时必填
upgradeImageConvertTypevirtualString是转换镜像类型 virtual:虚拟机 real:云真机
screenLayoutId14Integer否屏幕布局ID upgradeImageConvertType=virtual时必填
certificate参考手机根证书String否自定义手机根证书
deviceAndroidProps{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}Object否安卓属性配置,参考 安卓改机属性列表(注意: )
enableCpuCoreConfigtrueBoolean否是否启用CPU大小核配置,本功能基于 Android cpuset 机制,为云手机物理机上的多个容器提供静态错峰的 CPU 资源分配方案。通过精细化划分大小核(Little/Big Cores)资源,显著提升单容器的性能稳定性与用户体验。

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]
├─padCodeAC22030010182String实例编号
├─taskId1Integer任务ID
├─errorMsg“”String错误信息

请求示例

{
    "padCodes": [
        "AC32010210023"
    ],
        "imageId": "img-24112653977",
        "wipeData": true,
        "realPhoneTemplateId": 178,
        "upgradeImageConvertType": "virtual",
        "screenLayoutId": 14
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1718594881432,
 "traceId": "ewab8whwonb4",
    "data": [
  {
   "taskId": 63,
   "padCode": "AC22030010182",
   "errorMsg": null
  }
 ]
}

错误码

错误码错误说明操作建议
110041镜像不存在镜像id传参有误
110037执行升级镜像指令失败实例状态有误,联系管理员
110038执行升级镜像命令失败实例状态有误,联系管理员
110064当前实例中有不满足升级真机条件,请检查实例当前实例中有不满足升级真机条件,请检查实例

分页获取真机模板

分页获取真机模板

接口地址

/openapi/open/realPhone/template/list

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
pageIndex1Integer否页码 默认1
pageSize10Integer否每页显示数量 默认10 取值范围为1-100
androidImageVersion14String否安卓镜像版本

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]响应数据列表
├─id178Long账号ID
├─brandgoogleString品牌
├─modelPixel 7 Pro(12G)String型号
├─fingerprintMd5f5da7b97678ac19309f0cf0203e072d7String安卓md5(ro.build.fingerprint)
├─fingerprintgoogle/cheetah/cheetah:13/TQ3A.230901.001/10750268:user/release-keysString安卓ro.build.fingerprint
├─resourceSpecificationCodem2-3String规格编号
├─screenLayoutCoderealdevice_1440x3120x560String屏幕布局编码
├─adiTemplateDownloadUrlhttps://example.com/file.zipStringadi模板文件下载路径
├─adiTemplatePwd123456Stringadi模板文件密码
├─propertyJson{"test": "testa"}JSON实例属性
├─androidImageVersion13Integer安卓镜像版本
├─deleteFlag0Integer是否删除(1:已删除;0:未删除)
├─createByadminString创建人
├─createTime2024-08-28 12:00:00Timestamp创建时间
├─updateByadminString修改人
├─updateTime2024-08-28 12:30:00Timestamp修改时间
├─deviceNamePixel ProString机型名称(别名/展示用)
├─isOfficial1Integer是否正式版(0:测试版 1:正式版)
├─status1Integer是否启用(0:禁用 1:启用)
├─adiTemplateVersionv1.0.2Stringadi模板版本号
├─modelCodecheetahString机型标识
├─isPublic1Integer模板使用类型(1=公共 0=私有)
├─aospVersion13.0.1Stringaosp版本
├─testCasesDownloadUrlhttps://example.com/cases.zipString测试用例文件下载路径

请求示例

{
    "pageIndex": 1,
    "pageSize": 10
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756313820061,
        "data": [
        {
            "id": 202,
            "createTime": "2025-03-12T02:29:43.000+00:00",
            "createBy": "",
            "updateTime": "2025-04-29T09:44:28.000+00:00",
            "updateBy": "",
            "brand": "HONOR(FIX)",
            "model": "ELZ-AN10(8G)",
            "fingerprint": "HONOR/ELZ-AN10/HNELZ:14/HONORELZ-AN10/8.0.0.185CHNC00E185R4P6:user/release-keys",
            "fingerprintMd5": "9bf2de4b6aa70466a6f76f66539c4613",
            "resourceSpecificationCode": "m2-4",
            "screenLayoutCode": "realdevice_1344x2772x476",
            "adiTemplateDownloadUrl": "https://oss-hk.armcloud.net/adi/35fdc068d6fdc32a691554989008160b_fix2.zip",
            "adiTemplatePwd": "XMDoxJgoKIZKoWbWlnmY",
            "propertyJSON": "{}",
            "androidImageVersion": 14,
            "deleteFlag": false,
            "deviceName": "ELZ-AN10(8G)",
            "isOfficial": 1,
            "status": 1,
            "adiTemplateVersion": null,
            "modelCode": null,
            "isPublic": 1,
            "testCasesDownloadUrl": null,
            "aospVersion": "android14"
        }
    ],
        "traceId": "ewabantnnwn4"
}

获取公共屏幕布局列表

获取公共屏幕布局列表

接口地址

/openapi/open/screenLayout/publicList

请求方式

POST

请求数据类型

application/json

请求Body参数

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756349808017Long时间戳
traceIdewbssur1jbwgString链路追踪ID
dataObject[]响应数据列表
├─id12Long账号ID
├─codesingle-portrait-basicString屏幕布局编码
├─screenWidth1080String屏幕宽度
├─screenHigh1920String屏幕高度
├─pixelDensity320String像素密度
├─screenRefreshRate60String屏幕刷新率
├─status1Integer状态(0:停用;1:启用)
├─deleteFlag0Integer是否删除(1:已删除;0:未删除)

请求示例


响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756349808017,
        "data": [
        {
            "id": 12,
            "code": "single-portrait-basic",
            "screenWidth": "1080",
            "screenHigh": "1920",
            "pixelDensity": "320",
            "screenRefreshRate": "60",
            "status": 1,
            "deleteFlag": 0
        }
    ],
        "traceId": "ewbssur1jbwg"
}

批量获取实例机型信息

根据实例编号批量获取对应的实例的机型信息。

接口地址

/openapi/open/pad/modelInfo

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22030010182String是实例编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewbssur1jbwgString链路追踪ID
ts1756021167163Long时间戳
dataObject[]
├─padCodeAC22030010182String实例编号
├─imei524803173613682StringIMEI
├─serialno01NM5ON34M4OString序列号
├─wifimac04:3a:6c:e5:e9:8d:62:d6:4aStringWi-Fi的mac地址
├─androididaa6bcedf1426546cStringAndroid实例唯一标识
├─modelMi 10 ProString型号
├─brandXiaomiString品牌
├─manufacturerXiaomiString厂商
├─isRoot1String是否是ROOT权限
├─width720Integer云手机的宽 最大不超过1080
├─height1280Integer云手机的高 最大不超过1920
├─memoryLimit1024Integer内存限额
├─bluetoothaddr3A:1F:4B:9C:2D:8EString蓝牙地址
├─phonenum1112341234String手机号码
├─romVersionandroid13String安卓版本
├─dataSize2367381504Integer内存大小(b)
├─dataSizeAvailable365830144Integer剩余可用(b)
├─dataSizeUsed10242001551360已使用(b)
├─romVersionandroid14Stringrom版本

请求示例

{
    "padCodes": [
        "AC22030010182"
    ]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1752845766596,
        "data": [
        {
            "padCode": "ACN250718J6ZLUYS",
            "imei": "237150320344334",
            "serialno": null,
            "wifimac": "44:5a:56:fb:6a:ec",
            "androidid": "ecb978a3cafff13",
            "model": "SM-A057F",
            "brand": "samsung",
            "manufacturer": "samsung",
            "isRoot": null,
            "width": 1080,
            "height": 2400,
            "memoryLimit": null,
            "bluetoothaddr": null,
            "phonenum": null,
            "dataSize": null,
            "dataSizeAvailable": null,
            "dataSizeUsed": null,
            "romVersion": "android14"
        }
    ],
        "traceId": "esb357am18n4"
}

添加应用黑名单列表

根据实例规格添加应用黑名单。

接口地址

/openapi/open/appBlack/setUpBlackList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padGradeq2-1String是实例规格
blackAppsObject[]是黑名单列表
├─appPkgcn.v8box.appString是应用包名
├─appNamex8沙箱String是应用名称

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721647657112Long时间戳
data“”String

请求示例

{
 "padGrade": "q2-1",
 "blackApps": [
  {
   "appPkg": "cn.v8box.app",
   "appName": "x8沙箱"
  }
 ]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1721647657112,
 "data": null
}

设置实例黑名单

根据实例规格设置实例黑名单。

接口地址

/openapi/open/pad/triggeringBlacklist

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padGradeq2-1String是实例规格
padCodesString[]否
├─AC22030010124String否实例编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
dataObject[]
├─taskId12818Integer任务ID
├─padCodeAC22030010124String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)

请求示例

{
 "padGrade": "q2-4",
 "padCodes": [
  "AC22030010124"
 ]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1721739857317,
 "data": [
  {
   "taskId": 12818,
   "padCode": "AC22030010124",
   "vmStatus": 1
  }
 ]
}

错误码

错误码错误说明操作建议
110051该规格不存在应用黑名单配置需添加规格应用黑名单列表
110028实例不存在传参有误
110052执行设置应用黑名单指令失败请重试

设置实例带宽

根据实例编号设置实例带宽。

接口地址

/openapi/open/pad/setSpeed

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22030010124String是实例编号
upBandwidth10.00float是上行带宽 Mbps (0:不限制;-1:限制上网)
downBandwidth10.00float是下行带宽 Mbps (0:不限制;-1:限制上网)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
traceIdewbssur1jbwgString链路追踪ID
dataObject[]
├─taskId679Integer任务ID
├─padCodeAC32010140011String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC32010140011"
 ],
 "upBandwidth": 10.00,
 "downBandwidth": 10.00
}

响应示例

{
 "code": 200,
 "msg": "success",
 "traceId": "ewab8qjqbaio",
 "ts": 1721640654237,
 "data": [
  {
   "taskId": 679,
   "padCode": "AC32010140011",
   "vmStatus": 1,
   "taskStatus": 1
  }
 ]
}

开启关闭ADB

根据实例编号打开或关闭实例adb

接口地址

/openapi/open/pad/openOnlineAdb

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是实例列表(传入实例数量1-200个)
├─AC32010250032String是实例编号
openStatus1Integer是开启关闭ADB状态(1开启 0或者不传默认关闭)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
dataObject[]
├─taskId16147Integer任务id
├─padCodeAC32010250032String实例编号
├─taskStatus3Integer任务状态(-1全失败,-2部分失败,-3取消,-4超时,-5异常,1,等待执行,2执行中,3完成)
├─taskResultsuccessString任务结果

请求示例

{   
    "padCodes":[
        "AC32010250032"
    ],
    "openStatus": 1
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1736920929306,
    "data": [
        {
        "taskId": 16147,
        "padCode": "AC32010250032",
        "taskStatus": 3,
        "taskResult": "success"
        }
    ]
}

获取ADB连接信息

根据实例编号获取adb连接信息 响应数据(key,adb)不全情况时,请调用开启关闭ADB开启adb。

接口地址

/openapi/open/pad/adb

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeAC32010250032String是实例编号
enabletrueBoolean是ADB 状态 true:开启 false:关闭

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewbssur1jbwgString链路追踪ID
ts1736922808949Long时间戳
dataObject[]
├─padCodeAC32010250032String实例编号
├─commandssh -oHostKeyAlgorithms=+ssh-rsa 10.255.3.2_001_1736922765389@156.59.80.166 -p 1824 -L 8572:adb-proxy:53728 -NfStringSSH 连接指令
├─expireTime2025-01-16 14:32:00Stringadb 链接有效期
├─enabletrueBooleanADB 状态 true:开启 false:关闭
├─key3CXr3FJZ6gbnGuJctDOpP9M6X6Rl786xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==String连接密钥
├─adbadb connect localhost:8577Stringadb连接信息

请求示例

{   
    "padCode": "AC32010250032",
    "enable": true
}

响应示例

{
    "code": 200,
    "msg": "success",
    "traceId": "ewab8qjqbaio",
    "ts": 1736922808949,
    "data": {
        "padCode": "AC32010250032",
        "command": "ssh -oHostKeyAlgorithms=+ssh-rsa 10.255.3.2_001_1736922765389@156.59.80.166 -p 1824 -L 8572:adb-proxy:53728 -Nf",
        "expireTime": "2025-01-16 14:32:00",
        "enable": true,
        "key": "3CXr3FJZ6gbnGuJctDOpP9M6X6Rl786xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==",
        "adb": "adb connect localhost:8577"
    }
}

批量获取ADB连接信息

根据实例编号列表批量获取或关闭adb连接信息。执行开启操作时若成功返回的连接信息不全,请先调用开启关闭ADB接口重新开启ADB后再重试。本接口单次最多支持10个实例。

接口地址

/openapi/open/pad/batch/adb

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes["AC32010250032","AC32010250033"]String[]是实例编号列表,数量上限10个
enabletrueBoolean是是否开启ADB,true为开启并返回连接信息,false为关闭ADB

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewbssur1jbwgString链路追踪ID
ts1736922808949Long时间戳
dataObject
├─successListObject[]批量执行成功的结果列表
│ ├─padCodeAC32010250032String实例编号
│ ├─commandssh -oHostKeyAlgorithms=+ssh-rsa 10.255.3.2_001_1736922765389@156.59.80.166 -p 1824 -L 8572:adb-proxy:53728 -NfStringSSH连接指令
│ ├─expireTime2025-01-16 14:32:00Stringadb链接有效期
│ ├─enabletrueBooleanADB状态 true:开启 false:关闭
│ ├─key3CXr3FJZ6gbnGuJctDOpP9M6X6Rl786xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==String连接密钥
│ ├─adbadb connect localhost:8577Stringadb连接信息
├─failedListObject[]批量执行失败的结果列表
│ ├─padCodeAC32010250034String实例编号
│ ├─errorMsg实例未运行String失败原因
│ ├─errorCodePAD_NOT_RUNNINGString错误码

请求示例

{
    "padCodes": [
        "AC32010250032",
        "AC32010250033"
    ],
    "enable": true
}

响应示例

{
    "code": 200,
    "msg": "success",
    "traceId": "ewbssur1jbwg",
    "ts": 1736922808949,
    "data": {
        "successList": [
            {
                "padCode": "AC32010250032",
                "command": "ssh -oHostKeyAlgorithms=+ssh-rsa 10.255.3.2_001_1736922765389@156.59.80.166 -p 1824 -L 8572:adb-proxy:53728 -Nf",
                "expireTime": "2025-01-16 14:32:00",
                "enable": true,
                "key": "3CXr3FJZ6gbnGuJctDOpP9M6X6Rl786xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==",
                "adb": "adb connect localhost:8577"
            }
        ],
        "failedList": [
            {
                "padCode": "AC32010250034",
                "errorMsg": "实例未运行",
                "errorCode": "PAD_NOT_RUNNING"
            }
        ]
    }
}

模拟触控

通过传入xy坐标,模拟在实例中的触控事件(按下、抬起、触摸中)

异常检查:如果2s内有重复请求,报错提示内容:请勿频繁操作

接口地址

/openapi/open/pad/simulateTouch

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型参数描述
padCodes2200String[]需要触发点击的实例编码
width120Integer容器宽度
height120Integer容器高度
pointCount1Integer多点触控(多个手指点击云机屏幕效果),默认1,范围1-10,传其他数字均使用默认值
positions[{"actionType":0,"x":100,"y":100,"nextPositionWaitTime":20}]Object[]点击坐标组
├─ actionType1Integer操作类型(0:按下;1:抬起;2:触摸中)
├─ x100float点击的x坐标
├─ y100float点击的y坐标
├─ nextPositionWaitTime100Integer多组坐标时,触发下一组点击坐标的等待间隔时间ms毫秒值
├─ swipe-1float滚动距离 -1 下划 1 上划
├─ touchTypegestureSwipeStringgestureSwipe划动事件 gesture触控事件 keystroke按键事件(默认是按下抬起)
├─ keyCode1Integer用于标识用户按下或释放的具体按键
├─ pressure0.5float触点压力
├─ size0.5float触点占屏幕面积比例

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1736922808949Long时间戳
traceIdewbssur1jbwgString链路追踪ID
dataObject[]
├─padCodeAC32032String实例编号
├─taskId10004759Long任务id
├─vmStatus0String实例在线状态
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
  "padCodes": [
    "实例编号"
  ],
  "width": 1080,
  "height": 1920,
  "pointCount":1,
  "positions": [
    {
      "actionType": 0,
      "x": 100,
      "y": 100,
      "nextPositionWaitTime": 20,
      "swipe":-1, 
      "touchType":"gestureSwipe",
      "keyCode":1,
        "pressure":0.5,
        "size":0.5
    },
    {
      "actionType": 2,
      "x": 110,
      "y": 110,
      "nextPositionWaitTime": 22
    },
    {
      "actionType": 2,
      "x": 120,
      "y": 120,
      "nextPositionWaitTime": 23
    },
    {
      "actionType": 1,
      "x": 120,
      "y": 120
    }
  ]
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1743676563784,
  "traceId": "ewab8qjqbaio",
    "data": [
    {
      "taskId": 100059,
      "padCode": "ACP00001",
      "vmStatus": 0,
      "taskStatus": 1

    },
    {
      "taskId": 100060,
      "padCode": "ACP00001",
      "vmStatus": 0,            
      "taskStatus": 1

    }
  ]
}

实例操作任务详情

查询指定实例操作任务的执行结果详细信息。

接口地址

/task-center/open/task/padTaskDetail

请求方式

POST

请求数据类型

application/json

请求Query参数

参数名示例值参数类型是否必填参数描述
taskIdsInteger[]是
├─taskId1Integer是任务ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewbssur1jbwgString链路追踪ID
dataObject []子任务列表详情
├─ taskId1Integer子任务ID
├─ padCodeVP22020020793String实例标识
├─ taskStatus2String TODO类型使用错误任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成;9:排队中)
├─ endTime1713429401000Long子任务结束时间戳
├─ taskContent“”String任务内容
├─ taskResult“”String任务结果
├─ errorMsg“”String错误信息

请求示例

{
 "taskIds":[1,2]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756313781081,
        "data": [
        {
            "taskId": 22323794,
            "padCode": "ACN250828DYJE95Z",
            "taskStatus": 2,
            "endTime": null,
            "taskContent": null,
            "taskResult": null,
            "errorMsg": null
        }
    ],
        "traceId": "ewab8kpxb7k0"
}

获取实例执行脚本结果

通过执行脚本任务ID来获取实例执行脚本结果。

接口地址

/task-center/open/task/executeScriptInfo

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
taskIdsInteger []是数组长度为1-100
├─1Integer否任务ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewc84g8si0oyString链路追踪ID
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22020020793String实例编号
├─taskStatus3Integer任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
├─endTime1756021166163Long任务执行结束时间
├─taskContentSuccessString任务内容
├─taskResultSuccessString任务结果
├─errorMsg实例不存在String失败的原因

请求示例

{
 "taskIds": [1]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1752214432301,
        "data": [
        {
            "taskId": 49884,
            "padCode": "ATP250707FNSVRMC",
            "taskStatus": 3,
            "endTime": 1752214271000,
            "taskContent": null,
            "taskResult": null,
            "errorMsg": "调用Adb命令成功"
        }
    ],
        "traceId": "erl0i57h6v40"
}

获取实例截图结果

通过截图任务 ID 来获取实例的截图结果。

接口URL

/task-center/open/task/screenshotInfo

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
taskIdsInteger []是
├─1Integer否任务ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewbssur1jbwgString链路追踪ID
ts1756021167163Long时间戳
data-Object[]任务列表详情
├─ taskId1Integer任务ID
├─ taskStatus3Integer任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
├─ padCodeAC22020020793String实例编号
├─ taskContentSuccessString任务内容
├─ taskResultSuccessString任务结果
├─ endTime1756121167163String任务执行结束时间

请求示例

{
 "taskIds": [1]
}

响应示例

{
 "code": 200,
 "msg": "success",
  "traceId": "ewab8qjqbaio",
  "ts":1713773577581,
 "data":[
    {
    "taskId": 1,
    "taskStatus": 3,
    "padCode": "AC22020020793",
    "taskContent": "Success",
    "taskResult": "Success",
    "endTime": 1756121167163
    }
   ]
}

实例重启重置执行结果

通过任务ID来获取实例重启重置执行结果。

接口地址

/task-center/open/task/padExecuteTaskInfo

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
taskIdsInteger []是
├─1Integer是任务ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewbssur1jbwgString链路追踪ID
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC21020010001String实例编号
├─taskStatus3Integer任务状态:(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
├─ endTime1756021166163Long任务执行结束时间
├─ taskContent“”String任务内容
├─ taskResultSuccessString任务结果

请求示例

{
    "taskIds": [1]
}

响应示例

{
    "code": 200,
    "msg": "success",  
    "traceId": "ewab8qjqbaio",
    "ts": 1756021167163
    "data":[
        {
            "taskId": 1,
            "padCode": "AC22030022911",
            "taskStatus": 3,
            "endTime": 1756021166163,
            "taskContent": null,
            "taskResult": "Success"
        }
    ]
}

实例列表信息

根据查询条件分页获取实例列表信息。

接口地址

/openapi/open/pad/infos

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
page1Integer是页码
rows10Integer是条数
filterSubCustomerFlag1Integer否0:同时查询主/子账户;1:仅查询主账号;-1:仅查询子账号。默认同时查询主/子账号。
armServerCodeACS32010260000Integer否服务器编号
deviceCodeAC32010250020String否板卡编号
netStorageResFlag1Integer否0:本地实例,1:网存实例
padStatus10Integer否实例状态: 10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪 16-备份中 17-还原中 18-关机 19-关机中 20-开机中 21-关机失败 22-开机失败
padTyperealString否实例类型(virtual:虚拟机;real:真机)
idc1String否机房Id
padCodesString[]否
├─AC22010020062String否实例编号
groupIdsInteger[]否
├─1Integer否实例分组ID
orderByCreateTime_DESCString否排序字段, 列举情况:
CreateTime_DESC: 创建时间倒序;
其他任何值: 创建时间正序

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─page1Integer当前页
├─rows10Integer每页的数量
├─size1Integer当前页的数量
├─total1Integer总记录数
├─totalPage1Integer总页数
├─pageDataobject[]列表
├─├─padCodeVP21020010391String实例编号
├─├─padGradeq1-2String实例开数(q1-6六开,q1-2二开)
├─├─padStatus10String实例状态 (10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪)
├─├─groupId0Integer分组ID
├─├─idc1String机房id
├─├─deviceIp192.168.0.0String云机ip
├─├─padIp192.168.0.0String实例ip
├─├─customerAccountstar@testString该实例所属账户
├─├─armServerCodeACS32010160000String服务器编号
├─├─padTyperealString实例类型(virtual:虚拟机;real:真机)
├─├─deviceCodeAC32010150070String板卡编号
├─├─createTime2025-09-15 14:11:21String实例创建时间
├─├─imageVersionandroid14String安卓版本
├─├─appsString[]安装的应用列表
├─├─├─armcloud001String安装的应用

请求示例

{
        "page": 1,
        "rows": 10,
        "filterSubCustomerFlag": 0,
        "padCodes": [
        "AC21020010391"
    ],
        "armServerCode": "ACS32010260000",
        "deviceCode": "AC32010250020",
        "groupIds": [
        1
    ]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1737625119669,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 3,
            "total": 3,
            "totalPage": 1,
            "pageData": [
            {
                "padCode": "AC32010250021",
                "padGrade": "m2-3",
                "padStatus": 12,
                "groupId": 3,
                "idcCode": "1",
                "deviceIp": "172.31.3.3",
                "padIp": "10.255.3.5",
                "customerAccount": "star@test",
                "padType": "real",
                "adbOpenStatus": "0",
                "armServerCode": "ACS32010260000",
                "deviceCode": "AC32010250020",
                "apps": null,
                "imageId": "img-25012330968",
                "createTime": "2025-09-15 14:11:21", 
                "imageVersion": "android14"
            }
            // ... 更多实例对象
        ]
    }
}

实例列表信息(优化分页版本)

根据查询条件获取实例列表信息,使用 lastId + rows 方式进行分页。

接口地址

/openapi/open/pad/infos/new

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]否实例编号
├─AC22010020062String否实例编号
deviceSubnet192.168.0.0/24String否物理机子网
armServerCodeACS32010260000String否服务器编号
clusterCodecluster-001String否集群编号
idc1String否机房Id
padTyperealString否实例类型(virtual:虚拟机;real:真机)
deviceCodeAC32010250020String否板卡编号
groupIdsInteger[]否实例分组ID
├─1Integer否实例分组ID
lastId0Long否上次查询的最后一条记录ID,首次查询传null或0
rows10Integer是查询数量,范围1-1000,默认10
netStorageResFlag1Integer否是否网存集群 0 本地集群 1网存集群 2魔盒

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─rows10Integer每页的数量
├─size3Integer当前页的数量
├─lastId123Long最后一条记录ID,用于下次分页查询
├─hasNexttrueBoolean是否还有下一页
├─pageDataobject[]列表
├─├─padCodeVP21020010391String实例编号
├─├─padGradeq1-2String实例开数(q1-6六开,q1-2二开)
├─├─padStatus10String实例状态 (10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪)
├─├─groupId0Integer分组ID
├─├─idc1String机房id
├─├─deviceIp192.168.0.0String云机ip
├─├─padIp192.168.0.0String实例ip
├─├─customerAccountstar@testString该实例所属账户
├─├─armServerCodeACS32010160000String服务器编号
├─├─padTyperealString实例类型(virtual:虚拟机;real:真机)
├─├─deviceCodeAC32010150070String板卡编号
├─├─createTime2025-09-15 14:11:21String实例创建时间
├─├─imageVersion14String安卓版本
├─├─appsString[]安装的应用列表
├─├─├─armcloud001String安装的应用

请求示例

{
    "lastId": 0,
    "rows": 10,
    "padCodes": [
        "AC21020010391"
    ],
    "armServerCode": "ACS32010260000",
    "deviceCode": "AC32010250020",
    "groupIds": [
        1
    ],
    "netStorageResFlag": 1
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1737625119669,
    "data": {
        "rows": 10,
        "size": 3,
        "lastId": 123,
        "hasNext": true,
        "pageData": [
            {
                "padCode": "AC32010250021",
                "padGrade": "m2-3",
                "padStatus": 12,
                "groupId": 3,
                "idcCode": "1",
                "deviceIp": "172.31.3.3",
                "padIp": "10.255.3.5",
                "customerAccount": "star@test",
                "padType": "real",
                "adbOpenStatus": "0",
                "armServerCode": "ACS32010260000",
                "deviceCode": "AC32010250020",
                "apps": null,
                "imageId": "img-25012330968",
                "createTime": "2025-09-15 14:11:21",
                "imageVersion": "14"
            }
            // ... 更多实例对象
        ]
    }
}

实例分组列表

获取用户当前所有实例分组列表信息(包括:分组 ID,分组名称,分组下实例数量)。 接口地址

/openapi/open/group/infos

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeAC21020010391String否实例编号
groupIdsInteger[]否
├─1Integer否分组ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─groupId1Integer分组ID
├─groupName分组一String分组名称
├─padCount1Integer分组下的实例数

请求示例

{
 "padCode": "AC21020010391",
 "groupIds": [1]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": [
   {
    "groupId": 1,
    "groupName": "分组一",
    "padCount": 1
   }
 ]
}

导入通话记录

此接口允许将通话记录数据导入至云手机中。接口在导入过程中,会自动检测云手机通讯录中已保存的联系人,并将这些联系人对应的名称显示在通话记录中,便于用户快速识别联系人。

接口地址

/openapi/open/pad/addPhoneRecord

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesACP2505060777String[]是需要编辑通话记录的实例编码
callRecords[{"number":"18009781201","inputType":1,"duration":30,"timeString":"2025-05-06 14:00:09"}]Object[]是通话记录
├─ number13900000000String是电话号码
├─ inputType1int是通话类型(1:拨出;2:接听;3:未接)
├─ duration60int是通话时长;单位是秒,未接电话是0秒
├─ timeString2025-05-08 12:30:00String否通话时长

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1736922808949Long时间戳
dataObject[]
├─padCodeAC32032String实例编号
├─taskId10004759Long任务id
├─vmStatus0String实例在线状态

请求示例

{
  "padCodes": [
     "实例编号"
  ],
  "callRecords": [
    {
      "number": "18009781201",
      "inputType": 1,
      "duration": 30,
      "timeString": "2025-05-06 14:00:09"
    },
    {
      "number": "18009781202",
      "inputType": 2,
      "duration": 60,
      "timeString": "2025-05-07 14:00:09"
    },
    {
      "number": "18009781203",
      "inputType": 3,
      "duration": 0
    }
  ]
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1743676563784,
  "data": [
    {
      "taskId": 100059,
      "padCode": "ACP00001",
      "vmStatus": 0
    },
    {
      "taskId": 100060,
      "padCode": "ACP00001",
      "vmStatus": 0
    }
  ]
}

云机文本信息输入

在云机中预先聚焦好输入框,调用该接口传入指定的文本信息内容后,文本展示在云机指定位置。

接口地址

/openapi/open/pad/inputText

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesACP2505060777String[]是实例编码
texthello123String是输入文本
响应参数
参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1736922808949Long时间戳
dataObject[]
├─padCodeAC32032String实例编号
├─taskId10004759Long任务id
├─vmStatus0String实例在线状态
├─taskStatus1String任务当前状态

请求示例

{
   "padCodes": [
      "ACP250509FECQN33",
      "ACP250509T1VME44",
      "ACP25050917AYX11"
   ], 
   "text": "12345678"
}

响应示例

{
     "msg": "success",
     "code": 200,
     "data": [ 
      {
         "padCode": "ACP250509FECQN33",
         "vmStatus": 0,
         "taskId": 10013014,
         "taskStatus": 1
      },
      {
         "padCode": "ACP250509T1VME44",
         "vmStatus": 0,
         "taskId": 10013015,
         "taskStatus": 1
      },
      {
         "padCode": "ACP25050917AYX11",
         "vmStatus": 0,
         "taskId": 10013016,
         "taskStatus": 1
      }
   ],
   "ts": 1746797852244
}

模拟发送短信

向实例内模拟下发一条短信,支持批量实例。(暂时限定AOSP13、14)

接口地址

/openapi/open/pad/simulateSendSms

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes["ACN2505060777"]String[]是实例编码列表,数量1-100个
senderNumber13800000000String是发送方号码,不支持大陆号码。(格式:长度限制16位,允许数字、英文、空格、+-号)
smsContent这是一条测试短信。String是短信内容(长度限制127位)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1736922808949Long时间戳
traceIdewb123abcString追踪ID
datatrueBoolean是否调用成功

请求示例

{
  "padCodes": ["ACN2505060777"],
  "senderNumber": "13800000000",
  "smsContent": "这是一条测试短信。"
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1736922808949,
  "traceId": "ewb123abc",
  "data": true
}

重置GAID

调用该接口传入指定实例编号或者实例分组,将重置云机中的 advertising ID(Reset advertising ID)

接口地址

/openapi/open/pad/resetGAID

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC21020010001String是实例编号
groupIdsInteger[]否
├─1Integer否实例组ID
resetGmsTypeGAIDString是重置gms类型, 可选:GAID
oprByzhangsanString否操作人
taskSourceOPEN_PLATFORMString是任务来源,可选:OPEN_PLATFORM

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC21020010001String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)

请求示例

{
   "padCodes": [
      "ACPXXXXXXXXXXXXXXX"
   ],
  "taskSource": "OPEN_PLATFORM",
  "oprBy": "admin",
  "resetGmsType": "GAID"
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1717559681604,
    "data": [
         {
            "taskId": 88,
            "padCode": "AC22030010001",
            "vmStatus": 1
         },
         {
            "taskId": 89,
            "padCode": "AC22030010002",
            "vmStatus": 0
         }
      ]
}

注入音频到实例麦克风

将一个音频文件注入到实例的麦克风,代替麦克风收音的接口 备注:目前仅支持注入pcm格式的音频文件,请处理转好格式后再进行上传

接口地址

/openapi/open/pad/injectAudioToMic

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesACP2505060777String[]是实例编码
urlhttp://localhost/abcString否音频文件下载地址 (此字段和fileUniqueId 2选1传值)
fileUniqueId8fc73d05371740008ea27a2707496a82String否文件id唯一标识(此字段和url 2选1传值)
enabletrueBoolean是注入开关
响应参数
参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1736922808949Long时间戳
dataObject[]
├─padCodeAC32032String实例编号
├─taskId10004759Long任务id
├─vmStatus0String实例在线状态
├─taskStatus1String任务当前状态

请求示例

{
  "padCodes": [
    "ACP250509FECQN33","ACP250509T1VME44","ACP25050917AYX11
  ],
  "url":"http://localhost/abc ",
  "fileUniqueId":"8a6d0df189ef4b0e83858fd9eeb7620c",
  "enable":true
}

响应示例

{
     "msg": "success",
     "code": 200,
     "data": [ 
      {
         "padCode": "ACP250509FECQN33",
         "vmStatus": 0,
         "taskId": 10013014,
         "taskStatus": 1
      },
      {
         "padCode": "ACP250509T1VME44",
         "vmStatus": 0,
         "taskId": 10013015,
         "taskStatus": 1
      },
      {
         "padCode": "ACP25050917AYX11",
         "vmStatus": 0,
         "taskId": 10013016,
         "taskStatus": 1
      }
   ],
   "ts": 1746797852244
}

创建本地实例备份

用于创建本地实例备份接口。

接口地址

/openapi/open/pad/local/pod/backup

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodePAD_001String是实例编号,不能为空,最大64字符
backupNamebacknameinfoString否备份名称,最大128字符
backupPathbackup/dbString否不要/开头,备份数据保存路径,不传则默认保存在根目录 /{备份ID}/ 下,最大256字符
ossConfig{...}Object否对象存储配置,需要支持 S3 协议,不能为空且永久授权
├─ endpointoss-cn-shanghai.aliyuncs.comStringossConfig != null-是对象存储 endpoint,最大128字符
├─ bucketpad-backupStringossConfig != null-是对象存储 bucket 名称,最大128字符
├─ accessKeyAKIA123456StringossConfig != null-是对象存储 accessKey,最大128字符
├─ secretKeyxxxxxxxStringossConfig != null-是对象存储 secretKey,最大128字符
├─ protocolhttpsStringossConfig != null-是对象存储访问协议:http 或 https,最大16字符
├─ regioncn-shanghaiStringossConfig != null-是OSS 地域,最大32字符
├─ securityTokenxxxxxxxxxStringcredentialType=2-是临时凭证token
├─ expiration2025-12-01T21:38:49zStringcredentialType=2-是过期时间
credentialType1Integer否凭证类型:1-永久凭证,2-临时凭证

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1758271736814Long时间戳
data{...}Object返回的任务信息对象
├─ taskId59Long任务ID
├─ padCodeACP250919HTTMIBQString实例编号
├─ vmStatus0Integer实例在线状态:0=离线,1=在线
├─ taskStatus1Integer任务状态:-1=任务已存在(请勿重复提交),1=任务已添加
├─ errMsgnullString描述或错误信息
├─ backupNamebackupNameString备份名称
├─ backupIdbkp-ACP250919HTTMIBQ-1758271735910String备份ID
traceIdeyj68nk6dnuoString请求链路追踪ID,用于问题排查

请求示例

{
  "padCode": "ACP25091XXXXXX15",
  "backupName": "backnameinfo",
  "backupPath": "backup/data/",
  "credentialType": 1,
  "ossConfig": {
    "endpoint": "oss-cn-xxxxx.xxxxx.com",
    "bucket": "armcloud-cn",
    "accessKey": "LTAI5txxxxxxxYC",
    "secretKey": "kjgvYxxxxxxxxxxx8URWU",
    "protocol": "httpxxxx",
    "region": "cn-xxxxx"
  }
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1758271736814,
  "data": {
    "taskId": 59,
    "padCode": "ACP25091XXXXXX15",
    "vmStatus": 0,
    "taskStatus": 1,
    "errMsg": null,
    "backupName": "backnameinfo",
    "backupId": "bkp-ACP25091XXXXXX15-1758271735910"
  },
  "traceId": "eyj68nk6dnuo"
}

错误码

错误码错误说明操作建议
220025当前本地实例存在其他正在执行或待执行的任务,请等待任务执行完毕后再试!等待任务执行完成后再尝试
220026仅支持本地实例备份!确认操作实例为本地实例
220029当前实例状态不在运行中确认实例处于运行中
220033当前实例CBS版本过低,不支持备份或者还原联系客户经理升级板卡系统到最新版本后再尝试

创建本地实例还原

用于创建本地实例备份文件还原接口。

接口地址

/openapi/open/pad/local/pod/restore

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
backupIdbkp-ACP250917XSYESH3-1758097064458String是备份Id 最大128字符
padCodeACP250917CLAQJ15String是实例编号,不能为空,最大64字符
ossConfig{...}Object否对象存储配置,需要支持 S3 协议,不能为空且永久授权
├─ endpointoss-cn-shanghai.aliyuncs.comStringossConfig != null-是对象存储 endpoint,最大128字符
├─ bucketpad-backupStringossConfig != null-是对象存储 bucket 名称,最大128字符
├─ accessKeyAKIA123456StringossConfig != null-是对象存储 accessKey,最大128字符
├─ secretKeyxxxxxxxStringossConfig != null-是对象存储 secretKey,最大128字符
├─ protocolhttpsStringossConfig != null-是对象存储访问协议:http 或 https,最大16字符
├─ regioncn-shanghaiStringossConfig != null-是OSS 地域,最大32字符
├─ securityTokenxxxxxxxxxStringcredentialType=2-是临时凭证token
├─ expiration2025-12-01T21:38:49zStringcredentialType=2-是过期时间
credentialType1Integer否凭证类型:1-永久凭证,2-临时凭证

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1758271736814Long时间戳
data{...}Object返回的任务信息对象
├─ taskId59Long任务ID
├─ padCodeACP250919HTTMIBQString实例编号
├─ vmStatus0Integer实例在线状态:0=离线,1=在线
├─ taskStatus1Integer任务状态:-1=任务已存在(请勿重复提交),1=任务已添加
├─ errMsgnullString描述或错误信息
traceIdeyj68nk6dnuoString请求链路追踪ID,用于问题排查

请求示例

{
  "padCode": "ACP25091XXXXXJ15",
  "backupId": "bkp-ACP25091XXXXXJ15-1758097064458",
  "credentialType": 1
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1758271736814,
  "data": {
    "taskId": 59,
    "padCode": "ACP25091XXXXXX15",
    "vmStatus": 0,
    "taskStatus": 1,
    "errMsg": null
  },
  "traceId": "eyj68nk6dnuo"
}

错误码

错误码错误说明操作建议
220025当前本地实例存在其他正在执行或待执行的任务,请等待任务执行完毕后再试!等待任务执行完成后再尝试
220027当前本地实例备份文件不存在,请检查文件后再试!检查备份文件是否存在
220030当前实例状态不在运行中或者异常中确认实例处于运行或异常状态
220031备份的文件不属于当前用户确认备份实例归属权限
220032当前备份ID实例信息不存在,无法辨别当前备份文件是否属于当前用户检查备份ID是否正确
220033当前实例CBS版本过低,不支持备份或者还原升级实例CBS版本后再尝试

本地实例备份结果查询

根据实例编号获取本地实例可用备份。

接口地址

/openapi/open/pad/local/pod/backupSelectPage

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
page1Integer否当前页
rows10Integer否每页的数量
padCodesString[]是
├─padCodeACP5C24S9G6xxxxxString是实例编号,最大支持传入100条实例

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject返回的数据对象
├─ page1Integer当前页
├─ rows10Integer每页的数量
├─ size1Integer当前页的数量
├─ total1Integer总记录数
├─ totalPage1Integer总页数
├─ pageDataObject[]列表
├─├─ padCodeACP5C24S9G6xxxxxString实例编号
├─├─ backupIdbkp-xxxxxS4QBMGEW1ZX-1764728535556String备份ID
├─├─ backupNamebackupNameString备份名称
├─├─ backupPathbackup/dbString备份数据保存路径
├─├─ endpointbackupNameString备份名称(endpoint)
├─├─ bucketpad-backupString对象存储 bucket 名称,最大128字符
├─├─ protocolhttpsString对象存储访问协议:http 或 https,最大16字符
├─├─ regioncn-shanghaiStringOSS 地域,最大32字符
traceIdeyj68nk6dnuoString请求链路追踪ID,用于问题排查

请求示例

{
  "padCodes":["ACP5C24S9G6xxxxx"],
  "page":1,
  "rows":10
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1764819200220,
  "data": {
    "page": 1,
    "rows": 10,
    "size": 1,
    "total": 1,
    "totalPage": 1,
    "pageData": [
      {
        "padCode": "ACP5C24S9G6xxxxx",
        "backupId": "bkp-xxxxxS4QBMGEW1ZX-1764728535556",
        "backupName": "android13-xxxx-虚拟机-img-25112665572-王者荣耀+抖音",
        "backupPath": "backup/data/",
        "endpoint": "oss-cn-xxxxxx.xxxxxxx.com",
        "bucket": "armcloud-xx",
        "protocol": "https",
        "region": "cn-hongkong"
      }
    ]
  },
  "traceId": "f61kq5vu5ts0"
}

本地实例计算备份大小

用于计算本地实例备份所需的存储空间大小。

接口地址

/openapi/open/pad/local/pod/backupCalculate

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodeACP250919HTTMIBQString是实例编号,不能为空,最大64字符

响应参数

参数名示例值参数类型参数描述
code200Integer状态码(200表示成功)
msgsuccessString接口请求状态信息
ts1758271736814Long时间戳
data{...}Object返回的任务信息对象
├─ taskId59Integer任务ID
├─ padCodeACP250919HTTMIBQString实例编号
├─ vmStatus1Integer实例在线状态:0=离线,1=在线
traceIdeyj68nk6dnuoString请求链路追踪ID,用于问题排查

请求示例

{
  "padCode": "ACP250919HTTMIBQ"
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1758271736814,
  "data": {
    "taskId": 59,
    "padCode": "ACP250919HTTMIBQ",
    "vmStatus": 1
  },
  "traceId": "eyj68nk6dnuo"
}

错误码

错误码错误说明操作建议
220025当前本地实例存在其他正在执行或待执行的任务,请等待任务执行完毕后再试!等待任务执行完成后再尝试
220026仅支持本地实例备份!确认操作实例为本地实例
220029当前实例状态不在运行中确认实例处于运行中
220033当前实例CBS版本过低,不支持备份或者还原联系客户经理升级板卡系统到最新版本后再尝试

清除进程并返回桌面

清除手机系统进程以外的所有进程,并返回桌面

接口地址

/openapi/open/pad/cleanAppHome

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesATP250814USYXXXXString[]是实例编码

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1736922808949Long时间戳
traceIdeuz60azzc7i8String追踪ID
dataObject[]
├─padCodeAC32032String实例编号
├─taskId10004759Long任务id
├─vmStatus0String实例在线状态
├─taskStatus1String任务当前状态

请求示例

{
    "padCodes": [
        "ATP250814USYXXXX"
    ]
}

响应示例

{
    "msg": "success",
        "traceId": "euz60azzc7i8",
        "code": 200,
        "data": [
        {
            "padCode": "ATP250814USYXXXX",
            "vmStatus": 0,
            "taskId": 68951,
            "taskStatus": 1
        }
    ],
        "ts": 1755172215886
}

无人直播

实例注入视频接口()。支持通过单个视频地址injectUrl或地址列表injectUrls注入,二者至少传入一项且不能同时传入,injectUrls最多支持传入5个地址。

接口地址

/openapi/open/pad/unmanned/live

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesACN384345141346304String[]是实例编码(1-100个)
injectSwitchtrueBoolean否是否开启注入视频(true:开启 false:取消) 默认是false
injectLoopfalseBoolean否是否循环播放(true:是 false:否) 默认是false
injectUrlhttps://file.vmoscloud.com/userFile/1eea385b2a6ba3942ebf642badf39aa0.mp4String否单个视频注入地址,支持 http/https/rtmp:// 以及本地路径,与injectUrls至少传一项
injectUrls["https://file.vmoscloud.com/userFile/1eea385b2a6ba3942ebf642badf39aa0.mp4","rtmp://example.com/live"]String[]否视频注入地址列表(最多5个),支持 http/https/rtmp:// 以及本地路径,与injectUrl至少传一项

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1759134336311Long时间戳
traceIdezispr1m30n4String追踪ID
dataObject[]
├─padCodeACN384345141346304String实例编号
├─taskId20503Long任务id
├─vmStatus0String实例在线状态
├─taskStatus1String任务当前状态
├─errMsgnullString错误提示

请求示例

{
        "padCodes": ["ACN384345141346304"],
        "injectSwitch": true,
        "injectLoop": false,
        "injectUrl": "https://file.vmoscloud.com/userFile/1eea385b2a6ba3942ebf642badf39aa0.mp4",
        "injectUrls": [
          "https://file.vmoscloud.com/userFile/1eea385b2a6ba3942ebf642badf39aa0.mp4",
          "rtmp://example.com/live/unmanned01"
        ]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1759134336311,
        "data": [
        {
            "taskId": 20503,
            "padCode": "ACN384345141346304",
            "vmStatus": 0,
            "taskStatus": 1,
            "errMsg": null
        }
    ],
        "traceId": "ezispr1m30n4"
}

图片注入

实例注入图片接口

接口地址

/openapi/open/pad/inject/picture

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesACN2510166WZUPCJString[]是实例编码(1-100个)
injectSwitchtrueBoolean否是否开启注入图片(true:开启 false:取消) 默认是false
injectLoopfalseBoolean否是否循环播放(true:是 false:否) 默认是false
injectUrlhttps://file.vmoscloud.com/userFile/ac4e112d72f9ed724101f510e774001f.JPGString是图片注入地址,支持 http https rtmp://

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1759134336311Long时间戳
traceIdezispr1m30n4String追踪ID
dataObject[]
├─padCodeACN384345141346304String实例编号
├─taskId20503Long任务id
├─vmStatus0String实例在线状态
├─taskStatus1String任务当前状态
├─errMsgnullString错误提示

请求示例

{
        "padCodes": ["ACN2510166WZUPCJ"],
        "injectSwitch": true,
        "injectLoop": false,
        "injectUrl": "https://file.vmoscloud.com/userFile/ac4e112d72f9ed724101f510e774001f.JPG"
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1759134336311,
        "data": [
        {
            "taskId": 28247,
            "padCode": "ACN2510166WZUPCJ",
            "vmStatus": 0,
            "taskStatus": 1,
            "errMsg": null
        }
    ],
        "traceId": "ezispr1m30n4"
}

运动数据注入(步数)

注入运动数据接口,支持向指定实例注入运动数据,因不同的第三方应用有不同运动数据获取规则,因此第三方应用准确性有一定偏差。

接口地址

/openapi/open/pad/stepData

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes["ACN519141428559881"]String[]是实例编号,需要注入运动数据的实例编号,单次最多500个实例,多个实例编号之间用英文逗号隔开
stepCount60Integer是步数 仅支持大于0的正整数,有效值大于0小于45000
motorPattern0Integer否运动模式选择 0-慢,步频60 步 / 分钟 ,1-中,步频120 步 / 分钟,2-快,步频180 步 / 分钟 默认值为0
addNoisetrueBoolean否是否添加噪音,添加噪音可使数据更真实,但可能会增加相应任务时间 false-否 true-是 默认值 false

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1759134336311Long时间戳
traceIdezispr1m30n4String追踪ID
dataObject[]
├─padCodeACN384345141346304String实例编号
├─taskId20503Long任务id
├─vmStatus0String实例在线状态
├─taskStatus1String任务当前状态
├─errMsgnullString错误提示

请求示例

{
    "padCodes": [
        "ACN519141428559881"
    ], 
    "stepCount": 60,
    "motorPattern": 1,
    "addNoise": false
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1759134336311,
        "data": [
        {
            "taskId": 20503,
            "padCode": "ACN384345141346304",
            "vmStatus": 0,
            "taskStatus": 1,
            "errMsg": null
        }
    ],
        "traceId": "ezispr1m30n4"
}

本地实例迁移 ⭐

注意:本地实例迁移会将源实例(A)的全部数据覆盖到目标实例(B),目标实例原有数据将被清空。请谨慎使用!

将源实例 A 的数据(镜像、安卓属性、ADI 等)完整迁移覆盖到目标实例 B,迁移完成后目标实例 B 的配置与源实例 A 一致。

使用限制:

  • 源实例与目标实例必须在同一边缘集群
  • 源实例与目标实例的规格(device_level)必须相同
  • 两个实例都必须是本地实例(非网存实例)
  • 源实例和目标实例所在板卡的 CBS 版本必须 >= 2.6.7
  • 两个实例都必须处于运行中状态
  • 同一目标实例同一时间只能被一个迁移任务使用(互斥)

接口地址

/openapi/open/pad/movePad

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
sourcePadCodeACP63463L11FZZ7PString是源实例编号(实例A,提供数据的一方)
targetPadCodeACP63463L2ZX7NK5String是目标实例编号(实例B,接收数据的一方,原有数据将被清空)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject
├─taskId12818Long任务ID
├─padCodeACP63463L11FZZ7PString实例编号(源实例编号)
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
  "sourcePadCode": "ACP63463L11FZZ7P",
  "targetPadCode": "ACP63463L2ZX7NK5"
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1741651200000,
  "data": {
    "taskId": 12818,
    "padCode": "ACP63463L11FZZ7P",
    "vmStatus": 1,
    "taskStatus": 1
  },
  "traceId": "ewc84g8si0oy"
}

回调管理

配置说明:需要客户在客户开放平台配置回调地址,配置地址成功则默认开启接收回调信息

查询支持的回调类型

接口地址

/openapi/open/config/selectList

请求方式

GET

请求数据类型

无参数

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─callbackName"文件上传任务"String回调类型名称
├─callbackType"4"String回调类型
├─id14Long回调类型的ID(后续新增修改需要传入该参数)

请求示例

/openapi/open/config/selectList

响应示例

{
    "code": 200,
        "data": [
        {
            "callbackName": "文件上传任务",
            "callbackType": "4",
            "id": 14
        },
        {
            "callbackName": "文件上传实例任务",
            "callbackType": "5",
            "id": 15
        },
        {
            "callbackName": "应用同步任务",
            "callbackType": "6",
            "id": 16
        }
    ],
    "msg": "success",
    "ts": 1734500966127
}

查询配置的回调地址

接口地址

/openapi/open/config/selectCallback

请求方式

GET

请求数据类型

无参数

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
datahttp://www.baidu.comString配置的回调地址

请求示例

/openapi/open/config/selectCallback

响应示例

{
 "code" : 200,
 "data" : "http://www.baidu.com",
 "msg" : "success",
 "ts" : 1734501602763
}

新增回调地址配置

接口地址

/openapi/open/config/insertCallback

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
callbackIdList[1,2,3]Long[]是回调类型ID集合(从查询支持的回调类型接口获取)
callbackUrlhttp://192.168.1.1/callbackString是接收任务回调配置URL

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1713773577581Long时间戳
data2Integer配置成功type数量

请求示例

{
  "callbackIdList": [21, 14],
  "callbackUrl": "http://localhost:8080/callback"
}

响应示例

{"code":200,"data":2,"msg":"success","ts":1734502541732}

修改回调地址配置

接口地址

/openapi/open/config/updateCallback

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
callbackIdList[1,2,3]Long[]是回调类型ID集合(从查询支持的回调类型接口获取)
callbackUrlhttp://192.168.1.1/callbackString是接收任务回调配置URL

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1713773577581Long时间戳
data2Integer更新成功type数量

请求示例

{
  "callbackIdList": [21, 14],
  "callbackUrl": "http://localhost:8080/callback"
}

响应示例

{
 "code" : 200,
 "data" : 2,
 "msg" : "success",
 "ts" : 1734502541732
}

删除配置的回调地址

接口地址

/openapi/open/config/deleteCallback

请求方式

POST

请求数据类型

无参数

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
data4Long

请求示例

{}

响应示例

{
 "code" : 200,
 "data" : 22,
 "msg" : "success",
 "ts" : 1734503029282
}

实例状态回调

使用场景

实例状态变更的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger999任务业务类型
padCodeString212254实例标识
padStatusInteger1实例状态: 实例状态: -1 已删除 10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪 16-备份中 17-还原中 18-关机 19-关机中 20-开机中 21-关机失败 22-开机失败
padConnectStatusInteger1实例连接状态,1:在线,0:离线

实例重启任务回调

使用场景

实例重启任务的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1000任务业务类型
padCodeString212254实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger1任务ID
taskContentString任务内容
endTimeLong1756021166163结束时间
taskResultStringSuccess任务结果

实例重置任务回调

使用场景

实例重置任务的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1001任务业务类型
padCodeString212254实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger1任务ID
taskContentString任务内容
endTimeLong1756021166163结束时间
taskResultStringSuccess任务结果

异步执行ADB任务回调

使用场景

客户调用异步执行ADB命令,会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1002任务业务类型
padCodeStringAC22030022001实例标识
taskIdInteger1任务id
taskStatusInteger3任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
endTimeLong1756021166163任务执行结束时间
taskResultStringSuccess任务结果
taskContentString任务内容
cmdStringcd /root;ls执行的命令
cmdResultString/ws执行的命令返回

应用安装任务回调

使用场景

客户调用应用安装,应用的安装情况会通过该回调接口通知给客户。

字段类型示例说明
taskIdInteger1任务ID
padCodeStringAC22030022001实例编号
taskBusinessTypeInteger1004任务业务类型
endTimeLong1756021166163结束时间
appsObject[]应用信息
├─ appIdInteger10001应用ID
├─ appNameStringdemo应用名称
├─ pkgNameStringcom.xxx.demo包名
├─ padCodeStringAC22030022001实例编号
├─ resultbooleantrue安装结果的标识。true:成功,false:失败
├─ failMsgString此应用已加入黑名单,禁止安装失败信息
├─ versionCode150600String版本号
├─ versionName15.6.0String版本名称

应用卸载任务回调

使用场景

客户调用应用卸载,应用卸载的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1004任务业务类型
taskIdInteger1任务ID
appsObject应用信息
├─ appIdInteger10001应用ID
├─ appNameStringdemo应用名称
├─ pkgNameStringcom.xxx.demo包名
├─ padCodeStringAC22030022001实例编号
├─ resultbooleantrue安装结果的标识。true:成功,false:失败

应用停止任务回调

使用场景

客户调用应用停止,应用停止的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1005任务业务类型
padCodeStringAC22030022001实例标识
taskIdInteger1任务ID
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
packageNameStringxxx.test.com包名

应用启动任务回调

使用场景

客户调用应用启动,应用启动的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1007任务业务类型
padCodeStringAC22030022001实例标识
taskIdInteger1任务ID
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
packageNameStringxxx.test.com包名

文件上传实例任务回调

使用场景

客户调用实例文件上传api,会通过该回调接口通知客户。

字段类型示例说明
taskBusinessTypeInteger1009任务业务类型
padCodeStringAC22030022001实例编号
taskIdInteger1任务ID
resultbooleantrue执行结果:true-成功,false-失败
errorCodeString错误码
fileIdStringcf08f7b685ab3a7b6a793b30de1b33ae34文件id

查询实例应用列表回调

使用场景

客户调用实例已安装应用列表,实例已安装应用列表的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1011任务业务类型
padCodeStringAC22030022001pod标识
taskIdInteger1任务ID
taskStatusInteger1任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
appsObject[]
├─appNameStringtest应用名称
├─appState0Integer0 已完成 1安装中 2下载中
├─pkgNameStringtext.xx.com包名
├─versionCode150600String版本号
├─versionName15.6.0String版本名称

实例升级镜像任务回调

使用场景

实例升级镜像任务状态变更的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1012任务业务类型
padCodeString212254实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger1任务ID
taskContentString任务内容
endTimeLong1756021166163结束时间
taskResultStringSuccess任务结果

实例黑名单任务回调

使用场景

实例设置应用黑名单任务状态变更的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1015任务业务类型
padCodeString212254实例编号
taskIdInteger1任务ID
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)

本地实例迁移回调

使用场景

本地实例迁移任务(taskBusinessType=1123)执行完成后,会通过该回调接口通知客户。回调中包含源实例和目标实例编号,便于客户感知迁移结果。

字段类型示例说明
taskBusinessTypeInteger1123任务业务类型
taskIdLong12818任务ID
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
endTimeLong1741651200000任务执行结束时间(毫秒时间戳)
taskContentString任务内容
taskResultStringSuccess任务结果描述
sourcePadCodeStringACP63463L11FZZ7P源实例编号(提供数据的实例A)
targetPadCodeStringACP63463L2ZX7NK5目标实例编号(接收数据的实例B)

示例内容

{
  "taskBusinessType": 1123,
  "taskId": 12818,
  "taskStatus": 3,
  "endTime": 1741651200000,
  "taskContent": "",
  "taskResult": "Success",
  "sourcePadCode": "ACP63463L11FZZ7P",
  "targetPadCode": "ACP63463L2ZX7NK5"
}

一键新机回调

使用场景

一键新机的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1124任务业务类型
padCodeString212254实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger1任务ID
taskContentString任务内容
endTimeLong1756021166163结束时间
taskResultStringSuccess任务结果

网存实例开机回调

使用场景
网存实例开机的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1201任务业务类型
padCodeStringACN250427352B7WU实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001661任务ID
taskContentString(空字符串)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1201,
  "taskContent": "",
  "taskId": 10001661,
  "taskResult": "",
  "taskStatus": 3
}

网存实例关机回调

使用场景
网存实例关机的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1202任务业务类型
padCodeStringACN250427352B7WU实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001662任务ID
taskContentString(空字符串)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1202,
  "taskContent": "",
  "taskId": 10001662,
  "taskResult": "",
  "taskStatus": 3
}

网存实例删除回调

使用场景
网存实例删除的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1203任务业务类型
padCodeStringACN250427352B7WU实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001662任务ID
taskContentString(空字符串)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒,null 表示尚未结束)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1203,
  "taskContent": "",
  "taskId": 10001672,
  "taskResult": "",
  "taskStatus": 3
}


网存存储备份回调

使用场景
网存存储备份的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1204任务业务类型
padCodeStringACN250427352B7WU实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001664任务ID
taskContentString(空字符串)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒,null 表示尚未结束)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1204,
  "taskContent": "",
  "taskId": 10001664,
  "taskResult": "",
  "taskStatus": 3
}


网存存储删除回调

使用场景
网存存储删除的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1205任务业务类型
padCodeStringACN250427352B7WU实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001665任务ID
taskContentString(空字符串)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒,null 表示尚未结束)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1205,
  "taskContent": "",
  "taskId": 10001665,
  "taskResult": "",
  "taskStatus": 3
}

文件上传任务回调

使用场景

客户调用上传文件,上传文件的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger2000任务业务类型
taskIdInteger1任务ID
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
originFileUrlString<www.xxx.com/xxx.apk>原文件下载地址
fileUniqueIdStringtest001文件id

网存2.0开机回调

使用场景
网存实例开机的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1301任务业务类型
padCodeStringACN317629292153649实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001085任务ID
taskContentString(空字符串)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": null,
  "padCode": "ACN317629292153649",
  "taskBusinessType": 1301,
  "taskContent": "",
  "taskId": 10001085,
  "taskResult": "Success",
  "taskStatus": 3
}

网存2.0关机回调

使用场景
网存实例关机的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1302任务业务类型
padCodeStringACN317629292153649实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001086任务ID
taskContentString(空字符串)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": 1755141290862,
  "padCode": "ACN317629292153649",
  "taskBusinessType": 1302,
  "taskContent": "",
  "taskId": 10001086,
  "taskResult": "Success",
  "taskStatus": 3
}

网存2.0实例删除回调

使用场景
网存实例删除的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1303任务业务类型
padCodeStringACN317629292153649实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001087任务ID
taskContentString(空字符串)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒,null 表示尚未结束)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": 1755141290862,
  "padCode": "ACN317629292153649",
  "taskBusinessType": 1303,
  "taskContent": "",
  "taskId": 10001087,
  "taskResult": "",
  "taskStatus": 3
}


网存2.0存储备份回调

使用场景
网存存储备份的情况会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1304任务业务类型
padCodeStringACN317629292153649实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001088任务ID
taskContentStringjson字符串,内容为克隆出的新实例集合(需要解析)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒,null 表示尚未结束)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": 1755001588956,
  "padCode": "ACN317629292153649",
  "taskBusinessType": 1304,
  "taskContent": "[\"ACN317629292153650\"]",
  "taskId": 10001088,
  "taskResult": "Success",
  "taskStatus": 3
}

订阅事件回调

使用场景
客户订阅事件后,当所订阅事件触发则平台通过该回调接口通知给客户。()

字段类型示例说明
eventTypeInteger50订阅事件类型 有效值:50 应用启动 51 应用停止
timestampLong1762221316回调时间戳
eventDetailObject事件详情,以下内容为JSON
├─padCodeStringACN000000实例编号
├─packageNameStringCOM.BAIDU应用包名
├─eventTimeLong1762221362事件时间戳

示例内容

{
  "eventType": 50,
  "timestamp": "1762221316",
  "eventDetail": {
    "padCode": "ACN000000",
    "packageName": "COM.BAIDU",
    "eventTime": "1762221362"
  }
}

无人直播任务回调

使用场景 云机执行无人直播任务时,任务执行完成(成功 / 失败 / 取消 / 超时等)会通过该回调接口通知给客户。

字段类型示例说明
taskBusinessTypeInteger1052任务业务类型
padCodeStringACN3176292921xxxxxxx实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger10001088任务ID
taskContentStringjson字符串,内容为克隆出的新实例集合(需要解析)任务内容
endTimeLongnull结束时间(时间戳,单位毫秒,null 表示尚未结束)
taskResultString(空字符串)任务结果

示例内容

{
  "endTime": 1755001588956,
  "padCode": "ACN3176292921xxxxxxx",
  "taskBusinessType": 1052,
  "taskContent": "[\"ACN3176292921xxxxxxx\"]",
  "taskId": 10001088,
  "taskResult": "Success",
  "taskStatus": 3
}

本地实例计算备份大小回调

使用场景

本地实例计算备份大小任务(taskBusinessType=1403)执行完成后,会通过该回调接口通知客户。

字段类型示例说明
taskBusinessTypeInteger1403任务业务类型
padCodeStringACP250919HTTMIBQ实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdInteger59任务ID
taskContentString任务内容
endTimeLong1758271736814结束时间(时间戳,单位毫秒)
taskResultObject任务结果,包含备份大小信息
├─ dataImgSizeLong1073741824数据镜像大小(字节)
├─ debugSizeLong10485760debug 分区大小(字节)
├─ totalSizeLong1084227584总大小(字节)
padStatusInteger1实例状态

示例内容

{
  "taskBusinessType": 1403,
  "padCode": "ACP250919HTTMIBQ",
  "taskStatus": 3,
  "taskId": 59,
  "taskContent": "",
  "endTime": 1758271736814,
  "taskResult": {
    "dataImgSize": 1073741824,
    "debugSize": 10485760,
    "totalSize": 1084227584
  },
  "padStatus": 1
}

停止推流回调

使用场景

停止推流任务(taskBusinessType=1044)执行完成后,会通过该回调接口通知客户。

字段类型示例说明
taskBusinessTypeInteger1044任务业务类型
padCodeStringAC11010000031实例编号
taskStatusInteger3任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
taskIdLong10001088任务ID
taskContentString任务内容
endTimeLong1758271736814结束时间(时间戳,单位毫秒)

示例内容

{
  "taskBusinessType": 1044,
  "padCode": "AC11010000031",
  "taskStatus": 3,
  "taskId": 10001088,
  "taskContent": "",
  "endTime": 1758271736814
}

文件管理

文件上传到云盘

进行文件上传操作,上传到云盘

接口地址查询实例状态

/file-center/open/file/cache

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
fileUrlhttp://xxx.armcloud.apkString是文件下载地址
fileName桃源深处有人家游戏官方版.apkString是文件名称
fileMd532e1f345f209a7dc1cc704913ea436d3String是⽂件预期md5,⽤作下载⽂件校验最⼤⻓度32

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─fileUniqueId6865b417b7257d782afd5ac8bee4d311String文件唯一标识

请求示例


{
    "fileUrl": "http://down.s.qq.com/download/11120898722/apk/10043132_com.tencent.fiftyone.yc.apk",
    "fileName": "桃源深处有人家游戏官方版.apk",
    "fileMd5": "c52585e13a67e13128d9963b2f20f69678a86ee8b5551ca593327d329719a5"
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1713773577581,
 "data": {
  "taskId":1,
  "fileUniqueId": "6865b417b7257d782afd5ac8bee4d311"
 }
}

实例文件删除

实例文件删除

接口地址

/file-center/open/file/batch/del

请求方式

POST (支持批量删除,一次最多只能删除200个)

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
fileUniqueIdscfc280111c435823c5409ddb9a4186420dString[]是unique_id→文件id标识

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datatrueBoolean

请求示例


{
 "fileUniqueIds": [
  "cfc280111c435823c5409ddb9a4186420d",
  "cf77f930acbbe1707fffc661f2c4380a71"
 ]
}

响应示例(全部成功)

{
  "code": 200,
  "msg": "success",
  "ts": 1734677342300, 
  "data": true
}

响应示例(部分成功)

{
    "code": 200,
        "msg": "success",
        "ts": 1734935677246,
        "data": [
        "cfc280111c435823c5409ddb9a4186420d"
    ]
}

文件上传实例V3版本

从文件管理中心推送文件到一个或多个云手机实例(异步任务)

接口地址

/openapi/open/pad/v3/uploadFile

  • 如果能通过md5值或者文件ID找到对应的文件,会直接通过OSS的路径下发给实例下载
  • 如果OSS没有对应的文件,会直接将URL下发给实例下载,并且将该URL内容上传到OSS
  • 如果选择安装应用,会检验包名是否有值,如果没值,会抛出异常.(安装应用默认会授权所有权限,通过isAuthorization字段可以选择不授权) 请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22030023061String是实例编号
autoInstall1Integer否是否需要⾃动安装 1需要、0不需要。不填默认不需要。仅对apk类型的⽂件⽣效
fileUniqueId1e5d3bf00576ee8f3d094908c0456722String否文件id唯一标识。
customizeFilePath/Documents/String否⾃定义路径。非必传,支持的文件路径包括以下目录:/DCIM/, /Documents/, /Download/, /Movies/, /Music/, /Pictures/。
fileNamethreadsString否文件名称
packageNamecom.zhiliaoapp.musicallyString否文件包名
urlhttps://oss.domain.com/appMarket/2/apk/fe1f75df23e6fe3fd3b31c0f7f60c0af.apkString否文件安装路径
md5d41d8cd98f00b204e980xxxxxxxxxxxString否文件MD5值(用于校验文件完整性,可通过MD5查找已上传的文件)
isAuthorizationfalseBoolean否是否授权(默认全授权)
iconPathhttps://oss.domain.com/appMarket/2/apk/fe1f75df23e6fe3fd3b31c0f7f60c0af.pngstring否安装时的图标展示

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─padCodeAC22010020062String实例编号
├─taskId1Integer任务ID
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
    "padCodes":["AC32010250022"],
        "customizeFilePath":"/DCIM/",
        "md5":"d97fb05b3a07d8werw2341f10212sdfs3sdfs24",
        "url":"https://oss.domain.com/appMarket/2/apk/fe1f75df23e6fe3fd3b31c0f7f60c0af.apk ",
        "autoInstall":1,
        "packageName":"com.zhiliaoapp.musically",
        "fileName":"market",
        "isAuthorization":false
}


响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1737431505379,
        "data": [
        {
            "taskId": 13469,
            "padCode": "AC32010250022",
            "vmStatus": 0,
            "taskStatus": 1
        }
    ]
}

错误码

错误码错误说明操作建议
140006文件存储路径不正确⾃定义路径需以/开头
140005文件不可用文件路径为空
110006下载失败文件路径不能下载

文件上传到实例

从文件管理中心推送文件到一个或多个云手机实例(异步任务)

接口地址

/openapi/open/pad/v2/uploadFile

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22030023061String是实例编号
autoInstall0Integer否是否需要⾃动安装 1需要、0不需要。仅对apk类型的⽂件⽣效。不需要请不要填或填0
fileUniqueId1e5d3bf00576ee8f3d094908c0456722String是文件id唯一标识。
customizeFilePath/Documents/String否⾃定义路径。非必传,支持的文件路径包括以下目录:/DCIM/, /Documents/, /Download/, /Movies/, /Music/, /Pictures/。
isAuthorizationfalseBoolean否是否授权应用(默认权授权)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]
├─padCodeAC22010020062String实例编号
├─taskId1Integer任务ID
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC22030023061"
 ],
 "isAuthorization":false,
 "autoInstall": 0,
 "fileUniqueId": "1e5d3bf00576ee8f3d094908c0456722",
 "customizeFilePath": "/Documents/"
}

响应示例

{
 "code": 200,
 "msg": "success",
        
 "ts": 1717571059834,
 "data": [
  {
   "taskId": 39,
   "padCode": "AC22030010001",
   "vmStatus": 1,
      "taskStatus": 1

  },  
  "traceId": "ewab8qjqbaio"

]
}

错误码

错误码错误说明操作建议
140006文件存储路径不正确⾃定义路径需以/开头
140005文件不可用文件路径为空
110006下载失败文件路径不能下载

文件列表

查询已上传的文件列表信息

接口地址

/file-center/open/file/list

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
page1Integer是起始页,默认1
rows10Integer是查询数量,默认10
fileName"33"String否根据文件名查询

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject
├─page1Integer当前页
├─rows10Integer每页的数量
├─size2Integer当前页的数量
├─total2Integer总记录数
├─totalPage1Integer总页数
├─pageDataobject[]列表
├─├─fileUniqueIdc417cdf30cd13437a60a494f2fcee616String文件id标识
├─├─fileName15b18072b01049dfa30da046aaf5b213.apkString文件名
├─├─fileMd549f526ec07f261ef6c22081fd61fb6b2836b84214ab6f4620e89d2f2d454253String文件内容值
├─├─fileSize165936779Integer文件大小(单位:字节)
├─├─originUrlhttps://xxx.armcloud.apkString文件原地址
├─├─createTime1713884498000Long创建时间
├─├─Id134Long文件id

请求示例


{
    "page": 1,
    "rows": 10,
    "fileName":"33"
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1750616581943,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 10,
            "total": 466,
            "totalPage": 47,
            "pageData": [
            {
                "fileName": "xx-xx-xxx.apk",
                "fileSize": 12957234,
                "fileUniqueId": "f3b9afb69c8e4953b171950766ebbb9a",
                "originUrl": null,
                "createdTime": 1750162347000,
                "id": 487451,
                "fileMd5": "9fe3cfc677baaff554eb4c2506234d0f"
            }
            // ... 更多文件对象
        ]
    },
    "traceId": "epr0w079xc00"
}

文件任务详情

查询指定文件任务的执行结果详细信息。

接口地址

/task-center/open/task/fileTaskDetail

请求方式

POST

请求数据类型

application/json

请求Query参数

参数名示例值参数类型是否必填参数描述
taskIdsInteger[]是
├─taskId1Integer是任务ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]任务列表详情
├─ taskId1Integer子任务ID
├─ appId134Long应用id
├─ fileUniqueIde2c07491309858c5cade4bfc44c03724String⽂件唯⼀标识
├─ fileNamexx.apkString文件名称
├─ taskStatus2Integer任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
├─ endTime1713429401000Long子任务结束时间戳

请求示例

{
 "taskIds":[
  1,2
 ]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1716283460673,
 "data": [
  {
   "taskId": 1,
   "appId": 134,
   "fileUniqueId": "e2c07491309858c5cade4bfc44c03724",
   "fileName": "xx.apk",
   "taskStatus": 2,
   "endTime": 1713429401000
  },
  {
   "taskId": 2,
   "appId": 135,
   "fileUniqueId": "e2c07491309858c5cade4bfc43c03725",
   "fileName": "xx.apk",
   "taskStatus": 2,
   "endTime": 1713429401001
  }
 ]
}

应用管理

应用上传

上传应用安装文件到指定业务的应用管理中心(异步任务)。

接口地址

/file-center/open/app/cache

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
parsetrueBoolean是是否缓存并解析(解析并缓存) 如解析则无需填包信息
appsObject[]是应用列表
├─ appId1243Integer否自定义应用ID
├─ urlhttps://xxx.armcloud.apkString是源文件下载地址
├─ appNamekuaishouString否应用名称
├─ pkgNamecom.smile.gifmakerString否包名
├─ signMd50F938C4F0995A83C9BF31F0C64322589String否应用签名MD5
├─ versionNo36000Integer否版本号
├─ versionName12.3.20.36000String否版本名
├─ descriptionkuaiString否描述
├─ md5sume673a204b8f18a0f6482da9998String否应用唯一标识

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]
├─ taskId12Integer任务ID
├─ appId1243Integer应用ID
├─ urlhttps://xxx.armcloud.apkString是
请求示例
{
 "parse": true,
 "apps": [
  { 
   "appId": 1243,
   "appName": "kuaishou",
   "url": "https://xxx.armcloud.apk",
   "pkgName": "com.smile.gifmaker",
   "signMd5": "0F938C4F0995A83C9BF31F0C64322589",
   "versionNo": 36000,
   "versionName": "12.3.20.36000",
   "description": "kuai",
   "md5sum": "e673a204b8f18a0f6482da9998"
  }
 ]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1755603598157,
        "data": [
        {
            "appId": 996875143,
            "url": "https://xxx.abc.com/app/b66bbdb93f404cfdac955bc35ace809a.apk",
            "taskId": 197136930
        }
    ],
    "traceId": "evgzda3b7f9c"
}

错误码

错误码错误说明操作建议
100001没有访问权限是否没有订购机房

应用列表

可根据应用ID查询应用信息列表。

接口地址

/file-center/open/app/list

请求方式

POST

请求数据类型

application/json

请求Query参数

参数名示例值参数类型是否必填参数描述
page1Integer是起始页,默认1
rows10Integer是查询数量,默认10
appIds1,2Integer[]否应用id
packageNamecom.ss.android.ugc.awemeString否应用包名

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
packageNamecom.ss.android.ugc.awemeString包名
traceIdewc84g8si0oyString链路追踪ID
pageDataObject
├─page1Integer当前页
├─rows10Integer每页显示数量
├─size10Integer当前页的数量
├─total2Integer总数量
├─totalPage1Integer总页数
├─pageDataObject[]
├─├─originUrldownloadUrl_tr0biString文件原下载地址
├─├─appIddwadawdfInteger自定义应用ID
├─├─descriptiondescription_1cq3mString描述
├─├─packageNamepackageName_e6lw8String包名
├─├─appNameappName_o4mhnString应用名称
├─├─versionNameversionName_s4o2iString版本名
├─├─versionNo1Integer版本号
├─├─signMd50F938C4F0995A83C9BF31F0C64322589StringMD5
├─├─availabletrueBoolean当前文件是否可用
├─├─createTime1709895492000Integer创建时间
├─├─fileId文件idInteger文件id
├─├─iconPathhttp://192.168.230.80:18100/icon/110_6ca4d3e6e5111ec38e8eca6c1998ce89..pngString应用图标
├─├─newAppClassifyList应用分类Object[]应用分类
├─├─├─classifyNametestString应用分类名称
├─├─├─classifyId1Long应用分类id
├─├─├─description这个应用质量很高String应用描述 备注
├─├─├─sortNum1Integer排序-输入框-仅支持整数输入,最大限制10000,列表按照数值从小到大排序展示

请求示例


{
    "rows": 10,
    "page": 1,
    "appIds": [
        1,2
    ],
    "packageName":"com.ss.android.ugc.aweme"
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "traceId": "ewab8qjqbaio", 
 "data": {
  "page": 1,
  "rows": 10,
  "size": 10,
  "total": 30,
  "totalPage": 3,
  "pageData": [
   {
    "originUrl": "downloadUrl_tr0bi",
    "appId": 1,
    "description": "description_1cq3m",
    "packageName": "packageName_e6lw8",
    "appName": "appName_o4mhn",
    "versionName": "versionName_s4o2i",
    "versionNo": 1,
    "signMd5": "0F938C4F0995A83C9BF31F0C64322589",
    "available": true,
    "createTime": 1709895492000,
                "iconPath": "http://192.168.230.80:18100/icon/110_6ca4d3e6e5111ec38e8eca6c1998ce89..png",
                "fileId": 1,
                "newAppClassifyList": [
                    {
                        "classifyName": "f1",
                        "classifyId": 3
                    }
                ]
   }
   // ... 更多应用对象
  ]
 }
}

应用详情

查询指定实例上的应用安装情况

接口地址

/file-center/open/app/detail

请求方式

POST

请求数据类型

application/json

请求Query参数

参数名示例值参数类型是否必填参数描述
appId1Integer是应用id

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756076880250Long时间戳
traceIdew0j0vipc3y8String链路追踪ID
dataObject应用详情
├─appId1178436326LongAPP ID
├─originalUrlhttps://file.vsphone.com/appMarket/null/apk/2d12187c91cf0f2024b3015777175.apkString原文件下载地址
├─descriptionnullString文件备注/应用描述
├─packageNamecom.truedevelopersstudio.automatictap.autoclickerStringAndroid 包名
├─appNameAuto ClickerString应用名称
├─versionName2.1.4String版本名
├─versionNo81Integer版本号
├─signMd5f282d5b8aa801ab13517ad1fe9dbc2b1String签名 MD5
├─createTime1751009986000Long文件创建时间
├─minSdkVersion24Integer最低 SDK 版本
├─targetSdkVersion31Integer目标 SDK 版本

请求示例

{
 "appId":1
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756076880250,
        "data": {
        "minSdkVersion": 24,
            "createTime": 1751009986000,
            "appName": "Auto Clicker",
            "appId": 1178436326,
            "versionNo": 81,
            "description": null,
            "signMd5": "f282d5b8aa801ab13517ad1fe9dbc2b1",
            "originalUrl": "https://file.vsphone.com/appMarket/null/apk/2d12187c91cf0f2024b3015777175.apk",
            "packageName": "com.truedevelopersstudio.automatictap.autoclicker",
            "targetSdkVersion": 31,
            "versionName": "2.1.4"
    },
    "traceId": "ew0j0vipc3y8"
}

查询实例应用列表

查询已上传的文件列表信息

接口地址

/openapi/open/pad/listApp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]否
├─AC22010020062String是实例编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
    "padCodes": [
        "AC22010020062"
    ]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1756077327794,
        "data": [
        {
            "taskId": 13462859,
            "padCode": "ACN250823P61EWV1",
            "vmStatus": 0,
            "taskStatus": 1
        }
    ],
        "traceId": "ew0jotsvw83k"
}

错误码

错误码错误说明操作建议
100010处理失败请重新安装

应用安装

为单台或多台实例同时安装单个或多个APP。此接口为异步操作。 增加黑白名单逻辑。

接口地址

/openapi/open/pad/installApp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
appsObject[]是应用列表
├─appId124Integer是应用ID
├─appName葫芦侠String否应用名称
├─pkgNamecom.huluxia.gametoolsString否应用包名
├─isGrantAllPermfalseBoolean否是否授予全部权限 默认为true
├─padCodesString[]是
├─├─AC22010020062String是实例编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
traceIdewc84g8si0oyString链路追踪ID
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "apps":[
  {
   "appId":124,
   "appName":"葫芦侠",
   "pkgName":"com.huluxia.gametools",
   "isGrantAllPerm":false,
   "padCodes":["AC22010020062"]
  }
 ]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1717570991004,
 "data": [
  {
   "taskId": 37,
   "padCode": "AC22030010001",
   "vmStatus": 1,
      "taskStatus": 1
      
  },
  {
   "taskId": 38,
   "padCode": "AC22030010002",
   "vmStatus": 1, 
   "taskStatus": 1
  }
 ],  
 "traceId": "ewab8qjqbaio"

}

错误码

错误码错误说明操作建议
140005文件不可用查看文件是否存在

应用卸载

为单台或多台实例同时卸载单个或多个APP。此接口为异步操作。

接口地址

/openapi/open/pad/uninstallApp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
appsObject[]是应用列表
├─appId124Integer否应用ID
├─appName葫芦侠String否应用名称
├─pkgNamecom.huluxia.gametoolsString是应用包名
├─padCodesString[]是
├─├─AC22010020062String是实例编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]
├─taskId2Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "apps":[
  {
   "appId":124,
   "appName":"demo",
   "pkgName":"com.demo",
   "padCodes":["AC22010020062"]
  }
 ]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts": 1717570615524,
  "traceId": "ewab8qjqbaio",
  "data": [
  {
   "taskId": 22,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "taskStatus": 1
  },
  {
   "taskId": 23,
   "padCode": "AC22030010002",
   "vmStatus": 0,
   "taskStatus": 1
  }
 ]
}

错误码

错误码错误说明操作建议
110007卸载应用失败稍后请重试

应用启动

根据实例编号和应用包名对实例进行应用启动的操作。

接口地址

/openapi/open/pad/startApp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22010020062String是实例编号
pkgNamexxx.test.comString是包名

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
traceIdewc84g8si0oyString链路追踪ID
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22020020793String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC22030022693"
 ],
 "pkgName": xxx.test.com
}

响应示例

{
 "code": 200,
 "msg": "success", 
 "traceId": "ewab8qjqbaio",
 "ts": 1717570663080,
 "data": [
  {
   "taskId": 24,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "taskStatus": 1
  },
  {
   "taskId": 25,
   "padCode": "AC22030010002",
   "vmStatus": 0,
      "taskStatus": 1
  }
 ]
}

错误码

错误码错误说明操作建议
110008启动应用失败重启云机后再启动应用

应用停止

根据实例编号和应用包名对实例进行应用停止的操作。

接口地址

/openapi/open/pad/stopApp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22010020062String是实例编号
pkgNamexxx.test.comString是包名

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewc84g8si0oyString链路追踪ID
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC22010020062"
 ],
 "pkgName": xxx.test.com
}

响应示例

{
 "code": 200,
 "msg": "success",
 "traceId": "ewab8qjqbaio",
 "ts": 1717570700415,
 "data": [
  {
   "taskId": 26,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "taskStatus": 1
  },
  {
   "taskId": 27,
   "padCode": "AC22030010002",
   "vmStatus": 0,
   "taskStatus": 1
  }
 ]
}

错误码

错误码错误说明操作建议
110010停止应用失败重启云机关闭应用

应用重启

根据实例编号和应用包名对实例进行应用重启的操作。

接口地址

/openapi/open/pad/restartApp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodesString[]是
├─AC22010020062String是实例编号
pkgNamexxx.test.comString是包名

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewc84g8si0oyString链路追踪ID
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(0:离线;1:在线)
├─taskStatus1Integer任务状态(-1:任务已存在,请勿重复提交;1:任务已添加)

请求示例

{
 "padCodes": [
  "AC22030022693"
 ],
 "pkgName": xxx.test.com
}

响应示例

{
 "code": 200,
 "msg": "success",
 "traceId": "ewab8qjqbaio",
 "ts": 1717570855874,
 "data": [
  {
   "taskId": 33,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "taskStatus": 1
  },
  {
   "taskId": 34,
   "padCode": "AC22030010002",
   "vmStatus": 0,
   "taskStatus": 1
  }
 ]
}

错误码

错误码错误说明操作建议
110009重启应用失败重启云机后再启动应用

黑白名单列表

分页查询黑白名单列表

接口地址

/openapi/open/appClassify/pageList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
classifyNametestString否黑白名单名称(模糊查询)
classifyType1Integer否黑白名单类型 1白名单 2黑名单
page1Integer否页码 默认1
rows10Integer否每页数量 默认10 最大值100

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─id8Integer黑白名单id
├─classifyName白名单A组1String黑白名单名称
├─classifyType1Integer黑白名单类型 1白名单 2黑名单
├─appNum3Integer已关联的应用数量
├─remark白名单A组测试1String描述
├─applyAllInstancesfalseBoolean是否应用所有实例模式

请求示例

{
    "classifyName": "",
    "classifyType": 1,
    "page": 1,
    "rows": 10
}

响应示例

{
     "code": 200,
     "msg": "success",
     "ts": 1735019791977,
     "data": [
          {
               "id": 8,
               "classifyName": "白名单A组1",
               "classifyType": 1,
               "appNum": 3,
               "remark": "白名单A组测试1",
               "applyAllInstances": false
          }
     ]
}

黑白名单保存

保存黑白名单和关联应用,参数id不为null,则表示更新,此操作会覆盖该分类下所有的关联应用

接口地址

/openapi/open/appClassify/save

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
id123Long否黑白名单id(不为空则为修改,为空则新增)
classifyName白名单A组String是黑白名单名称
classifyType1Integer是黑白名单类型 1白名单 2黑名单
applyAllInstancesfalseBoolean否是否应用所有实例 默认false
remark10String否黑白名单描述
appInfosObject[]否关联应用集合 范围0-500个
├─fileId1Integer否文件id
├─appId1Integer否应用id
├─appName测试appString否应用名称
├─packageNamecom.xxx.xxxString是包名
├─appVersionNo123Integer否版本号
├─appVersionName1.2.3String否版本名称

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
data1Long黑白名单id

请求示例

{
 "id": null,
 "classifyName": "白名单A组1",
 "classifyType": 1,
    "applyAllInstances": false,    
 "remark": "白名单A组测试1",
 "appInfos": [
  {
   "fileId": 1,
   "appId": 1,
   "appName": "测试app",
   "packageName": "com.xxx.xxx",
   "appVersionNo": 123,
   "appVersionName": "1.2.3"
  }
 ]
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": 1
}

错误码

错误码错误说明操作建议
110080黑白名单不存在黑白名单不存在
110085黑白名单名称重复黑白名单名称重复

黑白名单详情

查询黑白名单详情和关联应用

接口地址

/openapi/open/appClassify/detail

请求方式

POST

请求数据类型

application/json

请求Query参数

参数名示例值参数类型是否必填参数描述
id1Integer是黑白名单id

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─id8Integer黑白名单id
├─classifyName白名单A组1String黑白名单名称
├─classifyType1Integer黑白名单类型 1白名单 2黑名单
├─applyAllInstancesfalseBoolean是否应用所有实例模式
├─appNum3Integer已关联的应用数量
├─remark白名单A组测试1String描述
├─appInfosObject[]关联应用集合
├─├─fileId1Integer文件id
├─├─appId1Integer应用id
├─├─appName测试appString应用名称
├─├─packageNamecom.xxx.xxxString包名
├─├─appVersionNo123Integer版本号
├─├─appVersionName1.2.3String版本名称

请求示例

{"id":153858}

响应示例

{
     "code": 200,
     "msg": "success",
     "ts": 1735020014142,
     "data": {
          "id": 8,
          "classifyName": "白名单A组1",
          "classifyType": 1,
          "applyAllInstances": false,  
          "appNum": 3,
          "remark": "白名单A组测试1",
          "appInfos": [
               {
                    "fileId": 1,
                    "appId": 1,
                    "appName": "测试app",
                    "packageName": "com.xxx.xxx",
                    "appVersionNo": 123,
                    "appVersionName": "1.2.3"
               }
          ]
     }
}

错误码

错误码错误说明操作建议
110080黑白名单不存在黑白名单不存在

黑白名单实例关联保存

保存关联实例,此操作会删除该分类下原所有的关联实例

接口地址

/openapi/open/appClassify/padSave

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
id123Long是黑白名单id(从pageList接口获取)
appPadInfosObject[]否关联实例集合 范围0-500个
├─padCodeAC32010230001String是实例编号
├─deviceLevelm2-4String否规格
├─padIp10.255.3.1String否实例ip

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datanull

请求示例

{
 "id": 1,
 "appPadInfos": [
  {
   "padCode": "AC32010230001",
   "deviceLevel": "m2-4",
   "padIp": "10.255.3.1"
  }
 ]
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": null
}

错误码

错误码错误说明操作建议
110080黑白名单不存在黑白名单不存在

黑白名单实例关联详情

查询黑白名单详情和关联实例

接口地址

/openapi/open/appClassify/padDetail

请求方式

POST

请求数据类型

application/json

请求Query参数

参数名示例值参数类型是否必填参数描述
id1Integer是黑白名单id

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
traceIdewc84g8si0oyString链路追踪ID
ts1756021167163Long时间戳
dataObject[]
├─id8Integer黑白名单id
├─classifyName白名单A组1String黑白名单名称
├─classifyType1Integer黑白名单类型 1白名单 2黑名单
├─appNum3Integer已关联的应用数量
├─applyAllInstancesfalseBoolean是
├─appPadInfosObject[]关联实例集合
├─├─padCodeAC111String实例编号
├─├─deviceLevelm2-3String规格
├─├─padIp127.0.0.1String实例ip

请求示例

{"id":153858}

响应示例

{
     "code": 200,
     "msg": "success",
     "ts": 1735020251631,
     "data": {
          "id": 8,
          "classifyName": "白名单A组1",
          "classifyType": 1,
          "appNum": 3, 
          "applyAllInstances": false,
          "appPadInfos": [
               {
                    "padCode": "AC111",
                    "deviceLevel": "m2-3",
                    "padIp": "127.0.0.1"
               }
          ]
     },
    "traceId": "ewab8qjqbaio"
}

错误码

错误码错误说明操作建议
110080黑白名单不存在黑白名单不存在

删除黑白名单

删除黑白名单 所关联的应用和实例都会清除

接口地址

/openapi/open/appClassify/del

请求方式

POST

请求数据类型

application/json

请求Query参数

参数名示例值参数类型是否必填参数描述
id1Integer是黑白名单id

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datanull

请求示例

{"id":153858}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1735020371601,
    "data": null
}

错误码

错误码错误说明操作建议
110084该黑白名单不存在或已删除该黑白名单不存在或已删除

添加黑白名单App

添加关联应用,此操作不会覆盖该分类下所有的关联应用,直接添加到分类下

接口地址

/openapi/open/appClassify/addApp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
id123Long是黑白名单id(从pageList接口获取)
appInfosObject[]是关联应用集合 范围1-500个
├─fileId1Integer否文件id
├─appId1Integer否应用id
├─appName测试appString否应用名称
├─packageNamecom.xxx.xxxString是包名
├─appVersionNo123Integer否版本号
├─appVersionName1.2.3String否版本名称

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datanull

请求示例

{
 "id": 1,
 "appInfos": [
  {
   "fileId": 1,
   "appId": 1,
   "appName": "测试app",
   "packageName": "com.xxx.xxx",
   "appVersionNo": 123,
   "appVersionName": "1.2.3"
  }
 ]
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": null
}

错误码

错误码错误说明操作建议
110080黑白名单不存在黑白名单不存在

添加黑白名单实例关联

添加关联实例,此操作不会覆盖该分类下所有的关联实例,直接添加到分类下

接口地址

/openapi/open/appClassify/addPad

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
id123Long是黑白名单id(从pageList接口获取)
appPadInfosObject[]是关联实例集合 范围1-500个
├─padCodeAC32010230001String是实例编号
├─deviceLevelm2-4String否规格
├─padIp10.255.3.1String否实例ip

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datanull

请求示例

{
 "id": 1,
 "appPadInfos": [
  {
   "padCode": "AC32010230001",
   "deviceLevel": "m2-4",
   "padIp": "10.255.3.1"
  }
 ]
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": null
}

错误码

错误码错误说明操作建议
110080黑白名单不存在黑白名单不存在

删除黑白名单关联的实例

删除黑白名单关联的实例,即指定实例解绑黑白名单

接口地址

/openapi/open/appClassify/delPad

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
id123Long是黑白名单id(从pageList接口获取)
padCodesString[]是关联实例集合 范围1-200个

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
datanull

请求示例

{
 "id": 100,
 "padCodes": ["AC32010250003"]
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": null
}

错误码

错误码错误说明操作建议
110080黑白名单不存在黑白名单不存在

按实例查询关联的黑白名单

按实例查询该实例关联的黑白名单策略组列表

接口地址

/openapi/open/appClassify/padClassifyList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
padCodes["AC32010230001","AC32010230002"]String[]是实例编号集合,数量范围0-100个

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]实例关联黑白名单列表
├─padCodeAC32010230001String实例编号
├─classifyCount2Integer关联策略组数量
├─classifyListObject[]关联策略组明细
├─├─id8Long策略组id
├─├─classifyName白名单A组1String策略组名称
├─├─classifyType1Integer策略组类型 1白名单 2黑名单
├─├─appNum3Integer已关联的应用数量
├─├─padNum5Integer已关联的实例数量
├─├─remark白名单A组测试1String描述
├─├─applyAllInstancesfalseBoolean是否应用所有实例

请求示例

{
  "padCodes": [
    "AC32010230001",
    "AC32010230002"
  ]
}

响应示例

{
  "code": 200,
  "msg": "success",
  "ts": 1735883927104,
  "data": [
    {
      "padCode": "AC32010230001",
      "classifyCount": 2,
      "classifyList": [
        {
          "id": 8,
          "classifyName": "白名单A组1",
          "classifyType": 1,
          "appNum": 3,
          "padNum": 5,
          "remark": "白名单A组测试1",
          "applyAllInstances": false
        },
        {
          "id": 9,
          "classifyName": "黑名单B组1",
          "classifyType": 2,
          "appNum": 6,
          "padNum": 5,
          "remark": "黑名单B组测试1",
          "applyAllInstances": true
        }
      ]
    },
    {
      "padCode": "AC32010230002",
      "classifyCount": 1,
      "classifyList": [
        {
          "id": 8,
          "classifyName": "白名单A组1",
          "classifyType": 1,
          "appNum": 3,
          "padNum": 5,
          "remark": "白名单A组测试1",
          "applyAllInstances": false
        }
      ]
    }
  ]
}

错误码

错误码错误说明操作建议
110028实例不存在检查实例编号是否正确
110042存在不属于当前用户的实例确认实例归属后再重试

应用分类列表

分页查询应用分类

接口地址

/openapi/open/newAppClassify/pageList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
enabletrueBoolean否是否启用
page1Integer否页码 默认1
rows10Integer否每页数量 默认10 最大100

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─id3Integer应用分类id
├─classifyNamef1String应用分类名称
├─appNum4Integer应用数量
├─enabletrueBoolean是否启用
├─remarktestString描述
├─createByadminString创建人
├─createTime2024-12-27 17:16:20String创建时间

请求示例

{
    "enable":true,
    "page":1,
    "rows":10
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1735883927104,
        "data": [
        {
            "id": 3,
            "classifyName": "f1",
            "appNum": 4,
            "enable": true,
            "remark": "你好",
            "createBy": "admin",
            "createTime": "2024-12-27 17:16:20"
        }
    ]
}

应用启停执行结果

通过应用启停任务ID来获取实例的应用启停的结果

接口地址

/task-center/open/task/appOperateInfo

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
taskIdsInteger []是
├─1Integer是任务ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22020020793String实例编号
├─taskStatus3Integer任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
├─endTime1756021166163Long任务执行结束时间
├─taskContentSuccessString任务内容
├─taskResultSuccessString任务结果
├─errorMsg实例不存在String失败的原因

请求示例

{
 "taskIds": [1]
}

响应示例

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data":[
    {
    "taskId": 1,
    "taskStatus": 3,
    "padCode": "AC22020020793",
    "taskContent": "Success",
    "taskResult": "Success",
    "endTime": 1756121167163,
    "errorMsg": null
    }
   ]
}

镜像管理

获取镜像列表

获取可用镜像列表。

接口地址

/openapi/open/image/queryImageList

请求方式

POST

请求数据类型

application/json

请求Query参数

参数名示例值参数类型是否必填参数描述
imageType1Integer否镜像类型, 1:公共镜像,2:自定义镜像
releaseType1Integer否镜像版本 1测试版 2正式版
playServices26.04.38 (190400-867839860)String否Google Play 服务版本
playStore50.0.24-23 [0] [PR] 866011110String否Google Play 商店版本
servicesFramework1String否Google 服务框架版本
romVersionandroid13String否AOSP版本(android13,android14)
createTimeStart2025-03-11 00:00:00String否创建开始时间(格式为:yyyy-MM-dd HH:mm:ss)
createTimeEnd2025-03-11 00:00:00String否创建结束时间(格式为:yyyy-MM-dd HH:mm:ss)
page1Integer否页码,默认1
rows10Integer否每页条数,默认10,最大100

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1717643679112Long时间戳
dataObject
├─recordsObject[]记录列表
├─├─imageIdimg-25030796215String镜像ID
├─├─imageName20250307_4String镜像名称
├─├─imageTag20250307_4String镜像Tag
├─├─serverTypeCruise10StringSOC类型
├─├─romVersionandroid13StringRom版本
├─├─imageDescWIFI自定义版String描述
├─├─releaseType1Integer发版版本 1测试版 2正式版
├─├─supportF2fs1Integer是否支持f2fs(1:支持 0:不支持)
├─├─fileTag0Integer文件标签(1:可删除 0:不能删除)
├─├─gmsPlayServicesVersion26.04.38 (190400-867839860)StringGoogle Play 服务版本
├─├─gmsPlayStoreVersion50.0.24-23 [0] [PR] 866011110StringGoogle Play 商店版本
├─├─gmsServicesFrameworkVersion12StringGoogle 服务框架版本
├─totalInteger总记录条数
├─sizeInteger每页大小
├─currentInteger当前页码
├─pagesInteger总页数

请求示例

{
    "imageType":1,
        "releaseType":1,
        "romVersion":"android13",
        "createTimeStart":"2025-02-11 00:00:00",
        "createTimeEnd":"2025-03-11 00:00:00",
        "page":1,
        "rows":10
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1741688704152,
        "data": {
        "records": [
            {
                "imageId": "img-25030796215",
                "imageName": "20250307_4",
                "imageTag": "20250307_4",
                "serverType": "Cruise10",
                "romVersion": "android13",
                "imageDesc": "",
                "releaseType": 1,
                "fileTag": 1,
                "supportF2fs": 1,
                "gmsPlayServicesVersion": "26.04.38 (190400-867839860)",
                "gmsPlayStoreVersion": "50.0.24-23 [0] [PR] 866011110",
                "gmsServicesFrameworkVersion": "12"
            }
        ],
            "total": 4,
            "size": 10,
            "current": 1,
            "pages": 1
    }
}

账户管理

批量新增子账户

客户账户用来创建子账户。

接口地址

/openapi/open/subCustomer/batchAdd

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
addDTOListObject[]是子账号参数列表(单次新增范围1-30个)
├─ customerAccount测试账号1String是账号
├─ customerName测试名称1String是名称
├─ customerTel15580887450String是联系电话

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1760097337371Long时间戳
dataObject[]子账户信息
├─id972Long子账户主键ID
├─customerAccount测试账号1@zengString子账户登录账号
├─passwordo32kqvn152njString子账户登录密码
├─accessKeyIdjxurdk0uptvm2ztt3urs57jx2o2p4824String子账户AK
├─secretAccessKeyn927izl0bkonsw7znh6c5vnsString子账户SK
├─errorMsg系统异常String错误信息

请求示例

{
    "addDTOList": [
        {
            "customerName": "子账号名称1",
            "customerAccount": "测试账号1",
            "customerTel": "15580887450"
        },
        {
            "customerName": "子账号名称2",
            "customerAccount": "测试账号2",
            "customerTel": "15580887459"
        }
    ]
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1760097337371,
        "data": [
        {
            "id": 972,
            "customerAccount": "测试账号1@zeng",
            "password": "o32kqvn152nj",
            "accessKeyId": "jxurdk0uptvm2ztt3urs57jx2o2p4824",
            "secretAccessKey": "n927izl0bkonsw7znh6c5vns",
            "errorMsg": null
        },
        {
            "id": 973,
            "customerAccount": "测试账号2@zeng",
            "password": "l63g1dtoujbs",
            "accessKeyId": "gia3tj3lvtdfiiw6m5i2pmmqkzuejstt",
            "secretAccessKey": "1pwk6pxvm59fjaefvrjy8b6i",
            "errorMsg": null
        }
    ]
}

子账户列表分页查询

分页查询客户账户下面的子账户。

接口地址

/openapi/open/subCustomer/pageList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
page1Integer是页码
rows10Integer是条数
status1Integer否启用状态:0-禁用;1-启用
customerAccount测试账号1String否客户账号
customerTel15580887450String否客户电话

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─page1Integer当前页
├─rows10Integer每页的数量
├─size1Integer当前页的数量
├─total1Integer总记录数
├─totalPage1Integer总页数
├─pageDataobject[]列表
├─├─id972Integer主键id
├─├─customerAccount测试账号1@zengString子账户登录账号
├─├─subCustomerPasswordo32kqvn152njString子账户登录密码
├─├─customerName子账号名称1String子账户名称
├─├─customerTel15580887450String子账户电话
├─├─accessKeyIdjxurdk0uptvm2ztt3urs57jx2o2p4824String子账户AK
├─├─secretAccessKeyn927izl0bkonsw7znh6c5vnsString子账户SK
├─├─status1Interge启用状态:0-禁用;1-启用

请求示例

{
    "page": 1,
    "rows": 10,
    "status": 1,
    "customerAccount": "测试账号1",
    "customerTel": "15580887450"
}

响应示例

{
    "code": 200,
        "msg": "success",
        "ts": 1760152734156,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 1,
            "total": 1,
            "totalPage": 1,
            "pageData": [
            {
                "id": 972,
                "customerAccount": "测试账号1@zeng",
                "subCustomerPassword": "o32kqvn152nj",
                "customerName": "子账号名称1",
                "customerTel": 15580887450,
                "status": 1,
                "accessKeyId": "jxurdk0uptvm2ztt3urs57jx2o2p4824",
                "secretAccessKey": "n927izl0bkonsw7znh6c5vns"
            }
        ]
    }
}

子账户批量删除

批量删除客户账户下面的子账户。

接口地址

/openapi/open/subCustomer/batchDelete

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
ids[972]Long[]是需要删除的子账户主键ID

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1760154208875Long时间戳

请求示例

{
    "ids": [972]
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1760154208875
}

主账号板卡列表分页查询

分页查询客户账号下拥有的板卡列表。

接口地址

/openapi/open/subCustomer/resource/masterCustomer/pageList

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
page1Integer是页码
rows10Integer是条数
netStorageResFlag1Integer否网存板卡标记:0-本地板卡;1-网存板卡
deviceCodeACD250411WU3CF2UString否板卡编号
deviceCreatePadStatus1Integer否板卡实例状态 -1未创建实例 0所有板卡 1已创建实例 默认返回所有板卡

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1760097337371Long时间戳
dataObject[]板卡信息
├─deviceId12376Long板卡主键ID
├─deviceCodeACD250411WU3CF2UString板卡编号
├─netStorageResFlag1Integer网存板卡标记:0-本地板卡;1-网存板卡
├─deviceCreatePadStatus1Integer板卡实例状态 -1未创建实例 1 已创建实例

请求示例

{
     "page": 1,
     "rows": 10,
     "netStorageResFlag":1, 
     "deviceCode":"ACD250411WU3CF2U",
     "deviceCreatePadStatus":1
}

响应示例

{
        "code": 200,
        "msg": "success",
        "ts": 1760163320924,
        "data": [
        {
            "deviceCreatePadStatus":1,
            "deviceCode": "ACD250411WU3CF2U",
            "deviceId": 12376,
            "netStorageResFlag": 1
        }
    ]
}

子账号板卡列表查询

客户账户查询其子账户下被分配的板卡列表。

接口地址

/openapi/open/subCustomer/resource/list

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
subCustomerId862Long是子账户主键ID
netStorageResFlag1Integer否网存板卡标记:0-本地板卡;1-网存板卡
deviceCodeACD250411WU3CF2UString否板卡编号

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1760097337371Long时间戳
dataObject[]板卡信息
├─deviceId12376Long板卡主键ID
├─deviceCodeACD250411WU3CF2UString板卡编号
├─netStorageResFlag1Integer网存板卡标记:0-本地板卡;1-网存板卡

请求示例

{
     "subCustomerId":862, 
     "netStorageResFlag":1, 
     "deviceCode":"ACD250411WU3CF2U"
}

响应示例

{
        "code": 200,
        "msg": "success",
        "ts": 1760163320924,
        "data": [
        {
            "deviceCode": "ACD250411WU3CF2U",
            "deviceId": 12376,
            "netStorageResFlag": 1
        }
    ]
}

子账号板卡授权

客户账户对其下某个子账户授权板卡。

接口地址

/openapi/open/subCustomer/resource/allocate

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
subCustomerId862Long是需要授权板卡的子账户主键ID
allocateDeviceIds[12376]Long[]是需要授权的板卡ID集合

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1760154208875Long时间戳

请求示例

{
    "subCustomerId": 862,
     "allocateDeviceIds": [
        12376
    ]
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1760168978928
}

子账号板卡解绑

客户账户对其下某个子账户授权的板卡进行解绑。解绑成功后板卡重新归属到客户账户。

接口地址

/openapi/open/subCustomer/resource/unbind

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
subCustomerId862Long是需要解绑板卡的子账户主键ID
unbindDeviceIds[12376]Long[]是需要解绑的板卡ID集合

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1760154208875Long时间戳

请求示例

{
     "subCustomerId": 862,
     "unbindDeviceIds": [
        12376
    ]
}

响应示例

{
    "code": 200,
    "msg": "success",
    "ts": 1760168978928
}
Prev
接口签名v1.0
Next
OpenAPI 3.1规范(AI工具专用)