V2.1 Search OTA Job¶
搜索 OTA job 信息。
如果你在使用 API 批量更新相关固件信息后调用当前 API,建议两次调用间隔 2 秒左右,以免获取到未更新数据。
该 API 支持在 EnOS 2.2.0 及以上环境中使用。
操作权限¶
使用此 API 前,确保服务账号已被授予包含下列服务和操作权限的策略。有关授权服务账号的更多信息,参见 管理服务账号。
需授权的服务 |
所需操作权限 |
---|---|
固件 |
Read OTA |
请求格式¶
POST https://{apigw-address}/connect-service/v2.1/ota-jobs?action=search
请求参数(URI)¶
名称 |
位置(Path/Query) |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|---|
orgId |
Query |
必需 |
String |
资产所属的组织 ID。如何获取 orgId 信息>> |
请求参数(Body)¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
expression |
可选 |
String |
查询表达式,支持类 SQL 的查询。查询的字段和对应的运算符清单如下。
|
pagination |
可选 |
Pagination 请求结构体 |
分页参数。如未指定,默认每页 10 条。每页最大记录数为 200 条,但为获得最佳性能,建议每页不超过 50 条。不支持使用 |
响应参数¶
备注
对于旧版固件文件,返回产品信息。对于新版固件文件,不返回产品信息。
名称 |
数据类型 |
描述 |
---|---|---|
data |
JobInfo 结构体数组 |
查询到的 OTA job 详情。其结构体参见 JobInfo 结构体。 |
JobInfo 结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
orgId |
String |
组织 ID。 |
productKey |
String |
设备的 Product key。 |
jobId |
String |
OTA Job ID。 |
name |
StringI18n |
Job 名称。 |
firmwareId |
String |
固件 ID。 |
firmwareVersion |
String |
固件版本。 |
firmwareName |
StringI18n |
固件名称。 |
type |
String |
任务类型。
|
enableUpgradeRequest |
Boolean |
是否允许设备主动请求升级。 |
upgradePolicy |
String |
升级策略。
其含义参见 升级策略。 |
upgradeScope |
UpgradeScope 结构体 |
待升级的设备及其固件版本号等信息,待升级的设备及版本号等信息,其结构参见 UpgradeScope 结构体。 |
upgradeTimeout |
Long |
升级超时时间,当 OTA task 进入 |
retryPolicy |
RetryPolicy 结构体 |
失败 OTA 任务重试的策略,其结构参见 RetryPolicy 结构体。 |
schedulePolicy |
SchedulePolicy 结构体 |
OTA 任务调度的策略,其结构参见 SchedulePolicy 结构体。 |
maximumConcurrency |
Integer |
升级任务最大并发量。 |
status |
String |
任务状态。
|
createTime |
Long |
任务的创建时间。 |
UpgradeScope 结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
type |
String |
待升级设备的范围。有以下可选值:
|
versionNumbers |
String 数组 |
待升级的固件版本号列表。 |
deviceKeys |
String 数组 |
指定固件待验证或升级的设备的 Device Key。只能通过 |
attributes |
Map(Key 为 String,Value 为 Object 数组) |
指定具有特定属性和属性值的设备加入固件验证或升级。只能通过 |
tags |
Map(Key 为 String,Value 为 String 数组) |
指定具有特定标签和标签值的设备加入固件验证或升级。只能通过 |
assetTrees |
AssetTreeScope 结构体 |
指定资产树里的设备加入固件验证或升级。只能通过 |
AssetTreeScope 结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
treeId |
String |
资产树 ID。 |
includedNodes |
String Array |
资产树中的节点,由资产的 asset ID 识别。一个节点代表其自身及所有子节点,留空代表整棵树。 |
RetryPolicy 结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
enableRetry |
Boolean |
是否开启失败重试。 |
retryInterval |
Integer |
失败后自动重试间隔时间(秒)。 |
retryCount |
Integer |
最大自动重试次数。 |
SchedulePolicy 结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
isRepeatDaily |
Boolean |
任务是否每日重复。 |
startTimestamp |
Long |
开始调度时间的 13 位时间戳。 |
endTimestamp |
Long |
结束调度时间的 13 位时间戳。 |
timezoneOffsetInMinutes |
Integer |
时区偏移量,单位:分钟。 |
错误码¶
代码 |
错误信息 |
描述 |
---|---|---|
99400 |
Do not allow operator op =, allowed op [like] |
查询 |
有关其他错误码的描述,参见 通用错误码。
示例¶
请求示例¶
url: https://{apigw-address}/connect-service/v2.1/ota-jobs?action=search&orgId=yourOrgId
method: POST
requestBody:
//例 1
{
"expression":"productKey='yourProductKey'",
"pagination":{
"pageNo":1,
"pageSize":5
}
}
//例 2
{
"expression": "firmwareName like 'firmware1'",
"pagination": {
"pageNo": 1,
"pageSize": 5
}
}
//例 3
{
"expression": "name like 'name' and firmwareName like 'firmware1'"
}
返回示例¶
{
"code":0,
"msg":"OK",
"requestId":"99344e67-c79b-46bd-91d1-3ce3503ae769",
"data":[
{
"orgId":"yourOrgId",
"productKey":"yourProductKey",
"jobId":"yourJobId",
"name":{
"defaultValue":"name",
"i18nValue":{
"en_US":"name",
"zh_CN":"中文名",
"es_ES":"nombre",
"ja_JP":"名前"
}
},
"firmwareId":"5ed0dd4a646542001b3d113f",
"firmwareVersion":"1.1.0",
"firmwareName":{
"defaultValue":"firmware1",
"i18nValue":{
}
},
"type":"upgrade",
"enableUpgradeRequest":true,
"upgradePolicy":null,
"upgradeScope":{
"type":"total",
"versionNumbers":[
"1.0"
],
"deviceKeys":null,
"attributes":null,
"tags":null,
"assetTrees":null
},
"upgradeTimeout":7200,
"startSchedule":null, //deprecated
"endSchedule":null, //deprecated
"status":"started",
"createTime":1591171274788
}
],
"pagination":{
"sortedBy":null,
"pageNo":1,
"pageSize":5,
"totalSize":1
}
}
SDK 示例¶
你可以在 Github 上获取接入服务的 SDK 示例: