简介
本文档为您提供具体的 API 描述、语法、参数说明及示例等,您可以调用 API 管理云手机服务资源。
更新记录
更新记录(按时间倒序排列)
2024-12-30
- 更新 修改SIM 接口
2024-12-26
- 新增 黑白名单列表 接口
- 新增 黑白名单保存 接口
- 新增 黑白名单详情 接口
- 新增 黑白名单实例关联保存 接口
- 新增 黑白名单实例关联详情 接口
- 新增 删除黑白名单 接口
- 新增 添加黑白名单APP 接口
- 新增 添加黑白名单实例关联 接口
- 更新 应用安装 接口
- 更新 本地截图 接口
- 更新 生成预览图 接口
- 更新 手动签名 - Signature示例
- 更新 应用列表 - 增加返回字段文件ID、应用图标、应用类别
- 新增 根据padCode申请STS Token 接口
2024-12-24
- 更新 根据应用ID查询应用信息列表 接口
2024-12-23
- 新增 备份文件删除 接口
- 新增 实例文件删除 接口
2024-12-20
- 更新 一键新机 接口(支持传入国家编码)
- 新增 备份还原回调
2024-12-17
- 新增 批量实例断网和恢复 接口
- 新增 回调配置 接口
2024-12-13
- 新增 升级真机镜像 接口
- 新增 分页获取真机模板 接口
- 新增 获取公共屏幕布局列表 接口
2024-12-05
- 新增 修改通讯录 接口
- 新增 清除SDK授权Token 接口
2024-11-22
- 新增 实例备份与实例数据恢复 接口
- 新增 一键新机 接口
2024-11-13
- 新增 修改实例安卓改机属性 接口
2024-10-23
- 新增 开启/关闭实例ADB 接口
2024-09-27
- 新增 修改实例时区 接口
- 新增 修改实例语言 接口
- 新增 修改实例SIM卡信息 接口
- 新增 设置实例经纬度 接口
- 新增 查询实例代理信息 接口
- 新增 实例设置代理 接口
2024-09-23
- 新增 设置实例带宽 接口
2024-08-09
- 新增 实例IP绑定 接口
- 新增 申请RTC共享房间Token 接口
2024-07-23
- 新增 添加应用黑名单列表 接口
- 新增 设置实例黑名单 接口
2024-07-22
- 新增 物理机重启 接口
- 新增 批量获取实例机型 接口
2024-07-18
- 新增 批量申请RTC Token 接口
2024-07-08
- 更新 实例操作任务详情 接口
2024-07-04
- 更新 应用安装 接口
- 更新 应用启动 接口
- 更新 应用启停 接口
- 更新 应用停止 接口
- 更新 应用重启 接口
- 更新 应用卸载 接口
- 更新 实例重置 接口
- 更新 实例文件上传 接口
- 更新 查询实例应用列表 接口
2024-07-01
- 更新 文件上传 接口
- 更新 实例重启 接口
- 更新 实例详情 接口
- 更新 修改实例属性 接口
- 更新 异步执行ADB命令 接口
2024-06-21
- 更新 镜像上传 接口
- 更新 镜像升级 接口
2024-04-30
- 文档发布
调用说明
前置条件
获取账号的 Access Key ID 和 Secret Access Key (AK/SK),用于 API 请求鉴权。请联系技术对接人获取
公共请求参数
接口每次请求时,Headers中必须包含以下四个参数进行身份验证,否则接口无法正常请求。
参数名 | 类型 | 示例值 | 参数描述 |
---|---|---|---|
x-date | string | 20240301T093700Z | 发送请求的时间戳,使用UTC时间,精确到秒 |
x-host | string | openapi.armcloud.net | 接口访问域名 |
authorization | string | HMAC-SHA256 Credential={AccessKey}/{ShortDate}/armcloud-paas/request, SignedHeaders=content-type;host;x-content-sha256;x-date, Signature={Signature} | 发送的请求中包含的签名 |
Content-Type | string | application/json | 资源的MIME类型 |
Authorization签名机制
对于每一次 HTTPS 协议请求,会根据访问中的签名信息验证访问请求者的身份。具体由用户账号对应的 AccessKey ID 和 AccessKey Secret(AK/SK)加密验证实现。
调用SDK签名
注意 具体调用方法,请参考 接口列表 代码示例
在 SDK 中提供了签名函数或方法,开发者只需要在请求中提供访问密钥等信息, SDK 会自动计算请求签名,并将签名结果添加到请求中。这种方法简化了签名过程,降低了开发难度,尤其适用于不熟悉签名算法的开发者。
手动签名
注意
签名需要对请求参数进行一系列处理,包括排序、拼接、加密等步骤。这种方法提供了更大的灵活性和可定制性,适用于开发者对签名算法有深入理解的情况。然而,手动签名需要开发者编写额外的代码来实现签名过程,可能会增加开发难度和出错的可能性,因此我们依然建议您使用SDK来调用API,尽量避免自行编写签名代码。若您需要了解签名计算的原理和具体过程,可参考以下文档。
手动签名机制要求请求者对请求参数进行哈希值计算,经过加密后同 API 请求一起发送到服务器中,服务器将以同样的机制对收到的请求进行签名计算,并将其与请求者传来的签名进行比对,若签名未通过验证,请求将被拒绝。
获取账号的 Access Key ID 和 Secret Access Key (AK/SK),用于 API 请求鉴权。请联系技术对接人获取
构建规范请求字符串(CanonicalRequest)
String canonicalStringBuilder=
"host:"+*${host}*+"\n"+
"x-date:"+*${xDate}*+"\n"+
"content-type:"+*${contentType}*+"\n"+
"signedHeaders:"+*${signedHeaders}*+"\n"+
"x-content-sha256:"+*${xContentSha256}*;
字段 | 解释 |
---|---|
host | 请求服务域名。固定为:openapi.armcloud.net |
x-date | 指代请求 UTC 时间,即请求头公共参数中 X-Date 的取值,使用遵循 ISO 8601 标准的格式:YYYYMMDD'T'HHMMSS'Z' ,例如:20201103T104027Z |
content-type | 请求或响应正文的媒体类型(application/json) |
signedHeaders | 参与签名的Header,和CanonicalHeaders包含的Header是一一对应的,目的是指明哪些Header参与签名计算,从而忽略请求被proxy添加的额外Header,其中host、x-date如果存在Header中则必选参与 伪代码如下: SignedHeaders=Lowercase(HeaderName0)+';'+Lowercase(HeaderName1)+";"+...+Lowercase(HeaderNameN) 示例: SignedHeaders=content-type;host;x-content-sha256;x-date |
x-content-sha256 | hashSHA256(body) |
构建待签名字符串(StringToSign)
签名字符串主要包含请求以及规范化请求的元数据信息,由签名算法、请求日期、信任状和规范化请求哈希值连接组成。
构建待签名字符串,伪代码如下:
StringToSign=
Algorithm+'\n'+
xDate+'\n'+
CredentialScope+'\n'+
hashSHA256(canonicalStringBuilder.getByte())
字段 | 解释 |
---|---|
Algorithm | 指代签名的算法,目前仅支持 HMAC-SHA256 的签名算法。 |
x-date | 指代请求 UTC 时间,即请求头公共参数中 X-Date 的取值,使用遵循 ISO 8601 标准的格式:YYYYMMDD'T'HHMMSS'Z' ,例如:20201103T104027Z |
CredentialScope | 指代信任状,格式为: ${YYYYMMDD}/${service}/request ,其中${YYYYMMDD} 取 X-Date 中的日期,${service} 固定为armcloud-paas,request 为固定值。参考下方《计算CredentialScope》 |
CanonicalRequest | 指构建规范请求字符串的结果。 |
计算CredentialScope
String credentialScope = shortXDate+"/"+service+"/request";
shortXDate:短请求时间(x-date截取前8位示例:20201103)
service:服务名(固定填armcloud-paas)
"/request":固定值
Signingkey示例
HMAC哈希操作序列生成的派生签名密钥
byte[]Signingkey=hmacSHA256(hmacSHA256(hmacSHA256(sk.getBytes(),shortXDate),service),”request”);
字段 | 解释 |
---|---|
sk | 客户密钥 |
shortXDate | 短请求日期 |
Service | 服务名暂时固定填armcloud-paas |
Signature示例
signature=bytesToHex(hmacSHA256(Signingkey,StringToSign))
public static String bytesToHex(byte[] bytes) {
if (bytes == null || bytes.length == 0) {
return "";
}
final StringBuilder result = new StringBuilder();
for (byte b : bytes) {
result.append(String.format("%02x", b));
}
return result.toString();
}
public static byte[] hmacSHA256(byte[] key, String content) throws Exception {
try {
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(key, "HmacSHA256"));
return mac.doFinal(content.getBytes());
} catch (Exception e) {
throw new Exception("Unable to calculate a request signature: " + e.getMessage(), e);
}
}
数据加解密示例
Java AES GCM 解密
import javax.crypto.Cipher;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;
public class AESUtils {
private static final String AES = "AES";
private static final String AES_CIPHER_ALGORITHM = "AES/GCM/NoPadding";
private static final int GCM_TAG_LENGTH = 16;
private static final int GCM_IV_LENGTH = 12;
/**
* Generates a SecretKeySpec from a given string key
*/
private static SecretKeySpec getKeyFromPassword(String password) throws NoSuchAlgorithmException {
MessageDigest sha = MessageDigest.getInstance("SHA-256");
byte[] key = sha.digest(password.getBytes());
return new SecretKeySpec(key, AES);
}
/**
* Generates a new Initialization Vector (IV)
*/
public static byte[] generateIv() {
byte[] iv = new byte[GCM_IV_LENGTH];
new SecureRandom().nextBytes(iv);
return iv;
}
/**
* Encrypts a plain text using AES algorithm and returns both the cipher text and IV
*/
public static String encrypt(String input, String key) {
try {
SecretKeySpec secretKeySpec = getKeyFromPassword(key);
byte[] iv = generateIv();
Cipher cipher = Cipher.getInstance(AES_CIPHER_ALGORITHM);
GCMParameterSpec gcmParameterSpec = new GCMParameterSpec(GCM_TAG_LENGTH * 8, iv);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, gcmParameterSpec);
byte[] cipherText = cipher.doFinal(input.getBytes());
// Encode IV and cipher text to Base64 and concatenate them with a separator
String ivString = Base64.getEncoder().encodeToString(iv);
String cipherTextString = Base64.getEncoder().encodeToString(cipherText);
return ivString + ":" + cipherTextString;
} catch (Exception e) {
log.error("encrypt error >>>input:{} key:{}", input, key, e);
return null;
}
}
/**
* Decrypts an encrypted text using AES algorithm
*/
public static String decrypt(String encryptedData, String key) {
try {
SecretKeySpec secretKeySpec = getKeyFromPassword(key);
// Split the encrypted data into IV and cipher text
String[] parts = encryptedData.split(":");
String ivString = parts[0];
String cipherTextString = parts[1];
byte[] iv = Base64.getDecoder().decode(ivString);
byte[] cipherText = Base64.getDecoder().decode(cipherTextString);
Cipher cipher = Cipher.getInstance(AES_CIPHER_ALGORITHM);
GCMParameterSpec gcmParameterSpec = new GCMParameterSpec(GCM_TAG_LENGTH * 8, iv);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, gcmParameterSpec);
byte[] plainText = cipher.doFinal(cipherText);
return new String(plainText);
} catch (Exception e) {
log.error("decrypt error >>>encryptedData:{} key:{}", encryptedData, key, e);
return null;
}
}
/**
* Encodes the input byte array to a Base64 string
*/
public static String encodeToString(byte[] input) {
return Base64.getEncoder().encodeToString(input);
}
// Encodes the input string to a Base64 string
public static String encodeToString(String input) {
return Base64.getEncoder().encodeToString(input.getBytes());
}
/**
* Decodes the input Base64 string to a byte array
*/
public static byte[] decodeToBytes(String input) {
return Base64.getDecoder().decode(input);
}
/**
* Decodes the input Base64 string to a regular string
*/
public static String decodeToString(String input) {
byte[] decodedBytes = Base64.getDecoder().decode(input);
return new String(decodedBytes);
}
/**
* Encodes the input byte array to a Base64 byte array
*/
public static byte[] encodeToBytes(byte[] input) {
return Base64.getEncoder().encode(input);
}
/**
* Decodes the input Base64 byte array to a byte array
*/
public static byte[] decodeToBytes(byte[] input) {
return Base64.getDecoder().decode(input);
}
public static void main(String[] args) throws Exception {
String key = "AC22030010001"; // 任意字符串作为密钥
// Decrypt the cipher text
String decryptedText = decrypt("iMzQUI7SwzSD0kGJ:4FZ1fn1Jdd5Z4j2ehn/F3VSUVWBwLFQZH/HOCjLAI95r", key);
System.out.println("Decrypted text: " + decryptedText);
}
}
接口概览
实例管理
接口 | 接口名 | 接口说明 |
---|---|---|
/pad/restart | 实例重启 | 对指定实例执行重启操作,用以解决系统无响应、卡死等问题 |
/pad/reset | 实例重置 | 对指定实例执行重置操作 |
/pad/padProperties | 查询实例属性 | 查询指定实例的属性信息 |
/pad/updatePadProperties | 修改实例属性 | 修改指定实例的属性信息 |
/pad/padDetails | 实例详情 | 查询指定实例的详细信息 |
/room/dissolveRoom | 停止推流 | 停止指定实例推流 |
/room/batchApplyToken | 批量申请RTC Token | 申请多个实例的RTC Token |
/device/powerReset | 物理机重启 | 对指定物理机执行重启操作 |
/pad/updateTimeZone | 修改实例时区 | 对指定实例修改时区 |
/pad/updateLanguage | 修改实例语言 | 对指定实例修改系统语言 |
/pad/updateSIM | 修改实例SIM卡信息 | 对指定实例修改SIM卡信息 |
/pad/gpsInjectInfo | 设置实例经纬度 | 对指定实例修改当前经纬度 |
/network/proxy/set | 实例设置代理 | 对指定实例设置代理信息 |
/network/proxy/info | 查询实例代理信息 | 查询指定实例代理信息 |
/pad/updatePadAndroidProp | 修改实例安卓改机属性 | 修改实例安卓改机属性 |
/openapi/open/pad/data/del | 备份文件删除 | 备份文件删除 |
/pad/data/restore | 一键新机 | 一键新机 |
/pad/data/updateContacts | 修改通讯录 | 修改通讯录 |
/network/proxy/interrupt | 批量实例断网和恢复 | 对指定实例设置断网和恢复网络 |
实例操控
接口 | 接口名 | 接口说明 |
---|---|---|
/pad/asyncCmd | 异步执行ADB命令 | 在一个或多个云手机实例中执行adb命令(异步任务) |
/pad/syncCmd | 同步执行ADB命令 | 在一个或多个云手机实例中同步执行adb命令 |
/pad/screenshot | 本地截图 | 在与手机实例中执行截图,并保存在云机本地 |
/pad/generatePreview | 生成预览图 | 对当前云手机画面进行截图,并获取下载截图文件的地址 |
/file/cache | 文件上传 | 上传文件到文件管理中心(异步任务) |
/file/list | 文件列表 | 查询已上传的文件列表信息 |
/pad/v2/uploadFile | 实例文件上传 | 从文件管理中心推送文件到一个或多个云手机实例(异步任务) |
/pad/upgradeImage | 升级镜像 | 升级实例镜像(异步任务) |
/pad/modelInfo | 批量获取实例机型信息 | 根据实例编号批量获取对应的实例的机型信息 |
/appBlack/setUpBlackList | 添加应用黑名单列表 | 根据实例规格添加应用黑名单 |
/pad/triggeringBlacklist | 设置实例黑名单 | 根据实例规格设置实例黑名单 |
/pad/setSpeed | 设置实例带宽 | 根据实例编号批量设置实例带宽 |
/pad/adb | 打开/关闭实例adb | 根据实例编号打开或关闭实例adb |
/pad/virtualRealSwitch | 升级真机镜像 | 升级实例真机镜像(异步任务) |
/realPhone/template/list | 分页获取真机模板 | 获取真机模板配置信息列表 |
/screenLayout/publicList | 获取公共屏幕布局列表 | 获取公共屏幕布局列表 |
/file-center/open/file/batch/del | 实例文件删除 | 实例文件删除 |
资源管理
接口 | 接口名 | 接口说明 |
---|---|---|
/pad/infos | 实例列表信息 | 查询所有已订购实例列表信息 |
/group/infos | 实例分组列表 | 查询所有实例分组列表 |
应用管理
接口 | 接口名 | 接口说明 |
---|---|---|
/app/cache | 应用上传 | 上传应用安装文件到应用管理中心(异步任务) |
/app/list | 应用列表 | 查询已上传的应用列表信息 |
/app/detail | 应用详情 | 查询指定应用的详情及应用版本信息 |
/pad/listApp | 查询实例应用列表 | 查询指定实例上的应用安装情况 |
/pad/installApp | 应用安装 | 将指定应用安装部署到指定的云实例中(异步任务) |
/pad/uninstallApp | 应用卸载 | 将指定应用从云实例中卸载(异步任务) |
/pad/startApp | 应用启动 | 在一个或多个云实例中启动指定应用(异步任务) |
/pad/stopApp | 应用停止 | 在一个或多个云实例中关闭指定应用(异步任务) |
/pad/restartApp | 应用重启 | 在一个或多个云实例中重启指定应用(异步任务) |
/appClassify/pageList | 黑白名单列表 | 分页获取黑白名单列表 |
/appClassify/save | 黑白名单保存 | 保存黑白名单和关联应用 |
//appClassify/detail | 黑白名单详情 | 黑白名单详情和关联应用 |
/appClassify/padSave | 黑白名单实例关联保存 | 保存黑白名单关联实例 |
/appClassify/padDetail | 黑白名单实例关联详情 | 黑白名单详情和关联实例 |
/appClassify/del | 删除黑白名单 | 删除黑白名单 |
/appClassify/addApp | 添加黑白名单app | 在现有的分类上添加关联应用 |
/appClassify/addPad | 添加黑白名单实例关联 | 在现有的分类上添加关联实例 |
镜像管理
接口 | 接口名 | 接口说明 |
---|---|---|
/image/uploadImage | 创建镜像上传任务 | 创建镜像上传任务(异步任务) |
任务管理
接口 | 接口名 | 接口说明 |
---|---|---|
/task/fileTaskDetail | 文件任务详情 | 查询指定文件任务的执行结果详细信息 |
/task/padTaskDetail | 实例操作任务详情 | 查询指定实例操作任务的执行结果详细信息 |
/task/list | 任务列表 | 查询实例、应用等相关任务的列表信息 |
/task/executeScriptInfo | 获取实例执行脚本结果 | 通过执行脚本任务ID来获取实例执行脚本结果 |
/task/cacheFileResult | 获取文件上传任务结果 | 通过文件上传任务 ID 来获取实例的文件上传结果 |
/task/screenshotInfo | 获取实例截图结果 | 通过截图任务 ID 来获取实例的截图结果 |
/task/appOperateInfo | 应用启停执行结果 | 通过应用启停任务ID来获取实例的应用启停的结果 |
/task/padExecuteTaskInfo | 实例重启重置执行结果 | 通过任务ID来获取实例重启重置执行结果 |
/task/imageUploadResult | 镜像上传任务结果查询 | 通过任务ID来获取镜像上传任务结果查询 |
SDK Token
接口 | 接口名 | 接口说明 |
---|---|---|
/token/stsToken | 签发sdk临时token | 签发sdk临时token,用于对接入云手机服务的用户进行鉴权 |
/token/stsTokenByPadCode | 签发sdk临时token | 签发sdk临时token,用于对接入云手机服务的用户进行鉴权 |
/token/clearStsToken | 清除SDK授权Token | 清除SDK授权Token |
OpenAPI 接口列表
实例管理
实例重启
对指定实例执行重启操作,用以解决系统无响应、卡死等问题。
接口地址
/openapi/open/pad/restart
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC21020010001 | String | 是 | 实例编号 |
groupIds | Integer[] | 否 | ||
├─ | 1 | Integer | 否 | 实例组ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC21020010001 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC22030022693"
],
"groupIds": [1]
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data":[
{
"taskId": 1,
"padCode": "AC21020010001",
"vmStatus": 1
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
10001 | 重启失败 | 联系管理员 |
110004 | 执行重启命令失败 | 稍后再次重启 |
110028 | 实例不存在 | 请检查实例是否存在 |
代码示例
// java 调用示例
public class SDKExample {
private final ArmCloudApiService armCloudApiService;
public SDKExample() {
ArmCloudConfig armCloudConfig = new ArmCloudConfig();
armCloudConfig.setOpenUrl("https://openapi.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>>() {});
}
}
实例重置
对指定实例执行重置操作,清理应用和文件
接口地址
/openapi/open/pad/reset
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC21020010001 | String | 是 | 实例编号 |
groupIds | Integer[] | 否 | ||
├─ | 1 | Integer | 否 | 实例组ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC21020010001 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC21020010001"
],
"groupIds": [1]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717559681604,
"data": [
{
"taskId": 88,
"padCode": "AC22030010001",
"vmStatus": 1
},
{
"taskId": 89,
"padCode": "AC22030010002",
"vmStatus": 0
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
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参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCode | AC21020010001 | String | 是 | 实例编号 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─padCode | AC21020010001 | String | 实例编号 |
├─modemPropertiesList | Object[] | Modem-属性列表 | |
├─├─propertiesName | IMEI | String | 属性名称 |
├─├─propertiesValue | 412327621057784 | String | 属性值 |
├─systemPropertiesList | Object[] | 系统-属性列表 | |
├─├─propertiesName | ro.build.id | String | 属性名称 |
├─├─propertiesValue | QQ3A.200805.001 | String | 属性值 |
├─settingPropertiesList | Object[] | setting-属性列表 | |
├─├─propertiesName | ro.build.tags | String | 属性名称 |
├─├─propertiesValue | release-keys | String | 属性值 |
├─oaidPropertiesList | Object[] | oaid-属性列表 | |
├─├─propertiesName | oaid | String | 属性名称 |
├─├─propertiesValue | 001 | String | 属性值 |
请求示例
{
"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/updatePadProperties
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC21020010001 | String | 是 | 实例编号 |
modemPersistPropertiesList | Object[] | 否 | Modem-持久化-属性列表 | |
├─propertiesName | IMEI | String | 否 | 属性名称 |
├─propertiesValue | 412327621057784 | String | 否 | 属性值 |
modemPropertiesList | Object[] | 否 | Modem-非持久化-属性列表 | |
├─propertiesName | IMEI | String | 否 | 属性名称 |
├─propertiesValue | 412327621057784 | String | 否 | 属性值 |
systemPersistPropertiesList | Object[] | 否 | 系统-持久化-属性列表 | |
├─propertiesName | ro.build.id | String | 否 | 属性名称 |
├─propertiesValue | QQ3A.200805.001 | String | 否 | 属性值 |
systemPropertiesList | Object[] | 否 | 系统-非持久化-属性列表 | |
├─propertiesName | ro.build.id | String | 否 | 属性名称 |
├─propertiesValue | QQ3A.200805.001 | String | 否 | 属性值 |
settingPropertiesList | Object[] | 否 | setting-属性列表 | |
├─propertiesName | ro.build.tags | String | 否 | 属性名称 |
├─propertiesValue | release-keys | String | 否 | 属性值 |
oaidPropertiesList | Object[] | 否 | oaid-属性列表 | |
├─propertiesName | oaid | String | 否 | 属性名称 |
├─propertiesValue | 001 | String | 否 | 属性值 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC21020010001 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(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"
}
]
}
响应示例
{
"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/padDetails
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
page | 1 | Integer | 否 | 页码 |
rows | 10 | Integer | 否 | 每页记录数 |
padCodes | String[] | 否 | ||
├─ | AC21020010391 | String | 否 | 实例编号 |
padIps | String[] | 否 | ||
├─ | 192.168.1.1 | String | 否 | 实例ip |
vmStatus | 1 | String | 否 | 实例在线状态:0-离线,1-在线 |
controlStatus | 1 | String | 否 | 受控状态(推流状态):1-非受控,2-受控 |
faultStatus | 14 | String | 否 | 实例运行状态 14-异常 其他-正常 |
deviceStatus | 0 | String | 否 | 物理机在线状态:0-离线,1-在线 |
groupId | 2 | Integer | 否 | 分组ID |
idcCode | HNCS-C-01 | String | 否 | 机房编号 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─ page | 1 | Integer | 当前页 |
├─ rows | 10 | Integer | 每页的数量 |
├─ size | 1 | Integer | 当前页的数量 |
├─ total | 1 | Integer | 总记录数 |
├─ totalPage | 1 | Integer | 总页数 |
├─ pageData | object[] | 列表 | |
├─ ├─ padCode | VP21020010391 | String | 实例编号 |
├─ ├─ imageId | andorid:v10 | String | 镜像ID |
├─ ├─ deviceLevel | q2-6 | String | 实例规格(q2-6六开,q2-4四开) |
├─ ├─ padStatus | 12 | Integer | 实例状态 (10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪) |
├─ ├─ deviceStatus | 1 | Integer | 物理机状态(0-离线,1-在线) |
├─ ├─ online | 1 | Integer | 实例在线状态(0-离线,1-在线) |
├─ ├─ streamStatus | 0 | Integer | 实例推流状态( 0-空闲 1-推流中) |
├─ ├─ dataSize | 234493726720 | Long | 存储总容量(字节) |
├─ ├─ dataSizeUsed | 179189956608 | Long | 存储已使用容量(字节) |
├─ ├─ dcInfo | Object | 机房信息 | |
├─ ├─ ├─ dcCode | dc01 | String | 机房编码 |
├─ ├─ ├─ dcName | 长沙-01 | String | 机房名称 |
├─ ├─ ├─ area | 长沙 | String | 地区 |
├─ ├─ ├─ ossEndpoint | https://xxx.armcloud.net | String | OSS公网接口地址 |
├─ ├─ ├─ ossEndpointInternal | https://xxx.armcloud.net | String | OSS内网接口地址 |
├─ ├─ ├─ ossFileEndpoint | https://xxx.armcloud.net | String | 访问文件地址 |
├─ ├─ ├─ ossScreenshotEndpoint | https://xxx.armcloud.net | String | 访问截图地址 |
请求示例
{
"page": 1,
"rows": 10,
"padCodes": ["AC21020010391"],
"padIps":["192.168.1.1"],
"vmStatus":"1",
"controlStatus":"1",
"faultStatus":"14",
"deviceStatus":"0"
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": {
"page": 1,
"rows": 10,
"size": 1,
"total": 1,
"totalPage": 1,
"pageData": [
"padCode": "AC21020010391",
"imageId": "andorid:v10",
"deviceLevel": "q2-6",
"dcInfo": {
"dcCode": "dc01",
"dcName": "长沙-01",
"area": "长沙",
"ossEndpoint": "https://xxx.armcloud.net",
"ossEndpointInternal": "https://xxx.armcloud.net",
"ossFileEndpoint": "https://xxx.armcloud.net",
"ossScreenshotEndpoint": "https://xxx.armcloud.net",
},
"padStatus": 12,
"deviceStatus": 1,
"online": 1,
"streamStatus": 0,
"dataSize": 234493726720,
"dataSizeUsed": 179189956608
]
}
}
代码示例
// 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>>>() {});
停止推流
停止指定实例推流,断开实例连接。
接口地址
/rtc/open/room/dissolveRoom
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC11010000031 | String | 是 | 实例编号 |
├─ | AC22020020700 | String | 是 | 实例编号 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─successList | Object[] | 成功集合 | |
├─├─padCode | AC11010000031 | String | 实例编号 |
├─failList | Object[] | 失败集合 | |
├─├─padCode | AC22020020700 | String | 实例编号 |
├─├─errorCode | 120005 | Integer | 错误码 |
├─├─errorMsg | 实例不存在 | String | 失败的原因 |
请求示例
{
"padCodes": ["AC11010000031","AC22020020700"]
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": {
"successList": [
{
"padCode": "AC11010000031"
}
],
"failList": [
{
"padCode": "AC22020020700",
"errorCode": 120005,
"errorMsg": "实例不存在"
}
]
}
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
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参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
userId | 202 | String | 是 | 业务方自定义用户ID,此字段用来生成房间信息。实现一个用户跟GameServer处于一个房间。调用方需做用户级唯一性,如使用同一个userId生成不同的Toekn连接同一个GamerServer会导致上一个已建立的连接断开 |
expire | 3600 | Integer | 否 | token有效期(单位:秒。默认86400) |
pads | Object[] | 是 | 实例列表 | |
├─padCode | AC11010000031 | String | 是 | 实例编号 |
├─videoStream | Object | 否 | 推流配置 | |
├─├─resolution | 07 | String | 否 | 分辨率 |
├─├─frameRate | 30 | String | 否 | 帧率 |
├─├─bitrate | 2000 | String | 否 | 码率 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─roomToken | 001j7Tb2jAyAzR6UtLv3cgclCFhw6Q== | String | token |
├─roomCode | AC22030010181202 | String | 房间号 |
├─appId | j7Tb2GcE9rN5oF6xP3A4qwer | String | 应用ID |
├─padCode | AC22030010181 | String | 实例ID |
├─signalServer | LnBbVX44uyoN1kXp:P8H01PaGZDHEFD | String | 信令地址(需使用AES GCM模式解密) |
├─stuns | pL25iYgaRNmdCYR/:SUJBz4S6HE88GzVN | String | stuns地址(需使用AES GCM模式解密) |
├─turns | do2k7Z6OiVP1br29:rR4d6Vyk9e | String | turns地址(需使用AES GCM模式解密) |
├─msg | connect pad fail | String | 错误信息 |
请求示例
{
"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": "001j7Tb2GcE9rN5oF6xP3A4qwerNwDyCHIRtQrGxZABAAC1ZuzKkAEAABAAQUMyMjAzMDAxMDE4MTIwMgMAMjAyAQAEALVm7MqQAQAAIABpLvj5zX3dnyN/8UvRsLJnHWA4zR6UtLv3cgclCFhw6Q==",
"roomCode": "AC22030010181202",
"appId": "j7Tb2GcE9rN5oF6xP3A4qwer",
"streamType": 2,
"videoCodec": "",
"reportSdkLog": false,
"padCode": "AC22030010181",
"msg": null,
"signalServer": "LnBbVX44uyoN1kXp:P8H01PaGZDHEFDsnU6nRCbOFzvL2smbG9HxKh+XP5WHC",
"stuns": "pL25iYgaRNmdCYR/:SUJBz4S6HE88GzVN8rANlfL9925iaHW+ilJAaWldPpoBKqwoEq0Ggon0HhDc4a6v0pg=",
"turns": "do2k7Z6OiVP1br29:rR4d6Vyk9efIFX6qPPMyKs7OhmxFA7xBr65P8NA/Rxb31Js6VOaO3Zrtd3h9uM/mNYUy5mJOQ4j8TJ8DjfBFaEHVNOAcF5tzgbg8iksGhNONfv8hHw=="
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
120005 | 实例不存在 | 请检查实例编号是否正确 |
120007 | 此接口暂不支持此功能 | 联系相关人员更改推流配置 |
物理机重启
断电重启物理机。
接口地址
/openapi/open/device/powerReset
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
deviceIps | String[] | 是 | ||
├─ | 172.31.4.124 | String | 是 | 物理设备IP |
type | 2 | String[] | 是 | 重启类型 2:断电重启 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─deviceIp | 172.31.4.124 | String | 物理设备IP |
├─errorMsg | “” | String | 失败的原因 |
├─deviceOutCode | AC22030010000 | String | 云机编号 |
请求示例
{
"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 | 执行断电重启命令失败 | 联系相关人员 |
绑定公网IP
实例绑定指定公网IP
接口地址
/openapi/open/network/bindIp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
publicIP | 116.162.203.188 | String | 是 | 需要绑定的公网IP |
padIP | 10.255.1.53 | String | 是 | 实例IP |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object |
请求示例
{
"publicIP": "116.162.203.188",
"padIP": "10.255.1.53"
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570337023,
"data": {}
}
解绑公网IP
实例解绑通过绑定公网IP
接口绑定的信息
接口地址
/openapi/open/network/unbindIp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
publicIP | 116.162.203.188 | String | 是 | 需要绑定的公网IP |
padIP | 10.255.1.53 | String | 是 | 实例IP |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object |
请求示例
{
"publicIP": "116.162.203.188",
"padIP": "10.255.1.53"
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570337023,
"data": {}
}
申请RTC共享房间token
用于实现多个实例在一个房间中,实例接收房间广播消息进行处理与实现获取公共流
房间号生成规则:terimer + userId + paas用户标识 例如:terimer = pc,userId=123,paas用户标识=qwer
房间号为:pc123qwer
接口地址
/rtc/open/room/share/applyToken
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
userId | 202 | String | 是 | 调用方业务用户ID |
terminal | pc | String | 是 | 终端 |
expire | 3600 | Integer | 否 | token有效期 单位秒。默认1小时 |
pushPublicStream | true | Boolean | 否 | 是否推送公共流(默认false) |
pads | Array | 是 | 需要加入共享房间的实例列表 | |
├─padCode | AC22010010842 | String | 是 | 实例id |
├─├─videoStream | Object | 否 | 推流配置 | |
├─├─├─videoStream | 1 | String | 否 | |
├─├─├─frameRate | 30 | String | 否 | |
├─├─├─bitrate | 2000 | String | 否 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─roomToken | 00165b749e52467a4016f050b8cQQBjDJKuTAb | String | 房间Token |
├─roomCode | android_12345 | String | 房间号 |
├─appId | 65b749e52467a4016f050b8c | String | 应用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": "00165b749e52467a4016f050b8cQQBjDJKuTAbnZVwU52UOAENSTTExMDEwMDAwMDExAwAxMjMFAAAAXBTnZQEAXBTnZQIAXBTnZQMAXBTnZQQAAAAAACAADCbuyT9crLX9MNUCWyFhsFXwb4nuFPxfgE7MqHjv4yQ=",
"roomCode": "android_12345",
"appId": "65b749e52467a4016f050b8c"
}
}
修改实例时区
接口地址
/openapi/open/pad/updateTimeZone
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
timeZone | Asia/Shanghai | String | 是 | UTC标准时间 |
padCodes | Array | 是 | 实例列表 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─taskId | 24 | Long | 任务ID |
├─padCode | AC22030010001 | String | 房间号 |
├─vmStatus | 实例状态 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC32010140003"
],
"timeZone": "Asia/Shanghai"
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570663080,
"data": [
{
"taskId": 24,
"padCode": "AC32010140003",
"vmStatus": 1
}
]
}
修改实例语言
接口地址
/openapi/open/pad/updateLanguage
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
language | zh | String | 是 | 语言 |
country | CN | String | 否 | 国家 |
padCodes | Array | 是 | 实例列表 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─taskId | 24 | Long | 任务ID |
├─padCode | AC22030010001 | String | 房间号 |
├─vmStatus | 实例状态 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC32010140026"
],
"language": "zh",
"country": ""
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570663080,
"data": [
{
"taskId": 24,
"padCode": "AC32010140026",
"vmStatus": 1
}
]
}
修改实例SIM卡信息
接口地址
/openapi/open/pad/updateSIM
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
imei | 868034031518269 | String | 否 | IMEI号 |
imeisv | 00 | String | 否 | IMEI版本号 |
meid | A0000082C65F6C | String | 否 | 移动设备识别码 |
operatorLongname | CHINA MOBILE | String | 否 | 运营商全称 |
operatorShortnam | CMSS | String | 否 | 运营商简称 |
operatorNumeric | 455555 | String | 否 | 网络运营商id (即MCCMNC) |
spn | China | String | 否 | SIM卡运营商名称 |
iccid | 89860002191807255576 | String | 否 | SIM卡卡号 |
imsi | 460074008004488 | String | 否 | 前缀为sim卡运营商号:MCC(3位)+MNC(2位或3位) |
phonenum | 18574771704 | String | 否 | 电话号码 |
mcc | 502 | String | 否 | 网络所属国家 |
mnc | 146 | String | 否 | 移动设备网络代码 |
padCodes | Array | 是 | 实例列表 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─taskId | 24 | Long | 任务ID |
├─padCode | AC22030010001 | String | 房间号 |
├─vmStatus | 实例状态 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": ["AC32010230011"],
"imei": "868034031518269",
"imeisv": "00",
"meid": "A0000082C65F6C",
"operatorLongname": "CHINA MOBILE",
"operatorShortnam": "CMSS",
"operatorNumeric": "455555",
"spn": "China",
"iccid": "89860002191807255576",
"imsi": "460074008004488",
"phonenum": "861234566",
"netCountry": "US",
"simCountry": "US",
"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参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
longitude | 116.397455 | Float | 是 | 纬度 |
latitude | 39.909187 | Float | 是 | 经度 |
padCodes | Array | 是 | 实例列表 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─taskId | 24 | Long | 任务ID |
├─padCode | AC22030010001 | String | 房间号 |
├─vmStatus | 实例状态 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC32010030001"
],
"longitude": 116.397455,
"latitude": 39.909187
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570663080,
"data": [
{
"taskId": 24,
"padCode": "AC32010030001",
"vmStatus": 1
}
]
}
查询实例代理信息
接口地址
/openapi/open/network/proxy/info
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | Array | 是 | 实例列表 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─taskId | 24 | Long | 任务ID |
├─padCode | AC22030010001 | String | 房间号 |
├─vmStatus | 实例状态 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC32010140012"
]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1726742932284,
"data": [
{
"taskId": 3612,
"padCode": "AC32010140012",
"vmStatus": 1
}
]
}
修改实例安卓改机属性
props字段说明:此字段为key-value定义。
接口地址
/openapi/open/pad/updatePadAndroidProp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCode | AC32010210001 | String | 否 | 实例id |
restart | false | Boolean | 否 | 设置完成后自动重启(默认false) |
props | {} | Object | 是 | 系统属性 |
├─ro.product.vendor.name | OP52D1L1 | String | 是 | 属性设置 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─taskId | 24 | Long | 任务id |
├─padCode | AC32010210001 | String | 实例id |
请求示例
{
"padCode": "AC32010210001",
"props": {
"ro.product.vendor.name": "OP52D1L1"
},
"restart": false
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1730192434383,
"data": {
"taskId": 11,
"padCode": "AC32010210001"
}
}
一键新机
注意:一键新机会清除系统所有数据。请谨慎使用!
一键新机功能,将当前实例数据全部清空,并重新设置安卓属性
- 虚拟机直接设置安卓属性,然后清空所有数据
- 云真机直接清空所有数据(等同于重置)
接口地址
/openapi/open/pad/replacePad
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | [] | Arr | 是 | 实例id列表 |
countryCode | SG | String | 否 | 国家编码(具体查看:https://chahuo.com/country-code-lookup.html) |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1721739857317 | Long | 时间戳 |
data | Object | ||
├─taskId | 12818 | Long | 任务ID |
├─padCode | AC22030010124 | String | 实例编号 |
├─vmStatus | 2 | Intger | 实例状态 |
请求示例
{ "padCodes": [
"AC32010030001"
],
"countryCode":"SG"
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1732270378320,
"data": {
"taskId": 8405,
"padCode": "AC32010030001",
"vmStatus": 2
}
}
修改通讯录
fileUniqueId和info必填一个
接口地址
/openapi/open/pad/updateContacts
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | [] | Arr | 是 | 实例id列表 |
fileUniqueId | cfca25a2c62b00e065b417491b0cf07ffc | String | 否 | 通讯录文件ID |
info | {} | Object | 否 | 通讯录信息 |
├─firstName | tom | String | 否 | 姓名 |
├─phone | 13111111111 | String | 否 | 手机号 |
tom@gmail.com | String | 否 | 邮箱 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1721739857317 | Long | 时间戳 |
data | Object | ||
├─taskId | 12818 | Long | 任务ID |
├─padCode | AC22030010124 | String | 实例编号 |
请求示例
{
"fileUniqueId": "cfca25a2c62b00e065b417491b0cf07ffc",
"info": {
"firstName": "tom",
"phone": "13111111111",
"email": "tom@gmail.com"
},
"padCodes": [
"AC32010180326"
]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1730192434383,
"data": {
"taskId": 11,
"padCode": "AC32010210001",
"vmStatus": 0
}
}
服务器配置
查询服务器支持配置的type列表
接口地址
/openapi/open/config/selectList
请求方式
GET
请求数据类型
无参数
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | |
msg | success | String | |
ts | 1713773577581 | Long | |
data | Object | ||
├─callbackName | "文件上传任务" | String | 回调类型名称 |
├─callbackType | "4" | String | 回调类型 |
├─id | 14 | Long | 回调类型的ID(后续新增修改需要传入该参数) |
请求示例
响应示例
{
"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
请求数据类型
无参数
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | |
msg | success | String | |
ts | 1713773577581 | Long | |
data | http://www.baidu.com | String | 配置的对应地址( |
请求示例
响应示例
{"code":200,"data":"http://www.baidu.com","msg":"success","ts":1734501602763}
新增回调地址配置
接口地址
/openapi/open/config/insertCallback
请求方式
POST
请求数据类型
application/json
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
callbackIdList | [1,2,3] | Integer[] | 是 | 回调类型ID集合(从查询服务器支持配置的type列表接口获取) |
├─callbackUrl | 192.168.1.1/test | String | 是 | 接收任务回调配置URL |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | |
msg | success | String | |
ts | 1713773577581 | Long | |
data | 2 | String | 配置成功type数量 |
请求示例
{"callbackIdList":[21,14],"callbackUrl":"localhost:8080/callback"}
响应示例
{"code":200,"data":2,"msg":"success","ts":1734502541732}
修改回调地址配置
接口地址
/openapi/open/config/updateCallback
请求方式
POST
请求数据类型
application/json
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
callbackIdList | [1,2,3] | Integer[] | 是 | 回调类型ID集合(从查询服务器支持配置的type列表接口获取) |
├─callbackUrl | 192.168.1.1/test | String | 是 | 接收任务回调配置URL |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | |
msg | success | String | |
ts | 1713773577581 | Long | |
data | 2 | String |
请求示例
{"callbackIdList":[21,14],"callbackUrl":"localhost:8080/callback"}
响应示例
{"code":200,"data":2,"msg":"success","ts":1734502541732}
删除当前用户配置的回调地址
接口地址
/openapi/open/config/deleteCallback
请求方式
POST
请求数据类型
无参数
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | |
msg | success | String | |
ts | 1713773577581 | Long | |
data | 4 | Long |
请求示例
响应示例
{"code":200,"data":22,"msg":"success","ts":1734503029282}
实例设置代理
接口地址
/openapi/open/network/proxy/set
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
account | 2222 | String | 否 | 账号 |
password | 2222 | String | 否 | 密码 |
ip | 47.76.241.5 | String | 否 | IP |
port | 2222 | Integer | 否 | 端口 |
enable | true | Boolean | 是 | 启用 |
padCodes | Array | 是 | 实例列表 | |
proxyType | vpn | String | 否 | 支持参数:proxy、vpn |
proxyName | socks5 | String | 否 | 支持参数:socks5、http-relay |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─taskId | 24 | Long | 任务ID |
├─padCode | AC22030010001 | String | 房间号 |
├─vmStatus | 实例状态 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC32010140023"
],
"account": "2222",
"password": "2222",
"ip": "47.76.241.5",
"port": 2222,
"enable": true
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570663080,
"data": [
{
"taskId": 24,
"padCode": "AC32010140023",
"vmStatus": 1
}
]
}
批量实例断网和恢复
接口地址
/openapi/open/network/proxy/interrupt
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
enable | true | Boolean | 是 | 是否断网 true断网 false恢复网络 |
padCodes | Array | 是 | 实例列表 数量范围1-200 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─taskId | 24 | Long | 任务ID |
├─padCode | AC22030010001 | String | 房间号 |
├─vmStatus | 实例状态 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC32010140023"
],
"enable": true
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570663080,
"data": [
{
"taskId": 24,
"padCode": "AC32010140023",
"vmStatus": 1
}
]
}
实例操控
异步执行ADB命令
在一个或多个云手机实例中异步执行命令
接口地址
/openapi/open/pad/asyncCmd
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC22020020793 | String | 是 | 实例编号 |
scriptContent | cd /root;ls | String | 是 | ADB命令,多条命令使用分号隔开 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC22020020793 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC22020020793"
],
"scriptContent": "cd /root;ls"
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570297639,
"data": [
{
"taskId": 14,
"padCode": "AC22030010001",
"vmStatus": 1
},
{
"taskId": 15,
"padCode": "AC22030010002",
"vmStatus": 0
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110003 | 执行ADB命令失败 | 联系管理员 |
110012 | 命令执行超时 | 请稍后重试 |
同步执行ADB命令
在一个或多个云手机实例中同步执行命令
超过5秒未响应则返回超时异常
接口地址
/openapi/open/pad/syncCmd
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCode | AC22020020793 | String | 是 | 实例ID |
scriptContent | cd /root;ls | String | 是 | ADB命令,多条命令使用分号隔开 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC22020020793 | String | 实例编号 |
├─taskStatus | 3 | Integer | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─taskResult | Success | String | 任务结果 |
请求示例
{
"padCode": "VP21020010231",
"scriptContent": "cd /root/nbin;ls"
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data":[
{
"taskId": 1,
"padCode": "AC22020020793",
"taskStatus":3,
"taskResult":"Success"
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110003 | 执行ADB命令失败 | 请稍后重试 |
110012 | 命令执行超时 | 请稍后重试 |
本地截图
实例截图。
接口URL
openapi/open/pad/screenshot
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC21020010231 | String | 是 | 实例编号 |
rotation | 0 | Integer | 是 | 截图画面横竖屏旋:0:截图方向不做处理,默认;1:截图画面旋转为竖屏时:a:手机竖屏的截图,不做处理。b:手机横屏的截图,截图顺时针旋转90度。 |
broadcast | false | Boolean | 否 | 事件是否广播(默认false) |
definition | false | Integer | 否 | 清晰度 取值范围0-100 |
resolutionHeight | false | Integer | 否 | 分辨率 - 高 大于1 |
resolutionWidth | false | Integer | 否 | 分辨率 - 宽 大于1 |
响应参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
code | 200 | Integer | 是 | 状态码 |
msg | success | String | 是 | 响应消息 |
ts | 1756021167163 | Long | 是 | 时间戳 |
data | Object[] | |||
├─taskId | 1 | Integer | 否 | 任务ID |
├─padCode | AC21020010231 | String | 否 | 实例编号 |
├─vmStatus | 1 | Integer | 是 | 实例在线状态(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 | 实例不存在 | 请检查实例是否存在 |
生成预览图
指定的实例获取预览图。
接口地址
/openapi/open/pad/generatePreview
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC11010000031 | String | 是 | 实例编号 |
rotation | 0 | Integer | 是 | 截图画面横竖屏旋:0:截图方向不做处理,默认;1:截图画面旋转为竖屏时:a:手机竖屏的截图,不做处理。b:手机横屏的截图,截图顺时针旋转90度。 |
broadcast | false | Boolean | 否 | 事件是否广播(默认false) |
definition | false | Integer | 否 | 清晰度 取值范围0-100 |
resolutionHeight | false | Integer | 否 | 分辨率 - 高 大于1 |
resolutionWidth | false | Integer | 否 | 分辨率 - 宽 大于1 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─padCode | AC11010000031 | String | 实例编号 |
├─accessUrl | http://xxx.armcloud.png | String | 访问地址 |
请求示例
{
"padCodes": [
"AC11010000031"
],
"rotation": 0,
"broadcast": false,
"definition": 50,
"resolutionHeight": 1920,
"resolutionWidth": 1080
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": [
{
"padCode": "AC11010000031",
"accessUrl": "http://xxx.armcloud.png"
}
]
}
文件上传
进行文件上传操作
接口地址
/file-center/open/file/cache
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
fileUrl | http://xxx.armcloud.apk | String | 是 | 文件下载地址 |
fileName | 桃源深处有人家游戏官方版.apk | String | 是 | 文件名称 |
fileMd5 | 32e1f345f209a7dc1cc704913ea436d3 | String | 是 | ⽂件预期md5,⽤作下载⽂件校验最⼤⻓度32 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─fileUniqueId | 6865b417b7257d782afd5ac8bee4d311 | String | 文件唯一标识 |
请求示例
{
"fileUrl": "http://down.s.qq.com/download/11120898722/apk/10043132_com.tencent.fiftyone.yc.apk",
"fileName": "桃源深处有人家游戏官方版.apk",
"fileSha256": "c52585e13a67e13128d9963b2f20f69678a86ee8b5551ca593327d329719a5"
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1713773577581,
"data": {
"taskId":1,
"fileUniqueId": "6865b417b7257d782afd5ac8bee4d311"
}
}
文件列表
查询已上传的文件列表信息
接口地址
/file-center/open/file/list
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
page | 1 | Integer | 是 | 起始页,默认1 |
rows | 10 | Integer | 是 | 查询数量,默认10 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─page | 1 | Integer | 当前页 |
├─rows | 10 | Integer | 每页的数量 |
├─size | 2 | Integer | 当前页的数量 |
├─total | 2 | Integer | 总记录数 |
├─totalPage | 1 | Integer | 总页数 |
├─pageData | object[] | 列表 | |
├─├─fileUniqueId | c417cdf30cd13437a60a494f2fcee616 | String | 文件id标识 |
├─├─fileName | 15b18072b01049dfa30da046aaf5b213.apk | String | 文件名 |
├─├─fileMd5 | 49f526ec07f261ef6c22081fd61fb6b2836b84214ab6f4620e89d2f2d454253 | String | 文件内容值 |
├─├─fileSize | 165936779 | Integer | 文件大小(单位:字节) |
├─├─originUrl | https://xxx.armcloud.apk | String | 文件原地址 |
├─├─createTime | 1713884498000 | Long | 创建时间 |
请求示例
{
"page": 1,
"rows": 10
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": {
"page": 1,
"rows": 10,
"size": 2,
"total": 2,
"totalPage": 1,
"pageData": [
{
"fileUniqueId": "c417cdf30cd13437a60a494f2fcee616",
"fileName": "15b18072b01049dfa30da046aaf5b213.apk",
"fileMd5": "49f526ec07f261ef6c22081fd61fb6b2836b84214ab6f4620e89d2f2d454253",
"fileSize": 165936779,
"originUrl": "https://xxx.armcloud.apk",
"createTime": 1713884498000
},
{
"uniqueId": "417996c783c70b946675b55a138b1bff",
"name": "10043132_com.tencent.fiftyone.yc.apk",
"sha256": "86f3dc7bf26219f56f3cdb51d787af3c165533ad1c70856a27c5d2a3a6b7647f",
"size": 1091941761,
"originUrl": "https://xxx.armcloud.apk",
"createTime": 1713879614000
}
]
}
}
删除实例文件
删除实例文件
接口地址
/file-center/open/file/batch/del
请求方式
POST (支持批量删除,一次最多只能删除200个)
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
fileUniqueIds | cfc280111c435823c5409ddb9a4186420d | String[] | 是 | unique_id→文件id标识 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | true | Boolean |
请求示例
{
"fileUniqueIds": [
"cfc280111c435823c5409ddb9a4186420d",
"cf77f930acbbe1707fffc661f2c4380a71"
]
}
响应示例(全部成功)
{
"code": 200,
"msg": "success",
"ts": 1734677342300,
"data": true
}
响应示例(部分成功)
{
"code": 200,
"msg": "删除成功,存在无效文件id标识",
"ts": 1734935677246,
"data": [
"cfc280111c435823c5409ddb9a4186420d"
]
}
实例文件上传
从文件管理中心推送文件到一个或多个云手机实例(异步任务)
接口地址
/openapi/open/pad/v2/uploadFile
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC22030023061 | String | 是 | 实例编号 |
autoInstall | 1 | Integer | 否 | 是否需要⾃动安装 1需要、0不需要。不填默认不需要。仅对apk类型的⽂件⽣效 |
fileUniqueId | 1e5d3bf00576ee8f3d094908c0456722 | String | 是 | 文件id唯一标识。 |
customizeFilePath | /Documents/ | String | 否 | ⾃定义路径。非必传,需以/开头。 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─padCode | AC22010020062 | String | 实例编号 |
├─taskId | 1 | Integer | 任务ID |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC22030023061"
],
"autoInstall": 1,
"fileUniqueId": "1e5d3bf00576ee8f3d094908c0456722",
"customizeFilePath": "/Documents/"
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717571059834,
"data": [
{
"taskId": 39,
"padCode": "AC22030010001",
"vmStatus": 1
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
140006 | 文件存储路径不正确 | ⾃定义路径需以/开头 |
140005 | 文件不可用 | 文件路径为空 |
110006 | 下载失败 | 文件路径不能下载 |
升级镜像
批量实例镜像升级
接口地址
/openapi/open/pad/upgradeImage
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC22030010182 | String | 是 | 实例编号 |
imageId | mg-24061124017 | String | 是 | 镜像ID |
wipeData | false | Boolean | 是 | 是否清除实例数据(data分区), true清除,false不清除 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─padCode | AC22030010182 | String | 实例编号 |
├─taskId | 1 | Integer | 任务ID |
├─errorMsg | “” | String | 错误信息 |
请求示例
{
"padCodes": [
"AC22030010182"
],
"wipeData": false,
"imageId": "mg-24061124017"
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1718594881432,
"data": [
{
"taskId": 63,
"padCode": "AC22030010182",
"errorMsg": null
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110041 | 镜像不存在 | 镜像id传参有误 |
110037 | 执行升级镜像指令失败 | 实例状态有误,联系管理员 |
110038 | 执行升级镜像命令失败 | 实例状态有误,联系管理员 |
升级真机镜像
批量实例真机镜像升级
接口地址
/openapi/open/pad/virtualRealSwitch
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC22030010182 | String | 是 | 实例编号 |
imageId | mg-24061124017 | String | 是 | 镜像ID |
wipeData | false | Boolean | 是 | 是否清除实例数据(data分区), true清除,false不清除 |
realPhoneTemplateId | 178 | Integer | 否 | 真机模板ID upgradeImageConvertType=real时必填 |
upgradeImageConvertType | virtual | String | 是 | 转换镜像类型 virtual:虚拟机 real:云真机 |
screenLayoutId | 14 | Integer | 否 | 屏幕布局ID upgradeImageConvertType=virtual时必填 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─padCode | AC22030010182 | String | 实例编号 |
├─taskId | 1 | Integer | 任务ID |
├─errorMsg | “” | String | 错误信息 |
请求示例
{
"padCodes": [
"AC32010210023"
],
"imageId": "img-24112653977",
"wipeData": true,
"realPhoneTemplateId": 178,
"upgradeImageConvertType": "virtual",
"screenLayoutId": 14
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1718594881432,
"data": [
{
"taskId": 63,
"padCode": "AC22030010182",
"errorMsg": null
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110041 | 镜像不存在 | 镜像id传参有误 |
110037 | 执行升级镜像指令失败 | 实例状态有误,联系管理员 |
110038 | 执行升级镜像命令失败 | 实例状态有误,联系管理员 |
110064 | 当前实例中有不满足升级真机条件,请检查实例 | 当前实例中有不满足升级真机条件,请检查实例 |
分页获取真机模板
分页获取真机模板
接口地址
/openapi/open/realPhone/template/list
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
pageIndex | 1 | Integer | 否 | 页码 默认1 |
pageSize | 10 | Integer | 否 | 每页显示数量 默认10 取值范围为1-100 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─id | 178 | Long | id |
├─brand | String | 品牌 | |
├─model | Pixel 7 Pro(12G) | String | 型号 |
├─fingerprintMd5 | f5da7b97678ac19309f0cf0203e072d7 | String | 安卓md5(ro.build.fingerprint) |
├─fingerprint | google/cheetah/cheetah:13/TQ3A.230901.001/10750268:user/release-keys | String | 安卓ro.build.fingerprint |
├─resourceSpecificationCode | m2-3 | String | 规格编号 |
├─screenLayoutCode | realdevice_1440x3120x560 | String | 屏幕布局编码 |
├─androidImageVersion | 13 | Integer | 安卓镜像版本 |
├─propertyJson | {"test": "testa"} | String | 实例属性 |
请求示例
{
"pageIndex": 1,
"pageSize": 10
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1733748550410,
"data": [
{
"id": 178,
"brand": "google",
"model": "Pixel 7 Pro(12G)",
"fingerprintMd5": "f5da7b97678ac19309f0cf0203e072d7",
"fingerprint": "google/cheetah/cheetah:13/TQ3A.230901.001/10750268:user/release-keys",
"resourceSpecificationCode": "m2-3",
"screenLayoutCode": "realdevice_1440x3120x560",
"androidImageVersion": 13,
"propertyJson": "{\"test\": \"testa\"}"
}
]
}
获取公共屏幕布局列表
获取公共屏幕布局列表
接口地址
/openapi/open/screenLayout/publicList
请求方式
POST
请求数据类型
application/json
请求Body参数
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─id | 12 | Long | id |
├─code | single-portrait-basic | String | 屏幕布局编码 |
├─screenWidth | 1920 | String | 屏幕宽度 |
├─screenHigh | 1080 | String | 屏幕高度 |
├─pixelDensity | 320 | String | 像素密度 |
├─screenRefreshRate | 60 | String | 屏幕刷新率 |
请求示例
响应示例
{
"code": 200,
"msg": "success",
"ts": 1733748912002,
"data": [
{
"id": 12,
"code": "single-portrait-basic",
"screenWidth": "1080",
"screenHigh": "1920",
"pixelDensity": "320",
"screenRefreshRate": "60"
}
]
}
批量获取实例机型信息
根据实例编号批量获取对应的实例的机型信息。
接口地址
/openapi/open/pad/modelInfo
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC22030010182 | String | 是 | 实例编号 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─padCode | AC22030010182 | String | 实例编号 |
├─imei | 524803173613682 | String | IMEI |
├─serialno | 01NM5ON34M4O | String | 序列号 |
├─wifimac | 04:3a:6c:e5:e9:8d:62:d6:4a | String | Wi-Fi的mac地址 |
├─androidid | aa6bcedf1426546c | String | Android实例唯一标识 |
├─model | Mi 10 Pro | String | 型号 |
├─brand | Xiaomi | String | 品牌 |
├─manufacturer | Xiaomi | String | 厂商 |
├─isRoot | 1 | String | 是否是ROOT权限 |
├─width | 720 | Integer | 云手机的宽 最大不超过1080 |
├─height | 1280 | Integer | 云手机的高 最大不超过1920 |
├─memoryLimit | 1024 | Integer | 内存限额 |
├─bluetoothaddr | 3A:1F:4B:9C:2D:8E | String | 蓝牙地址 |
├─phonenum | 1112341234 | String | 手机号码 |
├─romVersion | android13 | String | 安卓版本 |
├─dataSize | 2367381504 | Integer | 内存大小(b) |
├─dataSizeAvailable | 365830144 | Integer | 剩余可用(b) |
├─dataSizeUsed | 1024 | 2001551360 | 已使用(b) |
请求示例
{
"padCodes": [
"AC22030010182"
]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1756021167163,
"data": [
{
"padCode": "AC22030010182",
"imei": "524803173613682",
"serialno": "01NM5ON34M4O",
"wifimac": "04:3a:6c:e5:e9:8d:62:d6:4a",
"androidid": "aa6bcedf1426546c",
"model": "Mi 10 Pro",
"brand": "Xiaomi",
"manufacturer": "Xiaomi",
"isRoot": "1",
"width": 720,
"height": 1280,
"memoryLimit": 1024
}
]
}
添加应用黑名单列表
根据实例规格添加应用黑名单。
接口地址
/openapi/open/appBlack/setUpBlackList
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padGrade | q2-1 | String | 是 | 实例规格 |
blackApps | Object[] | 是 | 黑名单列表 | |
├─appPkg | cn.v8box.app | String | 是 | 应用包名 |
├─appName | x8沙箱 | String | 是 | 应用名称 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1721647657112 | Long | 时间戳 |
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参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padGrade | q2-1 | String | 是 | 实例规格 |
padCodes | String[] | 否 | ||
├─ | AC22030010124 | String | 否 | 实例编号 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1721739857317 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 12818 | Integer | 任务ID |
├─padCode | AC22030010124 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(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参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC22030010124 | String | 是 | 实例编号 |
upBandwidth | 10.00 | float | 是 | 上行带宽 Mbps (0:不限制;-1:限制上网) |
downBandwidth | 10.00 | float | 是 | 下行带宽 Mbps (0:不限制;-1:限制上网) |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1721739857317 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 679 | Integer | 任务ID |
├─padCode | AC32010140011 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC32010140011"
],
"upBandwidth": 10.00,
"downBandwidth": 10.00
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1721640654237,
"data": [
{
"taskId": 679,
"padCode": "AC32010140011",
"vmStatus": 1
}
]
}
打开/关闭adb
根据实例编号打开或关闭实例adb
接口地址
/openapi/open/pad/adb
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCode | AC22030010124 | String | 是 | 实例编号 |
enable | true | boolean | 是 | true-打开 false-关闭 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1721739857317 | Long | 时间戳 |
data | Object[] | ||
├─padCode | AC32010140011 | String | 实例编号 |
├─command | adb connect ip:port | Integer | adb 连接信息 |
├─expireTime | 2024-10-24 10:42:00 | String | 连接有效期 |
├─enable | true | boolean | adb状态 |
请求示例
{
"padCode": "AC22030010001",
"enable": true
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1729651701083,
"data": {
"padCode": "AC32010161274",
"command": "adb connect ip:port",
"expireTime": "2024-10-24 10:42:00",
"enable": true
}
}
资源管理相关接口
实例列表信息
根据查询条件分页获取实例列表信息。
接口地址
/openapi/open/pad/infos
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
page | 1 | Integer | 是 | 页码 |
rows | 10 | Integer | 是 | 条数 |
padCodes | String[] | 否 | ||
├─ | AC22010020062 | String | 是 | 实例编号 |
groupIds | Integer[] | 否 | ||
├─ | 1 | Integer | 否 | 实例分组ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | |
msg | success | String | |
ts | 1713773577581 | Long | |
data | Object | ||
├─page | 1 | Integer | 当前页 |
├─rows | 10 | Integer | 每页的数量 |
├─size | 1 | Integer | 当前页的数量 |
├─total | 1 | Integer | 总记录数 |
├─totalPage | 1 | Integer | 总页数 |
├─pageData | object[] | 列表 | |
├─├─padCode | VP21020010391 | String | 实例编号 |
├─├─padGrade | q1-2 | String | 实例开数(q1-6六开,q1-2二开) |
├─├─padStatus | 10 | String | 实例状态 (10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪) |
├─├─groupId | 0 | Integer | 分组ID |
├─├─idcCode | d3c1f580c41525e514330a85dfdecda8 | String | 机房编码 |
├─├─deviceIp | 192.168.0.0 | String | 云机ip |
├─├─padIp | 192.168.0.0 | String | 实例ip |
├─├─apps | String[] | 安装的应用列表 | |
├─├─├─ | armcloud001 | String | 安装的应用 |
请求示例
{
"page": 1,
"rows": 10,
"padCodes": [
"AC21020010391"
],
"groupIds":[1]
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": {
"page": 1,
"rows": 1,
"size": 1,
"total": 1,
"totalPage": 1,
"pageData": [
{
{
"padCode": "AC21020010391",
"padGrade": "q2-4",
"padStatus": 10,
"groupId": 0,
"idcCode": "8e61ad284bc105b877611e6fef7bdd17",
"deviceIp": "172.31.2.34",
"padIp": "10.255.1.19",
"apps": [
"armcloud001"
]
}
]
}
}
实例分组列表
获取用户当前所有实例分组列表信息(包括:分组 ID,分组名称,分组下实例数量)。 接口地址
/openapi/open/group/infos
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCode | AC21020010391 | String | 否 | 实例编号 |
groupIds | Integer[] | 否 | ||
├─ | 1 | Integer | 否 | 分组ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─groupId | 1 | Integer | 分组ID |
├─groupName | 分组一 | String | 分组名称 |
├─padCount | 1 | Integer | 分组下的实例数 |
请求示例
{
"padCode": "AC21020010391",
"groupIds": [1]
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": [
{
"groupId": 1,
"groupName": "分组一",
"padCount": 1
}
]
}
获取指定公网绑定的信息
查询指定公网IP绑定的IP地址信息 接口地址
/openapi/open/network/getIP
请求方式
GET
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
publicIP | 116.162.203.188 | String | 是 | 公网IP |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─ipAddresses | ["10.255.14.29/32"] | String[] | 绑定的IP地址 |
请求示例
/openapi/open/network/getIP?publicIP=116.162.203.188
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570337023,
"data": {
"ipAddresses": [
"10.255.14.29/32"
]
}
}
应用管理
应用上传
上传应用安装文件到指定业务的应用管理中心(异步任务)。
接口地址
/file-center/open/app/cache
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
parse | true | Boolean | 是 | 是否缓存并解析(解析并缓存) 如解析则无需填包信息 |
apps | Object[] | 是 | 应用列表 | |
├─ appId | 1243 | Integer | 否 | 自定义应用ID |
├─ url | https://xxx.armcloud.apk | String | 是 | 源文件下载地址 |
├─ appName | kuaishou | String | 否 | 应用名称 |
├─ pkgName | com.smile.gifmaker | String | 否 | 包名 |
├─ signMd5 | 0F938C4F0995A83C9BF31F0C64322589 | String | 否 | 应用签名MD5 |
├─ versionNo | 36000 | Integer | 否 | 版本号 |
├─ versionName | 12.3.20.36000 | String | 否 | 版本名 |
├─ description | kuai | String | 否 | 描述 |
├─ md5sum | e673a204b8f18a0f6482da9998 | String | 否 | 应用唯一标识 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─ taskId | 12 | Integer | 任务ID |
├─ appId | 1243 | Integer | 应用ID |
请求示例
{
"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":1713773577581,
"data": [
{
"taskId": 12,
"appId": 1243
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
100001 | 没有访问权限 | 是否没有订购机房 |
应用列表
可根据应用ID查询应用信息列表。
接口地址
/file-center/open/app/list
请求方式
POST
请求数据类型
application/json
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
page | 1 | Integer | 是 | 起始页,默认1 |
rows | 10 | Integer | 是 | 查询数量,默认10 |
appIds | Integer[] | 否 | 应用id |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
pageData | Object | ||
├─page | 1 | Integer | 当前页 |
├─rows | 10 | Integer | 每页显示数量 |
├─size | 10 | Integer | 当前页的数量 |
├─total | 2 | Integer | 总数量 |
├─totalPage | 1 | Integer | 总页数 |
├─pageData | Object[] | ||
├─├─originUrl | downloadUrl_tr0bi | String | 文件原下载地址 |
├─├─appId | dwadawdf | Integer | 自定义应用ID |
├─├─description | description_1cq3m | String | 描述 |
├─├─packageName | packageName_e6lw8 | String | 包名 |
├─├─appName | appName_o4mhn | String | 应用名称 |
├─├─versionName | versionName_s4o2i | String | 版本名 |
├─├─versionNo | 1 | Integer | 版本号 |
├─├─signMd5 | 0F938C4F0995A83C9BF31F0C64322589 | String | MD5 |
├─├─available | true | Boolean | 当前文件是否可用 |
├─├─createTime | 1709895492000 | Integer | 创建时间 |
├─├─fileId | 文件id | Integer | 文件id |
├─├─iconPath | http://192.168.230.80:18100/icon/110_6ca4d3e6e5111ec38e8eca6c1998ce89..png | String | 应用图标 |
├─├─classifyNameList | 应用类别 | Object[] | 应用类别 |
├─├─├─classifyName | 类别1 | String | 应用类别名称 |
├─├─├─classifyType | 1 | Integer | 分类类型(1白名单 2黑名单) |
请求示例
{
"rows": 10,
"page": 1,
"appIds": [
1,2
]
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"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,
"classifyNameList": [
"白名单B组",
"黑名单A组",
"白名单A组",
"白名单A组"
]
},
{
"originUrl": "downloadUrl_xh9ig",
"appId": 2,
"description": "description_9j663",
"packageName": "packageName_o7t9j",
"appName": "appName_szxpe",
"versionName": "versionName_hwio7",
"versionNo": 1,
"signMd5": "0F938C4F0995A83C9BF31F0C64322587",
"available": true,
"createTime": 1710479133000,
"fileId": 1,
"iconPath": "http://192.168.230.80:18100/icon/110_6ca4d3e6e5111ec38e8eca6c1998ce89..png",
"classifyNameList": [
"白名单B组",
"黑名单A组",
"白名单A组",
"白名单A组"
]
}
]
}
}
应用详情
查询指定实例上的应用安装情况
接口地址
/file-center/open/app/detail
请求方式
POST
请求数据类型
application/json
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
appId | 1 | Integer | 是 | 应用id |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─appId | 1 | Integer | 应用id |
├─originUrl | http://www.xx.com/test.apk | String | 原文件下载地址 |
├─description | test | String | 自定义描述 |
├─packageName | xxx.xxx.com | String | 包名 |
├─appName | test | String | 应用名 |
├─versionName | 1.0.1 | String | 版本名 |
├─versionNo | 124511 | Integer | 版本号 |
├─signMd5 | 0F938C4F0995A83C9BF31F0C64322589 | String | 签名md5 |
├─createTime | 1711595044000 | Integer | 文件创建时间 |
请求示例
{
"appId":1
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": {
"appId": 1,
"originUrl": "http://www.xx.com/test.apk",
"customizeFileId": "customizeId_v5o26",
"description": "test",
"packageName": "xxx.xxx.com",
"appName": "test",
"versionName": "1.0.1",
"versionNo": 124511,
"signMd5": "0F938C4F0995A83C9BF31F0C64322589",
"createTime": 1711595044000
}
}
查询实例应用列表
查询已上传的文件列表信息
接口地址
/openapi/open/pad/listApp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 否 | ||
├─ | AC22010020062 | String | 是 | 实例编号 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC22010020062 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC22010020062"
]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570838398,
"data": [
{
"taskId": 31,
"padCode": "AC22030010001",
"vmStatus": 1
},
{
"taskId": 32,
"padCode": "AC22030010002",
"vmStatus": 0
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
100010 | 处理失败 | 请重新安装 |
应用安装
为单台或多台实例同时安装单个或多个APP。此接口为异步操作。 增加黑白名单逻辑。
接口地址
/openapi/open/pad/installApp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
apps | Object[] | 是 | 应用列表 | |
├─appId | 124 | Integer | 是 | 应用ID |
├─appName | 葫芦侠 | String | 是 | 应用名称 |
├─pkgName | com.huluxia.gametools | String | 是 | 应用包名 |
├─padCodes | String[] | 是 | ||
├─├─ | AC22010020062 | String | 是 | 实例编号 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC22010020062 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"apps":[
{
"appId":124,
"appName":"葫芦侠",
"pkgName":"com.huluxia.gametools",
"padCodes":["AC22010020062"]
}
]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570991004,
"data": [
{
"taskId": 37,
"padCode": "AC22030010001",
"vmStatus": 1
},
{
"taskId": 38,
"padCode": "AC22030010002",
"vmStatus": 1
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
140005 | 文件不可用 | 查看文件是否存在 |
应用卸载
为单台或多台实例同时卸载单个或多个APP。此接口为异步操作。
接口地址
/openapi/open/pad/uninstallApp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
apps | Object[] | 是 | 应用列表 | |
├─appId | 124 | Integer | 是 | 应用ID |
├─appName | 葫芦侠 | String | 是 | 应用名称 |
├─pkgName | com.huluxia.gametools | String | 是 | 应用包名 |
├─padCodes | String[] | 是 | ||
├─├─ | AC22010020062 | String | 是 | 实例编号 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 2 | Integer | 任务ID |
├─padCode | AC22010020062 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"apps":[
{
"appId":124,
"appName":"demo",
"pkgName":"com.demo",
"padCodes":["AC22010020062"]
}
]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570615524,
"data": [
{
"taskId": 22,
"padCode": "AC22030010001",
"vmStatus": 1
},
{
"taskId": 23,
"padCode": "AC22030010002",
"vmStatus": 0
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110007 | 卸载应用失败 | 稍后请重试 |
应用启动
根据实例编号和应用包名对实例进行应用启动的操作。
接口地址
/openapi/open/pad/startApp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC22010020062 | String | 是 | 实例编号 |
pkgName | xxx.test.com | String | 是 | 包名 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC22020020793 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC22030022693"
],
"pkgName": xxx.test.com
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570663080,
"data": [
{
"taskId": 24,
"padCode": "AC22030010001",
"vmStatus": 1
},
{
"taskId": 25,
"padCode": "AC22030010002",
"vmStatus": 0
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110008 | 启动应用失败 | 重启云机后再启动应用 |
应用停止
根据实例编号和应用包名对实例进行应用停止的操作。
接口地址
/openapi/open/pad/stopApp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC22010020062 | String | 是 | 实例编号 |
pkgName | xxx.test.com | String | 是 | 包名 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC22010020062 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC22010020062"
],
"pkgName": xxx.test.com
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570700415,
"data": [
{
"taskId": 26,
"padCode": "AC22030010001",
"vmStatus": 1
},
{
"taskId": 27,
"padCode": "AC22030010002",
"vmStatus": 0
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110010 | 停止应用失败 | 重启云机关闭应用 |
应用重启
根据实例编号和应用包名对实例进行应用重启的操作。
接口地址
/openapi/open/pad/restartApp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCodes | String[] | 是 | ||
├─ | AC22010020062 | String | 是 | 实例编号 |
pkgName | xxx.test.com | String | 是 | 包名 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC22010020062 | String | 实例编号 |
├─vmStatus | 1 | Integer | 实例在线状态(0:离线;1:在线) |
请求示例
{
"padCodes": [
"AC22030022693"
],
"pkgName": xxx.test.com
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1717570855874,
"data": [
{
"taskId": 33,
"padCode": "AC22030010001",
"vmStatus": 1
},
{
"taskId": 34,
"padCode": "AC22030010002",
"vmStatus": 0
}
]
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110009 | 重启应用失败 | 重启云机后再启动应用 |
黑白名单列表
分页查询黑白名单列表
接口地址
/openapi/open/appClassify/pageList
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
classifyName | test | String | 否 | 黑白名单名称(模糊查询) |
classifyType | 1 | Integer | 否 | 黑白名单类型 1白名单 2黑名单 |
page | 1 | Integer | 否 | 页码 默认1 |
rows | 10 | Integer | 否 | 每页数量 默认10 最大值100 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─id | 8 | Integer | 黑白名单id |
├─classifyName | 白名单A组1 | String | 黑白名单名称 |
├─classifyType | 1 | Integer | 黑白名单类型 1白名单 2黑名单 |
├─appNum | 3 | Integer | 已关联的应用数量 |
├─remark | 白名单A组测试1 | String | 描述 |
请求示例
{
"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"
}
]
}
黑白名单保存
保存黑白名单和关联应用,参数id不为null,则表示更新,此操作会覆盖该分类下所有的关联应用
接口地址
/openapi/open/appClassify/save
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
id | test | Integer | 否 | 黑白名单id(不为空则为修改) |
classifyName | 1 | String | 是 | 黑白名单名称 |
classifyType | 1 | Integer | 是 | 黑白名单类型 1白名单 2黑名单 |
remark | 10 | String | 否 | 黑白名单描述 |
appInfos | Object[] | 否 | 关联应用集合 范围0-100个 | |
├─fileId | 1 | Integer | 否 | 文件id |
├─appId | 1 | Integer | 是 | 应用id |
├─appName | 测试app | String | 是 | 应用名称 |
├─packageName | com.xxx.xxx | String | 是 | 包名 |
├─appVersionNo | 123 | Integer | 是 | 版本号 |
├─appVersionName | 1.2.3 | String | 是 | 版本名称 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | null |
请求示例
{
"id": null,
"classifyName": "白名单A组1",
"classifyType": 1,
"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": null
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110080 | 黑白名单不存在 | 黑白名单不存在 |
110085 | 黑白名单名称重复 | 黑白名单名称重复 |
黑白名单详情
查询黑白名单详情和关联应用
接口地址
/openapi/open/appClassify/detail
请求方式
POST
请求数据类型
application/json
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
id | 1 | Integer | 是 | 黑白名单id |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─id | 8 | Integer | 黑白名单id |
├─classifyName | 白名单A组1 | String | 黑白名单名称 |
├─classifyType | 1 | Integer | 黑白名单类型 1白名单 2黑名单 |
├─appNum | 3 | Integer | 已关联的应用数量 |
├─remark | 白名单A组测试1 | String | 描述 |
├─appInfos | Object[] | 关联应用集合 | |
├─├─fileId | 1 | Integer | 文件id |
├─├─appId | 1 | Integer | 应用id |
├─├─appName | 测试app | String | 应用名称 |
├─├─packageName | com.xxx.xxx | String | 包名 |
├─├─appVersionNo | 123 | Integer | 版本号 |
├─├─appVersionName | 1.2.3 | String | 版本名称 |
请求示例
/openapi/open/appClassify/detail?id=1
响应示例
{
"code": 200,
"msg": "success",
"ts": 1735020014142,
"data": {
"id": 8,
"classifyName": "白名单A组1",
"classifyType": 1,
"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参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
id | test | Integer | 是 | 黑白名单id |
appPadInfos | Object[] | 否 | 关联实例集合 范围0-100个 | |
├─padCode | AC32010230001 | String | 是 | 实例编号 |
├─deviceLevel | m2-4 | String | 是 | 规格 |
├─padIp | 10.255.3.1 | String | 是 | 实例ip |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | null |
请求示例
{
"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参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
id | 1 | Integer | 是 | 黑白名单id |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─id | 8 | Integer | 黑白名单id |
├─classifyName | 白名单A组1 | String | 黑白名单名称 |
├─classifyType | 1 | Integer | 黑白名单类型 1白名单 2黑名单 |
├─appNum | 3 | Integer | 已关联的应用数量 |
├─appPadInfos | Object[] | 关联实例集合 | |
├─├─padCode | AC111 | String | 实例编号 |
├─├─deviceLevel | m2-3 | String | 规格 |
├─├─padIp | 127.0.0.1 | String | 实例ip |
请求示例
/openapi/open/appClassify/padDetail?id=1
响应示例
{
"code": 200,
"msg": "success",
"ts": 1735020251631,
"data": {
"id": 8,
"classifyName": "白名单A组1",
"classifyType": 1,
"appNum": 3,
"appPadInfos": [
{
"padCode": "AC111",
"deviceLevel": "m2-3",
"padIp": "127.0.0.1"
}
]
}
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110080 | 黑白名单不存在 | 黑白名单不存在 |
删除黑白名单
删除黑白名单 所关联的应用和实例都会清除
接口地址
/openapi/open/appClassify/del
请求方式
POST
请求数据类型
application/json
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
id | 1 | Integer | 是 | 黑白名单id |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | null |
请求示例
/openapi/open/appClassify/del?id=1
响应示例
{
"code": 200,
"msg": "success",
"ts": 1735020371601,
"data": null
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110084 | 该黑白名单不存在或已删除 | 该黑白名单不存在或已删除 |
添加黑白名单app
添加关联应用,此操作不会覆盖该分类下所有的关联应用,直接添加到分类下
接口地址
/openapi/open/appClassify/addApp
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
id | test | Integer | 是 | 黑白名单id |
appInfos | Object[] | 是 | 关联应用集合 范围1-100个 | |
├─fileId | 1 | Integer | 否 | 文件id |
├─appId | 1 | Integer | 是 | 应用id |
├─appName | 测试app | String | 是 | 应用名称 |
├─packageName | com.xxx.xxx | String | 是 | 包名 |
├─appVersionNo | 123 | Integer | 是 | 版本号 |
├─appVersionName | 1.2.3 | String | 是 | 版本名称 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | null |
请求示例
{
"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参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
id | test | Integer | 是 | 黑白名单id |
appPadInfos | Object[] | 是 | 关联实例集合 范围1-100个 | |
├─padCode | AC32010230001 | String | 是 | 实例编号 |
├─deviceLevel | m2-4 | String | 是 | 规格 |
├─padIp | 10.255.3.1 | String | 是 | 实例ip |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | null |
请求示例
{
"id": 1,
"appPadInfos": [
{
"padCode": "AC32010230001",
"deviceLevel": "m2-4",
"padIp": "10.255.3.1"
}
]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1735019933306,
"data": null
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
110080 | 黑白名单不存在 | 黑白名单不存在 |
镜像管理
创建镜像上传任务
创建镜像上传任务。(异步任务)
接口地址
/openapi/open/image/uploadImage
请求方式
POST
请求数据类型
application/json
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
imageFiles | Object[] | 是 | ||
├─imageFileUrl | https://xxxx.xx.xx/image/armcloud_v13.2.1-alpha05.tar | String | 是 | 文件下载地址 |
├─imageTag | v13.2.1-alpha05 | String | 是 | 镜像Tag |
serverType | Cruise10 | String | 是 | SOC类型(目前只支持:Cruise10) |
romVersion | android10 | String | 是 | AOSP版本(目前只支持:android10,android13) |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1717643679112 | Long | 时间戳 |
data | Object | ||
├─imageTaskIds | Object[] | 任务列表 | |
├─├─ | 14 | Integer | 任务ID |
├─errorList | Object[] | 上传镜像任务失败信息 | |
├─├─imageTag | v13.2.1-alpha05 | String | 镜像Tag |
├─├─errorMessage | Do not submit images repeatedly | String | 错误原因 |
请求示例
{
"imageFiles": [
{
"imageFileUrl": "https://app.armcloud.net/image/armcloud_10.2.1-alpha45.tar",
"imageTag": "v13.2.1-alpha05"
}
],
"serverType": "Cruise10",
"romVersion": "android10.0"
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1718868267973,
"data": {
"imageTaskIds": [
14
],
"errorList": [
{
"imageTag": "v13.2.1-alpha05",
"errorMessage": "Do not submit images repeatedly"
}
]
}
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
500 | 请求参数不对 | 请正常输出传参 |
110040 | 账号不存在 | 账号是否不正确 |
110039 | 任务添加失败 | 请重试 |
任务管理
文件任务详情
查询指定文件任务的执行结果详细信息。
接口地址
/task-center/open/task/fileTaskDetail
请求方式
POST
请求数据类型
application/json
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
taskIds | Integer[] | 是 | ||
├─taskId | 1 | Integer | 是 | 任务ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | 任务列表详情 | |
├─ taskId | 1 | Integer | 子任务ID |
├─ appId | 134 | Long | 应用id |
├─ fileUniqueId | e2c07491309858c5cade4bfc44c03724 | String | ⽂件唯⼀标识 |
├─ fileName | xx.apk | String | 文件名称 |
├─ taskStatus | 2 | Integer | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─ endTime | 1713429401000 | Long | 子任务结束时间戳 |
请求示例
{
"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
}
]
}
实例操作任务详情
查询指定实例操作任务的执行结果详细信息。
接口地址
/task-center/open/task/padTaskDetail
请求方式
POST
请求数据类型
application/json
请求Query参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
taskIds | Integer[] | 是 | ||
├─taskId | 1 | Integer | 是 | 任务ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object [] | 子任务列表详情 | |
├─ taskId | 1 | Integer | 子任务ID |
├─ padCode | VP22020020793 | String | 实例标识 |
├─ taskStatus | 2 | String TODO类型使用错误 | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─ endTime | 1713429401000 | Long | 子任务结束时间戳 |
├─ taskContent | “” | String | 任务内容 |
├─ taskResult | “” | String | 任务结果 |
├─ errorMsg | “” | String | 错误信息 |
请求示例
{
"taskIds":[1,2]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1716283460673,
"data": [
{
"taskId": 1,
"padCode": "AC22030022441",
"taskStatus": 2,
"endTime": 1713429401000,
"taskContent": null,
"taskResult": null
},
{
"taskId": 2,
"padCode": "AC22030022442",
"taskStatus": 2,
"endTime": 1713429401001,
"taskContent": null,
"taskResult": null
}
]
}
任务列表
查询实例、应用等相关任务的列表信息。
接口地址
/task-center/open/task/list
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
type | 1002 | Integer | 是 | 任务类型(1000:实例重启;1001:实例重置;1002:pad执行命令;1003:下载应用;1004:应用卸载;1005:应用停止;1006:应用重启;1007:应用启动;1008:本地截图;1009:下载文件;1010:修改实例属性;1011:查询已安装应用;1012 升级镜像;1013 应用安装;1014 应用清理;2000:上传文件;2001:删除文件) |
page | 1 | Integer | 是 | 起始页,默认1 |
rows | 10 | Integer | 是 | 查询数量,默认10 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─page | 1 | Integer | 当前页 |
├─rows | 10 | Integer | 每页显示数量 |
├─size | 10 | Integer | 当前页的数量 |
├─total | 30 | Integer | 总数量 |
├─totalPage | 3 | Integer | 总页数 |
├─pageData | Object[] | ||
├─├─ taskBatchId | 9d4b45447172732670c10808d630e454 | String | 批次号 |
├─├─ taskBatchStatus | 2 | Integer | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─├─ type | 1002 | Integer | 任务类型(1000:实例重启;1001:实例重置;1002:pad执行命令;1003:下载应用;1004:应用卸载;1005:应用停止;1006:应用重启;1007:应用启动;1008:本地截图;1009:下载文件;1010:修改实例属性;1011:查询已安装应用;1012 升级镜像;1013 应用安装;1014 应用清理;2000:上传文件;2001:删除文件) |
├─├─createTimestamp | 1713429395000 | Long | 任务创建时间戳 |
├─├─ subTasks | Object[] | ||
├─├─├─ taskId | 1 | Integer | 子任务ID |
├─├─├─ padCode | AC22030022441 | String | 实例编号 |
├─├─├─ fileUniqueId | e2c07491309858c5cade4bfc44c03724 | String | ⽂件唯⼀标识 |
├─├─├─ taskStatus | 2 | Integer | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─├─├─ endTime | 1713429401000 | Long | 子任务结束时间戳 |
请求示例
{
"page": 1,
"rows": 10,
"type":1000
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": {
"page": 1,
"rows": 10,
"size": 10,
"total": 310,
"totalPage": 31,
"pageData": [
{
"taskBatchId": "9d4b45447172732670c10808d630e454",
"taskBatchStatus": 2,
"type": 1002,
"createTimestamp": 1713429395000,
"subTasks": [
{
"taskId": 1,
"padCode": "AC22030022441",
"fileUniqueId": "e2c07491309858c5cade4bfc44c03724",
"taskStatus": 2,
"endTime": 1713429401000
}
]
}
]
}
}
获取实例执行脚本结果
通过执行脚本任务ID来获取实例执行脚本结果。
接口地址
/task-center/open/task/executeScriptInfo
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
taskIds | Integer [] | 是 | ||
├─ | 1 | Integer | 否 | 任务ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC22020020793 | String | 实例编号 |
├─taskStatus | 3 | Integer | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─endTime | 1756021166163 | Long | 任务执行结束时间 |
├─taskContent | Success | String | 任务内容 |
├─taskResult | Success | String | 任务结果 |
请求示例
{
"taskIds": [1]
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1756021167163,
"data":[
{
"taskId": 1,
"padCode": "AC22020020793",
"taskStatus":3,
"taskResult":"Success",
"endTime":"1756021166163",
"taskContent":"Success"
}
]
}
获取文件上传任务结果
通过文件上传任务 ID 来获取实例的文件上传结果。
接口地址
/task-center/open/task/cacheFileResult
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
taskIds | Integer[] | 是 | ||
├─ | 1 | Integer | 是 | 任务ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─fileList | Object[] | ||
├─├─taskId | 1 | Integer | 任务ID |
├─├─taskStatus | 3 | Integer | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─├─fileName | xxx.apk | String | 文件名称 |
├─├─fileUniqueId | 6865b417b7257d782afd5ac8bee4d311 | String | 文件唯一标识 |
├─├─appId | “” | Integer | 应用id |
├─├─endTime | 1756021166163 | Long | 任务执行结束时间 |
请求示例 |
{
"taskIds": [1]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1713773577581,
"data": {
"fileList":[
"taskId":1,
"taskStatus":3,
"fileName":"xxx.apk",
"fileUniqueId": "6865b417b7257d782afd5ac8bee4d311",
"appId": null,
"endTime": 1756021166163
]
}
}
获取实例截图结果
通过截图任务 ID 来获取实例的截图结果。
接口URL
/task-center/open/task/screenshotInfo
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
taskIds | Integer [] | 是 | ||
├─ | 1 | Integer | 否 | 任务ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | - | Object[] | 任务列表详情 |
├─ taskId | 1 | Integer | 任务ID |
├─ taskStatus | 3 | Integer | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─ padCode | AC22020020793 | String | 实例编号 |
├─ taskContent | Success | String | 任务内容 |
├─ taskResult | Success | String | 任务结果 |
├─ endTime | 1756121167163 | String | 任务执行结束时间 |
请求示例
{
"taskIds": [1]
}
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data":[
{
"taskId": 1,
"taskStatus": 3,
"padCode": "AC22020020793",
"taskContent": "Success",
"taskResult": "Success",
"endTime": 1756121167163
}
]
}
应用启停执行结果
通过应用启停任务ID来获取实例的应用启停的结果
接口地址
/task-center/open/task/appOperateInfo
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
taskIds | Integer [] | 是 | ||
├─ | 1 | Integer | 是 | 任务ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─ taskId | 1 | Integer | 任务ID |
├─ padCode | AC22020020793 | String | 实例编号 |
├─ taskStatus | 3 | Integer | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─ endTime | 1756021166163 | Long | 任务执行结束时间 |
├─ taskContent | Success | String | 任务内容 |
├─ taskResult | Success | String | 任务结果 |
请求示例
{
"taskIds": [1]
}
响应示例
{
"code": 200,
"msg": "success",
"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参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
taskIds | Integer [] | 是 | ||
├─ | 1 | Integer | 是 | 任务ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 1 | Integer | 任务ID |
├─padCode | AC21020010001 | String | 实例编号 |
├─taskStatus | 3 | Integer | 任务状态:(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
├─ endTime | 1756021166163 | Long | 任务执行结束时间 |
├─ taskContent | “” | String | 任务内容 |
├─ taskResult | Success | String | 任务结果 |
请求示例
{
"taskIds": [1]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1756021167163
"data":[
{
"taskId": 1,
"padCode": "AC22030022911",
"taskStatus": 3,
"endTime": 1756021166163,
"taskContent": null,
"taskResult": "Success"
}
]
}
镜像上传任务结果查询
通过任务ID来获取镜像上传任务结果。
接口地址
/task-center/open/task/imageUploadResult
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
taskIds | Integer [] | 是 | ||
├─ | 36 | Integer | 是 | 任务ID |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1718262521168 | Long | 时间戳 |
data | Object[] | ||
├─taskId | 36 | Integer | 任务ID |
├─taskStatus | 2 | Integer | 任务状态:(-1:制作失败;1:制作中;2:制作成功;) |
├─ errorMsg | “” | String | 错误信息 |
请求示例
{
"taskIds": [1]
}
响应示例
{
"code": 200,
"msg": "success",
"ts": 1718262521168,
"data": [
{
"taskId": 36,
"taskStatus": 2,
"errorMsg": ""
}
]
}
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);
}
}
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─token | 18df5803-48ce-4b53-9457-6a15feb1daca | String | sdk通信token |
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": {
"token": "18df5803-48ce-4b53-9457-6a15feb1daca"
}
}
SDK-Token签发(根据padCode)
签发临时 STS Token,用于对接入云手机服务的用户进行鉴权(该token只能用于请求的padCode)。
获取SDK临时token(根据padCode)
接口地址
/openapi/open/token/stsTokenByPadCode
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
padCode | AC32010230001 | String | 是 | 实例code |
请求示例
{"padCode":"AC32010230001"}
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object | ||
├─token | 18df5803-48ce-4b53-9457-6a15feb1daca | String | sdk通信token |
响应示例
{"code":200,"msg":"success","ts":1735209109185,"data":{"token":"8c443217-6950-4e69-92ba-0e21a2b9a71d,MoreLogin"}}
清除SDK授权Token
接口地址
/openapi/open/token/clearStsToken
请求方式
POST
请求数据类型
application/json
请求Body参数
参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|---|
token | 123 | String | 是 |
响应参数
参数名 | 示例值 | 参数类型 | 参数描述 |
---|---|---|---|
code | 200 | Integer | 状态码 |
msg | success | String | 响应消息 |
ts | 1756021167163 | Long | 时间戳 |
data | Object |
响应示例
{
"code": 200,
"msg": "success",
"ts":1713773577581,
"data": null
}
错误码
错误码 | 错误说明 | 操作建议 |
---|---|---|
120008 | token不属于当前用户 | 参考接口说明,检查请求参数和传值 |
回调相关
配置说明
需要客户在客户开放平台配置回调地址,配置地址成功则默认开启接收回调信息
异步执行ADB命令回调
使用场景
客户调用异步执行ADB命令,会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskId | Integer | 1 | 任务id |
padCode | String | AC22030022001 | 实例标识 |
taskStatus | Integer | 3 | 任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
endTime | Long | 1756021166163 | 任务执行结束时间 |
taskResult | String | Success | 任务结果 |
taskContent | String | 任务内容 | |
cmd | String | cd /root;ls | 执行的命令 |
cmdResult | String | /ws | 执行的命令返回 |
实例文件上传回调
使用场景
客户调用实例文件上传api,会通过该回调接口通知客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskId | Integer | 1 | 任务ID |
result | boolean | true | 执行结果:true-成功,false-失败 |
errorCode | String | 错误码 | |
padCode | String | AC22030022001 | 实例编号 |
fileId | String | cf08f7b685ab3a7b6a793b30de1b33ae34 | 文件id |
应用安装回调
使用场景
客户调用应用安装,应用的安装情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskId | Integer | 1 | 任务ID |
apps | Object[] | 应用信息 | |
├─ appId | Integer | 10001 | 应用ID |
├─ appName | String | demo | 应用名称 |
├─ pkgName | String | com.xxx.demo | 包名 |
├─ padCode | String | AC22030022001 | 实例编号 |
├─ result | boolean | true | 安装结果的标识。true:成功,false:失败 |
应用卸载回调
使用场景
客户调用应用卸载,应用卸载的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskId | Integer | 1 | 任务ID |
apps | Object | 应用信息 | |
├─ appId | Integer | 10001 | 应用ID |
├─ appName | String | demo | 应用名称 |
├─ pkgName | String | com.xxx.demo | 包名 |
├─ padCode | String | AC22030022001 | 实例编号 |
├─ result | boolean | true | 安装结果的标识。true:成功,false:失败 |
应用启动回调
使用场景
客户调用应用启动,应用启动的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskId | Integer | 1 | 任务ID |
taskStatus | Integer | 3 | 任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
padCode | String | AC22030022001 | 实例标识 |
pkgName | String | xxx.test.com | 包名 |
应用停止回调
使用场景
客户调用应用停止,应用停止的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskId | Integer | 1 | 任务ID |
taskStatus | Integer | 3 | 任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
padCode | String | AC22030022001 | 实例标识 |
pkgName | String | xxx.test.com | 包名 |
应用重启回调
使用场景
客户调用应用重启,应用重启的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskId | Integer | 1 | 任务ID |
taskStatus | Integer | 3 | 任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
padCode | String | 212254 | 实例标识 |
pkgName | String | xxx.test.com | 包名 |
查询实例应用列表回调
使用场景
客户调用实例已安装应用列表,实例已安装应用列表的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskId | Integer | 1 | 任务ID |
taskStatus | Integer | 1 | 任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
padCode | String | AC22030022001 | pod标识 |
apps | Object[] | ||
├─appName | String | test | 应用名称 |
├─pkgName | String | text.xx.com | 包名 |
文件上传回调
使用场景
客户调用上传文件,上传文件的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskId | Integer | 1 | 任务ID |
taskStatus | Integer | 3 | 任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
originFileUrl | String | www.xxx.com/xxx.apk | 原文件下载地址 |
fileUniqueId | String | test001 | 文件id |
实例状态任务回调
使用场景
客户调用实例重启/实例重置,实例重启/实例重置任务的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
taskBusinessType | Integer | 1 | 任务业务类型(1000:实例重启;1001:实例重置) |
taskId | Integer | 2 | 任务ID |
taskStatus | Integer | 3 | 任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
padCode | String | 212254 | 实例编号 |
taskResult | String | Success | 任务结果 |
taskContent | String | 任务内容 | |
endTime | Long | 177777224 | 结束时间 |
实例状态回调
使用场景
实例状态变更的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
padStatus | Integer | 1 | 实例状态: 10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪 |
padCode | String | 212254 | 实例标识 |
云机状态回调
使用场景
云机状态变更的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
deviceStatus | Integer | 1 | 物理机状态 0-离线;1-在线 |
deviceCode | String | 212254 | 云机编号 |
实例升级镜像回调
使用场景
实例升级镜像任务状态变更的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
padCode | String | 212254 | 实例编号 |
taskBusinessType | Integer | 1 | 任务业务类型(1012 升级镜像) |
taskStatus | Integer | 3 | 任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |
taskId | Integer | 1 | 任务ID |
taskContent | String | 任务内容 | |
endTime | Long | 1756021166163 | 结束时间 |
taskResult | String | Success | 任务结果 |
应用黑名单任务回调
使用场景
实例设置应用黑名单任务状态变更的情况会通过该回调接口通知给客户。
字段 | 类型 | 示例 | 说明 |
---|---|---|---|
padCode | String | 212254 | 实例编号 |
taskId | Integer | 1 | 任务ID |
taskStatus | Integer | 3 | 任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成) |