Create Firmware File


Create a firmware file for a product.

Operation Permissions

Required Authorization

Required Operation Permission

Device Management

Full Access

Request Format

POST https://{apigw-address}/connect-service/v2.1/ota-firmwares?action=create

Request Parameters (URI)

Name

Location(Path/Query)

Mandatory/Optional

Data Type

Description

orgId

Query

Mandatory

String

The organization ID which the asset belongs to. How to get orgId>>

productKey

Query

Mandatory

String

The product key.

Request Parameters (Body)

The format of the request body is multipart/form-data, which consists of two form-data sections:

  • Firmware metadata form-data

  • Firmware file form-data

Header of the firmware metadata form-data

Name

Mandatory/Optional

Data Type

Description

Content-Disposition

Mandatory

Content-Disposition: form-data; name=”metadata”

name is a constant that indicates the name of the metadata message.


Body of the firmware metadata form-data

Name

Mandatory/Optional

Data Type

Description

name

Mandatory

StringI18n

The firmware name. For more details on the structure and locales supported, see Internationalized name struct>>

version

Mandatory

String

The firmware version.

signMethod

Mandatory

String

The signature algorithm for the firmware files, supports md5 and sha256.

sign

Mandatory

String

The fimware file signature.

desc

Optional

String

The firmware description.

enableVerification

Mandatory

Boolean

Specifies whether the firmware must be verified for upgrading tasks.

  • true: Needs to be verified.

  • false: Does not need to be verified.


Header of the firmware file form-data

Name

Mandatory/Optional

Data Type

Description

Content-Disposition

Mandatory

Content-Disposition: form-data; name=”file”; filename=”yourFileName”

name is a constant that indicates the name of the metadata message. filename is the filename corresponding to the firmware.

Response Parameters

Name

Data Type

Description

data

FirmwareCreateResult Struct

The created firmware ID. For details, see FirmwareCreateResult Struct>>

FirmwareCreateResult Struct

Name

Data Type

Description

firmwareId

String

The created firmware ID.

Error Codes

Code

Message

Description

24601

Firmware version already exists

A firmware with this version already exists.

24602

Firmware name already exists

A firmware with this name already exists.

24603

Not allowed to create firmware concurrently

Firmware cannot be created concurrently.

Samples

Request Sample

url: https://{apigw-address}/connect-service/v2.1/ota-firmwares?action=create&orgId=yourOrgId&productKey=yourProductKey
method: POST
requestBody:
  Firmware metadata form-data:
    Header:
    Content-Disposition: form-data; name="metadata"
    Body:
    {
    "name": {
        "defaultValue": "testDefaultValue"
    },
    "version": "yourVersion",
    "signMethod": "md5",
    "sign": "7eb565583c040b76b7466af1ecb553f3",
    "enableVerification": false,
    "desc": "ota firmware"
    }

Return Sample

{
    "code": 0,
    "msg": "OK",
    "requestId": "9bba8197-d6d6-4fe2-a3d2-65153ab6376c",
    "data": {
        "firmwareId": "5ee0edb729b990001b9acf9a"
    }
}

Java SDK Sample

package com.envisioniot.enos.connect_service.ota.firmware;

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.api.common.constant.common.StringI18n;
import com.envisioniot.enos.connect_service.v2_1.ota.firmware.CreateFirmwareFileRequest;
import com.envisioniot.enos.connect_service.v2_1.ota.firmware.CreateFirmwareFileResponse;
import com.envisioniot.enos.connect_service.vo.ota.SignMethod;

import java.io.File;

public class CreateFirmware {
    public static void main(String[] args) {
        final String appKey = "yourAppKey";
        final String appSecret = "yourAppSecret";
        String serverUrl = "yourServerUrl";

        String orgId = "yourOrgId";
        String productKey = "yourProductKey";

        CreateFirmwareFileRequest request = new CreateFirmwareFileRequest();
        request.setOrgId(orgId);
        request.setProductKey(productKey);
        StringI18n stringI18n = new StringI18n("testFirmware");
        request.setName(stringI18n);

        request.setVersion("testVersion");
        // Select your firmware file
        request.setFile(new File("yourFilePath"));
        // Choose MD5 or SHA256 as signMethod, the signature of firmware file will be generated automatically
        request.setSignMethod(SignMethod.MD5);
        request.setDesc("testDesc");
        // If enableVerification is true, the firmware must be verified before you create an upgrade task
        request.setEnableVerification(false);

        CreateFirmwareFileResponse response = Poseidon
                .config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
                .url(serverUrl)
                .getResponse(request, CreateFirmwareFileResponse.class);

    }
}