简介

本文档为您提供具体的 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-datestring20240301T093700Z发送请求的时间戳,使用UTC时间,精确到秒
x-hoststringopenapi.armcloud.net接口访问域名
authorizationstringHMAC-SHA256 Credential={AccessKey}/{ShortDate}/armcloud-paas/request, SignedHeaders=content-type;host;x-content-sha256;x-date, Signature={Signature}发送的请求中包含的签名
Content-Typestringapplication/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-sha256hashSHA256(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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC21020010001String实例编号
├─vmStatus1Integer实例在线状态(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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC21020010001String实例编号
├─vmStatus1Integer实例在线状态(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参数

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

响应参数

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

请求示例

{
	"padCode": "AC21020010001"
}

响应示例

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

错误码

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

代码示例

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

修改实例属性

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

接口地址

/openapi/open/pad/updatePadProperties

请求方式

POST

请求数据类型

application/json

请求Body参数

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

响应参数

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

请求示例

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

响应示例

{
	"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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─ page1Integer当前页
├─ rows10Integer每页的数量
├─ size1Integer当前页的数量
├─ total1Integer总记录数
├─ totalPage1Integer总页数
├─ pageDataobject[]列表
├─ ├─ padCodeVP21020010391String实例编号
├─ ├─ imageIdandorid:v10String镜像ID
├─ ├─ deviceLevelq2-6String实例规格(q2-6六开,q2-4四开)
├─ ├─ padStatus12Integer实例状态 (10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪)
├─ ├─ deviceStatus1Integer物理机状态(0-离线,1-在线)
├─ ├─ online1Integer实例在线状态(0-离线,1-在线)
├─ ├─ streamStatus0Integer实例推流状态( 0-空闲 1-推流中)
├─ ├─ dataSize234493726720Long存储总容量(字节)
├─ ├─ dataSizeUsed179189956608Long存储已使用容量(字节)
├─ ├─ dcInfoObject机房信息
├─ ├─ ├─ dcCodedc01String机房编码
├─ ├─ ├─ dcName长沙-01String机房名称
├─ ├─ ├─ area长沙String地区
├─ ├─ ├─ ossEndpointhttps://xxx.armcloud.netStringOSS公网接口地址
├─ ├─ ├─ ossEndpointInternalhttps://xxx.armcloud.netStringOSS内网接口地址
├─ ├─ ├─ ossFileEndpointhttps://xxx.armcloud.netString访问文件地址
├─ ├─ ├─ ossScreenshotEndpointhttps://xxx.armcloud.netString访问截图地址

请求示例

{
	"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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─successListObject[]成功集合
├─├─padCodeAC11010000031String实例编号
├─failListObject[]失败集合
├─├─padCodeAC22020020700String实例编号
├─├─errorCode120005Integer错误码
├─├─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参数

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

响应参数

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

请求示例

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

响应示例

{
	"code": 200,
	"msg": "success",
	"ts": 1721305008916,
	"data": [
		{
			"roomToken": null,
			"roomCode": "AC22010010842202",
			"appId": "j7Tb2GcE9rN5oF6xP3A4qwer",
			"streamType": 2,
			"videoCodec": "",
			"reportSdkLog": false,
			"padCode": "AC22010010842",
			"msg": "connect pad fail",
			"signalServer": null,
			"stuns": null,
			"turns": null
		},
		{
			"roomToken": "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参数

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

响应参数

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

请求示例

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

响应示例

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

错误码

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

绑定公网IP

实例绑定指定公网IP

接口地址

/openapi/open/network/bindIp

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
publicIP116.162.203.188String需要绑定的公网IP
padIP10.255.1.53String实例IP

响应参数

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

请求示例

{
    "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参数

参数名示例值参数类型是否必填参数描述
publicIP116.162.203.188String需要绑定的公网IP
padIP10.255.1.53String实例IP

响应参数

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

请求示例

{
    "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参数

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

响应参数

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

请求示例

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

响应示例

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

修改实例时区

接口地址

/openapi/open/pad/updateTimeZone

请求方式

POST

请求数据类型

application/json

请求Body参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─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参数

参数名示例值参数类型是否必填参数描述
imei868034031518269StringIMEI号
imeisv00StringIMEI版本号
meidA0000082C65F6CString移动设备识别码
operatorLongnameCHINA MOBILEString运营商全称
operatorShortnamCMSSString运营商简称
operatorNumeric455555String网络运营商id (即MCCMNC)
spnChinaStringSIM卡运营商名称
iccid89860002191807255576StringSIM卡卡号
imsi460074008004488String前缀为sim卡运营商号:MCC(3位)+MNC(2位或3位)
phonenum18574771704String电话号码
mcc502String网络所属国家
mnc146String移动设备网络代码
padCodesArray实例列表

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─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参数

参数名示例值参数类型是否必填参数描述
longitude116.397455Float纬度
latitude39.909187Float经度
padCodesArray实例列表

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务id
├─padCodeAC32010210001String实例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列表
countryCodeSGString国家编码(具体查看:https://chahuo.com/country-code-lookup.html)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
dataObject
├─taskId12818Long任务ID
├─padCodeAC22030010124String实例编号
├─vmStatus2Intger实例状态

请求示例

{ "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列表
fileUniqueIdcfca25a2c62b00e065b417491b0cf07ffcString通讯录文件ID
info{}Object通讯录信息
├─firstNametomString姓名
├─phone13111111111String手机号
├─emailtom@gmail.comString邮箱

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
dataObject
├─taskId12818Long任务ID
├─padCodeAC22030010124String实例编号

请求示例

{
  "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

请求数据类型

无参数

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─callbackName"文件上传任务"String回调类型名称
├─callbackType"4"String回调类型
├─id14Long回调类型的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

请求数据类型

无参数

响应参数

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

请求示例

响应示例

{"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列表接口获取)
├─callbackUrl192.168.1.1/testString接收任务回调配置URL

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
data2String配置成功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列表接口获取)
├─callbackUrl192.168.1.1/testString接收任务回调配置URL

响应参数

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

请求示例

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

响应示例

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

删除当前用户配置的回调地址

接口地址

/openapi/open/config/deleteCallback

请求方式

POST

请求数据类型

无参数

响应参数

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

请求示例

响应示例

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

实例设置代理

接口地址

/openapi/open/network/proxy/set

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
account2222String账号
password2222String密码
ip47.76.241.5StringIP
port2222Integer端口
enabletrueBoolean启用
padCodesArray实例列表
proxyTypevpnString支持参数:proxy、vpn
proxyNamesocks5String支持参数:socks5、http-relay

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─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参数

参数名示例值参数类型是否必填参数描述
enabletrueBoolean是否断网 true断网 false恢复网络
padCodesArray实例列表 数量范围1-200

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─taskId24Long任务ID
├─padCodeAC22030010001String房间号
├─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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22020020793String实例编号
├─vmStatus1Integer实例在线状态(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参数

参数名示例值参数类型是否必填参数描述
padCodeAC22020020793String实例ID
scriptContentcd /root;lsStringADB命令,多条命令使用分号隔开

响应参数

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

请求示例

{
    "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参数

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

响应参数

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

请求示例

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

响应示例

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

错误码

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

生成预览图

指定的实例获取预览图。

接口地址

/openapi/open/pad/generatePreview

请求方式

POST

请求数据类型

application/json

请求Body参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─padCodeAC11010000031String实例编号
├─accessUrlhttp://xxx.armcloud.pngString访问地址

请求示例

{
    "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参数

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

响应参数

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

请求示例


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

响应示例

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

文件列表

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

接口地址

/file-center/open/file/list

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
page1Integer起始页,默认1
rows10Integer查询数量,默认10

响应参数

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

请求示例


{
    "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参数

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

响应参数

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

请求示例


{
	"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参数

参数名示例值参数类型是否必填参数描述
padCodesString[]
├─AC22030023061String实例编号
autoInstall1Integer是否需要⾃动安装 1需要、0不需要。不填默认不需要。仅对apk类型的⽂件⽣效
fileUniqueId1e5d3bf00576ee8f3d094908c0456722String文件id唯一标识。
customizeFilePath/Documents/String⾃定义路径。非必传,需以/开头。

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─padCodeAC22010020062String实例编号
├─taskId1Integer任务ID
├─vmStatus1Integer实例在线状态(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参数

参数名示例值参数类型是否必填参数描述
padCodesString[]
├─AC22030010182String实例编号
imageIdmg-24061124017String镜像ID
wipeDatafalseBoolean是否清除实例数据(data分区), true清除,false不清除

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─padCodeAC22030010182String实例编号
├─taskId1Integer任务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参数

参数名示例值参数类型是否必填参数描述
padCodesString[]
├─AC22030010182String实例编号
imageIdmg-24061124017String镜像ID
wipeDatafalseBoolean是否清除实例数据(data分区), true清除,false不清除
realPhoneTemplateId178Integer真机模板ID upgradeImageConvertType=real时必填
upgradeImageConvertTypevirtualString转换镜像类型 virtual:虚拟机 real:云真机
screenLayoutId14Integer屏幕布局ID upgradeImageConvertType=virtual时必填

响应参数

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

请求示例

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

响应示例

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

错误码

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

分页获取真机模板

分页获取真机模板

接口地址

/openapi/open/realPhone/template/list

请求方式

POST

请求数据类型

application/json

请求Body参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─id178Longid
├─brandgoogleString品牌
├─modelPixel 7 Pro(12G)String型号
├─fingerprintMd5f5da7b97678ac19309f0cf0203e072d7String安卓md5(ro.build.fingerprint)
├─fingerprintgoogle/cheetah/cheetah:13/TQ3A.230901.001/10750268:user/release-keysString安卓ro.build.fingerprint
├─resourceSpecificationCodem2-3String规格编号
├─screenLayoutCoderealdevice_1440x3120x560String屏幕布局编码
├─androidImageVersion13Integer安卓镜像版本
├─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参数

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─id12Longid
├─codesingle-portrait-basicString屏幕布局编码
├─screenWidth1920String屏幕宽度
├─screenHigh1080String屏幕高度
├─pixelDensity320String像素密度
├─screenRefreshRate60String屏幕刷新率

请求示例


响应示例

{
    "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参数

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

响应参数

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

请求示例

{
    "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参数

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

响应参数

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

请求示例

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

响应示例

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

设置实例黑名单

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

接口地址

/openapi/open/pad/triggeringBlacklist

请求方式

POST

请求数据类型

application/json

请求Body参数

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

响应参数

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

请求示例

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

响应示例

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

错误码

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

设置实例带宽

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

接口地址

/openapi/open/pad/setSpeed

请求方式

POST

请求数据类型

application/json

请求Body参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
dataObject[]
├─taskId679Integer任务ID
├─padCodeAC32010140011String实例编号
├─vmStatus1Integer实例在线状态(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参数

参数名示例值参数类型是否必填参数描述
padCodeAC22030010124String实例编号
enabletruebooleantrue-打开 false-关闭

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1721739857317Long时间戳
dataObject[]
├─padCodeAC32010140011String实例编号
├─commandadb connect ip:portIntegeradb 连接信息
├─expireTime2024-10-24 10:42:00String连接有效期
├─enabletruebooleanadb状态

请求示例

{
  "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参数

参数名示例值参数类型是否必填参数描述
page1Integer页码
rows10Integer条数
padCodesString[]
├─AC22010020062String实例编号
groupIdsInteger[]
├─1Integer实例分组ID

响应参数

参数名示例值参数类型参数描述
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─page1Integer当前页
├─rows10Integer每页的数量
├─size1Integer当前页的数量
├─total1Integer总记录数
├─totalPage1Integer总页数
├─pageDataobject[]列表
├─├─padCodeVP21020010391String实例编号
├─├─padGradeq1-2String实例开数(q1-6六开,q1-2二开)
├─├─padStatus10String实例状态 (10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪)
├─├─groupId0Integer分组ID
├─├─idcCoded3c1f580c41525e514330a85dfdecda8String机房编码
├─├─deviceIp192.168.0.0String云机ip
├─├─padIp192.168.0.0String实例ip
├─├─appsString[]安装的应用列表
├─├─├─armcloud001String安装的应用

请求示例

{
	"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参数

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

响应参数

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

请求示例

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

响应示例

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

获取指定公网绑定的信息

查询指定公网IP绑定的IP地址信息 接口地址

/openapi/open/network/getIP

请求方式

GET

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
publicIP116.162.203.188String公网IP

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─ taskId12Integer任务ID
├─ appId1243Integer应用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参数

参数名示例值参数类型是否必填参数描述
page1Integer起始页,默认1
rows10Integer查询数量,默认10
appIdsInteger[]应用id

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
pageDataObject
├─page1Integer当前页
├─rows10Integer每页显示数量
├─size10Integer当前页的数量
├─total2Integer总数量
├─totalPage1Integer总页数
├─pageDataObject[]
├─├─originUrldownloadUrl_tr0biString文件原下载地址
├─├─appIddwadawdfInteger自定义应用ID
├─├─descriptiondescription_1cq3mString描述
├─├─packageNamepackageName_e6lw8String包名
├─├─appNameappName_o4mhnString应用名称
├─├─versionNameversionName_s4o2iString版本名
├─├─versionNo1Integer版本号
├─├─signMd50F938C4F0995A83C9BF31F0C64322589StringMD5
├─├─availabletrueBoolean当前文件是否可用
├─├─createTime1709895492000Integer创建时间
├─├─fileId文件idInteger文件id
├─├─iconPathhttp://192.168.230.80:18100/icon/110_6ca4d3e6e5111ec38e8eca6c1998ce89..pngString应用图标
├─├─classifyNameList应用类别Object[]应用类别
├─├─├─classifyName类别1String应用类别名称
├─├─├─classifyType1Integer分类类型(1白名单 2黑名单)

请求示例


{
    "rows": 10,
    "page": 1,
    "appIds": [
        12
    ]
}

响应示例

{
	"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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─appId1Integer应用id
├─originUrlhttp://www.xx.com/test.apkString原文件下载地址
├─descriptiontestString自定义描述
├─packageNamexxx.xxx.comString包名
├─appNametestString应用名
├─versionName1.0.1String版本名
├─versionNo124511Integer版本号
├─signMd50F938C4F0995A83C9BF31F0C64322589String签名md5
├─createTime1711595044000Integer文件创建时间

请求示例

{
	"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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId2Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22020020793String实例编号
├─vmStatus1Integer实例在线状态(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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─taskId1Integer任务ID
├─padCodeAC22010020062String实例编号
├─vmStatus1Integer实例在线状态(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参数

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

响应参数

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

请求示例

{
    "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参数

参数名示例值参数类型是否必填参数描述
idtestInteger黑白名单id(不为空则为修改)
classifyName1String黑白名单名称
classifyType1Integer黑白名单类型 1白名单 2黑名单
remark10String黑白名单描述
appInfosObject[]关联应用集合 范围0-100个
├─fileId1Integer文件id
├─appId1Integer应用id
├─appName测试appString应用名称
├─packageNamecom.xxx.xxxString包名
├─appVersionNo123Integer版本号
├─appVersionName1.2.3String版本名称

响应参数

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

请求示例

{
	"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参数

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

响应参数

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

请求示例

/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参数

参数名示例值参数类型是否必填参数描述
idtestInteger黑白名单id
appPadInfosObject[]关联实例集合 范围0-100个
├─padCodeAC32010230001String实例编号
├─deviceLevelm2-4String规格
├─padIp10.255.3.1String实例ip

响应参数

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

请求示例

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

响应示例

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

错误码

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

黑白名单实例关联详情

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

接口地址

/openapi/open/appClassify/padDetail

请求方式

POST

请求数据类型

application/json

请求Query参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─id8Integer黑白名单id
├─classifyName白名单A组1String黑白名单名称
├─classifyType1Integer黑白名单类型 1白名单 2黑名单
├─appNum3Integer已关联的应用数量
├─appPadInfosObject[]关联实例集合
├─├─padCodeAC111String实例编号
├─├─deviceLevelm2-3String规格
├─├─padIp127.0.0.1String实例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参数

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

响应参数

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

请求示例

/openapi/open/appClassify/del?id=1

响应示例

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

错误码

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

添加黑白名单app

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

接口地址

/openapi/open/appClassify/addApp

请求方式

POST

请求数据类型

application/json

请求Body参数

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

响应参数

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

请求示例

{
	"id": 1,
	"appInfos": [
		{
			"fileId": 1,
			"appId": 1,
			"appName": "测试app",
			"packageName": "com.xxx.xxx",
			"appVersionNo": 123,
			"appVersionName": "1.2.3"
		}
	]
}

响应示例

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

错误码

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

添加黑白名单实例关联

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

接口地址

/openapi/open/appClassify/addPad

请求方式

POST

请求数据类型

application/json

请求Body参数

参数名示例值参数类型是否必填参数描述
idtestInteger黑白名单id
appPadInfosObject[]关联实例集合 范围1-100个
├─padCodeAC32010230001String实例编号
├─deviceLevelm2-4String规格
├─padIp10.255.3.1String实例ip

响应参数

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

请求示例

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

响应示例

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

错误码

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

镜像管理

创建镜像上传任务

创建镜像上传任务。(异步任务)

接口地址

/openapi/open/image/uploadImage

请求方式

POST

请求数据类型

application/json

请求Query参数

参数名示例值参数类型是否必填参数描述
imageFilesObject[]
├─imageFileUrlhttps://xxxx.xx.xx/image/armcloud_v13.2.1-alpha05.tarString文件下载地址
├─imageTagv13.2.1-alpha05String镜像Tag
serverTypeCruise10StringSOC类型(目前只支持:Cruise10)
romVersionandroid10StringAOSP版本(目前只支持:android10,android13)

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1717643679112Long时间戳
dataObject
├─imageTaskIdsObject[]任务列表
├─├─14Integer任务ID
├─errorListObject[]上传镜像任务失败信息
├─├─imageTagv13.2.1-alpha05String镜像Tag
├─├─errorMessageDo not submit images repeatedlyString错误原因

请求示例

{
    "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参数

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

响应参数

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

请求示例

{
	"taskIds":[
		1,2
	]
}

响应示例

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

实例操作任务详情

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

接口地址

/task-center/open/task/padTaskDetail

请求方式

POST

请求数据类型

application/json

请求Query参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject []子任务列表详情
├─ taskId1Integer子任务ID
├─ padCodeVP22020020793String实例标识
├─ taskStatus2String TODO类型使用错误任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
├─ endTime1713429401000Long子任务结束时间戳
├─ 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参数

参数名示例值参数类型是否必填参数描述
type1002Integer任务类型(1000:实例重启;1001:实例重置;1002:pad执行命令;1003:下载应用;1004:应用卸载;1005:应用停止;1006:应用重启;1007:应用启动;1008:本地截图;1009:下载文件;1010:修改实例属性;1011:查询已安装应用;1012 升级镜像;1013 应用安装;1014 应用清理;2000:上传文件;2001:删除文件)
page1Integer起始页,默认1
rows10Integer查询数量,默认10

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─page1Integer当前页
├─rows10Integer每页显示数量
├─size10Integer当前页的数量
├─total30Integer总数量
├─totalPage3Integer总页数
├─pageDataObject[]
├─├─ taskBatchId9d4b45447172732670c10808d630e454String批次号
├─├─ taskBatchStatus2Integer任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
├─├─ type1002Integer任务类型(1000:实例重启;1001:实例重置;1002:pad执行命令;1003:下载应用;1004:应用卸载;1005:应用停止;1006:应用重启;1007:应用启动;1008:本地截图;1009:下载文件;1010:修改实例属性;1011:查询已安装应用;1012 升级镜像;1013 应用安装;1014 应用清理;2000:上传文件;2001:删除文件)
├─├─createTimestamp1713429395000Long任务创建时间戳
├─├─ subTasksObject[]
├─├─├─ taskId1Integer子任务ID
├─├─├─ padCodeAC22030022441String实例编号
├─├─├─ fileUniqueIde2c07491309858c5cade4bfc44c03724String⽂件唯⼀标识
├─├─├─ taskStatus2Integer任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
├─├─├─ endTime1713429401000Long子任务结束时间戳

请求示例

{
    "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参数

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

响应参数

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

请求示例

{
	"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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject[]
├─fileListObject[]
├─├─taskId1Integer任务ID
├─├─taskStatus3Integer任务状态(-1:全失败;-2:部分失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
├─├─fileNamexxx.apkString文件名称
├─├─fileUniqueId6865b417b7257d782afd5ac8bee4d311String文件唯一标识
├─├─appId“”Integer应用id
├─├─endTime1756021166163Long任务执行结束时间
请求示例

{
	"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参数

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

响应参数

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

请求示例

{
	"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参数

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

响应参数

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

请求示例

{
	"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参数

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

响应参数

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

请求示例

{
    "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参数

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

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1718262521168Long时间戳
dataObject[]
├─taskId36Integer任务ID
├─taskStatus2Integer任务状态:(-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);

    }
}

响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─token18df5803-48ce-4b53-9457-6a15feb1dacaStringsdk通信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参数

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

请求示例

{"padCode":"AC32010230001"}


响应参数

参数名示例值参数类型参数描述
code200Integer状态码
msgsuccessString响应消息
ts1756021167163Long时间戳
dataObject
├─token18df5803-48ce-4b53-9457-6a15feb1dacaStringsdk通信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参数

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

响应参数

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

响应示例

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

错误码

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

回调相关

配置说明

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

异步执行ADB命令回调

使用场景

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

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

实例文件上传回调

使用场景

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

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

应用安装回调

使用场景

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

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

应用卸载回调

使用场景

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

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

应用启动回调

使用场景

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

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

应用停止回调

使用场景

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

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

应用重启回调

使用场景

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

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

查询实例应用列表回调

使用场景

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

字段类型示例说明
taskIdInteger1任务ID
taskStatusInteger1任务状态(-1:全失败;-3:取消;-4:超时;1:待执行;2:执行中;3:完成)
padCodeStringAC22030022001pod标识
appsObject[]
├─appNameStringtest应用名称
├─pkgNameStringtext.xx.com包名

文件上传回调

使用场景

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

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

实例状态任务回调

使用场景

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

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

实例状态回调

使用场景

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

字段类型示例说明
padStatusInteger1实例状态: 10-运行中 11-重启中 12-重置中 13-升级中 14-异常 15-未就绪
padCodeString212254实例标识

云机状态回调

使用场景

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

字段类型示例说明
deviceStatusInteger1物理机状态 0-离线;1-在线
deviceCodeString212254云机编号

实例升级镜像回调

使用场景

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

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

应用黑名单任务回调

使用场景

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

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