创建OTA升级包
功能介绍
用户可调用此接口创建升级包关联OBS对象
使用前提:使用该API需要您授权设备接入服务(IoTDA)的实例访问对象存储服务(OBS)以及 密钥管理服务(KMS Administrator)的权限。在“统一身份认证服务(IAM) - 委托”中将委托名称为iotda_admin_trust的委托授权KMS Administrator和OBS OperateAccess
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。
URI
POST /v5/iot/{project_id}/ota-upgrades/packages
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
参数说明:项目ID。获取方法请参见 获取项目ID。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
否 |
String |
参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 |
Instance-Id |
否 |
String |
参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考 查看实例详情。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
app_id |
是 |
String |
参数说明:资源空间ID。存在多资源空间的用户需要使用该接口时,建议携带该参数指定创建的升级包归属到哪个资源空间下。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
package_type |
是 |
String |
参数说明:升级包类型。 取值范围:软件包必须设置为:softwarePackage,固件包必须设置为:firmwarePackage。 |
product_id |
是 |
String |
参数说明:设备关联的产品ID,用于唯一标识一个产品模型,创建产品后获得。方法请参见 创建产品。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
version |
是 |
String |
参数说明:升级包版本号。 取值范围:长度不超过256,只允许字母、数字、下划线(_)、连接符(-)、英文点(.)的组合。 |
support_source_versions |
否 |
Array of strings |
参数说明:支持用于升级此版本包的设备源版本号列表。最多支持20个源版本号。 取值范围:源版本号列表,源版本号只允许字母、数字、下划线(_)、连接符(-)、英文点(.)的组合。 |
description |
否 |
String |
参数说明:用于描述升级包的功能等信息。 取值范围:长度不超过1024。 |
custom_info |
否 |
String |
参数说明:推送给设备的自定义信息。添加该升级包完成,并创建升级任务后,物联网平台向设备下发升级通知时,会下发该自定义信息给设备。 取值范围:长度不超过4096。 |
file_location |
是 |
FileLocation object |
升级包的位置 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
region_name |
是 |
String |
参数说明:OBS所在区域。您可以从地区和终端节点中查询服务的终端节点。 取值范围:长度不超过256,只允许字母、数字、连接符(-)的组合。 |
bucket_name |
是 |
String |
参数说明:OBS桶名称。 取值范围:长度最小为3,最大为63,只允许小写字母、数字、连接符(-)、英文点(.)的组合。 |
object_key |
是 |
String |
参数说明:OBS对象名称(包含文件夹路径),对象大小最大为1G,且只支持.bin、.dav、.tar、.gz、.zip、.gzip、.apk、.tar.gz、.tar.xz、.pack、.exe、.bat、.img格式的文件。 取值范围:长度不超过1024。 |
sign |
否 |
String |
参数说明:SHA256算法计算出的升级包签名值。添加该升级包完成,并创建升级任务后,物联网平台向设备下发升级通知时,会下发该签名给设备。 取值范围:长度为64,只允许大小写字母a到f、数字的组合。 |
响应参数
状态码: 201
参数 |
参数类型 |
描述 |
---|---|---|
package_id |
String |
参数说明:升级包ID,用于唯一标识一个升级包。由物联网平台分配获得。 取值范围:长度不超过36,只允许字母、数字、连接符(-)的组合。 |
app_id |
String |
参数说明:资源空间ID。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
package_type |
String |
参数说明:升级包类型。 取值范围:软件包必须设置为:softwarePackage,固件包必须设置为:firmwarePackage。 |
product_id |
String |
参数说明:设备关联的产品ID,用于唯一标识一个产品模型,创建产品后获得。方法请参见 创建产品。 取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
version |
String |
参数说明:升级包版本号。 取值范围:长度不超过256,只允许字母、数字、下划线(_)、连接符(-)、英文点(.)的组合。 |
support_source_versions |
Array of strings |
参数说明:支持用于升级此版本包的设备源版本号列表。最多支持20个源版本号。 取值范围:源版本号列表,源版本号只允许字母、数字、下划线(_)、连接符(-)、英文点(.)的组合。 |
description |
String |
参数说明:用于描述升级包的功能等信息。 取值范围:长度不超过1024。 |
custom_info |
String |
参数说明:推送给设备的自定义信息。添加该升级包完成,并创建升级任务后,物联网平台向设备下发升级通知时,会下发该自定义信息给设备。 取值范围:长度不超过4096。 |
create_time |
String |
软固件包上传到物联网平台的时间,格式:"yyyyMMdd'T'HHmmss'Z'"。 |
file_location |
FileLocation object |
升级包的位置 |
参数 |
参数类型 |
描述 |
---|---|---|
region_name |
String |
参数说明:OBS所在区域。您可以从地区和终端节点中查询服务的终端节点。 取值范围:长度不超过256,只允许字母、数字、连接符(-)的组合。 |
bucket_name |
String |
参数说明:OBS桶名称。 取值范围:长度最小为3,最大为63,只允许小写字母、数字、连接符(-)、英文点(.)的组合。 |
object_key |
String |
参数说明:OBS对象名称(包含文件夹路径),对象大小最大为1G,且只支持.bin、.dav、.tar、.gz、.zip、.gzip、.apk、.tar.gz、.tar.xz、.pack、.exe、.bat、.img格式的文件。 取值范围:长度不超过1024。 |
sign |
String |
参数说明:SHA256算法计算出的升级包签名值。添加该升级包完成,并创建升级任务后,物联网平台向设备下发升级通知时,会下发该签名给设备。 取值范围:长度为64,只允许大小写字母a到f、数字的组合。 |
请求示例
-
创建OTA升级包,上传固件包。
POST https://{endpoint}/v5/iot/{project_id}/ota-upgrades/packages { "app_id" : "61f7e74d036aca5be29e1ed4", "package_type" : "firmwarePackage", "product_id" : "5ba24f5ebbe8f56f5a14f605", "version" : "V2.0", "description" : "package v2.0", "custom_info" : "更新了XX功能,修复了XXXX问题", "file_location" : { "obs_location" : { "region_name" : "cn-north-4", "bucket_name" : "abc", "object_key" : "bbb/upgrade.bin", "sign" : "595124473f866b033dfa1f7e831c8c99a12f6143f392dfa996a819010842c99d" } } }
-
创建OTA升级包,上传固件包,差分包场景,支持从V1.0和V1.1版本升级。
POST https://{endpoint}/v5/iot/{project_id}/ota-upgrades/packages { "app_id" : "61f7e74d036aca5be29e1ed4", "package_type" : "firmwarePackage", "product_id" : "5ba24f5ebbe8f56f5a14f605", "version" : "V2.0", "support_source_versions" : [ "V1.0", "V1.1" ], "description" : "package for version V1.0 and V1.1", "custom_info" : "更新了XX功能,修复了XXXX问题", "file_location" : { "obs_location" : { "region_name" : "cn-north-4", "bucket_name" : "abc", "object_key" : "bbb/upgrade.bin", "sign" : "595124473f866b033dfa1f7e831c8c99a12f6143f392dfa996a819010842c99d" } } }
响应示例
状态码: 201
Created
{ "package_id" : "28f61af50fc9452aa0ed5ea25c3cc3d3", "app_id" : "61f7e74d036aca5be29e1ed4", "package_type" : "firmwarePackage", "product_id" : "5ba24f5ebbe8f56f5a14f605", "version" : "V2.0", "support_source_versions" : [ "V1.0", "V1.1" ], "description" : "package for version V1.0 and V1.1", "custom_info" : "更新了XX功能,修复了XXXX问题", "create_time" : "20230211T121212Z", "file_location" : { "obs_location" : { "region_name" : "cn-north-4", "bucket_name" : "abc", "object_key" : "bbb/upgrade.bin", "sign" : "595124473f866b033dfa1f7e831c8c99a12f6143f392dfa996a819010842c99d" } } }
状态码
状态码 |
描述 |
---|---|
201 |
Created |
400 |
Bad Request |
401 |
Unauthorized |
403 |
Forbidden |
500 |
Internal Server Error |
错误码
请参见错误码。