OPEN API参考
API文档
更新历史
发布时间 | 发布内容 |
---|---|
2024-12-25 | 新增: 云手机相关接口 查询实例的所有绑定信息 解绑实例的所有绑定信息 基础能力相关接口 实例限速 分页查询应用列表 修改: 基础能力相关接口 分页查询实例信息 新增出参: instanceStatus deviceStatus |
2024-10-30 | 新增: 基础能力相关接口 实例分辨率调整 服务回调相关接口 实例分辨率调整通知 进程死亡告警通知 |
2024-10-16 | 新增: 基础能力相关接口 获取同步截图url 销毁已获取的同步截图url 系统镜像相关接口 删除自定义镜像 |
2024-09-25 | 新增: 基础能力相关接口 分辨率调整 |
2024-09-05 | 新增: 基础能力相关接口 应用安装 应用卸载 系统镜像相关接口 查询公共镜像 查询自定义镜像 上传自定义镜像 获取自定义镜像上传结果 创建更新镜像任务 查询更新镜像结果 |
2023-12-06 | 新增: 基础能力相关接口 实例切换会话控制权 实例设置内存限额 |
2023-11-02 | 新增: 基础能力相关接口 桌面推荐图标刷新 服务回调相关接口 桌面推荐图标刷新通知 |
2023-09-14 | 新增: 基础能力相关接口 实例授权连接 云手机相关接口 获取授权serverToken |
2023-08-17 | 新增: 基础能力相关接口 应用上传(新版) 应用更新 |
2023-03-23 | 新增: 基础能力相关接口 实例信息查询[/resources/instance/infos] 下架: 基础能力相关接口 旧版分页查询实例信息接口[distribute/pad/infos.html] |
2023-03-09 | 新增: 基础能力相关接口 客户实例汇总数据查询 |
2023-02-23 | 新增: 基础能力相关接口 创建流量查询任务接口 获取流量查询任务结果接口 |
2023-01-12 | 新增: 基础能力相关接口 机房已绑定实例数信息 实例执行脚本 上传文件到实例 服务回调相关接口: 实例执行脚本通知 上传文件到实例通知 |
2022-10-24 | 新增: 云手机相关接口 获取serverToken 新增入参: multiTerminal merchantPoolNo 实例指令相关接口 实例重启 新增入参: merchantPoolNo 实例重置 新增入参: merchantPoolNo |
2022-10-20 | 新增: 基础能力相关接口 应用镜像按实例发布 应用镜像按机房发布 获取应用镜像按机房发布结果 服务回调相关接口 应用镜像机房发布完成通知 |
2022-08-18 | 新增接口: 基础能力相关接口 分页查询实例信息 云手机相关接口 获取severToken 实例解绑 |
2022-07-15 | 实例指令相关接口 实例解绑 服务回调相关接口 实例解绑回调 |
2022-06-10 | 新增接口 获取每个机房可用实例数量和总的可用实例数量 |
API概述
最近更新时间:2024年12月25日 12:00:00
云手机相关接口
接口名称 | 接口功能 |
---|---|
获取serverToken | 获取serverToken后在两小时内可以用来申请实例。申请实例后可以用serverToken解绑已成功申请的实例。 |
获取授权serverToken | 获取授权serverToken,通过serverToken连接的方式将云手机授权给其他用户使用 |
实例解绑 | 根据申请实例时传参的serverToken来释放指定实例。 |
实例切换会话控制权 | 根据serverToken切换已绑定实例会话控制权。 |
查询实例的所有绑定信息 | 根据instanceCode查询实例的所有绑定信息。 |
解绑实例的所有绑定信息 | 根据instanceCode解绑实例的所有绑定信息。 |
基础能力相关接口
接口名称 | 接口功能 |
---|---|
分页查询实例信息 | 根据查询条件分页获取实例列表信息。 |
客户实例汇总数据查询 | 客户可以通过该接口来实时查询当前所有机房下的总实例数、可用实例数和已绑定的实例数。 |
机房未绑定实例数信息 | 获取每个机房可用且未绑定实例数量和总的可用且未绑定实例数量。 |
机房已绑定实例数信息 |
获取每个机房可用且已绑定实例数量和总的可用且已绑定实例数量。 |
实例截图 | 对实例进行截图,支持设置截图质量 |
实例截图结果查询 | 查询截图结果,如果截图成功,提供截图下载url |
创建流量查询任务 | 创建流量查询任务 |
获取流量查询任务结果 | 获取流量查询任务的结果 |
上传文件到实例 | 上传文件到百度云游戏平台 |
实例执行脚本 | 让实例执行传入的脚本内容 |
实例授权连接 | 将已连接的云手机授权给其他用户使用 |
实例设置内存限额 | 用于修改实例可以使用的内存上限值 |
应用上传(新版) | 上传应用到百度云游戏平台 |
应用更新 | 更新应用文件,应用信息不变更 |
应用上传 | 上传应用到百度云游戏平台。 |
应用启停 | 根据实例编号和应用包名对实例进行应用启停的操作。执行的结果可以根据返回的任务ID,通过获取应用启停结果接口查看。 |
桌面推荐图标刷新 | 用于刷新并展示实例桌面推荐应用,只能操作未绑定实例 |
任务结果查询 | 根据任务id查询任务执行结果 |
实例调度 | 对实例进行实例池之间的调度 |
应用安装 | 为单台或多台云手机实例同时安装应用 |
应用卸载 | 为单台或多台云手机实例同时卸载应用 |
预置应用安装 | 为单台或多台云手机实例同时安装预置应用 |
预置应用卸载 | 为单台或多台云手机实例同时卸载预置应用 |
分页查询应用列表 | 分页获取应用列表信息。 |
实例分辨率调整 | 调整实例分辨率参数 |
实例限速 | 设置实例限速 |
实例指令相关接口
接口名称 | 接口功能 |
---|---|
实例重启 | 重启指定实例编码的实例 |
实例重置 | 将指定的实例恢复出厂设置 |
服务回调相关接口
回调名称 | 功能 |
---|---|
应用上传通知 | 应用上传完成后的通知。 |
应用启动通知 | 应用启动完成后的通知。 |
应用停止通知 | 应用停止完成后的通知。 |
实例解绑通知 | 实例解绑完成后的通知。 |
实例重置通知 | 实例重置完成后的通知。 |
实例重启通知 | 实例重启完成后的通知。 |
实例执行脚本通知 | 实例完成执行脚本后的通知 |
上传文件到实例通知 | 文件上传到实例完成后的通知 |
分辨率调整结果通知 | 分辨率调整完成后的通知 |
进程死亡告警通知 | 实例运行的应用进程非正常死亡后的告警通知 |
调用方式
请求结构
Headers参数说明
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/json | 是 |
公共参数
公共参数用于标识请求用户并进行签名校验和用户鉴权,在每次请求时均需要携带公共参数才能正常发起请求。
注:后续接口文档中不再对公共参数进行说明
名称 | 类型 | 是否必须 | 备注 | 示例值 |
---|---|---|---|---|
appkey | String | 是 | 百度云游戏平台分配给第三方用户的接口 key | 50b13132bb394901f151bc12 |
auth_ver | String | 是 | api 的版本号 | 3 |
nonce | Long | 是 | 当前有的时间戳,精确到毫秒 | 1600846168490 |
s | String | 是 | 方法签名,根据 appkey、auth_ver 和 nonce 计算 | efabcaca7c66d629a639cee37d924813 |
方法签名生成规则
s = MD5(appkey + appkey值 + auth_ver + auth_ver值 + nonce + nonce值 + appSecret值)
注:字符串内容统一用 utf-8 字符集
方法签名生成示例
Java
String paramsStr = "appkey" + appKey +
"auth_ver" + authVer +
"nonce" + System.currentTimeMillis() +
appSecret;//接口签名密钥(可配置)
String sign = org.apache.commons.codec.digest.DigestUtils.md5Hex(paramsStr.getBytes(StandardCharsets.UTF_8));
URL拼接公共参数示例
https://platform.armvm.com/{resourcePath}?s={s}&appkey={appkey}&auth_ver={auth_ver}&nonce={nonce}
body参数
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
msg | 见msg加密规则 | 是 | ||
createTime | 公共参数中的nonce | 是 |
msg加密规则
加密模式:3DES——CBC模式,填充模式PKCS5Padding
加密步骤:
1.desKey截取前24位转byte[]
2.时间戳nonce转byte[]
3.接口请求实际入参的Json串转byte[]
4.3DES对内容进行加密(CBC模式,填充模式PKCS5Padding)
5.使用base64对加密结果进行编码
msg加密示例
Java
// 填装实际接口请求参数
Map param = new HashMap();
param.put("param1", "value1");
param.put("param2", "value2");
param.put("param3", "value3");
// 请求参数转化为JSON字符串
String requestParam = new Gson().toJson(param);
// 请求参数加密
Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
SecretKeyFactory skf = SecretKeyFactory.getInstance("DESede");
SecretKey secretKey = skf.generateSecret(new DESedeKeySpec(desKey.getBytes("utf-8")));
ByteBuffer byteBuffer = ByteBuffer.allocate(8);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
byteBuffer.putLong(nonce);
byte[] iv = byteBuffer.array();
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);
byte[] cipherText = cipher.doFinal(requestParam.getBytes("utf-8"));
String msg = Base64.encodeBase64String(cipherText);
Map map = new HashMap();
map.put("createTime", nonce);
map.put("msg", msg);
// 转化为JSON字符串
String encryptBody = new Gson().toJson(map);
完整调用示例
Java
package org.example.openapi;
import cn.hutool.json.JSONUtil;
import org.apache.commons.codec.digest.DigestUtils;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
public class OpenApiTest {
public static void main(String[] args) throws Exception {
// 百度云游戏平台分配给第三方用户的接口Key
String appKey = "4a8311be034943cfaa6a357fdc9f0461";
// 接口版本号,现在有2和3两种版本的接口,具体按照接口文档上的版本号
String authVer = "3";
// 当前的时间戳
long nonce = System.currentTimeMillis();
// 接口签名秘钥
String appSecret = "01a258aff68e6b2f2513df7f7dc3cf18";
// 生成方法签名
String paramsStr = "appkey" + appKey +
"auth_ver" + authVer +
"nonce" + System.currentTimeMillis() +
appSecret;//接口签名密钥(可配置)
String sign = DigestUtils.md5Hex(paramsStr.getBytes(StandardCharsets.UTF_8));
// desKey 3DES秘钥(可配置),根据商户平台实际生成的替换此值
String desKey = "cba76b7b0ab1011179087092effe1b8d";
// 拼接公共参数到URL
String apiUrl = "https://platform.armvm.com/{resourcePath}?s=" + sign + "&appkey=" + appKey + "&auth_ver=" + authVer + "&nonce=" + nonce;
// 填装实际接口请求参数
Map<String, Object> param = new HashMap<>();
param.put("param1", "value1");
param.put("param2", "value2");
param.put("param3", "value3");
// 请求参数转化为JSON字符串
String requestParam = JSONUtil.toJsonStr(param);
// 请求参数加密
Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
SecretKeyFactory skf = SecretKeyFactory.getInstance("DESede");
SecretKey secretKey = skf.generateSecret(new DESedeKeySpec(desKey.getBytes(StandardCharsets.UTF_8)));
ByteBuffer byteBuffer = ByteBuffer.allocate(8);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
byteBuffer.putLong(nonce);
byte[] iv = byteBuffer.array();
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);
byte[] cipherText = cipher.doFinal(requestParam.getBytes(StandardCharsets.UTF_8));
String msg = Base64.getEncoder().encodeToString(cipherText);
Map<String, Object> map = new HashMap<>();
map.put("createTime", nonce);
map.put("msg", msg);
// 转化为JSON字符串
String encryptBody = JSONUtil.toJsonStr(map);
// 构造请求
URL url = new URL(apiUrl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
// 连接超时时间
httpURLConnection.setConnectTimeout(1000);
// 读取结果超时时间
httpURLConnection.setReadTimeout(1000);
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setUseCaches(false);
httpURLConnection.setRequestProperty("Content-type", "application/json;charset=utf-8");
httpURLConnection.setRequestMethod("POST");
// 得到请求的输出流对象
OutputStreamWriter out = new OutputStreamWriter(httpURLConnection.getOutputStream());
// 把数据写入请求的Body
out.write(encryptBody);
out.flush();
out.close();
String result;
try (InputStream in = 200 == httpURLConnection.getResponseCode() ? httpURLConnection.getInputStream() : httpURLConnection.getErrorStream();) {
byte[] buf = new byte[1024];
int length;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
while ((length = in.read(buf, 0, buf.length)) > 0) {
bout.write(buf, 0, length);
}
bout.flush();
result = new String(bout.toByteArray(), StandardCharsets.UTF_8);
} finally {
httpURLConnection.disconnect();
}
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == 200) {
System.out.println("调用成功,接口返回结果:\n" + result);
} else {
System.out.println("调用失败");
}
}
}
Python
import json
import time
import hashlib
import base64
import struct
import requests
from Crypto.Cipher import DES3
from Crypto.Util.Padding import pad
def _pad(data):
padding_length = 8 - len(data) % 8
padding = bytes([padding_length] * padding_length)
return data + padding
def encrypt(key, iv, message):
cipher = DES3.new(key[:24].encode('utf-8'), DES3.MODE_CBC, struct.pack('>Q', iv))
padded_message = pad(message.encode('utf-8'), DES3.block_size)
ciphertext = cipher.encrypt(padded_message)
return ciphertext
def encrypt_with_base64(key, iv, message):
ciphertext = encrypt(key, iv, message)
return base64.b64encode(ciphertext).decode('utf-8')
if __name__ == '__main__':
# 百度云游戏平台分配给第三方用户的接口Key
app_key = "4a8311be034943cfaa6a357fdc9f0461"
# 接口版本号,现在有2和3两种版本的接口,具体按照接口文档上的版本号
auth_ver = "3"
# 当前的时间戳
nonce = int(time.time() * 1000)
# 接口签名秘钥
app_sec = "01a258aff68e6b2f2513df7f7dc3cf18"
# 方法签名
sign = "appkey%sauth_ver%snonce%d%s" % (app_key, auth_ver, nonce, app_sec)
md5_sign = hashlib.md5(sign.encode('utf-8')).hexdigest()
# desKey 3DES秘钥(可配置),根据商户平台实际生成的替换此值
des_key = "cba76b7b0ab1011179087092effe1b8d"
# 拼接公共参数到URL
url = "https://platform.armvm.com/resourcePath?appkey=%s&auth_ver=%s&s=%s&nonce=%d" % (app_key, auth_ver, md5_sign, nonce)
data = {
"param1": "value1",
"param2": "value2",
"param3": "value3",
}
msg = encrypt_with_base64(des_key, nonce, json.dumps(data))
post_data = {
"msg": msg,
"createTime": nonce
}
print('url = ', url)
print('data = ', post_data)
res = requests.post(url, json.dumps(post_data), headers={
'Content-Type': 'application/json'
})
print(res.text)
Go
package main
import (
"bytes"
"crypto/md5"
"encoding/base64"
"encoding/hex"
"encoding/json"
"fmt"
"github.com/forgoer/openssl"
"net/http"
"time"
)
func encryptWithBase64(key string, iv int64, message string) (string, error) {
ivBytes := make([]byte, 8)
for i := 0; i < 8; i++ {
ivBytes[7-i] = byte(iv >> (8 * i))
}
ciphertext, err := openssl.Des3CBCEncrypt([]byte(message), []byte(key)[:24], ivBytes, openssl.PKCS7_PADDING)
if err != nil {
return "", err
}
return base64.StdEncoding.EncodeToString(ciphertext), nil
}
func main() {
appKey := "4a8311be034943cfaa6a357fdc9f0461"
authVer := "3"
nonce := time.Now().UnixNano() / int64(time.Millisecond)
appSec := "01a258aff68e6b2f2513df7f7dc3cf18"
sign := fmt.Sprintf("appkey%sauth_ver%snonce%d%s", appKey, authVer, nonce, appSec)
md5Sum := md5.Sum([]byte(sign))
md5Sign := hex.EncodeToString(md5Sum[:])
desKey := "cba76b7b0ab1011179087092effe1b8d"
url := fmt.Sprintf("https://platform.armvm.com/resourcePath?appkey=%s&auth_ver=%s&s=%s&nonce=%d", appKey, authVer, md5Sign, nonce)
data := map[string]string{
"param1": "value1",
"param2": "value2",
"param3": "value3",
}
jsonData, err := json.Marshal(data)
if err != nil {
fmt.Println("Error marshalling JSON:", err)
return
}
msg, err := encryptWithBase64(desKey, nonce, string(jsonData))
if err != nil {
fmt.Println("Encryption error:", err)
return
}
postData := map[string]interface{}{
"msg": msg,
"createTime": nonce,
}
postDataJson, err := json.Marshal(postData)
if err != nil {
fmt.Println("Error marshalling post data:", err)
return
}
fmt.Println("url = ", url)
fmt.Println("data = ", string(postDataJson))
req, err := http.NewRequest("POST", url, bytes.NewBuffer(postDataJson))
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making request:", err)
return
}
defer resp.Body.Close()
var responseBytes bytes.Buffer
_, err = responseBytes.ReadFrom(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(responseBytes.String())
}
云手机相关接口
获取serverToken
基本信息
URL
https://platform.armvm.com/auth/instance/cloud-phone-server-token
请求格式
POST
版本号
3
使用备注
同一个uuid+instanceCode的组合,只允许拥有一个有效的serverToken,不允许同时为相同的uuid+instanceCode申请多个serverToken
请求参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
uuid | String | 必须 | 无 | 用户唯一标识。uuid是用来区分真实用户的唯一标识 | 89e87993500e424ab0de340da6f3599e |
instanceCodes | String[] | 必须 | 无 | 实例编码集合,长度不能超过50 | ["VM192168169028","VM192168169029"] |
onlineTime | Integer | 必须 | 无 | 控制时长,单位:秒;1~2147483647 | 300 |
grantControl | String | 必须 | 无 | 控制模式: CONTROL,可控制; WATCH:只能观看 |
WATCH |
返回参数
名称 | 类型 | 是否必须 | 备注 | 示例值 |
---|---|---|---|---|
code | number | 非必须 | 响应码 | 0 |
data | object | 非必须 | 返回信息 | |
├─successList | object[] | 非必须 | 获取成功的列表 | [ {"instanceCode": "VM192168169028", "serverToken": "50b13132bb394901f151bc45"} ] |
├──instanceCode | String | 非必须 | 实例编码 | "VM192168169028" |
├──serverToken | String | 非必须 | 服务端token | "50b13132bb394901f151bc45" |
├─errorList | object[] | 非必须 | 获取失败的列表 | [ {"instanceCode": "VM192168169028", "errorMsg": "实例不存在"} ] |
├──instanceCode | String | 非必须 | 实例编码 | "VM192168169028" |
├──errorMsg | String | 非必须 | 错误信息 | "实例不存在" |
msg | string | 非必须 | 响应消息 | OK |
ts | number | 非必须 | 响应时间戳 | 1658393762049 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"msg": "OK",
"data": {
"successList": [
{
"instanceCode": "VM192168169027",
"serverToken": "50b13132bb394901f151bc45"
}
],
"errorList": [
{
"instanceCode": "VM192168169028",
"errorMsg": "实例不存在"
},
{
"instanceCode": "VM192168169029",
"errorMsg": "实例不存在"
}
]
},
"ts": "1658455442690"
}
异常示例
{
"code": 11101118,
"msg": "商户类型错误,只允许云手机客户使用",
"ts": "1658455442690"
}
获取授权serverToken
基本信息
URL
https://platform.armvm.com/auth/instance/authorized-server-token
请求格式
POST
版本号
3
使用场景
用于实例授权场景,将已连接的云手机授权给其他用户使用,支持主用户和授权用户可同时使用
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
uuid | String | 必须 | 用户唯一标识 | 89e87993500e424ab0de340da6f3599e | |
instanceCode | String | 必须 | 实例编号 | VM192168169028 | |
onlineTime | Integer | 必须 | 授权使用时间,单位:秒 | 3600 | |
grantControl | String | 必须 | 控制模式: CONTROL,可控制; WATCH:只能观看 |
CONTROL |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
data | Object | 必须 | |||
├─serverToken | String | 必须 | 服务端token | 50b13132bb394901f151bc45 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168169028 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"instanceCode": "VM192168169028",
"serverToken": "c5039adcda344cebb748e94644fbc68f5"
},
"msg": "OK",
"ts": "1694584934947"
}
异常示例
{
"code": 11103270,
"msg": "实例暂未被使用,不能对该实例申请授权",
"ts": 1601192809490
}
{
"code": 11103271,
"msg": "当前实例授权连接个数已达上限",
"ts": 1601192809490
}
实例解绑
基本信息
URL
请求格式
POST
版本号
3
使用场景
根据申请实例时传参的serverToken来释放实例。
请求参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
uuid | String | 必须 | 无 | 用户唯一标识。uuid是用来区分真实用户的唯一标识,必须与申请serverToken时的uuid一致 | 89e87993500e424ab0de340da6f3599e |
serverToken | String | 必须 | 无 | 申请实例时传入的serverToken | 50b13132bb394901f151bc45 |
返回参数
名称 | 类型 | 是否必须 | 备注 | 示例值 |
---|---|---|---|---|
code | number | 非必须 | 响应码 | 0 |
data | object | 非必须 | 返回信息 | |
msg | string | 非必须 | 响应消息 | OK |
ts | number | 非必须 | 响应时间戳 | 1658393762049 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {},
"msg": "OK",
"ts": "1658455442690"
}
异常示例
{
"code": 11102027,
"msg": "serverToken无效",
"ts": "1658455442690"
}
新增实例到期时间
基本信息
URL
https://platform.armvm.com/resources/instance/expire-time-increase
请求格式
POST
版本号
3
使用场景
按分钟数新增实例的到期时间
请求参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
serverTokens | String[] | 必须 | 无 | 绑定的serverToken值 | ['021c6bee611b4d27aeb3de240d7144055'] |
time | Integer | 必须 | 无 | 新增的时长,单位:分钟,范围:[1, 5256000] | 1000 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 返回状态,0-成功 | 0 | |
data | Object | 非必须 | |||
├─ failList | String[] | 必须 | 续时失败的serverToken值 | ||
msg | String | 必须 | 返回信息 | success | |
ts | Long | 必须 | 接口返回时时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"data": {
"failList": []
},
"code": 0,
"msg": "OK",
"ts": "1702454509182"
}
异常示例
{
"code": 11102027,
"msg": "serverToken无效",
"ts": "1702458796121"
}
更新实例到期时间
基本信息
URL
https://platform.armvm.com/resources/instance/expire-time-update
请求格式
POST
版本号
3
使用场景
更新实例的到期时间
请求参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
serverTokens | String[] | 必须 | 无 | 绑定的serverToken值 | ['021c6bee611b4d27aeb3de240d7144055'] |
expireTime | Long | 必须 | 无 | 新的到期时间(时间戳) | 1704038400000 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 返回状态,0-成功 | 0 | |
data | Object | 非必须 | |||
├─ failList | String[] | 必须 | 续时失败的serverToken值 | ||
msg | String | 必须 | 返回信息 | success | |
ts | Long | 必须 | 接口返回时时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"data": {
"failList": []
},
"code": 0,
"msg": "OK",
"ts": "1702454509182"
}
异常示例
{
"code": 11102027,
"msg": "serverToken无效",
"ts": "1702458796121"
}
查询实例的所有绑定信息
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCodes | String[] | 必须 | 实例编码集合,集合长度在200内(包含200) | ["VM192168001001","VM192168001002"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 | |
---|---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | ||
data | Object[] | 非必须 | ||||
├─instanceCode | String | 非必须 | 实例编号 | VM011101100190 | ||
├─serverToken | String | 非必须 | serverToken | 49b1f2943e04468383b10e4acafaad2d5 | ||
├─uuid | String | 非必须 | 用户uid | 72f4d5bc0036 | ||
├─businessType | String | 非必须 | 绑定业务类型:cloud_phone-云手机;cloud_app-云游戏;oem-OEM | cloud_phone | ||
├─bindTime | Long | 非必须 | 绑定时间 | 1734578634443 | ||
├─expireTime | Long | 非必须 | 到期时间 | 1735587244443 | ||
├─controlStatus | String | 非必须 | 受控状态:online-非受控,control-受控 | online | ||
├─grantControl | String | 非必须 | 控制权:CONTROL-可控制,WATCH-仅观看 | CONTROL | ||
├─instanceControlTime | Long | 非必须 | 最近受控时间 | 1734578795543 | ||
msg | String | 非必须 | 响应消息 | |||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"data": [
{
"instanceCode": "VM011101100190",
"serverToken": "49b1f2943e04468383b10e4acafaad2d5",
"uuid": "72f4d5bc0036",
"businessType": "cloud_phone",
"bindTime": 1734578634443,
"expireTime": 1735587244443,
"controlStatus": "online",
"grantControl": "CONTROL",
"instanceControlTime": null
}
],
"code": 0,
"msg": "OK",
"ts": "1734578646712"
}
异常示例
{
"code": 11103062,
"msg": "实例不存在",
"ts": "1734578806958"
}
解绑实例的所有绑定信息
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCodes | String[] | 必须 | 实例编码集合,集合长度在200内(包含200) | ["VM192168001001","VM192168001002"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 | |
---|---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | ||
data | Object | 非必须 | ||||
msg | String | 非必须 | 响应消息 | |||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"data": {},
"code": 0,
"msg": "OK",
"ts": "1734578060146"
}
异常示例
{
"code": 11103062,
"msg": "实例不存在",
"ts": "1734578078843"
}
{
"code": 11103397,
"msg": "实例存在云游戏或OEM的绑定信息,暂不支持调用此接口解绑",
"ts": "1734578136525"
}
基础能力相关接口
分页查询实例信息
基本信息
URL
请求格式
POST
版本号
3
使用场景
根据查询条件分页获取实例列表信息。
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
page | Integer | 非必须 | 1 | 页码,默认值1,最小1页(包含1页) | 1 |
rows | Integer | 非必须 | 200 | 每页记录数,默认值200,最小1条(包含1条),最大1000条(包含1000条) | 10 |
instanceCodes | String[] | 非必须 | 实例编码集合,集合长度在200内(包含200) | VM192168001001 | |
merchantPoolNos | Long[] | 非必须 | 实例池编号集合,集合长度在50内(包含50) | 1,2 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
data | Object | 非必须 | |||
├─total | Integer | 必须 | 总数 | 20 | |
├─totalPage | Integer | 必须 | 总页码 | 2 | |
├─page | Integer | 必须 | 页码 | 1 | |
├─rows | Integer | 必须 | 每页数量 | 10 | |
├─pageData | Object [] | 必须 | |||
├───instanceCode | String | 必须 | 实例编号 | VM192168001001 | |
├───instanceGrade | String | 必须 | 实例开数 | 1 | |
├───serverType | String | 必须 | 实例服务器类型 | R3 | |
├───idcCode | String | 必须 | 机房编码 | GZ-IDC-TEST-01 | |
├───availableStatus | String | 必须 | 可分配状态 available 可分配 unavailable 不可分配 |
available | |
├───usableStatus | String | 必须 | 可用状态 usable 可用 unusable 不可用 |
usable | |
├───bindStatus | String | 必须 | 绑定状态 bindable 可绑定 bound 已绑定 |
bindable | |
├───controlStatus | String | 必须 | 控制状态 online 在线 control 受控 |
online | |
├───instanceIp | String | 必须 | 实例ip | 11.11.198.77 | |
├───deviceCode | String | 必须 | 物理机编号 | GZNX-IDC_DM011010099026 | |
├───imageVersionId | Long | 非必须 | 镜像版本ID | 10001 | |
├───memoryLimit | Integer | 非必须 | 内存限额,单位:MB | 1024 | |
├───instanceStatus | String | 非必须 | 实例在线状态,0-离线,1-在线 | 1 | |
├───deviceStatus | String | 非必须 | 物理机在线状态,0-离线,1-在线 | 1 | |
msg | String | 必须 | 响应消息 | ||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"total": 1,
"totalPage": 1,
"page": 1,
"rows": 10,
"pageData": [
{
"instanceCode": "VM192168232001",
"instanceGrade": "1",
"serverType": "R3",
"idcCode": "GZ-IDC-TEST-01",
"availableStatus": "available",
"usableStatus": "usable",
"bindStatus": "bindable",
"controlStatus": "online",
"instanceIp": "11.11.198.77",
"deviceCode": "GZNX-IDC_DM011010099026",
"imageVersionId": 10001,
"memoryLimit": 1024,
"instanceStatus": "1",
"deviceStatus": "1"
}
]
},
"msg": "",
"ts": 1601021167163
}
客户实例汇总数据查询
基本信息
URL
请求格式
POST
版本号
3
使用场景
客户可以通过该接口来实时查询当前所有机房下的总实例数、可用实例数和已绑定的实例数。
请求参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
merchantPoolNo | Long | 非必须 | 无 | 实例池编号 | 1 |
includeSubPool | Boolean | 非必须 | true | 是否包含子实例池 | true-包含子实例池,false-不包含子实例池 |
merchantPoolNo与includeSubPool的使用
merchantPoolNo | includeSubPool | 筛选实例范围 |
---|---|---|
null | null 或 true | 当前商户的所有可用实例 |
null | false | 当前商户顶级实例池中的可用实例 |
100 | null 或 true | 当前商户实例池编号为100的实例池及下层子实例池中的可用实例 |
100 | false | 当前商户实例池编号为100的实例池中的可用实例 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 返回状态,0-成功 | 0 | |
data | Object | 必须 | |||
├─ totalData | Object | 必须 | 实例总数信息 | ||
├─├─ totalInstanceCount | Integer | 必须 | 总数 | 10 | |
├─├─ idcList | Object[] | 必须 | 机房列表 | ||
├─├─├─ idcName | String | 必须 | 机房名称 | 广州机房 | |
├─├─├─ idcCode | String | 必须 | 机房编码 | IDC-GZ | |
├─├─├─ instanceCount | Integer | 必须 | 数量 | 10 | |
├─ availableData | Object | 必须 | 可用实例总数 | ||
├─├─ totalInstanceCount | Integer | 必须 | 总数 | 5 | |
├─├─ idcList | Object[] | 必须 | 机房列表 | ||
├─├─├─ idcName | String | 必须 | 机房名称 | 广州机房 | |
├─├─├─ idcCode | String | 必须 | 机房编码 | IDC-GZ | |
├─├─├─ instanceCount | Integer | 必须 | 数量 | 5 | |
├─ boundData | Object | 必须 | 已绑定实例总数 | ||
├─├─ totalInstanceCount | Integer | 必须 | 总数 | ||
├─├─ idcList | Object[] | 必须 | 机房列表 | ||
├─├─├─ idcName | String | 必须 | 机房名称 | 广州机房 | |
├─├─├─ idcCode | String | 必须 | 机房编码 | IDC-GZ | |
├─├─├─ instanceCount | Integer | 必须 | 数量 | 5 | |
msg | String | 必须 | 返回信息 | success | |
ts | Long | 必须 | 接口返回时时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"msg": "success",
"ts": 1658455442690,
"data": {
"totalData": {
"totalInstanceCount": 10,
"idcList": [
{
"idcName": "广州机房",
"idcCode": "GZ-IDC-01",
"instanceCount": 10
}
]
},
"boundData": {
"totalInstanceCount": 5,
"idcList": [
{
"idcName": "广州机房",
"idcCode": "GZ-IDC-01",
"instanceCount": 5
}
]
},
"availableData": {
"totalInstanceCount": 5,
"idcList": [
{
"idcName": "广州机房",
"idcCode": "GZ-IDC-01",
"instanceCount": 5
}
]
}
}
}
机房未绑定实例数信息
基本信息
URL
请求格式
POST
版本号
3
请求参数
无
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
data | Object | 非必须 | |||
├─totalAvailableCount | Integer | 非必须 | 可用实例总数 | 20 | |
├─idcInfos | Object[] | 非必须 | |||
├───idcName | String | 必须 | 机房名称 | 广州机房 | |
├───idcCode | String | 必须 | 机房编码 | GZ-IDC-TEST-01 | |
├───availableCount | Integer | 必须 | 可用数量 | 1001 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"totalAvailableCount": 128,
"idcInfos": [
{
"idcName": "北京机房",
"idcCode": "BJ-1001",
"availableCount": 20
},
{
"idcName": "广州机房",
"idcCode": "GZ-10012",
"availableCount": 108
}
],
"msg": "",
"ts": 1601021167163
}
}
异常示例
机房已绑定实例数信息
基本信息
URL
https://platform.armvm.com/monitor/pad/enable-bind-count.html
请求格式
POST
版本号
3
请求参数
无
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
data | Object | 非必须 | |||
├─totalEnableBindCount | Integer | 非必须 | 客户已绑定的设备数 | 20000 | |
├─idcInfos | Object[] | 非必须 | |||
├───idcName | String | 必须 | 机房名称 | 广州机房 | |
├───idcCode | String | 必须 | 机房编码 | GZ-IDC-TEST-01 | |
├───enableBindCount | Integer | 必须 | 机房的已绑定的设备数 | 999 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"totalEnableBindCount": 2000,
"idcInfos": [
{
"idcName": "北京机房",
"idcCode": "BJ-1001",
"enableBindCount": 1001
},
{
"idcName": "广州机房",
"idcCode": "GZ-10012",
"enableBindCount": 999
}
],
"msg": "",
"ts": 1601021167163
}
}
异常示例
实例截图
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
padCodes | String[] | 必须 | ["VM192168043080", "VM192168043091"] | ||
quality | Integer | 非必须 | 3 | 枚举值:1,2,3,表示截图质量。 其中,1:高质量,2:中质量,3低质量 |
3 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object[] | 非必须 | |||
├─taskId | Integer | 必须 | 任务ID | 1001 | |
├─padCode | String | 必须 | 实例编号 | VM192168043091 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": [
{
"taskId": 1001,
"padCode": "VM192168043080"
},
{
"taskId": 1002,
"padCode": "VM192168043091"
}
],
"msg": "",
"ts": 1668572148662
}
异常示例
{
"code":11103062,
"msg":"实例不存在",
"ts":"1668586771490"
}
实例截图结果查询
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskIds | Integer[] | 必须 | 任务ID集合 | [1001, 1002] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object[] | 非必须 | |||
├─taskId | Integer | 必须 | 任务ID | 1001 | |
├─padCode | String | 必须 | 实例编号 | VM192168043091 | |
├─taskStatus | Integer | 必须 | 截图任务状态,枚举值6,7,8。其中,6:截图中,7:截图成功,8:截图失败 | 7 | |
├─url | String | 必须 | 截图下载URL | ||
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": [
{
"taskId": 1001,
"padCode": "VM192168043080",
"taskStatus": 7,
"url":"https://platform.armvm.com/files/screenshot/6a8030673f534b9c948c58b51c615553.png"
},
{
"taskId": 1002,
"padCode": "VM192168043091",
"taskStatus": 7,
"url":"https://platform.armvm.com/files/screenshot/6a8030673f534b9c948c58b51c615555.png"
}
],
"msg": "",
"ts": 1668572148662
}
异常示例
{
"code":11109015,
"msg":"操作失败,请输入正确的任务ID",
"ts":"1668584368093"
}
创建流量查询任务
基本信息
URL
请求格式
POST
版本号
3
使用场景
创建流量查询任务,查询给定实例集合的流量或宽带计费汇总,查询时间范围限制为只能查询2小时以前60天以内的数据。
具有最大任务创建数限制,超过限制时,需要等待前面的任务执行完毕后才能创建新的查询任务。
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCodes | String[] | 必须 | 实例列表集合 | ["VM011021103175"] | |
startTime | String | 必须 | 查询开始时间(必须为小时整点时间),格式为yyyy-MM-dd hh:mm:ss | 2023-02-23 18:00:00 | |
endTime | String | 必须 | 查询结束时间(必须为小时整点时间),格式为yyyy-MM-dd hh:mm:ss, | 2023-02-23 18:00:00 | |
billingType | String | 必须 | 计费类型,枚举类型:FLOW(流量计费)、PEEK_PERCENT_100(峰值带宽计费)、PEEK_PERCENT_95(95峰值带宽计费) | FLOW | |
taskDesc | String | 非必须 | 任务描述 | "2023年2月份流量计费汇总" |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 返回状态,0-成功 | 0 | |
data | Object | 必须 | |||
├─ taskId | String | 必须 | 任务ID | "89695" | |
msg | String | 必须 | 返回信息 | ||
ts | Long | 必须 | 接口返回时时间戳 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"msg": "OK",
"data": [
{
"taskId": "89695",
},
],
"ts": "1658455442690"
}
异常示例
{
"code": 11100064,
"msg": "查询开始时间不能早于前60天",
"ts": 1601192809490
}
{
"code": 11100065,
"msg": "查询结束时间只能到2小时以前",
"ts": 1601192809490
}
{
"code": 11109021,
"msg": "当前已有%s个查询任务正在执行,超过任务个数限制,请稍后再试",
"ts": 1601192809490
}
{
"code": 11100050,
"msg": "系统异常,请联系客服人员",
"ts": 1601192809490
}
获取流量查询任务结果
基本信息
URL
https://platform.armvm.com/distribute/task/query-flow-result
请求格式
POST
版本号
3
使用场景
创建流量查询任务后,用返回的taskId调用该接口获取流量查询任务的结果
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | String | 必须 | 任务ID | "89695" |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 返回状态,0-成功 | 0 | |
data | Object | 必须 | |||
├─ taskId | String | 必须 | 任务ID | "89695" | |
├─ taskDesc | String | 必须 | 创建任务传入的任务描述 | "2023年2月份流量计费汇总" | |
├─billingType | String | 必须 | 计费类型 | "FLOW" | |
├─taskStatus | String | 必须 | 任务状态,INIT 初始化, PROCESSING 处理中, SUCCESS 成功, NOT_EXIST 不存在, FAIL 失败; | "SUCCESS" | |
├─ msg | String | 非必须 | 任务失败时,描述失败原因 | ||
├─ billingValue | Double | 必须 | 计费值,成功状态时有值,流量(单位byte)或带宽(单位bps) | 100.0 | |
├─ bandwidthList | Object[] | 非必须 | 带宽明细列表 | ||
├─ ├─ recordTime | Long | 必须 | 记录时间(毫秒时间戳) | 1676020200000 | |
├─ ├─ send | Double | 必须 | 发送数据,单位:bps | 50.0 | |
├─ ├─ receive | Double | 必须 | 接收数据,单位:bps | 50.0 | |
msg | String | 必须 | 返回信息 | ||
ts | Long | 必须 | 接口返回时时间戳 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"msg": "OK",
"data": {
"msg": "",
"billingValue": 100.0,
"taskStatus": "SUCCESS",
"billingType": "FLOW",
"taskId": "89695",
"taskDesc": "2023年2月份流量计费汇总",
"bandwidthList": [
{
"recordTime": 1676020200000,
"receive": 50.0,
"send": 50.0
}
]
},
"ts": "1658455442690"
}
异常示例
{
"code": 11108002,
"msg": "请输入正确的任务ID",
"ts": 1601192809490
}
{
"code": 11100050,
"msg": "系统异常,请联系客服人员",
"ts": 1601192809490
}
上传文件到实例
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCodes | String[] | 必须 | 实例编号集合 | ["VM192168043080", "VM192168043091"] | |
fileUrl | String | 必须 | 文件URL | http://platform.armvm.com/test.apk |
|
fileName | String | 必须 | 文件名称 | test.apk | |
fileMd5 | String | 必须 | 文件MD5摘要 | 185da05e944e869ebf077d6217d3efe9 | |
autoInstall | Integer | 非必须 | 枚举值:0,1,表示是否选择自动安装,仅上传apk时生效。 其中,0:不自动安装,1:自动安装 |
0 | |
customizeFilePath | String | 非必须 | 上传到实例的自定义路径 | /tmp/files/ |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object[] | 非必须 | |||
├─taskId | Long | 必须 | 任务ID | 1001 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168043091 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": [
{
"taskId": 1001,
"instanceCode": "VM192168043080"
},
{
"taskId": 1002,
"instanceCode": "VM192168043091"
}
],
"msg": "",
"ts": 1668572148662
}
异常示例
{
"code":11103062,
"msg":"实例不存在",
"ts":1668586771490
}
{
"code":11103082,
"msg":"自定义路径禁止包含[.]或空格",
"ts":1668586771490
}
实例截图
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
padCodes | String[] | 必须 | 实例编号集合 | ["VM192168043080", "VM192168043091"] | |
scriptContent | String | 必须 | 脚本内容 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object[] | 非必须 | |||
├─taskId | Long | 必须 | 任务ID | 1001 | |
├─padCode | String | 必须 | 实例编号 | VM192168043091 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": [
{
"taskId": 1001,
"padCode": "VM192168043080"
},
{
"taskId": 1002,
"padCode": "VM192168043091"
}
],
"msg": "",
"ts": 1668572148662
}
异常示例
{
"code":11103062,
"msg":"实例不存在",
"ts":"1668586771490"
}
实例备份
基本信息
对云手机实例进行数据备份,生成一份快照数据保存到对象存储中,之后可以通过实例还原功能将快照数据恢复到云手机实例中。
备份还原会产生大量流量,请谨慎使用外网的对象存储服务。
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCode | String | 必须 | 实例编号 | VM192168001001 | |
snapshotName | String | 必须 | 快照名称 | VM192168001001_0925 | |
ossConfig | Object | 必须 | 对象存储配置,需要支持s3协议 | ||
├─endpoint | String | 必须 | 对象存储endpoint | s3.bj.bcebos.com | |
├─bucket | String | 必须 | 对象存储bucket | test | |
├─accessKey | String | 必须 | 对象存储accessKey | ATqjcosksxz | |
├─secretKey | String | 必须 | 对象存储secretKey | sdfaweradfg | |
├─protocol | String | 必须 | 对象存储访问协议:http, https | https | |
snapshotPath | String | 非必须 | / | 快照数据保存在对象存储的路径,不传则默认保存在根目录"/"下 | /snapshot/data/ |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object | 必须 | |||
├─taskId | Long | 必须 | 任务ID | 100000 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168001001 | |
├─snapshotId | Long | 必须 | 快照id | 7290017192180314133 | |
├─snapshotName | String | 必须 | 快照名称 | VM192168001001_0925 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data":[
{
"taskId": 100000,
"instanceCode": "VM192168001001",
"snapshotId": 7290017192180314133,
"snapshotName": "VM192168001001_0925"
}
],
"msg": "",
"ts": 1601188620078
}
异常示例
{
"code": 11103062,
"msg": "实例不存在",
"ts": 1601021167163
}
实例还原
基本信息
将已备份成功的快照数据恢复到指定的云手机实例。
备份还原会产生大量流量,请谨慎使用外网的对象存储服务。
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
snapshotId | Long | 必须 | 快照ID | 7290017192180314133 | |
instanceCodes | String[] | 必须 | 实例编号集合,最多200个 | ["VM192168001001"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object[] | 必须 | |||
├─taskId | Long | 必须 | 任务ID | 100000 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168001001 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data":[
{
"taskId": 100000,
"instanceCode": "VM192168001001"
}
],
"msg": "",
"ts": 1601188620078
}
异常示例
{
"code": 11108050,
"msg": "实例快照未完成创建",
"ts": 1601021167163
}
分页查询实例快照信息
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
snapshotIds | Long[] | 非必须 | 快照ID集合 | [7290017192180314133] | |
snapshotName | String | 非必须 | 快照名称,可模糊查询 | ||
snapshotStatus | String | 非必须 | 快照状态: wait_create-待创建 creating-创建中 create_success-创建成功 create_failed-创建失败 |
create_success | |
page | Integer | 必须 | 页码 | 1 | |
rows | Integer | 必须 | 每页条数,最多200 | 10 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
data | Object | 非必须 | |||
├─total | Integer | 必须 | 总数 | 20 | |
├─totalPage | Integer | 必须 | 总页码 | 2 | |
├─page | Integer | 必须 | 页码 | 1 | |
├─rows | Integer | 必须 | 每页数量 | 10 | |
├─pageData | Object [] | 必须 | |||
├───snapshotId | Long | 必须 | 快照ID | 7290017192180314133 | |
├───snapshotName | String | 必须 | 快照名称 | VM192168001001_0925 | |
├───snapshotStatus | String | 必须 | 快照状态: wait_create-待创建 creating-创建中 create_success-创建成功 create_failed-创建失败 |
create_success | |
msg | String | 必须 | 响应消息 | ||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"total": 1,
"totalPage": 1,
"page": 1,
"rows": 10,
"pageData": [
{
"snapshotId": 7290017192180314133,
"snapshotName": "VM192168001001_0925",
"snapshotStatus": "create_success"
}
]
},
"msg": "",
"ts": 1601021167163
}
异常示例
实例授权连接
基本信息
URL
请求格式
POST
版本号
3
使用场景
用于实例授权场景,将已连接的云手机授权给其他用户使用,支持主用户和授权用户可同时使用
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
uuid | String | 必须 | 用户唯一标识 | 89e87993500e424ab0de340da6f3599e | |
instanceCode | String | 必须 | 实例编号 | VM192168169028 | |
onlineTime | Integer | 必须 | 授权使用时间,单位:秒 | 3600 | |
grantControl | String | 必须 | 控制模式: CONTROL,可控制; WATCH:只能观看 |
CONTROL |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
data | Object | 必须 | |||
├─serverToken | String | 必须 | 服务端token | 50b13132bb394901f151bc45 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168169028 | |
├─streamModeList | String[] | 必须 | 推流方式配置 | ["1", "2"] | |
├─sessionId | String | 必须 | 会话id | 3WGVL2R7NQXUMKAAERANZXT003RNQRPZ | |
├─connData | String | 必须 | 连接信息(json格式) | ||
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"connData": {
"controlList": [
{
"controlCode": "TEST-TCP-CONTROL-242-bk",
"controlInfoList": [
{
"cmccLine": "",
"controlIp": "test.armvm.com",
"controlPort": 10038,
"ctLine": "",
"cuLine": "",
"traceServer": ""
}
]
}
],
"multiControlList": [
{
"multiControlCode": "multi-242",
"multiControlInfoList": [
{
"multiControlIp": "192.168.169.158",
"multiControlPort": 8080,
"traceServer": ""
}
]
}
],
"padCode": "VM192168169028",
"remoteList": [],
"screenList": [
{
"screenCode": "SCREEN-GZ-TEST001",
"screenInfoList": [
{
"bitrate": "50",
"fps": "20",
"gop": "5",
"resolution": "2048",
"screenIp": "127.0.0.1",
"screenPort": 80,
"traceServer": ""
}
]
}
],
"sessionExpireTime": "1694588533428",
"sessionId": "I0YUSI3Y9EX0BWF1JZF7XG4GG68ZE6VR",
"sessionInitTime": "1694584934428",
"webControlList": [
{
"webControlCode": "TEST-TCP-CONTROL-242-bk",
"webControlInfoList": [
{
"cmccLine": "",
"controlIp": "paas101.armvm.com",
"controlPort": 10040,
"ctLine": "",
"cuLine": "",
"traceServer": ""
}
]
}
],
"webRtcControlList": [
{
"controlCode": "TEST-TCP-CONTROL-242-bk",
"gateway": {
"cmccLine": "",
"ctLine": "",
"cuLine": "",
"gatewayIp": "paas101.armvm.com",
"gatewayPort": 8989
},
"webRtcControlInfoList": [
{
"controlIp": "192.168.170.242",
"controlPort": 10038,
"traceServer": ""
}
]
}
],
"webRtcMode": "",
"webScreenList": [
{
"webScreenCode": "SCREEN-GZ-TEST001",
"webScreenInfoList": [
{
"bitrate": "50",
"fps": "20",
"gop": "5",
"resolution": "2048",
"screenIp": "127.0.0.1",
"screenPort": 10036,
"traceServer": ""
}
]
}
]
},
"instanceCode": "VM192168169028",
"serverToken": "c5039adcda344cebb748e94644fbc68f5",
"sessionId": "I0YUSI3Y9EX0BWF1JZF7XG4GG68ZE6VR",
"streamModeList": [
"1",
"2"
]
},
"msg": "OK",
"ts": "1694584934947"
}
异常示例
{
"code": 11103270,
"msg": "实例暂未被使用,不能对该实例申请授权",
"ts": 1601192809490
}
{
"code": 11103271,
"msg": "当前实例授权连接个数已达上限",
"ts": 1601192809490
}
实例切换会话控制权
基本信息
URL
https://platform.armvm.com/resources/instance/session-control-switch
请求格式
POST
版本号
3
使用场景
切换已绑定实例的会话控制权
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
watchServerTokens | String[] | 非必须 | 需要切换成仅观看权限的serverToken集合;元素个数不能超过50 | ["39baa7d579034774af98da7cc449945c5","f209f26361bf487a9fdc88c88902753b5"] | |
controlServerTokens | String[] | 非必须 | 需要切换成可控制权限的serverToken集合;元素个数不能超过50 | ["39baa7d579034774af98da7cc449945c5","f209f26361bf487a9fdc88c88902753b5"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应码 | 0 | |
data | Object[] | 非必须 | 切换失败的serverToken和对应的失败信息 | ||
├─serverToken | String | 必须 | 切换失败的serverToken | 50b13132bb394901f151bc45 | |
├─errorMsg | String | 必须 | 切换失败原因 | serverToken无效 | |
msg | String | 必须 | 响应信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"data": [
{
"serverToken": "39baa7d579034774af98da7cc449945c5",
"errorMsg": "serverToken无效"
},
{
"serverToken": "f209f26361bf487a9fdc88c88902753b5",
"errorMsg": "同一个serverToken的权限切换期望不能同时为WATCH和CONTROL"
}
],
"code": 0,
"msg": "OK",
"ts": "1700721933096"
}
异常示例
{
"code": 11100003,
"msg": "watchServerTokens集合的元素个数不能大于50",
"ts": "1700721933096"
}
实例设置内存限额
基本信息
URL
请求格式
POST
版本号
3
使用场景
用于修改实例可以使用的内存上限值
请求参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCodes | String[] | 必须 | 实例编号集合(最多200个) | ["VM192168043080", "VM192168043091"] | |
memoryLimit | Integer | 非必须 | 内存限额值,单位MB(isLimit为true时,必须设置限额值) | 2048 | |
isLimit | Boolean | 必须 | 是否设置限额:true-限额|false-不限额 | true |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object[] | 非必须 | |||
├─taskId | Long | 必须 | 任务ID | 1001 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168043091 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": [
{
"taskId": 1001,
"instanceCode": "VM192168043080"
},
{
"taskId": 1002,
"instanceCode": "VM192168043091"
}
],
"msg": "",
"ts": 1668572148662
}
异常示例
{
"code":11103292,
"msg":"实例内存限额不能为空",
"ts":"1668584368093"
}
实例分辨率调整
基本信息
URL
请求格式
POST
版本号
3
注意
在使用1080p以上分辨率时,请确保您的设备的 manage-agent 版本为 4.27.0 或以上。您可以与 PMO 确认设备的 manage-agent 版本是否满足该要求。这样可以确保您的设备能够正常处理更高的分辨率。
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCodes | String [] | 必须 | 实例编号列表,最多200个 | ["VM192168001001"] | |
height | Integer | 必须 | 高 | 范围:300~4096 | |
width | Integer | 必须 | 宽 | 范围:300~4096 | |
fps | Integer | 必须 | 帧率 | 枚举:30/60/90 | |
dpi | Integer | 必须 | dpi | 范围:120~480 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object [] | 必须 | |||
├─taskId | Long | 必须 | 任务ID | 100000 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168001001 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data":[
{
"taskId": 100000,
"instanceCode": "VM192168001001"
}
],
"msg": "",
"ts": 1601188620078
}
异常示例
{
"code": 11103062,
"msg": "实例不存在",
"ts": 1601021167163
}
应用安装
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
appId | Integer | 必须 | 应用ID | 10001 | |
instanceCodes | String [] | 必须 | 云手机实例列表,最多200个 | ["VM192168001001"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object [] | 必须 | |||
├─taskId | Long | 必须 | 任务ID | 100000 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168001001 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data":[
{
"taskId": 100000,
"instanceCode": "VM192168001001"
}
],
"msg": "",
"ts": 1601188620078
}
异常示例
{
"code": 11103072,
"msg": "应用不存在",
"ts": 1601021167163
}
应用卸载
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
appId | Integer | 必须 | 应用ID | 10001 | |
instanceCodes | String [] | 必须 | 云手机实例列表,最多200个 | ["VM192168001001"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object [] | 必须 | |||
├─ | taskId | 必须 | 任务ID | 100000 | |
├─ | instanceCode | 必须 | 实例编号 | VM192168001001 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data":[
{
"taskId": 100000,
"instanceCode": "VM192168001001"
}
],
"msg": "",
"ts": 1601188620078
}
异常示例
{
"code": 11103072,
"msg": "应用不存在",
"ts": 1601021167163
}
内置应用安装
基本信息
URL
https://platform.armvm.com/resources/app/app-builtin-install
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
appId | Long | 必须 | 应用ID | 10001 | |
instanceCodes | String [] | 必须 | 云手机实例列表,最多200个 | ["VM192168001001"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object [] | 必须 | |||
├─taskId | Long | 必须 | 任务ID | 100000 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168001001 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data":[
{
"taskId": 100000,
"instanceCode": "VM192168001001"
}
],
"msg": "",
"ts": 1601188620078
}
异常示例
{
"code": 11103072,
"msg": "应用不存在",
"ts": 1601021167163
}
内置应用卸载
基本信息
URL
https://platform.armvm.com/resources/app/app-builtin-uninstall
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
appId | Long | 必须 | 应用ID | 10001 | |
instanceCodes | String [] | 必须 | 云手机实例列表,最多200个 | ["VM192168001001"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object [] | 必须 | |||
├─ | taskId | 必须 | 任务ID | 100000 | |
├─ | instanceCode | 必须 | 实例编号 | VM192168001001 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data":[
{
"taskId": 100000,
"instanceCode": "VM192168001001"
}
],
"msg": "",
"ts": 1601188620078
}
异常示例
{
"code": 11103072,
"msg": "应用不存在",
"ts": 1601021167163
}
应用启停
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
padCodes | String [] | 必须 | 实例编号,上限200个 | VM192168169029 | |
├─ | 非必须 | ||||
operateType | String | 必须 | 枚举:start、stop | start | |
packageName | String | 必须 | 应用包名 | com.demo.app |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
data | Object [] | 必须 | |||
├─padCode | String | 必须 | 实例编号 | VM192168001001 | |
├─taskId | String | 必须 | 任务id | "10001" | |
msg | String | 非必须 | 响应消息 | ||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"total": 1,
"pageData": [
{
"padCode": "VM192168232001",
"padStatus": "0",
"idcCode": "GZ-IDC-TEST-01",
"padGrade": "1",
"apps": [
1000016516
]
}
],
"totalPage": 1,
"page": 1,
"rows": 10
},
"msg": "",
"ts": 1601021167163
}
异常示例
{
"code": -1,
"msg": "实例[VM19216801100]不存在",
"ts": 1601021202058
}
应用上传(新版)
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
appId | Long | 必须 | 应用ID | 1 | |
appName | String | 必须 | 应用名称,字符长度最长为64 | appTest | |
appPackageName | String | 必须 | 应用包名 ,字符长度最长为255 | com.demo.app | |
appUrl | String | 必须 | 应用下载地址 | https://www.demo.com/demo/download |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
msg | String | 非必须 | 响应消息 | ok | |
data | Object | 非必须 | 响应结果 | ||
├─ applicationVersionId | Long | 必须 | 应用版本ID | ||
├─ appId | Long | 必须 | 应用ID | ||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"msg": "ok",
"ts": 1601021167163
}
异常示例
{
"code": 11103153,
"msg": "AppId不能重复",
"ts": 1601021202058
}
应用更新
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
appId | Long | 必须 | 应用ID | 1 | |
appName | String | 必须 | 应用名称,字符长度最长为64 | appTest | |
appPackageName | String | 必须 | 应用包名 ,字符长度最长为255 | com.demo.app | |
appUrl | String | 必须 | 应用下载地址 | https://www.demo.com/demo/download |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
msg | String | 非必须 | 响应消息 | ok | |
data | Object | 非必须 | 响应结果 | ||
├─ applicationVersionId | Long | 必须 | 应用版本ID | ||
├─ appId | Long | 必须 | 应用ID | ||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"msg": "ok",
"ts": 1601021167163
}
异常示例
{
"code": 11103153,
"msg": "AppId不能重复",
"ts": 1601021202058
}
应用上传
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
apps | Object [] | 必须 | 应用数量,上限10个 | ||
├─ appId | Long | 必须 | 应用ID | 1 | |
├─ appName | String | 必须 | 应用名称,字符长度最长为64 |
appTest | |
├─ pkgName | String | 必须 | 应用包名 ,字符长度最长为255 | com.demo.app | |
├─ url | String | 必须 | 应用下载地址 | https://www.demo.com/demo/download | |
├─ md5sum | String | 必须 | 应用文件的MD5 | ||
taskId | Long | 非必须 | 任务id,不填则使用系统生成的taskId | 000001 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
msg | String | 非必须 | 响应消息 | ok | |
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"msg": "ok",
"ts": 1601021167163
}
异常示例
{
"code": 11103153,
"msg": "AppId不能重复",
"ts": 1601021202058
}
分页查询应用列表
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
appId | Integer | 非必须 | 应用ID | 10001 | |
appPackage | String | 非必须 | 应用包名 | com.example.app | |
page | Integer | 必须 | 页码 | 1 | |
rows | Integer | 必须 | 每页条数 | 10 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | |
data | Object | 非必须 | |||
├─total | Integer | 必须 | 总数 | 20 | |
├─totalPage | Integer | 必须 | 总页码 | 2 | |
├─page | Integer | 必须 | 页码 | 1 | |
├─rows | Integer | 必须 | 每页数量 | 10 | |
├─pageData | Object [] | 必须 | |||
├───appId | Integer | 必须 | 应用id | 10001 | |
├───appName | String | 必须 | 应用名称 | 云手机 | |
├───appPackage | String | 必须 | 应用包名 | com.example.app | |
├───versionName | String | 必须 | 版本 | 1.0 | |
├───syncStatus | Integer | 必须 | 同步状态;0-未完成/终止同步,1-已完成同步 | 1 | |
├───releaseMarketStatus | Integer | 必须 | 是否已发布应用市场;0-未发布,1-已发布 | 1 | |
msg | String | 必须 | 响应消息 | OK | |
ts | Long | 必须 | 时间戳 | 1601021167163 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"total": 20,
"totalPage": 2,
"page": 1,
"rows": 10,
"pageData": [
{
"appId": 10001,
"appName": "云手机",
"appPackage": "com.example.app",
"versionName":"1.0",
"syncStatus":1,
"releaseMarketStatus":1
}
]
},
"msg": "",
"ts": 1601021167163
}
异常示例
{
"code": 11103072,
"msg": "应用不存在",
"ts": 1601021167163
}
桌面推荐图标刷新
基本信息
URL
https://platform.armvm.com/resources/instance/recommend-app-icon-refresh
请求格式
POST
版本号
3
使用场景
用于刷新并展示实例桌面推荐应用。该接口会先重置桌面,因此限制只能操作未绑定实例
注:该功能只适用于OEM镜像的云手机
请求参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCodes | String[] | 必须 | 实例编号集合 | ["VM192168043080", "VM192168043091"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object[] | 非必须 | |||
├─taskId | Long | 必须 | 任务ID | 1001 | |
├─instanceCode | String | 必须 | 实例编号 | VM192168043091 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": [
{
"taskId": 1001,
"instanceCode": "VM192168043080"
},
{
"taskId": 1002,
"instanceCode": "VM192168043091"
}
],
"msg": "",
"ts": 1668572148662
}
异常示例
{
"code":11103287,
"msg":"已绑定实例[VM192168043092]不能更新桌面推荐应用图标",
"ts":"1668584368093"
}
任务结果查询
基本信息
URL
https://platform.armvm.com/command/pad/execute-task-info.html
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskIds | Long[] | 必须 | 任务ID列表,最多200个 | [1001,1002] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object[] | 非必须 | |||
├─taskId | Long | 必须 | 任务ID | 1000 | |
├─padCode | String | 必须 | 实例编号 | VM192168169028 | |
├─taskStatus | Integer | 必须 | 任务状态, 5-待执行 6-执行中 7-执行成功 8-执行失败 |
7 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"msg": "OK",
"code": 0,
"data": [{
"padCode": "VM011010067010",
"taskId": 2813218757970419736,
"taskStatus": 7
}],
"ts": 1672820359299
}
异常示例
{
"code": 11108002,
"msg": "请输入正确的任务ID",
"ts": 1672820359299
}
获取ssh连接信息
基本信息
URL
请求格式
POST
版本号
3
使用场景
获取ssh连接信息
请求参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCode | String | 必须 | 无 | 实例编号 | VM011101102170 |
connectType | Integer | 必须 | 无 | 连接类型:1-ssh 2-adb | 1 |
liveTime | Integer | 必须 | 无 | 连接有效时间,单位:秒,范围:[1, 86400] | 600 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 返回状态,0-成功 | 0 | |
data | Object | 非必须 | |||
├─ sshInfo | Object | 必须 | ssh连接信息 | ||
├─ ├─ instanceCode | String | 必须 | 实例编号 | ||
├─ ├─ sshCommand | String | 必须 | 连接命令 | ||
├─ ├─ sshPwd | String | 必须 | 连接秘钥 | ||
├─ expireTime | Long | 必须 | 过期时间戳 | ||
msg | String | 必须 | 返回信息 | success | |
ts | Long | 必须 | 接口返回时时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"data": {
"sshInfo": {
"instanceCode": "VM011101102170",
"sshCommand": "ssh 11.101.102.170__62485__15920850610__1702456492@192.168.170.235 -p 17706",
"sshPwd": "XnoQiOuyAvTjL+YZG5pcM9qi4vOX1ZHga2EO4wBragMfD7NeDOJQPYjm4QRMJZkHDqFIVvufUYbpucGR0Tzvqg=="
},
"expireTime": "1702456492329"
},
"code": 0,
"msg": "OK",
"ts": "1702455888197"
}
异常示例
{
"code": 11109015,
"msg": "操作失败,实例不存在",
"ts": "1702458767487"
}
实例调度
基本信息
URL
请求格式
POST
版本号
3
使用场景
对实例进行实例池之间的调度
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
merchantPoolNo | Long | 必须 | 目标实例池Id | 10000 | |
autoReset | Boolean | 非必须 | false | 调度到子商户实例池时,是否自动执行恢复出厂设置 | true |
instanceCodes | String[] | 必须 | 需要进行调度的实例池编号;元素个数不能超过200 | ["VM192168001001","VM192168001002"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 响应码 | 0 | |
msg | String | 必须 | 响应信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"msg": "OK",
"ts": "1601188620078"
}
异常示例
{
"code": 11103180,
"msg": "实例池不存在",
"ts": "1601188620078"
}
获取同步截图url
基本信息
获取新的同步截图url,访问该url将从云手机实时获取截图
URL
https://platform.armvm.com/resources/instance/get-screenshot-url
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCodes | String[] | 必须 | 实例编号,最多200个 | ["VM192168169028"] | |
fullQuality | Integer | 非必须 | 100 | 截图质量数值 范围[1-100] | 100 |
scale | Integer | 非必须 | 288 | 缩放比,等比缩放截图 0为不缩放 最小值:0 最大值:720 | 288 |
rotate | Integer | 非必须 | 0 | 旋转角度 枚举:0,90,180,270 | 0 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object | 必须 | |||
├─successList | Object[] | 必须 | 成功的实例编号以及截图token | ||
├───screenshotUrl | String | 必须 | 截图地址 | https://zc-sync-cap.armvm.com:9809/op-agent/pad/screenshot?time=1727581342254&route=%2BAiT1Lts4RASs6sBCRRYvg%3D%3D&screenshotToken=xxx | |
├───instanceCode | String | 必须 | 实例编号 | VM192168169029 | |
├─expireTime | Long | 必须 | token到期时间(时间戳) | 1727667742254 | |
├─failList | String[] | 必须 | 失败的实例编号列表 | ["VM192168169028"] | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1727581342086 |
使用说明:
- 每次获取的url有效期为10分钟,不可指定,可联系PMO调整每次获取url的有效期,最长不超过24小时
- 使用GET请求screenshotUrl,将在云手机实时截取一张图片,并返回图片流
-
截图状态码说明:
状态码 说明 200 成功 404、500 请求错误,包括:篡改过URL参数 400 无效的url 401 用户ID校验失败 402 url已过期 403 url已被销毁 501 执行截图程序失败,需要设备端排查 502 设备端程序端口不通 503 截图超时 504 设备ping不通 505 设备空间不足 - 调用建议:将接口返回的screenshotUrl缓存起来,在到期或被销毁之前可一直请求,并且捕获402/403状态码以便重新获取新的同步截图url
请求示例
参考:调用方式
响应示例
{
"data": {
"successList": [
{
"instanceCode": "VM192168169029",
"screenshotUrl": "https://zc-sync-cap.armvm.com:9809/op-agent/pad/screenshot?time=1727581342254&route=%2BAiT1Lts4RASs6sBCRRYvg%3D%3D&screenshotToken=YEl6G8YsTUPcQW4cyauhXOt%2FpXz%2BTmlSrKQyIGzYZs4B02G3HbdOUDSy5BDICjMig6xjIm%2B%2Bn0PvKPTeL8jGU2nOCfZlwR2EmELYdT4k3nkYKfQJY8Xy6QSEuFCNWc2VmBRdackUoBtLOd2j4L9UuNq%2BAulH6%2FCW5trQiE0R%2B5JFh9rfsNkJ%2BqFggMLXno8fwnwjFlJ9q6TRD3SCRD1hXlvMDDhBWNeoJkjPUkocDZrU3U911z3VQA%3D%3D"
}
],
"failList": [],
"expireTime": 1727667742254
},
"code": 0,
"msg": "OK",
"ts": "1727581342086"
}
异常示例
{
"data": {
"successList": [],
"failList": [
"VM192168169029"
],
"expireTime": 1727582003554
},
"code": 0,
"msg": "OK",
"ts": "1727582003554"
}
销毁已获取的同步截图url
基本信息
销毁云手机当前所有的同步截图url
URL
https://platform.armvm.com/resources/instance/destroy-screenshot-url
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCode | String | 必须 | 实例编号 | VM192168169028 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object | 必须 | |||
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1727581342086 |
请求示例
参考:调用方式
响应示例
{
"data": {},
"code": 0,
"msg": "OK",
"ts": "1727581342086"
}
异常示例
{
"code": 11105017,
"msg": "截图url不存在或已销毁",
"ts": "1727586992599"
}
实例限速
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCodes | String[] | 必须 | 实例编码集合,集合长度在200内(包含200) | ["VM192168001001","VM192168001002"] | |
direction | String | 必须 | 限速类型,up-上行限速,down-下行限速 | up | |
speed | Double | 必须 | 外网限速,范围为0.2-1024,也可传入0取消限速 | 0.20 | |
intranetSpeed | Double | 非必须 | 内网限速,范围为1-1024,也可传入0取消限速 | 1.00 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 | |
---|---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | ||
data | Object[] | 非必须 | ||||
├─instanceCode | String | 必须 | 实例编码 | VM192168001001 | ||
├─taskId | String | 必须 | 任务编号 | "2840204519134814256" | ||
msg | String | 非必须 | 响应消息 | |||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"padCode": "VM192168041004",
"taskId": "2840204353481548485",
},
"msg": "ok",
"ts": 1663664302000
}
异常示例
{
"code": -1,
"msg": "实例编号不存在",
"ts": 1663664302000
}
系统镜像相关接口
查询公共镜像
基本信息
URL
https://platform.armvm.com/resources/instance-base-image/list
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
serverType | String | 非必须 | 实例服务器类型: G4|G6|R1|R2|R3 |
G4 | |
romVersion | String | 非必须 | 系统版本: android6.0 android8.1 android10.0 android12.0 android13.0 |
android8.1 | |
imageVersionIds | Long[] | 非必须 | 镜像版本id,最多200个 | [5] | |
page | Integer | 必须 | 页码,最小值为1 | 1 | |
rows | Integer | 必须 | 每页条数,最小值为1,最大值为200 | 200 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object [] | 必须 | |||
├─ total | Integer | 必须 | 总数 | 20 | |
├─ totalPage | Integer | 必须 | 总页码 | 2 | |
├─ page | Integer | 必须 | 当前页码 | 1 | |
├─ rows | Integer | 必须 | 每页数量 | 10 | |
├─ pageData | Object[] | 非必须 | |||
├─── imageVersionId | Long | 必须 | 镜像版本ID | 5 | |
├─── imageVersionName | Long | 必须 | 镜像版本名称 | 5 | |
├─── serverType | String | 必须 | 实例服务器类型 | G4 | |
├─── romVersion | String | 必须 | 系统版本 | android8.1 | |
├─── createTime | Long | 必须 | 上传时间(时间戳) | 1601188620078 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"total": 1,
"totalPage": 1,
"page": 1,
"rows": 10,
"pageData": [
{
"imageVersionId": "5",
"imageVersionName": "baidu_phone_845_aosp8.1_v2.4.0_20240130172159.tar.gz",
"serverType": "G4",
"romVersion": "android8.1",
"createTime": 1716819459335
}
]
},
"msg": "",
"ts": 1601021167163
}
查询自定义镜像
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
page | Integer | 非必须 | 1 | 页码,最小值为1 | 1 |
rows | Integer | 非必须 | 200 | 每页条数,最小值为1,最大值为200 | 200 |
imageVersionId | Long | 非必须 | 镜像版本id | 10001 | |
imageVersionIds | Long[] | 非必须 | 镜像版本id,最多200个 | [10001,10002] | |
serverType | String | 非必须 | 实例服务器类型: G4|G6|R1|R2|R3 |
G4 | |
romVersion | String | 非必须 | 系统版本: android6.0 android8.1 android10.0 android12.0 android13.0 |
android8.1 | |
imageVersionName | String | 非必须 | 镜像版本名称,模糊查询 | xxx |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object [] | 必须 | |||
├─ total | Integer | 必须 | 总数 | 20 | |
├─ totalPage | Integer | 必须 | 总页码 | 2 | |
├─ page | Integer | 必须 | 当前页码 | 1 | |
├─ rows | Integer | 必须 | 每页数量 | 10 | |
├─ pageData | Object[] | 非必须 | |||
├─── imageVersionId | Long | 必须 | 镜像版本ID | 10001 | |
├─── imageUploadStatus | String | 必须 | 镜像上传状态,wait_execute|executing:执⾏中|success:成功|fail:失败 | success | |
├─── serverType | String | 必须 | 实例服务器类型 | G4 | |
├─── romVersion | String | 必须 | 系统版本 | android8.1 | |
├─── imageFiles | Object[] | 必须 | 镜像文件信息 | ||
├───── imageFileUrl | String | 必须 | 镜像⽂件下载地址 | http://xxx.img | |
├───── imageFileName | String | 必须 | 镜像⽂件名称(带后缀) | root_aosp10_xx.img | |
├───── imageFileType | String | 必须 | odm_aosp root_aosp system_aosp vendor_aosp super_aosp |
root_aosp | |
├───── imageFileMd5 | String | 必须 | 镜像⽂件md5值 | xxxxxxx | |
├─── baseImageVersionId | Long | 必须 | 镜像底包ID | 5 | |
├─── imageVersionName | String | 必须 | 镜像版本名称 | xxx | |
├─── describe | String | 必须 | 镜像版本描述 | xxx | |
├─── createTime | Long | 必须 | 上传时间(时间戳) | 1601188620078 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"total": 1,
"totalPage": 1,
"page": 1,
"rows": 10,
"pageData": [
{
"imageVersionId": 10001,
"imageUploadStatus": "success",
"serverType": "G4",
"romVersion": "android8.1",
"imageFiles": [
{
"imageFileUrl": "https://baidu.com/armvm/root-v15.img",
"imageFileName": "root_aosp-v15.img",
"imageFileType": "root_aosp",
"imageFileMd5": "20d41ecb84d86667525a8a02d0102f2b"
},
{
"imageFileUrl": "https://baidu.com/armvm/system-v15.img",
"imageFileName": "system_aosp-v15.img",
"imageFileType": "system_aosp",
"imageFileMd5": "22aca472f2d66551f197ff14de8618f3"
}
],
"baseImageVersionId": 5,
"imageVersionName": "xxx",
"describe": "xxx",
"createTime": 1601021167163
}
]
},
"msg": "",
"ts": 1601021167163
}
上传自定义镜像
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
imageFiles | Object[] | 必须 | 镜像⽂件信息,最多20个 | ||
├─ imageFileUrl | String | 必须 | 镜像⽂件下载地址 | http://xxx.img | |
├─ imageFileName | String | 必须 | 镜像⽂件名称。 镜像⽂件名称需要以镜像⽂件类型为前缀,⽐如说root_aosp类型的就需要以root_aosp开头命名,如root_aosp_xx.img ; 如果是安卓12,在⽂件类型后⾯应该带f2fs,如system_aosp_f2fs_xxx.img |
root_aosp10_xx.img | |
├─ imageFileType | String | 必须 | odm_aosp root_aosp system_aosp vendor_aosp super_aosp |
root_aosp | |
├─ imageFileMd5 | String | 必须 | 镜像⽂件md5值 | xxxxxxx | |
serverType | String | 必须 | 实例服务器类型: G4|G6|R1|R2|R3 |
G4 | |
romVersion | String | 必须 | 系统版本: android6.0 android8.1 android10.0 android12.0 android13.0 |
android8.1 | |
baseImageVersionId | Long | 非必须 | 镜像底包ID | 5 | |
imageVersionName | String | 必须 | 镜像版本名称,最多50个字符 | xxx | |
describe | String | 非必须 | 镜像版本描述,最多80个字符 | xxx |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object | 必须 | |||
├─ imageVersionId | Long | 必须 | 镜像版本ID | 10001 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"imageVersionId": 10001
},
"msg": "",
"ts": 1601021167163
}
获取自定义镜像上传结果
基本信息
URL
https://platform.armvm.com/resources/instance-image/upload-info
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
imageVersionId | Long | 必须 | 实例镜像版本ID | 10001 |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object | 必须 | |||
├─ imageUploadStatus | String | 必须 | 镜像上传状态,wait_execute|executing:执⾏中|success:成功|fail:失败 | success | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"imageUploadStatus": "success"
},
"msg": "",
"ts": 1601021167163
}
删除自定义镜像
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
imageVersionIds | Long[] | 必须 | 实例镜像版本ID | [10001] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object | 必须 | |||
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1728627866628 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {},
"msg": "",
"ts": 1728627866628
}
创建更新镜像任务
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
imageVersionId | Long | 必须 | 镜像版本id | 5 | |
instanceCodes | String[] | 必须 | 实例编号集合,最多200个 | ["VM010100240100"] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object [] | 必须 | |||
├─ instanceCode | String | 必须 | 实例编号 | VM010100240100 | |
├─ taskId | Long | 必须 | 任务id | 9001 | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": [
{
"instanceCode": "VM010100240100",
"taskId": 9001
}
],
"msg": "",
"ts": 1601021167163
}
查询更新镜像结果
基本信息
URL
https://platform.armvm.com/resources/instance-image/update-info
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskIds | Long[] | 必须 | 任务ID集合,最多200个 | [8001,8002] |
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
code | Integer | 必须 | 错误码 | 0 | |
data | Object [] | 必须 | |||
├─taskId | Long | 必须 | 任务ID | 8001 | |
├─ instanceCode | String | 必须 | 实例编号 | VM010100240100 | |
├─ imageUpdateStatus | String | 必须 | 镜像更新状态,wait_execute:待执⾏|executing:执⾏中 success:成功 | fail:失败 | success | |
msg | String | 必须 | 错误信息 | ||
ts | Long | 必须 | 时间戳 | 1601188620078 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": [
{
"taskId": 8001,
"instanceCode": "VM010100240100",
"imageUpdateStatus": "success"
},
{
"taskId": 8002,
"instanceCode": "VM010100240101",
"imageUpdateStatus": "executing"
}
],
"msg": "",
"ts": 1601021167163
}
实例指令相关接口
实例重启
基本信息
URL
请求格式
POST
版本号
3
使用场景
重启指定实例编码的实例
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
padCodes | String[] | 非必须 | 实例编码集合,集合长度在200内(包含200) | ["VM192168001001","VM192168001002"] | |
merchantPoolNos | Long[] | 非必须 | 实例池编号集合,集合长度在50内(包含50) | [1,2] |
说明
padCodes与merchantPoolNos不能同时为空; padCodes为空,merchantPoolNos不为空时则重启merchantPoolNos的所有实例;
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 | |
---|---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | ||
data | Object[] | 非必须 | ||||
├─padCode | String | 必须 | 实例编码 | VM192168001001 | ||
├─taskId | String | 必须 | 任务编号 | "2840204519134814256" | ||
msg | String | 非必须 | 响应消息 | |||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"padCode": "VM192168041004",
"taskId": "2840204353481548485",
},
"msg": "ok",
"ts": 1663664302000
}
异常示例
{
"code": -1,
"msg": "实例编号不存在",
"ts": 1663664302000
}
实例重置
基本信息
URL
请求格式
POST
版本号
3
请求参数
body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
padCodes | String[] | 非必须 | 实例编码集合,集合长度在200内(包含200) | ["VM192168001001","VM192168001002"] | |
merchantPoolNos | Long[] | 非必须 | 实例池编号集合,集合长度在50内(包含50) | [1,2] |
说明
padCodes与merchantPoolNos不能同时为空; padCodes为空,merchantPoolNos不为空时则重启merchantPoolNos的所有实例;
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 | |
---|---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | ||
data | Object[] | 非必须 | ||||
├─padCode | String | 必须 | 实例编码 | VM192168001001 | ||
├─taskId | String | 必须 | 任务编号 | "2840204519134814256" | ||
msg | String | 非必须 | 响应消息 | |||
ts | Long | 必须 | 时间戳 | 1598754678123 |
请求示例
参考:调用方式
响应示例
{
"code": 0,
"data": {
"padCode": "VM192168041004",
"taskId": "2840204353481548485",
},
"msg": "ok",
"ts": 1663664302000
}
异常示例
{
"code": -1,
"msg": "实例编号不存在",
"ts": 1663664302000
}
服务回调相关接口
回调接口使用示例
以实例重启回调为例,其他回调接口使用方法类似。
配置说明
需要客户在客户开放平台配置实例重启通知的回调地址,如接口地址为http://host:port/api/v1/instance/reboot-fb,则配置为http://host:port/api/v1/instance/reboot-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Long | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
msg | String | 必须 | 返回信息 | ok | |
result | Boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
客户服务端接收请求示例
Java
// 配置好客户自己的desKey,可在开放平台的账号管理菜单下查看和重置
private String desKey = "d3b5c2b2e480e9e452c8b9f75fbe192b";
private String appSecret = "5e5b5f13052dfc53159e2069af12e6cf";
@PostMapping("http:127.0.0.1:8888/api/v1/instance/reboot-fb")
public Map<String, Object> instanceReboot(String appkey, String nonce, String s, String auth_ver, @RequestBody
(required = false) String body) throws Exception {
// 校验签名
StringBuilder paramsStr = new StringBuilder();
paramsStr.append("appkey").append(appkey)
.append("auth_ver").append(auth_ver)
.append("nonce").append(nonce)
.append(appSecret);//接口签名密钥(可配置)
String sign = DigestUtils.md5Hex(org.apache.commons.codec.binary.StringUtils.getBytesUtf8(paramsStr.toString()));
if (!sign.equals(s)) {
// 签名校验不合法
}
Map<String, Object> bodyMap = new ObjectMapper().readValue(body, Map.class);
Long bodyNonce = (Long) bodyMap.get("createTime");
String msg = (String) bodyMap.get("msg");
byte[] key = desKey.getBytes("UTF-8");
ByteBuffer byteBuffer = ByteBuffer.allocate(8);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
byteBuffer.putLong(bodyNonce);
byte[] iv = byteBuffer.array();
byte[] message = Base64.decodeBase64(msg);
Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
SecretKeyFactory skf = SecretKeyFactory.getInstance("DESede");
SecretKey secretKey = skf.generateSecret(new DESedeKeySpec(key));
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);
byte[] bytes = cipher.doFinal(message);
// 获取回调的内容
String requestBody = new String(bytes, "UTF-8");
logger.info("回调消息, request body : {}", requestBody);
// 处理客户自己的业务逻辑
// 返回响应信息
Map<String, Object> responseHeader = new HashMap<>();
responseHeader.put("time", System.currentTimeMillis());
responseHeader.put("version", "2");
responseHeader.put("status", 200);
Map<String, Object> response = new HashMap<>();
response.put("responseHeader", responseHeader);
return response;
}
测试请求示例
Java
// PaaS 平台分配给第三方用户的接口Key
String appkey = "50b13132bb394901f151bc45";
// 接口版本号,现在有2和3两种版本的接口
String auth_ver = "2";
// 当前的时间戳
long nonce = new Date().getTime();
// 方法签名,生成示例见‘方法签名生成示例’
String s = "efabcaca7c66d629a639cee37d924813";
//desKey 3DES秘钥(可配置),根据商户平台实际生成的替换此值
String desKey = "d3b5c2b2e480e9e452c8b9f75fb1qazs";
// 拼接公共参数到URl
String apiUrl = "http://host:port/api/v1/instance/reboot-fb?s=" + s + "&appkey=" + appkey + "&auth_ver=" + auth_ver + "&nonce=" + nonce;
// 填装请求参数
Map param = new HashMap();
param.put("taskId", 1);
param.put("result", true);
param.put("msg", "ok");
param.put("padCode", "VM123");
// 请求参数转化为JSON字符串
String requestParam = new Gson().toJson(param);
// 请求参数加密
Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
SecretKeyFactory skf = SecretKeyFactory.getInstance("DESede");
SecretKey secretKey = skf.generateSecret(new DESedeKeySpec(desKey.getBytes("utf-8")));
ByteBuffer byteBuffer = ByteBuffer.allocate(8);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
byteBuffer.putLong(nonce);
byte[] iv = byteBuffer.array();
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);
byte[] cipherText = cipher.doFinal(requestParam.getBytes("utf-8"));
String msg = Base64.encodeBase64String(cipherText);
Map map = new HashMap();
map.put("createTime", nonce);
map.put("msg", msg);
// 转化为JSON字符串
String encryptBody = new Gson().toJson(map);
// 构造请求
URL url = new URL(apiUrl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
// 连接超时时间
httpURLConnection.setConnectTimeout(1000);
// 读取结果超时时间
httpURLConnection.setReadTimeout(1000);
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setUseCaches(false);
httpURLConnection.setRequestProperty("Content-type", "application/json;charset=utf-8");
httpURLConnection.setRequestMethod("POST");
if ("https".equalsIgnoreCase(url.getProtocol())) {
HttpsURLConnection husn = (HttpsURLConnection) httpURLConnection;
husn.setSSLSocketFactory(new BaseHttpSSLSocketFactory());
//解决由于服务器证书问题导致HTTPS无法访问的情况
husn.setHostnameVerifier(new BaseHttpSSLSocketFactory.TrustAnyHostnameVerifier());
httpURLConnection = husn;
}
// 得到请求的输出流对象
OutputStreamWriter out = new OutputStreamWriter(httpURLConnection.getOutputStream());
// 把数据写入请求的Body
out.write(encryptBody);
out.flush();
out.close();
String result = "";
try (InputStream in = 200 == httpURLConnection.getResponseCode() ? httpURLConnection.getInputStream() : httpURLConnection.getErrorStream();) {
byte[] buf = new byte[1024];
int length = 0;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
while ((length = in.read(buf, 0, buf.length)) > 0) {
bout.write(buf, 0, length);
}
bout.flush();
result = new String(bout.toByteArray(), StandardCharsets.UTF_8);
} catch (Exception e) {
throw e;
} finally {
if (null != httpURLConnection) {
httpURLConnection.disconnect();
}
}
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == 200) {
System.out.println("调用成功,接口返回结果:\n" + result);
} else {
System.out.println("调用失败");
}
请求参数示例
{
"taskId": 1,
"padCode": "VM123",
"result": true,
"msg": "ok"
}
应用上传通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云游戏应用上传接口,应用上传情况会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置保存应用通知的回调地址,如接口地址为http://host:port/api/v1/apps/upload-fb,则配置为http://host:port/api/v1/apps/upload-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Integer | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
packageName | String | 必须 | 应用包名 | com.demo | |
taskStatus | String | 必须 | 任务结果:7: 成功 ; 8: 失败 | 7 | |
apps | Object | 必须 | 应用信息 | ||
├─appId | Long | 必须 | 应用ID | 10001 | |
├─appName | String | 必须 | 应用名称 | demo | |
├─pkgName | String | 必须 | 包名 | com.demo | |
├─result | boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
应用启动通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云游戏应用启动接口后,应用启动情况会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置应用启动通知的回调地址,如接口地址为http://host:port/api/v1/apps/start-fb,则配置为http://host:port/api/v1/apps/start-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Integer | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
packageName | String | 必须 | 应用包名 | com.demo | |
operateType | String | 必须 | startApp:应用启动 | startApp | |
taskStatus | String | 必须 | 任务结果:7: 成功 ; 8: 失败 | 7 | |
apps | Object | 必须 | 应用信息 | ||
├─appId | Long | 必须 | 应用ID | 10001 | |
├─padCode | String | 必须 | 实例编码 | VM123 | |
├─appName | String | 必须 | 应用名称 | demo | |
├─pkgName | String | 必须 | 包名 | com.demo | |
├─result | boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
应用停止通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云游戏应用停止接口后,应用停止情况会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置应用停止通知的回调地址,如接口地址为http://host:port/api/v1/apps/stop-fb,则配置为http://host:port/api/v1/apps/stop-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Integer | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
packageName | String | 必须 | 应用包名 | com.demo | |
operateType | String | 必须 | killApp:应用停止 | killApp | |
taskStatus | String | 必须 | 任务结果:7: 成功 ; 8: 失败 | 7 | |
apps | Object | 必须 | 应用信息 | ||
├─appId | Long | 必须 | 应用ID | 10001 | |
├─padCode | Long | 必须 | 实例编码 | VM123 | |
├─appName | String | 必须 | 应用名称 | demo | |
├─pkgName | String | 必须 | 包名 | com.demo | |
├─result | boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
实例解绑通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
客户调用百度云游戏实例解绑接口后,实例解绑情况会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置实例解绑通知的回调地址,如接口地址为http://host:port/api/v1/instance/unbind-fb,则配置为http://host:port/api/v1/instance/unbind-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
uuid | String | 必须 | uuid | 123456 | |
padCode | String | 必须 | 实例编码 | VM123123123123 | |
sessionId | String | 必须 | 会话ID | JKWEUNBL6RX3WCBUQ92AGYCU9MLX0WTB | |
endTimestamp | Long | 必须 | 完成解绑操作的时间戳 | 1669020092256 |
使用示例
参考:回调接口使用示例
实例重置通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云游戏实例重置接口后,实例重置情况会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置实例重置通知的回调地址,如接口地址为http://host:port/api/v1/instance/reset-fb,则配置为http://host:port/api/v1/instance/reset-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Integer | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
msg | String | 必须 | 返回信息 | ok | |
result | boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
实例重启通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云游戏实例重启接口后,实例重启情况会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置实例重启通知的回调地址,如接口地址为http://host:port/api/v1/instance/reboot-fb,则配置为http://host:port/api/v1/instance/reboot-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Integer | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
packageName | String | 必须 | 应用包名 | com.demo | |
operateType | String | 必须 | startApp:应用启动 | startApp | |
taskStatus | String | 必须 | 任务结果:7: 成功 ; 8: 失败 | 7 | |
apps | Object | 必须 | 应用信息 | ||
├─appId | Long | 必须 | 应用ID | 10001 | |
├─appName | String | 必须 | 应用名称 | demo | |
├─pkgName | String | 必须 | 包名 | com.demo | |
├─result | boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
实例执行脚本通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云游戏实例执行脚本接口后,脚本执行情况会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置实例重启通知的回调地址,如接口地址为http://host:port/api/v1/instance/execute-script-fb,则配置为http://host:port/api/v1/instance/execute-script-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Long | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
msg | String | 必须 | 返回信息 | ok | |
result | Boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
上传文件到实例通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云游戏上传文件到实例接口后,文件上传结果会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置实例重启通知的回调地址,如接口地址为http://host:port/api/v1/instance/file-upload-fb,则配置为http://host:port/api/v1/instance/file-upload-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Long | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
msg | String | 必须 | 返回信息 | ok | |
result | Boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
桌面推荐图标刷新通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云桌面推荐图标刷新,刷新结果会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置桌面推荐图标刷新通知的回调地址,如接口地址为http://host:port/api/v1/instance/recommend-app-icon-refresh,则配置为http://host:port/api/v1/instance/recommend-app-icon-refresh
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Integer | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM192168043080 | |
msg | String | 必须 | 返回信息 | ok | |
result | boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
实例备份通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云实例备份接口后,实例备份的结果会通过该回调接口通知。
配置说明
需要在开放平台配置实例备份通知的回调地址,如接口地址为http://host:port/api/v1/instance/backup-fb,则配置为http://host:port/api/v1/instance/backup-fb
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Integer | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
msg | String | 必须 | 返回信息 | ok | |
result | boolean | 必须 | 任务结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
实例还原通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用百度云游戏实例重置接口后,实例重置情况会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置实例重置通知的回调地址,如接口地址为http://host:port/api/v1/instance/restore-fb,则配置为http://host:port/api/v1/instance/restore-fb
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Integer | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
msg | String | 必须 | 返回信息 | ok | |
result | boolean | 必须 | 上传结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
实例分辨率调整通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
调用实例分辨率调整接口后,调整结果会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置实例分辨率调整通知的回调地址,如接口地址为http://host:port/api/v1/instance/resolution-fb,则配置为http://host:port/api/v1/instance/resolution-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
taskId | Long | 必须 | 任务编号 | 1 | |
padCode | String | 必须 | 实例编码 | VM123 | |
msg | String | 必须 | 返回信息 | ok | |
result | Boolean | 必须 | 执行结果的标识。true:成功,false:失败 | true |
使用示例
参考:回调接口使用示例
进程死亡告警通知
基本信息
URL
请求格式
POST
版本号
3
使用场景
实例应用进程异常死亡后,进程死亡信息会通过该回调接口通知给客户。
配置说明
需要客户在客户开放平台配置进程死亡告警通知通知的回调地址,如接口地址为http://host:port/api/v1/monitor/process-died-alarm-fb,则配置为http://host:port/api/v1/monitor/process-died-alarm-fb
配置示例
请求参数
Body
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
instanceCode | String | 必须 | 实例编码 | VM123 | |
content | Object | 必须 | |||
├─packageName | String | 必须 | 应用包名 | com.example.app | |
├─reason | String | 必须 | 进程死亡原因;参考reason枚举表; | process other exception died | |
├─controlStatus | String | 必须 | 实例受控状态;control:受控,online:非受控; | online | |
├─uuid | String | 必须 | 实例绑定的uuid | ||
├─recordTime | String | 必须 | 进程死亡时间 | 2024-10-30 12:00:00 |
reason枚举
reason | 含义 |
---|---|
anr | 进程anr被终止 |
bg anr | 后台进程anr被终止 |
crash | 进程崩溃被终止 |
start timeout | 进程启动超时被终止 |
depends on provider | 所绑定的provider已销毁所以被杀 |
lmk-kill | 进程被Low Memory Killer终止 |
使用示例
参考:回调接口使用示例
返回结果
版本一
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 |
---|---|---|---|---|---|
resultCode | Integer | 必须 | 操作结果代码,0代表成功 -1代表失败 9999代表系统错误 | 0 | |
resultInfo | String | 必须 | 操作具体描述以及数据封装 |
版本二
返回参数
名称 | 类型 | 是否必须 | 默认值 | 备注 | 示例值 | |
---|---|---|---|---|---|---|
code | Integer | 必须 | 响应编码 | 0 | ||
data | Object[] | 非必须 | ||||
msg | String | 非必须 | 响应消息 | |||
ts | Long | 必须 | 十三位时间戳 | 1598754678123 |
错误码
错误码 | 错误信息 | 备注 |
---|---|---|
11100050 | 系统异常,请联系客服人员 | |
11101100 | 商户信息异常 | |
11101118 | 商户类型错误,只允许云手机客户使用 | |
11102027 | serverToken无效 | |
11102032 | serverToken无效,[serverToken] | |
11103062 | 实例不存在 | |
11103078 | 实例不属于此用户 | |
11103103 | 无设备可绑定 | |
11103180 | 实例池不存在 | |
11103183 | 实例池中无实例 | |
11103184 | 实例编号和实例池编码不能同时为空 | |
11103185 | 实例池不存在或无实例 | |
11103190 | 实例池不存在,[实例池编号] | |
11108003 | 工作任务不存在 | |
11108009 | 找不到脚本[脚本名称],请确定是否有配置 | |
11109002 | 内部服务通信失败 |