接口调用说明

1:鉴权方式

AK(App-Key):访问密钥ID,与私有访问密钥一起使用,对请求进行加密签名。可标识发送方。

SK(Secret-Key):私有访问密钥,与访问密钥ID一起使用,对请求尽情加密签名。

具体请求方式如下,所有接口在请求头中加入以下参数:

  1. Content-Type:application/json
  2. App-Key: {AK}
  3. Timestamp:时间戳,秒级,API访问生命周期前后五分钟内,超出即失效
  4. Signature: HexEncode(HMAC-SHA256(AK+Timestamp+请求体,SK)),加密方式通过HMAC-SHA256,并包装SK。

Signature JS样例

var timestamp = Math.round(new Date()/1000);
var appKey = "AK";
var requestBody = pm.request.body.raw;
var secretKey = "AS";
pm.environment.set("Timestamp", timestamp);
var signContent = appKey + timestamp + requestBody;
console.log("signContent:" + signContent);
var signature = CryptoJS.HmacSHA256(signContent, secretKey).toString();
pm.environment.set("Signature", signature);

Signature java样例

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;

/**
 * 签名工具类
 */
public class SignatureUtils {

    private static final String ALGORITHM = "HmacSHA256";

    public static String createSignature(String accessKey, String secretKey, Long timeStamp, String param) {
        String data = accessKey + timeStamp + param;
        try {
            Mac mac = Mac.getInstance(ALGORITHM);
            mac.init(new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), ALGORITHM));
            byte[] bytes = mac.doFinal(data.getBytes(StandardCharsets.UTF_8));

            StringBuilder builder = new StringBuilder(bytes.length * 2);
            for (byte b : bytes) {
                builder.append(String.format("%02x", b & 0xff));
            }
            return builder.toString();
        } catch (Exception e) {
            throw new RuntimeException("Build Signature error", e);
        }
    }
}

2:生产环境域名

https://developer.tbbpower.com

3:接口

3.1 获取系统包下载地址

接口地址POST /pdm/firmwarepackage

请求参数

字段名 类型 必填 说明
primaryKey 字符串 系统包ID

返回值

字段名 类型 说明
code 数字 200正常返回,非200异常
msg 字符串 当code为200时为空,非200时为异常信息
rows 数组对象 系统包对象数组,参照下方系统包对象

系统包对象

字段名 类型 说明
name 字符串 系统包名称
primaryKey 字符串 ID
version 字符串 版本
firmwareList 数组对象 软件列表,参照下方软件对象

软件对象

字段名 类型 说明
firmwareDetail 对象 附件详情,参照下方附件详情对象
upgradePrompt 数值 重要固件升级提示,0-关,1-开
languageSetting 字符串 提示语设置,数组对象的json字符串,格式如下:
[{
    "language":"zh",  // 语言,zh-中文,en-英语,de-德语,fr-法语,es-西班牙语,it-意大利语,nl=荷兰语,no-挪威语
    "text":"升级更新"  // 提示语
}]

附件详情对象

字段名 类型 说明
name 字符串 附件名称
externalVersion 字符串 外部版本号
itemCode 字符串 品号
itemName 字符串 品名
attachmentList 数组对象 附件文件详情列表,参照下方附件文件详情对象

附件文件详情对象

字段名 类型 说明
name 字符串 名称
url 字符串 minio下载地址
format 字符串 后缀
size 数值 大小

3.2 下载文件

接口地址POST /pdm/download

请求参数

字段名 类型 必填 说明
url 字符串 minio下载地址

返回值

注意:此接口返回的是文件流,而非JSON格式数据。

成功时,响应头(Response Headers)包含:

响应体(Response Body)为二进制文件流,需使用 responseType: 'blob'arraybuffer 接收。