轻量级设备 Open API

1. open api概述

OpenAPI主要包括5大接口分类,分别是移动端登录授权、设备绑定、设备控制、数据查询、设备升级。

1.1 open api主要功能

1.1.1 登录授权

  • 此类接口是基于百度账号体系研发开放的,此文档只涉及到“登陆授权”、“获取用户信息”接口
  • 如果开发者没有自己的登录授权,可以直接使用OpenAPI提供的授权机制
  • 如果开发者要使用自己的登录授权,需要联系我们开通第三方授权,但是无法使用这类接口

    1.1.2 设备绑定

  • 此类接口用于用户对设备进行绑定、解绑和修改名字等功能
  • 可以根据设备UUID和token来获取指定设备的详细信息

    1.1.3 设备控制

  • 获取设备自描述资源
  • 对指定设备发送控制命令

    1.1.4 数据查询

  • 查询设备是否在线、设备历史数据和设备实时数据

    1.1.5 设备升级

    • 查询设备最新版本
    • 获取版本详情
    • 指定设备按照指定OTA版本进行升级
    • 查询升级状态

1.2 使用场景

目前我们也提供了Android SDK,包含了openapi的所有功能,如果开发android,推荐使用我们的Android APP SDK。如果开发ios系统应用,适合直接使用openapi。

2. 获取方式

2.1 环境准备

使用接口必要的流程和配置

  • 先使用百度账号登录DuerOS开放平台
  • 进行开发者认证,审核身份
  • 新建一个基于mbed的产品,默认会产生20个测试设备,或者通过创建批次获取更多的设备
    • 主要使用设备的数据是deviceUuid和相应的token(bind_token)
  • 为产品添加数据点(或者直接添加数据点模板)

  • 补充应用配置
    • 获得client_id(API Key),client_secret(Secret Key),根据不用的应用系统配置相应的参数,用于身份签名和验证
  • 以上步骤都完成,此文档的接口才能使用

2.2 接口访问签名

部分接口需要提供在HTTP Header里面提供签名才能被允许访问. 签名X-IOT-Signature生成方法如下: {nonce}:SHA1({nonce}+{apikey}+{secret}+{access_token}) 各参数说明:

  • nonce (string) 由16个随机字符组成: a-z, A-Z, 0-9; 同一个Nonce只能使用一次, 每次请求接口都必须重新生成
  • apikey (string) client_id(API Key)
  • secret (string) 密钥
    • WEB应用 使用 client_secret(Secret Key)
    • Android应用 使用 包名+apk签名
    • iOS应用 使用 BundleID
  • access_token (string) APP得到用户授权后拿到的access_token, 如果某些接口不需要验证该access_token, 则该值填空

2.3 接口错误码

code 含义
1001 auth fail
1002 app auth fail
1003 parameter is error
1004 body parameter is not json format
1005 signature nonce is used
1006 redis server is error
1007 signature is null or error
1204 project id error
1208 device uuid invalid
1209 device not exist
1211 accountUuid not found
1212 user and devices do not bind
1218 user no permissions
1219 device token invalid
1223 app not bind project
1224 project appid invalid!
1226 lack of signature or token!
1227 batch id invalid!
1228 token and device do not match
1229 device has been bind by other account
1232 packageId invalid
1305 command name invalid
1308 method invalid
1338 device not reachable
1339 name length out of range
1340 device name is empty
1401 data query params invalid
1506 package id invalid
1801 device id is empty
1802 account has not power to access this device
1803 the number of device beyond 20
1902 lack of strategy id or valid
1905 user can not use this strategy id
2001 create ota task params is error
2004 device is running to update
2005 task id or device uuid is error
2007 device version is higher than package version

3. open api功能

1、移动客户端(Android/iOS/SDK) OAuth

1.1使用Authorization Code登陆授权

Request

名称 类型 说明
client_id string 必须参数,注册应用时获得的API Key
response_type string 必须参数,为code
state string 非必须参数,用于保持请求和回调的状态,授权服务器在回调时(重定向用户浏览器到“redirect_uri”时),会在Query Parameter中原样回传该参数。OAuth2.0标准协议建议,利用state参数来防止CSRF攻击
scope string 非必须参数,以空格分隔的权限列表,若不传递此参数,代表请求用户的默认权限。关于权限的具体信息请参考“权限列表”
display string 非必须参数,登录和授权页面的展现样式,移动设备使用“mobile”,具体参数定义请参考自定义授权页面一节
redirect_uri string 必须参数,授权后要回调的URI,即接收Authorization Code的URI。如果用户在授权过程中取消授权,会回调该URI,并在URI末尾附上error=access_denied参数。对于无Web Server的应用,其值可以是http://openapi.baidu.com/oauth/2.0/login_success,此时用户同意授权后,授权服务会将Authorization Code直接显示在URI末尾。非http://openapi.baidu.com/oauth/2.0/login_success值的redirect_uri按照如下规则进行匹配:(1)如果开发者在“授权安全设置”中配置了“授权回调地址”,则redirect_uri必须与“授权回调地址”中的某一个相匹配;(2)如果未配置“授权回调地址”,redirect_uri所在域名必须与开发者注册应用时所提供的网站根域名列表或应用的站点地址(如果根域名列表没填写)的域名相匹配。请参考授权回调地址配置进行注册

Response

http://openapi.baidu.com/oauth/2.0/login_success?code=ae09c6d71adddac0099c8478158e76e7&state=123

  • Parameters
名称 类型 说明
code string 每一个Authorization Code的有效期为10分钟,并且只能使用一次,再次使用将无效。

通过code,获取refresh_token和access_token Request

名称 类型 说明
grant_type string 必须参数,此值固定为“authorization_code”
code string 必须参数,通过上面第一步所获得的Authorization Code
client_id string 必须参数,应用的API Key
client_secret string 必须参数,应用的Secret Key
redirect_uri string 必须参数,该值必须与获取Authorization Code时传递的“redirect_uri”保持一致

Response

{
    "expires_in": 2592000,
    "refresh_token": "your_refresh_token",
    "access_token": "your_access_token",
    "session_secret": "your_session_secret",
    "session_key": "your_session_key",
    "scope": "basic"
}
  • 响应数据包格式
名称 类型 说明
access_token string 要获取的Access Token
expires_in string Access Token的有效期,以秒为单位;请参考Access Token生命周期
refresh_token string 用于刷新Access Token 的 Refresh Token,所有应用都会返回该参数;(10年的有效期)
scope string Access Token最终的访问范围,即用户实际授予的权限列表(用户在授权页面时,有可能会取消掉某些请求的权限),关于权限的具体信息参考权限列表一节
session_key string 基于http调用Open API时所需要的Session Key,其有效期与Access Token一致
session_secret string 基于http调用Open API时计算参数签名用的签名密钥

1.2获取用户信息

Request

Response 200 (application/json)

{
    "uid":"3657819769",
    "uname":"test",
    "portrait":"a8da797178323239a601"
}
名称 类型 说明
uid uint 当前登录用户的数字ID
uname string 当前登录用户的用户名。只用于显示,可能会发生变化,不保证全局唯一
portrait string 当前登录用户的头像

2、设备绑定

2.1用户绑定设备 [POST /device/bind]

Request

名称 类型 说明
deviceUuid string 设备唯一的标识id
token string 设备绑定的bindToken
refreshToken string 授权成功返回的refresh_token
  • headers

    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}
  • body
    {
    "deviceUuid": "0083000000000a",
    "token": "6dd5790b2163a0132e6c65c6dd6f9ef2",
    "refreshToken": "22.587635cc7c4b5bfc5b061fcdc19eeca2.315360000.1816848097.1647011623-9887758"
    }

Response 200 (application/json)

{
    "data": true,
    "code": "0",
    "message": ""
}
  • 异常输出
status 说明
404 accountUuid没有找到
406 设备没有找到
500 服务器错误

2.2修改绑定设备名称(需要设备与用户先进行绑定) [PUT /device/name/update]

Request

名称 类型 说明
deviceUuid string 设备唯一的标识id
name string 设备名称
  • headers

    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}
  • body
    {
    "deviceUuid": "0083000000000a",
    "name": "testname"
    }

Response 201 (application/json)

{
  "data": {
    "uuid": "0083000000000a",
    "projectId": 131,
    "deviceBatchId": 106,
    "name": "testname",
    "bindToken": "6dd5790b2163a0132e6c65c6dd6f9ef2",
    "osVersionId": 160,
    "status": "UNACTIVATED",
    "version": 1,
    "activateTime": null,
    "lastHeartbeatTime": null,
    "createTime": "2017-06-07T02:46:30Z",
    "updateTime": "2017-06-07T06:10:14Z"
  },
  "code": "0",
  "message": "",
  "total": 1
}

2.3解除绑定(需要设备与用户先进行绑定) [POST /device/unbind]

Request

名称 类型 说明
deviceUuid string 设备唯一的标识id
  • headers

    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}
  • body
    {
    "deviceUuid": "0083000000000a"
    }

Response 200 (application/json)

{
  "data": true,
  "code": "0",
  "message": ""
}

2.4获取用户所有绑定的设备 [GET /device/bind/list]

Request

名称 类型 说明
start int 起始元素, 默认0
limit int 每页大小, 每页的个数,默认20且不得超过100
  • headers
    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}

Response 200 (application/json)

{
  "data": [
    {
      "projectId": 131,
      "deviceBatchId": 106,
      "name": "",
      "bindToken": "9614b7fd4af0305d412056cc0391d4b1",
      "osVersionId": 160,
      "status": "UNACTIVATED",
      "version": 1,
      "activateTime": null,
      "lastHeartbeatTime": null,
      "createTime": "2017-06-07T02:46:30Z",
      "updateTime": "2017-06-07T02:46:30Z",
      "osVersion": "0.0.0.0",
      "deviceUuid": "0083000000000b",
      "projectName": "doc_test",
      "type": "WIFI",
      "seriesName": "故事机"
    },
    {
      "projectId": 131,
      "deviceBatchId": 106,
      "name": "testname",
      "bindToken": "6dd5790b2163a0132e6c65c6dd6f9ef2",
      "osVersionId": 160,
      "status": "UNACTIVATED",
      "version": 1,
      "activateTime": null,
      "lastHeartbeatTime": null,
      "createTime": "2017-06-07T02:46:30Z",
      "updateTime": "2017-06-07T06:10:14Z",
      "osVersion": "0.0.0.0",
      "deviceUuid": "0083000000000a",
      "projectName": "doc_test",
      "type": "WIFI",
      "seriesName": "故事机"
    }
  ],
  "code": "0",
  "message": "",
  "limit": 100,
  "start": 0,
  "total": 2
}
  • 返回字段说明
名称 说明
version 设备使用版本:1为研发中的设备,0为投入使用的设备

2.5根据设备UUID和token获取指定设备详细信息 [GET /device/info/by_token]

Request

名称 类型 说明
deviceUuid string 设备唯一的标识id
token string 设备bindToken
  • headers
    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}

Response 200 (application/json)

{
  "data": {
    "uuid": "0083000000000a",
    "projectId": 131,
    "deviceBatchId": 106,
    "name": "testname",
    "bindToken": "6dd5790b2163a0132e6c65c6dd6f9ef2",
    "osVersionId": 160,
    "status": "UNACTIVATED",
    "version": 1,
    "activateTime": null,
    "lastHeartbeatTime": null,
    "createTime": "2017-06-07T02:46:30Z",
    "updateTime": "2017-06-07T06:10:14Z",
    "osVersion": "0.0.0.0",
    "deviceUuid": "0083000000000a",
    "projectName": "doc_test",
    "type": "WIFI",
    "seriesName": "故事机",
    "batchName": "0000"
  },
  "code": "0",
  "message": "",
  "total": 1
}

2.6 根据设备UUID获取指定设备详细信息(需要设备与用户先进行绑定) [GET /device/info/by_uuid]

Request

名称 类型 说明
deviceUuid string 设备唯一的标识id
  • headers
    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}

Response 200 (application/json)

{
  "data": {
    "uuid": "0083000000000a",
    "projectId": 131,
    "deviceBatchId": 106,
    "name": "testname",
    "bindToken": "6dd5790b2163a0132e6c65c6dd6f9ef2",
    "osVersionId": 160,
    "status": "UNACTIVATED",
    "version": 1,
    "activateTime": null,
    "lastHeartbeatTime": null,
    "createTime": "2017-06-07T02:46:30Z",
    "updateTime": "2017-06-07T06:10:14Z",
    "osVersion": "0.0.0.0"
  },
  "code": "0",
  "message": "",
  "total": 1
}

3、设备控制

3.1 获取设备自描述资源(需要设备与用户先进行绑定) [GET /device/resource]

Request

名称 类型 说明
deviceUuid string 设备唯一的标识id
  • headers
    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}

Response 200 (application/json)

{
  "data": {
    "resources": [
      {
        "name": "play",
        "resourceType": "voice",
        "type": "string",
        "label": "播放内容",
        "description": "可通过“播放儿歌”“播放春天在哪里”“上一首”“下一首”等语音指令控制播放内容",
        "pattern": {},
        "uri": "/play",
        "protocol": [
          "COAP",
          "HTTP"
        ],
        "method": [
          "GET",
          "PUT"
        ]
      },
      {
        "name": "volume",
        "resourceType": "voice",
        "type": "int",
        "label": "音量",
        "description": "可通过“调高音量”“调低音量”等语音指令调节设备音量",
        "pattern": {
          "min": 0,
          "max": 16,
          "step": 1
        },
        "uri": "/volume",
        "protocol": [
          "COAP",
          "HTTP"
        ],
        "method": [
          "GET",
          "PUT"
        ]
      },
      {
        "name": "switch",
        "resourceType": "",
        "type": "bool",
        "label": "关机",
        "description": "关闭设备",
        "uri": "/switch",
        "protocol": [
          "COAP",
          "HTTP"
        ],
        "method": [
          "GET",
          "PUT"
        ]
      },
      {
        "name": "power",
        "resourceType": "",
        "type": "int",
        "label": "电量",
        "description": "查询电量",
        "pattern": {
          "min": 0,
          "max": 100,
          "step": 1
        },
        "uri": "/power",
        "protocol": [
          "COAP",
          "HTTP"
        ],
        "method": [
          "GET"
        ]
      }
    ],
    "report": []
  },
  "code": "0",
  "message": "",
  "total": 1
}

3.2 对指定设备发送控制命令(需要设备与用户先进行绑定) [POST /device/control/send]

Request

名称 类型 说明
deviceUuid string 设备唯一的标识id
method string GET读取数据点数据,PUT修改数据点数据
name string 数据点标识名
content string 控制命令所携带的参数,比如填写修改值
  • headers

    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}
  • body
    {
    "deviceUuid":"01a800000072af",
    "method":"PUT", 
    "name":"power", 
    "content":"1"
    }

Response 200 (application/json)

{
  "data": {
     "code": "2.05",
     "content": "75",
     "name":"power", 
  },
  "total": 1,
  "code": "0",
  "message": ""
}

4、数据查询

4.1查询设备是否在线(需要设备与用户先进行绑定) [POST /device/query/data/connect]

Request

名称 类型 说明
deviceUuids string[ ] 设备uuid数组,一次最多查询20个设备uuid
  • headers

    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}
  • body
    {
    "deviceUuids":["0083000000000a","0083000000000b"]
    }

Response 200 (application/json)

{
  "data": [
    {
      "deviceUuid": "0083000000000a",
      "status": false
    },
    {
      "deviceUuid": "0083000000000b",
      "status": false
    }
  ],
  "code": "0",
  "message": "",
  "total": 1
}

4.2查询设备历史数据(需要设备与用户先进行绑定) [GET /device/query/data/history]

Request

名称 类型 说明
deviceUuid string 设备ID
propertyKey string 数据点,可选,不选默认全部数据点
propertyType string 数据点类型(REPORT,RESOURCE),可选,不选默认全部数据点
startTime string utc时间,例如为2017-04-14T08:31:10Z
endTime string utc时,例如为2017-04-14T08:31:10Z
limit int 默认20,不能超过100
nextPage long 下一页数据的参数,在接口返回内容参数nextPage中获取,如果为null,则表示没有数据
  • headers
    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}

Response 200 (application/json)

{
    "data": [
    {
      "timeStamp": 1495044775000,
      "value": "{id=108956,+rate=8000,+segment=15,+eof=true,+channel=1}",
      "key": "voice_control"
    },
    {
      "timeStamp": 1495034776000,
      "value": "{id=108956,+rate=8000,+segment=7,+voice_data=JgAAACwL9NxOU7tUy0tFYxxkcVz1h8fh02TJ/VEyVc9mtSD2fK0fsMl3JgAAACunuCmTZbF4FkujpJ4ZJXdZOckSLoOx5Y81du5dR8Roa99kmYlHJgAAAC+2OCt1oWqfuMN1dQUjF5kdiYX5vlJPsfCnXPVXiXk7MVMG9HFnJgAAACk65VyUSh4jsa8DdeoliWRmBhFkhhKncvUyC6B5FujAXXDmUvKXJgAAACkyl1yTTcqk3BKz43cmMU2B1bu6dpMXqiHOuz0ESYvJ2RU8X5bnJgAAACkyl1yyTF995XLf6sbe4XjP6BJjHFOHmCSPPOekCeJWi1IkRzdnJgAAACkii2nSTTLLh7aTF5ImRV9AlkFmd5MHjsqAUuNvKbxR55ZX2Eh3JgAAACk8i1XvS38iJoXiNbHCg8zZKfC/AJMbiNnYYdQREGrWDhhfrI4XJgAAAC24ZhLNIs9I/dEPzfB6q4HjUTa7At2H0FV32IyR4WPrkCy4Nh33JgAAAC+T5JTQJZ6Q9IyPxvJ9Ost7hOvO64T5g7s69SaiC8Tu8MopR7HHJgAAACoXH/fw0e9Yh8q1Sk7W4UTtl8rr6S1B6c/Uj4UC9W7r7pc2WGXHJgAAACoXWvfyMCZeZhKa05Gtk0cdwZ+bDSHLv10+d9adOYRi8EnmDaanJgAAACgTsNjSxas/2fqHcNk5n4F0WTmgQMwOqrGGF6On/lnq7ragwDbXJgAAAC4c/PDSOaOH9ZNsnhMCzWnVl9leQicj3Q4eoHNk4wHtk1rAv7vnJgAAACgLWtgTKI6Bi01uLkNmmUP6HcZmL8dB2B3FvWh+4E/R1VA+JyzH,+eof=false,+channel=1}",
      "key": "voice_control"
    },
    {
      "timeStamp": 1495034185000,
      "value": "{id=108955,+rate=8000,+segment=15,+eof=true,+channel=1}",
      "key": "voice_control"
    },
    {
      "timeStamp": 1495034085000,
      "value": "{id=108955,+rate=8000,+segment=14,+voice_data=JgAAACzTCkdJzVapC3RUm9emm6IxGPJJcuDH0UWIsjA4vvjtpoCENhb3JgAAACk3nlTJZcNGkOOmJPmxD75a+oNHLOLc3/bMqVlXQOHse+5pZU8HJgAAAC/fKr9Jerd7UihNgdzxN5gWPBATBj09yDo0/IhaAOP/ras+0KrnJgAAAC3Gk2SJRnehkLde64+4+fAbjpT2SkdV1FuzSEbMo27d8hxbbaunJgAAACzbZA5I9/s2Kul+xdeSD5CrV9v4yQeH2JyFXBavYEFnru55xMFHJgAAACzdSr5IdrbnqtKPqlnXzbQ7kR69bL9wwXXnOwaAaursi0JuO/jnJgAAAC3GnK+JpXcc0PWP6JfOO5QF4LsELq+N0W1xATL83D5tKB/yIvVHJgAAAC3crKtJGrvRsE8y6Wwpj5y15Bjrbo09yjKbHUnmXuboRYJzBOrXJgAAACzOFL9JtPdt9bMK/HVq4XrXnaod28xdoUwsDezFCZbpjnh/hFyHJgAAACzGir5poV9V9ADljYWUN7I9nXC5GO84qk4aEt3WBv5RHAd7/eQnJgAAACzear5pMzc9eP3IeXZoj2YeKQRguSUZ0A4lV2556w3Um07cVKJHJgAAACk2uFco3Y8KiiCLDWIt9ZhetT1ljfZRwV+3T2reSabukG1rlxlHJgAAACzGC9qKim5CJUQyPeEYMzTCMXrHQdmdqmonOTNPh4rnZC2GWB+nJgAAACzSvrtJAn9pFXsdHtVhW12QSROPpB5Tte1EEFcp483M71quHwvHJgAAACzd6r2IFX9GaZPG2dBPj4ir1RfpxRz2xa8Qi44Uky7X40BaqpLH,+eof=false,+channel=1}",
      "key": "voice_control"
    },
    ...
    ]
    "nextPage": 1495034775000,
    "code":"0",
    "limit": 4
}

4.3查询设备实时数据(需要设备与用户先进行绑定) [GET /device/query/data/realtime]

Request

名称 类型 说明
deviceUuid string 设备ID
propertyKey string 设备自描述上报的字段,比如空调有温度属性(temperature),设备会上报temperature这个字段,那么对温度的历史数据查询就是:propertyKey = temperature
  • headers
    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}

Response 200 (application/json)

{
    "data": {
        "value": 94,
        "timeStamp": 1495034775000
    },
    "code": "0",
    "message": "",
    "total": 1
}

5、用户设备升级

5.1查询设备最新版本(需要设备与用户先进行绑定) [GET /device/ota/new_version]

Request

名称 类型 说明
deviceUuid string 设备ID
  • headers
    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}

Response 200 (application/json)

{
  "data": {
    "deviceUuid": "01a800000072b0",
    "packageId": 484,
    "strategyId": 1132,
    "type": "PASSIVE",
    "newOsVersion": "1.1.1.1",
    "originalOsVersion": "1.0.1.1",
    "isUpdating": true
  },
  "code": "0",
  "message": "",
  "total": 1
}
  • 返回字段说明
data 说明
null 设备不需要升级
不为null type为 “PASSIVE”,需要用户手动升级

5.2获取版本详情 [GET /device/ota/version/info]

Request

名称 类型 说明
packageId long OTA版本id
  • headers
    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}

Response 200 (application/json)

{
     "data": {
          "projectId": 4,
          "osVersionId": 4,
          "description": "tt",
          "size": 521,
          "status": "RELEASED",
          "createTime": "2015-11-07T06:07:51Z",
          "updateTime": "2015-11-07T06:07:51Z",
          "osVersion": "1.0.0.0"
      },
      "total": 1,
      "code": "0",
      "message": ""
 }

5.3指定设备按照指定OTA版本升级(需要设备与用户先进行绑定) [POST /device/ota/update]

Request

名称 类型 说明
packageId string OTA版本id
deviceUuid string 设备uuid
strategyId string 升级策略id
  • headers

    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}
  • body
    {
    "packageId": 480,
    "deviceUuid":"01a60000000004",
    "strategyId": 123 //可选
    }

Response 201 (application/json)

{
  "data": true,
  "code": "0",
  "message": "",
  "total": 1
}

5.4查询升级状态(需要设备与用户先进行绑定) [GET /device/ota/update/status]

Request

名称 类型 说明
deviceUuid string 设备uuid
  • headers
    X-IOT-APP: {apikey}
    X-IOT-Signature: {sign}
    X-IOT-Token: {token}

Response 200 (application/json)

{
  "data": {
    "taskId": 13450,
    "deviceUuid": "01a800000072db",
    "packageId": 508,
    "otaStrategyId": 1148,
    "osVersionId": 751,
    "status": "SUCCESS",
    "eventLog": "2017-04-10 10:26:02 [Success] OK\n2017-04-11 02:26:02 {\"transaction\":\"77\",\"event\":0}\n2017-04-11 02:26:20 {\"percent\":0,\"transaction\":\"77\",\"event\":4}\n2017-04-11 02:26:20 {\"transaction\":\"77\",\"event\":6}\n2017-04-11 02:26:20 {\"transaction\":\"77\",\"event\":2}\n2017-04-11 02:26:20 {\"transaction\":\"77\",\"event\":10}\n",
    "createTime": "2017-04-10T10:26:00Z",
    "updateTime": "2017-04-10T10:26:21Z",
    "osVersion": "4.0.0.2"
  },
  "code": "0",
  "message": "",
  "total": 1
}
  • 返回字段说明
status 添加字段 说明
CREATED 暂未开始升级
SUCCESS 升级成功
INSTALLED 推送成功
RUNNING 补充percent字段 升级进度,0~1
FAILED 补充failure字段 错误描述