更新时间:2024-10-23 GMT+08:00

创建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

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数说明:项目ID。获取方法请参见 获取项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证

Instance-Id

String

参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考 查看实例详情

表3 请求Body参数

参数

是否必选

参数类型

描述

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

升级包的位置

表4 FileLocation

参数

是否必选

参数类型

描述

obs_location

ObsLocation object

升级包关联OBS对象位置

表5 ObsLocation

参数

是否必选

参数类型

描述

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

表6 响应Body参数

参数

参数类型

描述

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

升级包的位置

表7 FileLocation

参数

参数类型

描述

obs_location

ObsLocation object

升级包关联OBS对象位置

表8 ObsLocation

参数

参数类型

描述

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

错误码

请参见错误码