Updated on 2026-06-29 GMT+08:00

Create an OTA Upgrade Package

Function

This API is used to create an OBS object associated with an upgrade package.

Prerequisites: To use this API, you need to authorize IoTDA instances to access OBS and grant them KMS Administrator permissions. For details about the authorization list, see Agency Authorization.

URI

POST /v5/iot/{project_id}/ota-upgrades/packages

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Parameter description : project ID. For details about how to obtain the project ID, see Obtaining a Project ID.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

Instance-Id

No

String

Parameter description : instance ID. Unique identifier of each instance in the physical multi-tenant scenario. Mandatory for professional editions and recommended in other cases. Log in to the IoTDA console and choose Overview in the navigation pane to view the instance ID. For details, see Viewing Instance Details.

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

app_id

Yes

String

Parameter description: resource space ID. If you have multiple resource spaces, you can use this parameter to specify the resource space that the upgrade package to create will belong to.

Value: The value can contain a maximum of 36 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.

package_type

Yes

String

Parameter description: type of the upgrade package.

Options: For a software package, set this parameter to softwarePackage. For a firmware package, set this parameter to firmwarePackage.

product_id

Yes

String

Parameter description : unique ID of the product associated with the device. The value is allocated by the platform after the product is created. For details, see Creating a Product.

Value: The value can contain a maximum of 36 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.

module_name

No

String

Parameter description: OTA module name, which is unique under the product and cannot be changed. This parameter is supported when package_type is set to modulePackage.

Value: The value can contain up to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed.

version

Yes

String

Parameter description: version number of the upgrade package.

Value: The value can contain a maximum of 256 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed.

support_source_versions

No

Array of strings

Parameter description: list of source versions that support the upgrade of this version package. Up to 20 source versions are supported.

Value: A source version number can contain only letters, digits, underscores (_), hyphens (-), and periods (.).

description

No

String

Parameter description: description of the upgrade package functions.

Value length: a maximum of 1,024 characters

custom_info

No

String

Parameter description: custom information pushed to the device. After the upgrade package is added and an upgrade task is created, the IoT platform delivers the custom information to the device when delivering an upgrade notification to the device.

Value length: a maximum of 4,096 characters

file_location

Yes

FileLocation object

Location of the upgrade package.

Table 4 FileLocation

Parameter

Mandatory

Type

Description

obs_location

No

ObsLocation object

Location of the OBS object with which the upgrade package is associated.

Table 5 ObsLocation

Parameter

Mandatory

Type

Description

region_name

Yes

String

Parameter description : OBS region. You can obtain the service endpoint from Regions and Endpoints.

Value: The value can contain a maximum of 256 characters. Only letters, digits, and hyphens (-) are allowed.

bucket_name

Yes

String

Parameter description: OBS bucket name.

Value: The value can contain 3 to 63 characters. Only lowercase letters, digits, hyphens (-), and periods (.) are allowed.

object_key

Yes

String

Parameter description: name of OBS objects (including the folder path). Max. object size: 1 GB. Supported files: .bin, .dav, .tar, .gz, .zip, .gzip, .apk, .tar.gz, .tar.xz, .pack, .exe, .bat, and .img.

Value: a maximum of 1,024 characters.

sign_method

No

String

Parameters

Value: Only SHA-256 is supported. If no value is carried, SHA-256 is used by default.

sign

No

String

Parameter description: upgrade package signature value calculated using the SHA-256 algorithm. After the upgrade package is added and an upgrade task is created, the IoT platform delivers the signature to the device when delivering an upgrade notification to the device.

Value: 64 characters. Only letters and digits are allowed.

Response Parameters

Status code: 201

Table 6 Response body parameters

Parameter

Type

Description

package_id

String

Parameter description: upgrade package ID, which uniquely identifies an upgrade package. The value is allocated by the IoT platform.

Value: The value can contain a maximum of 36 characters. Only letters, digits, and hyphens (-) are allowed.

app_id

String

Parameter description: resource space ID.

Value: The value can contain a maximum of 36 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.

package_type

String

Parameter description: type of the upgrade package.

Options: For a software package, set this parameter to softwarePackage. For a firmware package, set this parameter to firmwarePackage.

product_id

String

Parameter description : unique ID of the product associated with the device. The value is allocated by the platform after the product is created. For details, see Creating a Product.

Value: The value can contain a maximum of 36 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.

product_name

String

Product name associated with the device.

module_name

String

Parameter description: OTA module name, which is unique under the product and cannot be changed.

Value: The value can contain up to 64 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed.

version

String

Parameter description: version number of the upgrade package.

Value: The value can contain a maximum of 256 characters. Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed.

support_source_versions

Array of strings

Parameter description: list of source versions that support the upgrade of this version package. Up to 20 source versions are supported.

Value: A source version number can contain only letters, digits, underscores (_), hyphens (-), and periods (.).

description

String

Parameter description: description of the upgrade package functions.

Value length: a maximum of 1,024 characters

custom_info

String

Parameter description: custom information pushed to the device. After the upgrade package is added and an upgrade task is created, the IoT platform delivers the custom information to the device when delivering an upgrade notification to the device.

Value length: a maximum of 4,096 characters

create_time

String

Time when the software/firmware package is uploaded to the IoT platform. The parameter value is in the format of yyyyMMdd'T'HHmmss'Z'.

file_location

FileLocation object

Location of the upgrade package.

Table 7 FileLocation

Parameter

Type

Description

obs_location

ObsLocation object

Location of the OBS object with which the upgrade package is associated.

Table 8 ObsLocation

Parameter

Type

Description

region_name

String

Parameter description : OBS region. You can obtain the service endpoint from Regions and Endpoints.

Value: The value can contain a maximum of 256 characters. Only letters, digits, and hyphens (-) are allowed.

bucket_name

String

Parameter description: OBS bucket name.

Value: The value can contain 3 to 63 characters. Only lowercase letters, digits, hyphens (-), and periods (.) are allowed.

object_key

String

Parameter description: name of OBS objects (including the folder path). Max. object size: 1 GB. Supported files: .bin, .dav, .tar, .gz, .zip, .gzip, .apk, .tar.gz, .tar.xz, .pack, .exe, .bat, and .img.

Value: a maximum of 1,024 characters.

sign_method

String

Parameters

Value: Only SHA-256 is supported. If no value is carried, SHA-256 is used by default.

sign

String

Parameter description: upgrade package signature value calculated using the SHA-256 algorithm. After the upgrade package is added and an upgrade task is created, the IoT platform delivers the signature to the device when delivering an upgrade notification to the device.

Value: 64 characters. Only letters and digits are allowed.

Example Requests

  • Creates an OTA upgrade package and uploads the firmware package.

    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" : "Updated the XX function and fixed the XXXX issue.",
      "file_location" : {
        "obs_location" : {
          "region_name" : "cn-north-4",
          "bucket_name" : "abc",
          "object_key" : "bbb/upgrade.bin",
          "sign" : "595124473f866b033dfa1f7e831c8c99a12f6143f392dfa996a819010842c99d"
        }
      }
    }
  • Creates an OTA upgrade package and uploads the firmware package. In the differential package scenario, the upgrade from V1.0 and V1.1 is supported.

    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" : "Updated the XX function and fixed the XXXX issue.",
      "file_location" : {
        "obs_location" : {
          "region_name" : "cn-north-4",
          "bucket_name" : "abc",
          "object_key" : "bbb/upgrade.bin",
          "sign" : "595124473f866b033dfa1f7e831c8c99a12f6143f392dfa996a819010842c99d"
        }
      }
    }

Example Responses

Status code: 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" : "Updated the XX function and fixed the XXXX issue.",
  "create_time" : "20230211T121212Z",
  "file_location" : {
    "obs_location" : {
      "region_name" : "cn-north-4",
      "bucket_name" : "abc",
      "object_key" : "bbb/upgrade.bin",
      "sign" : "595124473f866b033dfa1f7e831c8c99a12f6143f392dfa996a819010842c99d"
    }
  }
}

Status Codes

Status Code

Description

201

Created

400

Bad Request

401

Unauthorized

403

Forbidden

500

Internal Server Error

Error Codes

See Error Codes.