API列表
address: https://api-aep.xiot.senthink.com
path: 参考各接口说明中的请求地址
接口调用必须携带公共请求头,公共请求头如下。
参数名称 |
参数值 |
是否必须 |
备注 |
appId |
添加api应用生成的appId |
是 |
|
sign |
计算的签名值,参考签名计算示例 |
是 |
|
nonce |
随机数,可以使用随机数或者uuid |
是 |
|
authorization |
鉴权令牌,通过获取token接口获取 |
否 |
除token相关接口外必须 |
Content-Type |
application/json或multipart/form-data |
是 |
未特殊说明接口均为application/json |
公共错误码
code |
描述 |
处理建议 |
40001 |
账号权限不足 |
检查账号权限 |
60001 |
操作失败,稍后重试 |
检查请求参数格式,或稍后再试 |
60003 |
参数错误 |
检查请求参数是否缺失,数据格式是否正确 |
60006 |
sign值校验错误 |
检查sign值加密方式 |
60007 |
token校验错误 |
检查token或重新获取鉴权参数 |
60009 |
数据不存在 |
检查请求参数对应数据是否存在 |
鉴权
获取鉴权参数
请求地址: /oauth/login
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
refresh_token |
string |
否 |
刷新token |
刷新认证时必须 |
client_id |
string |
是 |
appId |
|
|
client_secret |
string |
是 |
appSecret |
|
|
grant_type |
string |
是 |
认证类型 |
|
password: 默认认证, refresh_token: 刷新认证 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
access_token |
string |
token |
|
token_type |
string |
token类型 |
bearer |
refresh_token |
string |
刷新token |
|
expires_in |
integer |
过期时间(秒) |
|
scope |
string |
权限范围 |
|
user_id |
string |
用户id |
|
user_name |
string |
用户名 |
|
company_id |
string |
用户所属企业 |
|
role_type |
integer |
用户角色 |
1:员工,2.企业 |
jti |
string |
jti |
|
请求示例
1、获取鉴权参数
{
"client_id":"yourAppId",
"client_secret":"yourAppSecret",
"grant_type":"password"
}
2、刷新鉴权参数
{
"refresh_token":"yourRefreshToken",
"client_id":"yourAppId",
"client_secret":"yourAppSecret",
"grant_type":"refresh_token"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"access_token": "theAccessToken",
"token_type": "bearer",
"refresh_token": "theRefreshToken",
"expires_in": 259200,
"scope": "all",
"user_id": "yourUserId",
"user_name": "yourUsername",
"company_id": "yourCompanyId",
"role_type": 1,
"jti": "4b02c4d4-e5d3-42b6-ab67-0062fad87324"
}
}
错误码
code |
描述 |
处理建议 |
30001 |
客户端认证失败 |
检查请求参数内容是否正确 |
30003 |
不支持的认证模式 |
修改认证类型 |
30006 |
无效的refresh_token |
确认refresh_token或使用密码认证方式 |
40001 |
无权限访问! |
检查账号权限 |
60001 |
操作失败,稍后重试 |
检查请求参数格式,或稍后再试 |
60003 |
参数错误 |
检查请求参数格式 |
产品模块
添加产品
请求地址: /openApi/v2/product/add
传参方式: POST
备注: 无
请求参数
Body:
1.公共参数
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
name |
string |
是 |
产品名称 |
长度4~30个字符,中文算2个字符 |
|
deviceType |
integer |
是 |
节点类型 |
|
0:设备, 1:网关 |
accessType |
integer |
是 |
接入类型 |
节点类型为网关时只能选1 |
1:设备直连, 2:云云对接, 3:网关接入 |
payloadFormat |
integer |
是 |
数据格式 |
云云对接产品、网关接入产品只能选1 |
0:透传, 1:非透传 |
dataFormat |
integer |
否 |
消息格式 |
payloadFormat为0时非必须,为1时必须;, protocol为2或3时只能选2 |
0:十六进制, 1:Json, 2:自定义 |
productDesc |
string |
否 |
产品说明 |
长度限制100个字符以内 |
|
2.其他参数
2.1 产品为设备:deviceType = 0
2.1.1 设备直连:accessType = 1
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
netType |
integer |
是 |
网络类型 |
|
0:WI-FI, 1:移动蜂窝数据, 2:以太网, 4:NB-IOT, -1:其他 |
protocol |
integer |
是 |
通信协议 |
|
0:TCP, 1:MQTT, 2:MQTT开放协议 |
securityType |
integer |
是 |
安全类型 |
设备直连时必须;, 通信协议为MQTT开放协议时只能选2 |
0:一型一密免注册, 1:一型一密预注册, 2:一机一密预注册 |
authType |
integer |
否 |
认证加密方式 |
通信协议为MQTT开放协议时非必须,其余必须 |
0:AES128 |
encrypted |
integer |
否 |
数据是否加密 |
通信协议为MQTT开放协议时非必须,其余必须 |
0:不加密, 1:加密 |
2.1.2 云云对接:accessType = 2
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
netType |
integer |
是 |
网络类型 |
0:WI-FI, 1:移动蜂窝数据, 2:以太网, 4:NB-IOT, -1:其他 |
protocol |
integer |
是 |
通信协议 |
3:电信CTWING |
ctwingAppId |
string |
是 |
电信应用ID |
|
ctwingAppKey |
string |
是 |
电信应用key |
|
ctwingAppSecret |
string |
是 |
电信应用密钥 |
|
ctwingMasterKey |
string |
是 |
电信Masterkey |
|
ctwingProductId |
string |
是 |
电信产品productId |
|
ctwingPayloadFormat |
integer |
是 |
电信产品数据格式 |
0:电信非透传, 1:电信透传 |
2.1.3 网关接入:accessType = 3
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
securityType |
integer |
是 |
安全类型 |
0:一型一密免注册, 1:一型一密预注册, 2:一机一密预注册 |
gatewayProtocol |
integer |
是 |
通信协议 |
0:Zigbee, 1:Lora, 2:自定义 |
2.2 产品为网关:deviceType = 1
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
netType |
integer |
是 |
网络类型 |
0:WI-FI, 1:移动蜂窝数据, 2:以太网, 4:NB-IOT, -1:其他 |
protocol |
integer |
是 |
通信协议 |
1:MQTT |
securityType |
integer |
是 |
安全类型 |
0:一型一密免注册, 1:一型一密预注册, 2:一机一密预注册 |
authType |
integer |
是 |
认证加密方式 |
0:AES128 |
encrypted |
integer |
是 |
数据是否加密 |
0:不加密, 1:加密 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
productId |
string |
产品productId |
|
productKey |
string |
产品密钥 |
|
name |
string |
产品名称 |
|
accessType |
integer |
接入类型 |
1:设备直连, 2:云云对接, 3:网关接入 |
netType |
integer |
网络类型 |
0:WI-FI, 1:移动蜂窝数据, 2:以太网, 4:NB-IOT, -1:其他 |
protocol |
integer |
协议类型 |
0:TCP, 1:MQTT, 2:MQTT开放协议, 3:电信CTWING |
deviceType |
integer |
设备类型 |
0:设备, 1:网关 |
securityType |
integer |
安全类型 |
0:一型一密免注册, 1:一型一密预注册, 2:一机一密预注册 |
authType |
integer |
认证类型 |
0:AES128 |
encrypted |
integer |
是否加密 |
0:不加密, 1:加密 |
payloadFormat |
integer |
数据格式 |
0:透传, 1:非透传 |
dataFormat |
integer |
消息格式 |
0:十六进制, 1:Json, 2:自定义 |
productDesc |
string |
产品描述 |
|
createAt |
string |
创建时间 |
|
deviceNum |
integer |
产品设备数 |
|
示例
1、产品为设备:设备直连
请求示例
{
"name":"OpenAPIV2产品MQTT测试001",
"deviceType":0,
"accessType":1,
"payloadFormat":1,
"dataFormat":0,
"authType":0,
"encrypted":0,
"netType":0,
"protocol":1,
"securityType":1
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"productId": "98FF3568",
"productKey": "FD2BC404DDA7840C6126B84259689BA3",
"name": "OpenAPIV2产品MQTT测试001",
"accessType": 1,
"netType": 0,
"protocol": 1,
"deviceType": 0,
"securityType": 1,
"authType": 0,
"encrypted": 0,
"payloadFormat": 1,
"dataFormat": 0,
"productDesc": null,
"createAt": "2022-12-14 11:08:09",
"deviceNum": 0
}
}
2、产品为设备:云云对接
请求示例
{
"name":"OpenAPIV2产品Ctwing测试001",
"deviceType":0,
"accessType":2,
"payloadFormat":1,
"dataFormat":2,
"authType":0,
"encrypted":0,
"netType":0,
"protocol":3,
"ctwingAppId":"67844",
"ctwingAppKey":"WTazSGDqTuh",
"ctwingAppSecret":"Cx6E1ccFn3",
"ctwingMasterKey":"2d2b8c70eadc4e56b35de494b85319f4",
"ctwingProductId":"15495260",
"ctwingPayloadFormat":0
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"productId": "78D5BFFA",
"productKey": "514D12A9F605634EBD19E0B573B54D41",
"name": "OpenAPIV2产品Ctwing测试001",
"accessType": 2,
"netType": 0,
"protocol": 3,
"deviceType": 0,
"securityType": null,
"authType": null,
"encrypted": null,
"payloadFormat": 1,
"dataFormat": 2,
"productDesc": null,
"createAt": "2022-12-14 11:27:54",
"deviceNum": 0
}
}
3、产品为设备:网关接入
请求示例
{
"name":"OpenAPIV2产品网关接入测试001",
"deviceType":0,
"accessType":3,
"payloadFormat":1,
"dataFormat":1,
"securityType":1,
"gatewayProtocol":1
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"productId": "11E1E03F",
"productKey": "64A4A764F37EFBEFAC05B1DF9EC9091B",
"name": "OpenAPIV2产品网关接入测试001",
"accessType": 3,
"netType": null,
"protocol": 1,
"deviceType": 0,
"securityType": 1,
"authType": null,
"encrypted": null,
"payloadFormat": 1,
"dataFormat": 1,
"productDesc": null,
"createAt": "2022-12-14 11:33:56",
"deviceNum": 0
}
}
4、产品为网关
请求示例
{
"name":"OpenAPIV2产品节点网关测试001",
"deviceType":1,
"accessType":1,
"payloadFormat":1,
"dataFormat":0,
"netType":0,
"protocol":1,
"securityType":1,
"authType":0,
"encrypted":0
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"productId": "59D3C6A3",
"productKey": "675F55777B069113F7D3FFA6F9129E0A",
"name": "OpenAPIV2产品节点网关测试001",
"accessType": 1,
"netType": 0,
"protocol": 1,
"deviceType": 1,
"securityType": 1,
"authType": 0,
"encrypted": 0,
"payloadFormat": 1,
"dataFormat": 0,
"productDesc": null,
"createAt": "2022-12-14 11:39:22",
"deviceNum": 0
}
}
错误码
code |
描述 |
66001 |
添加产品失败 |
66003 |
产品名称不符合格式 |
66004 |
产品描述超出限制 |
66005 |
接入方式错误 |
编辑产品
请求地址: /openApi/v2/product/edit
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
name |
string |
是 |
产品名称 |
|
productDesc |
string |
否 |
产品说明 |
长度限制100个字符以内 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"productId": "98FF3568",
"name":"OpenAPIV2产品MQTT测试0011",
"productDesc": "api编辑产品"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60004 |
产品不存在 |
66003 |
产品名称不符合格式 |
66004 |
产品描述超出限制 |
删除产品
请求地址: /openApi/v2/product/delete
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"productId": "8A0F0491"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60004 |
产品不存在 |
66002 |
删除产品失败 |
查询产品详情
请求地址: /openApi/v2/product/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
productId |
string |
产品productId |
|
productKey |
string |
产品密钥 |
|
name |
string |
产品名称 |
|
accessType |
integer |
接入类型 |
1:设备直连, 2:云云对接, 3:网关接入 |
netType |
integer |
网络类型 |
0:WI-FI, 1:移动蜂窝数据, 2:以太网, 4:NB-IOT, -1:其他 |
protocol |
integer |
协议类型 |
0:TCP, 1:MQTT, 2:MQTT开放协议, 3:电信CTWING |
deviceType |
integer |
设备类型 |
0:设备, 1:网关 |
securityType |
integer |
安全类型 |
0:一型一密免注册, 1:一型一密预注册, 2:一机一密预注册 |
authType |
integer |
认证类型 |
0:AES128 |
encrypted |
integer |
是否加密 |
0:不加密, 1:加密 |
payloadFormat |
integer |
数据格式 |
0:透传, 1:非透传 |
dataFormat |
integer |
消息格式 |
0:十六进制, 1:Json, 2:自定义 |
productDesc |
string |
产品描述 |
|
createAt |
string |
创建时间 |
|
deviceNum |
integer |
产品设备数 |
|
请求示例
{
"productId":"98FF3568"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"productId": "98FF3568",
"productKey": "FD2BC404DDA7840C6126B84259689BA3",
"name": "OpenAPIV2产品MQTT测试001",
"accessType": 1,
"netType": 0,
"protocol": 1,
"deviceType": 0,
"securityType": 1,
"authType": 0,
"encrypted": 0,
"payloadFormat": 1,
"dataFormat": 0,
"productDesc": null,
"createAt": "2022-12-14 11:08:09",
"deviceNum": 0
}
}
错误码
获取产品列表
请求地址: /openApi/v2/product/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
productId |
string |
产品productId |
productKey |
string |
产品密钥 |
name |
string |
产品名称 |
accessType |
integer |
接入类型 |
1:设备直连, 2:云云对接, 3:网关接入 |
netType |
integer |
网络类型 |
0:WI-FI, 1:移动蜂窝数据, 2:以太网, 4:NB-IOT, -1:其他 |
protocol |
integer |
协议类型 |
0:TCP, 1:MQTT, 2:MQTT开放协议, 3:电信CTWING |
deviceType |
integer |
设备类型 |
0:设备, 1:网关 |
securityType |
integer |
安全类型 |
0:一型一密免注册, 1:一型一密预注册, 2:一机一密预注册 |
authType |
integer |
认证类型 |
0:AES128 |
encrypted |
integer |
是否加密 |
0:不加密, 1:加密 |
payloadFormat |
integer |
数据格式 |
0:透传, 1:非透传 |
dataFormat |
integer |
消息格式 |
0:十六进制, 1:Json, 2:自定义 |
productDesc |
string |
产品描述 |
createAt |
string |
创建时间 |
deviceNum |
integer |
产品设备数 |
请求示例
{
"page": 1,
"pageSize": 100
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"productId": "A66AF6D8",
"productKey": "6D63E72964F24B076D44689949242FB5",
"name": "OpenAPIV2产品MQTT测试002",
"accessType": 1,
"netType": 0,
"protocol": 1,
"deviceType": 0,
"securityType": 1,
"authType": 0,
"encrypted": 0,
"payloadFormat": 1,
"dataFormat": 0,
"productDesc": null,
"createAt": "2022-12-14 15:17:26",
"deviceNum": 0
}
],
"current": 1,
"size": 1,
"total": 30
}
}
获取产品物模型tsl
请求地址: /openApi/v2/product/getTsl
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
modelId |
string |
物模型id |
productId |
string |
产品productId |
productName |
string |
产品名称 |
draftModelMetaData |
string |
物模型草稿 |
modelMetaData |
string |
已发布的物模型 |
draftAnalyzeScript |
string |
解析脚本草稿 |
analyzeScript |
string |
已发布的解析脚本 |
请求示例
{
"productId": "1286A6CA"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"modelId": "636b1cd6b55f7227a27e5861",
"productId": "1286A6CA",
"productName": "测试物模型非透传json格式",
"draftModelMetaData": "{\"profile\":{\"version\":\"1.0\",\"productKey\":\"40CE563F93E598FEF3A78E636D54B340\",\"productModelId\":\"636b1cd6b55f7227a27e5861\"},\"properties\":[{\"identifier\":\"test_int11\",\"name\":\"test_int11\",\"dataType\":{\"type\":\"int32\",\"spec\":{}},\"accessMode\":\"r\"},{\"identifier\":\"test_int\",\"identifierOld\":\"test_int1\",\"name\":\"test_int\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"1\",\"max\":\"100\",\"step\":\"1\",\"unit\":\"\"}},\"accessMode\":\"rw\"},{\"identifier\":\"ttttest_bool\",\"identifierOld\":\"tttest_bool\",\"name\":\"ttttest_bool\",\"dataType\":{\"type\":\"bool\",\"spec\":{\"0\":\"关2\",\"1\":\"开2\"}},\"accessMode\":\"rw\"}],\"events\":[{\"identifier\":\"q\",\"identifierOld\":\"q\",\"name\":\"q\",\"type\":\"info\",\"outputData\":[{\"identifier\":\"q\",\"identifierOld\":\"q\",\"name\":\"qq\",\"dataType\":{\"type\":\"int32\",\"spec\":{}}},{\"identifier\":\"q1\",\"name\":\"11\",\"dataType\":{\"type\":\"int32\",\"spec\":{}}}]}],\"services\":[{\"identifier\":\"qqqp\",\"identifierOld\":\"qqqp\",\"name\":\"qq\",\"callType\":\"async\",\"inputData\":[{\"identifier\":\"11\",\"identifierOld\":\"11\",\"name\":\"11\",\"dataType\":{\"type\":\"int32\",\"spec\":{}}},{\"identifier\":\"2\",\"name\":\"22\",\"dataType\":{\"type\":\"int32\",\"spec\":{}}}],\"outputData\":[{\"identifier\":\"3\",\"identifierOld\":\"3\",\"name\":\"33\",\"dataType\":{\"type\":\"float\",\"spec\":{}}}]}]}",
"modelMetaData": "{\"profile\":{\"version\":\"1.0\",\"productKey\":\"40CE563F93E598FEF3A78E636D54B340\",\"productModelId\":\"636b1cd6b55f7227a27e5861\"},\"properties\":[{\"identifier\":\"test_int11\",\"name\":\"test_int11\",\"dataType\":{\"type\":\"int32\",\"spec\":{}},\"accessMode\":\"r\"},{\"identifier\":\"test_int\",\"identifierOld\":\"test_int1\",\"name\":\"test_int\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"1\",\"max\":\"100\",\"step\":\"1\",\"unit\":\"\"}},\"accessMode\":\"rw\"},{\"identifier\":\"ttttest_bool\",\"identifierOld\":\"tttest_bool\",\"name\":\"ttttest_bool\",\"dataType\":{\"type\":\"bool\",\"spec\":{\"0\":\"关2\",\"1\":\"开2\"}},\"accessMode\":\"rw\"}],\"events\":[{\"identifier\":\"q\",\"identifierOld\":\"q\",\"name\":\"q\",\"type\":\"info\",\"outputData\":[{\"identifier\":\"q\",\"identifierOld\":\"q\",\"name\":\"qq\",\"dataType\":{\"type\":\"int32\",\"spec\":{}}},{\"identifier\":\"q1\",\"name\":\"11\",\"dataType\":{\"type\":\"int32\",\"spec\":{}}}]}],\"services\":[{\"identifier\":\"qqqp\",\"identifierOld\":\"qqqp\",\"name\":\"qq\",\"callType\":\"async\",\"inputData\":[{\"identifier\":\"11\",\"identifierOld\":\"11\",\"name\":\"11\",\"dataType\":{\"type\":\"int32\",\"spec\":{}}},{\"identifier\":\"22\",\"identifierOld\":\"22\",\"name\":\"22\",\"dataType\":{\"type\":\"int32\",\"spec\":{}}}],\"outputData\":[{\"identifier\":\"3\",\"name\":\"33\",\"dataType\":{\"type\":\"float\",\"spec\":{}}}]}]}",
"draftAnalyzeScript": "/**\n * 上行16进制字符串转物模型JSON入口\n * \n*/\nfunction rawDataToProtocol(strString) {\n// todo hex to jsonString var jsonMap = new Object();\n return jsonMap;\n}\n\n/**\n * 下行json格式数据转十六进制字符串入口\n * \n*/\nfunction protocolToRawData(json) {\n// todo json to hexStringvar hexString = \"\" return hexString;\n}\n",
"analyzeScript": null
}
}
错误码
获取产品下相关的Topic
请求地址: /openApi/v2/product/getTopic
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
nodeEui |
string |
否 |
设备号 |
传nodeEui就具体到设备,不传就加通配符 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
nodeTopic |
MqttTopic[] |
设备topic |
|
baseTopic |
MqttTopic[] |
基础通信topic |
|
throughTopic |
MqttTopic[] |
透传调试topic |
|
modelTopic |
MqttTopic[] |
物模型jsonTopic |
|
modelHexTopic |
MqttTopic[] |
物模型hexTopic |
|
customTopic |
MqttTopic[] |
自定义topic |
|
childTopic |
MqttTopic[] |
子设备topic |
|
MqttTopic 说明
参数名称 |
类型 |
名称 |
参数 |
function |
string |
功能 |
|
topic |
string |
topic |
|
permission |
integer |
操作权限 |
1:订阅, 2:发布, |
desc |
string |
描述 |
|
subStatus |
integer |
订阅状态 |
1:已订阅, 2:未订阅, 3:发布 |
示例
1、只传入产品productId
请求示例
{
"productId": "A66AF6D8"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"nodeTopic": null,
"baseTopic": [
{
"function": "认证",
"topic": "/sys/device/auth",
"permission": 2,
"desc": "用于设备认证",
"subStatus": null
},
{
"function": "入网",
"topic": "/sys/device/join",
"permission": 2,
"desc": "用于设备入网",
"subStatus": null
},
{
"function": "数据下行",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/downlink",
"permission": 1,
"desc": "平台下行topic(用于认证,心跳,入网的回复)",
"subStatus": null
},
{
"function": "心跳",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/heartbeat",
"permission": 2,
"desc": "用于心跳上报",
"subStatus": null
},
{
"function": "固件上报",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/firmware_report",
"permission": 2,
"desc": "用于固件上报",
"subStatus": null
},
{
"function": "固件上报应答",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/firmware_report_ack",
"permission": 1,
"desc": "固件上报服务端应答",
"subStatus": null
},
{
"function": "固件查询",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/ask_firmware",
"permission": 1,
"desc": "平台查询设备固件信息",
"subStatus": null
},
{
"function": "升级通知",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/ota_notify",
"permission": 1,
"desc": "平台通知设备升级",
"subStatus": null
},
{
"function": "升级通知回复",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/ota_notify_ack",
"permission": 2,
"desc": "设备收到ota通知之后回复平台",
"subStatus": null
},
{
"function": "查询配置",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/ask_config",
"permission": 1,
"desc": "平台查询设备配置信息",
"subStatus": null
},
{
"function": "配置上报",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/config_report",
"permission": 2,
"desc": "设备上报配置以及平台下发配置的回复均使用该topic",
"subStatus": null
},
{
"function": "下发配置",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/down_config",
"permission": 1,
"desc": "平台给设备下发配置",
"subStatus": null
},
{
"function": "下发订阅通配",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/#",
"permission": 1,
"desc": "下发订阅通配",
"subStatus": null
}
],
"throughTopic": null,
"modelTopic": null,
"modelHexTopic": [
{
"function": "设备属性、事件上报",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/model/hex/report",
"permission": 2,
"desc": "设备物模型数据上报",
"subStatus": null
},
{
"function": "平台应答",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/model/hex/report_ack",
"permission": 1,
"desc": "平台响应设备数据上报",
"subStatus": null
},
{
"function": "平台下发属性查询、属性设置、服务调用",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/model/hex/downlink",
"permission": 1,
"desc": "平台下发数据",
"subStatus": null
},
{
"function": "设备应答",
"topic": "/sys/8C3E488A/A66AF6D8/${deviceId}/model/hex/downlink_ack",
"permission": 2,
"desc": "设备响应平台下发数据",
"subStatus": null
}
],
"customTopic": [
{
"function": null,
"topic": "/sys/sub/8C3E488A/A66AF6D8/${deviceId}/custom/pubTest",
"permission": 1,
"desc": "test",
"subStatus": null
},
{
"function": null,
"topic": "/sys/pub/8C3E488A/A66AF6D8/${deviceId}/custom/testPub",
"permission": 2,
"desc": "test1",
"subStatus": null
}
],
"childTopic": null
}
}
2、传入产品productId和设备号
请求示例
{
"productId": "620cafcb",
"nodeEui":"0001"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"nodeTopic": [
{
"function": "认证",
"topic": "/sys/device/auth",
"permission": 2,
"desc": "用于设备认证",
"subStatus": 3
},
{
"function": "入网",
"topic": "/sys/device/join",
"permission": 2,
"desc": "用于设备入网",
"subStatus": 3
},
{
"function": "数据下行",
"topic": "/sys/8C3E488A/A66AF6D8/0001/downlink",
"permission": 1,
"desc": "平台下行topic(用于认证,心跳,入网的回复)",
"subStatus": 2
},
{
"function": "心跳",
"topic": "/sys/8C3E488A/A66AF6D8/0001/heartbeat",
"permission": 2,
"desc": "用于心跳上报",
"subStatus": 3
},
{
"function": "固件上报",
"topic": "/sys/8C3E488A/A66AF6D8/0001/firmware_report",
"permission": 2,
"desc": "用于固件上报",
"subStatus": 3
},
{
"function": "固件上报应答",
"topic": "/sys/8C3E488A/A66AF6D8/0001/firmware_report_ack",
"permission": 1,
"desc": "固件上报服务端应答",
"subStatus": 2
},
{
"function": "固件查询",
"topic": "/sys/8C3E488A/A66AF6D8/0001/ask_firmware",
"permission": 1,
"desc": "平台查询设备固件信息",
"subStatus": 2
},
{
"function": "升级通知",
"topic": "/sys/8C3E488A/A66AF6D8/0001/ota_notify",
"permission": 1,
"desc": "平台通知设备升级",
"subStatus": 2
},
{
"function": "升级通知回复",
"topic": "/sys/8C3E488A/A66AF6D8/0001/ota_notify_ack",
"permission": 2,
"desc": "设备收到ota通知之后回复平台",
"subStatus": 3
},
{
"function": "查询配置",
"topic": "/sys/8C3E488A/A66AF6D8/0001/ask_config",
"permission": 1,
"desc": "平台查询设备配置信息",
"subStatus": 2
},
{
"function": "配置上报",
"topic": "/sys/8C3E488A/A66AF6D8/0001/config_report",
"permission": 2,
"desc": "设备上报配置以及平台下发配置的回复均使用该topic",
"subStatus": 3
},
{
"function": "下发配置",
"topic": "/sys/8C3E488A/A66AF6D8/0001/down_config",
"permission": 1,
"desc": "平台给设备下发配置",
"subStatus": 2
},
{
"function": "下发订阅通配",
"topic": "/sys/8C3E488A/A66AF6D8/0001/#",
"permission": 1,
"desc": "下发订阅通配",
"subStatus": 2
},
{
"function": "设备属性、事件上报",
"topic": "/sys/8C3E488A/A66AF6D8/0001/model/hex/report",
"permission": 2,
"desc": "设备物模型数据上报",
"subStatus": 3
},
{
"function": "平台应答",
"topic": "/sys/8C3E488A/A66AF6D8/0001/model/hex/report_ack",
"permission": 1,
"desc": "平台响应设备数据上报",
"subStatus": 2
},
{
"function": "平台下发属性查询、属性设置、服务调用",
"topic": "/sys/8C3E488A/A66AF6D8/0001/model/hex/downlink",
"permission": 1,
"desc": "平台下发数据",
"subStatus": 2
},
{
"function": "设备应答",
"topic": "/sys/8C3E488A/A66AF6D8/0001/model/hex/downlink_ack",
"permission": 2,
"desc": "设备响应平台下发数据",
"subStatus": 3
},
{
"function": null,
"topic": "/sys/pub/8C3E488A/A66AF6D8/0001/custom/testPub",
"permission": 2,
"desc": "test1",
"subStatus": 3
},
{
"function": null,
"topic": "/sys/sub/8C3E488A/A66AF6D8/0001/custom/pubTest",
"permission": 1,
"desc": "test",
"subStatus": 2
}
],
"baseTopic": null,
"throughTopic": null,
"modelTopic": null,
"modelHexTopic": null,
"customTopic": null,
"childTopic": null
}
}
错误码
code |
描述 |
60004 |
产品不存在 |
60005 |
设备不存在 |
设备管理
添加设备
请求地址: /openApi/v2/node/add
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
nodeEui |
string |
是 |
设备号 |
- 设备号在系统内具有产品下唯一性,支持英文字母、数字,长度限制4-32个字符; - 电信CTWING设备ID必须为15位数字。 |
deviceName |
string |
是 |
设备名称 |
长度4-30个字符,中文算2个字符 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
nodeId |
string |
设备id |
nodeEui |
string |
设备号 |
deviceSecret |
string |
设备Secret |
productId |
string |
产品productId |
productKey |
string |
产品密钥 |
请求示例
{
"productId":"5207C002",
"nodeEui":"mqttDevice002",
"deviceName":"qqqq"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"nodeId": "639ac12f8ceff74a36d5b66f",
"nodeEui": "mqttDevice002",
"deviceSecret": "DA1BA501D81C5C7777ED3C4B1456F704",
"productId": "5207C002",
"productKey": "82E9AD63B2C7D26A4B24355BE631E847"
}
}
错误码
code |
描述 |
60004 |
产品不存在 |
61003 |
设备已存在 |
61004 |
设备号不符合规范 |
61005 |
设备备注名称不符合规范 |
编辑设备
请求地址: /openApi/v2/node/edit
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
是 |
设备id |
|
deviceName |
string |
是 |
设备名称 |
长度4-30个字符,中文算2个字符 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"nodeId":"639abdbdc7df4956b4ec4aa9",
"deviceName":"修改设备名称测试"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
61005 |
设备备注名称不符合规范 |
删除设备
请求地址: /openApi/v2/node/delete
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
是 |
设备id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"nodeId":"639abdbdc7df4956b4ec4aa9"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
分页查询设备
请求地址: /openApi/v2/node/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
connected |
integer |
否 |
在线状态 |
0:离线, 1:在线, -1:未激活 |
enableStatus |
integer |
否 |
启用状态 |
0:禁用, 1:启用 |
productId |
string |
否 |
产品productId |
nodeEui |
string |
否 |
设备号 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
nodeId |
string |
设备id |
nodeEui |
string |
设备号 |
deviceName |
string |
设备名称 |
deviceSecret |
string |
设备密钥 |
status |
integer |
设备启用状态 |
0:禁用, 1:启用 |
connected |
integer |
在线状态 |
-1:未激活, 0:离线, 1:在线 |
productId |
string |
所属产品productId |
productKey |
string |
所属产品productKey |
productName |
string |
所属产品名称 |
deviceType |
integer |
节点类型 |
0:设备, 1:网关 |
encrypted |
integer |
是否加密 |
0:不加密, 1:加密 |
upNodeId |
string |
子设备对应的网关设备的设备号 |
subDeviceCount |
integer |
网关子设备数量 |
relationState |
integer |
网关与子设备的关系 |
0:未关联, 1:已关联, 2:解除中 |
gatewayStatus |
integer |
子设备所属网关设备的状态 |
-1:未激活, 0:离线, 1:在线 |
localLogReport |
integer |
本地日志上报使能 |
0:禁用, 1:启用 |
otaType |
integer |
设备升级方式 |
0:tcp, 1:http |
hardVer |
string |
硬件版本 |
softVer |
string |
软件版本 |
versionReportAt |
string |
版本上报时间 |
createAt |
string |
创建时间 |
activeAt |
string |
智能设备激活时间 |
lastJoinAt |
string |
智能设备最近一次入网时间 |
lastDisconnectAt |
string |
智能设备最近一次离线时间 |
lastHeartbeatAt |
string |
智能设备最近一次心跳时间 |
请求示例
{
"page":1,
"pageSize":1
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"nodeId": "639ac1e78ceff74a36d5b671",
"nodeEui": "mqttDevice00",
"deviceName": "mqttDevice00",
"deviceSecret": "E2947CCCEBA91B04E85CF4A9359F7DE5",
"status": 1,
"connected": -1,
"productId": "5207C002",
"productKey": "82E9AD63B2C7D26A4B24355BE631E847",
"productName": "OpenAPI产品MQTT测试001",
"deviceType": 0,
"encrypted": 0,
"upNodeId": null,
"subDeviceCount": 0,
"relationState": 0,
"gatewayStatus": null,
"localLogReport": 1,
"otaType": null,
"hardVer": null,
"softVer": null,
"versionReportAt": null,
"createAt": "2022-12-15 14:42:47",
"activeAt": null,
"lastJoinAt": null,
"lastDisconnectAt": null,
"lastHeartbeatAt": null
}
],
"current": 1,
"size": 1,
"total": 38
}
}
设备详情
请求地址: /openApi/v2/node/query
传参方式: POST
备注:
- 无设备id时,设备号和产品productId必填
- 当设备id、设备号、产品productId都有值的情况下,以设备id为准
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
否 |
设备id |
|
nodeEui |
string |
否 |
设备号 |
|
productId |
string |
否 |
产品productId |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
nodeId |
string |
设备id |
nodeEui |
string |
设备号 |
deviceName |
string |
设备名称 |
deviceSecret |
string |
设备密钥 |
status |
integer |
设备启用状态 |
0:禁用, 1:启用 |
connected |
integer |
在线状态 |
-1:未激活, 0:离线, 1:在线 |
productId |
string |
所属产品productId |
productKey |
string |
所属产品productKey |
productName |
string |
所属产品名称 |
deviceType |
integer |
节点类型 |
0:设备, 1:网关 |
encrypted |
integer |
是否加密 |
0:不加密, 1:加密 |
upNodeId |
string |
子设备对应的网关设备的设备号 |
subDeviceCount |
integer |
网关子设备数量 |
relationState |
integer |
网关与子设备的关系 |
0:未关联, 1:已关联, 2:解除中 |
gatewayStatus |
integer |
子设备所属网关设备的状态 |
-1:未激活, 0:离线, 1:在线 |
localLogReport |
integer |
本地日志上报使能 |
0:禁用, 1:启用 |
otaType |
integer |
设备升级方式 |
0:tcp, 1:http |
hardVer |
string |
硬件版本 |
softVer |
string |
软件版本 |
versionReportAt |
string |
版本上报时间 |
createAt |
string |
创建时间 |
activeAt |
string |
智能设备激活时间 |
lastJoinAt |
string |
智能设备最近一次入网时间 |
lastDisconnectAt |
string |
智能设备最近一次离线时间 |
lastHeartbeatAt |
string |
智能设备最近一次心跳时间 |
请求示例
{
"nodeId":"639ac12f8ceff74a36d5b66f"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"nodeId": "639ac12f8ceff74a36d5b66f",
"nodeEui": "mqttDevice002",
"deviceName": "qqqq",
"deviceSecret": "DA1BA501D81C5C7777ED3C4B1456F704",
"status": 1,
"connected": -1,
"productId": "5207C002",
"productKey": "82E9AD63B2C7D26A4B24355BE631E847",
"productName": "OpenAPI产品MQTT测试001",
"deviceType": 0,
"encrypted": 0,
"localLogReport": 1,
"otaType": null,
"hardVer": null,
"softVer": null,
"versionReportAt": null,
"createAt": "2022-12-15 14:39:43",
"activeAt": null,
"lastJoinAt": null,
"lastDisconnectAt": null,
"lastHeartbeatAt": null
}
}
错误码
自定义topic在线调试
请求地址: /openApi/v2/node/customInstruct
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
是 |
设备id |
|
instruction |
string |
是 |
命令 |
|
topic |
string |
是 |
自定义topic |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"nodeId": "639ac12f8ceff74a36d5b66f",
"instruction": "FFFF",
"topic": "/sys/sub/8C3E488A/A98F5743/lnmqtt0007/custom/test"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
62001 |
设备不在线 |
62002 |
设备已禁用 |
普通透传在线调试
请求地址: /openApi/v2/node/instruct
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
nodeId |
string |
是 |
设备id |
|
instruction |
string |
是 |
命令 |
|
instructionType |
string |
是 |
命令类型 |
0:十六进制, 1:字符串 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"nodeId": "639ac12f8ceff74a36d5b66f",
"instruction": "FFFF",
"instructionType": 0
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
62001 |
设备不在线 |
62002 |
设备已禁用 |
下发配置
请求地址: /openApi/v2/node/config
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
nodeId |
string |
是 |
设备id |
|
|
configData |
string |
是 |
配置数据 |
|
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"nodeId": "620cafcb40539518e647cb39",
"configData": "{data:\"1231\"}"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
62001 |
设备不在线 |
62002 |
设备已禁用 |
62003 |
不支持的命令类型 |
获取配置
请求地址: /openApi/v2/node/getConfig
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
是 |
设备id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"nodeId": "620cafcb40539518e647cb39"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
62001 |
设备不在线 |
62002 |
设备已禁用 |
批量导入设备
请求地址: /openApi/v2/node/batchAdd
传参方式: POST
备注: 同一个appId上次任务未结束,不能创建新任务
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
nodes |
nodeDetail[] |
是 |
设备列表 |
|
nodeDetail 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeEui |
string |
是 |
设备号 |
|
deviceName |
string |
是 |
设备名称 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
applyId |
string |
批次号 |
|
请求示例
{
"productId": "5207C002",
"nodes": [{
"nodeEui": "mqttDevice004",
"deviceName": "004"
},
{
"nodeEui": "mqttDevice005",
"deviceName": "005"
},
{
"nodeEui": "mqttDevice006",
"deviceName": "006"
},
{
"nodeEui": "mqttDevice008",
"deviceName": "008"
}
]
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"applyId": "af14f07d-8961-4a81-bd82-af29d7ca6432"
}
}
错误码
code |
描述 |
61001 |
设备导入失败 |
61002 |
导入超过上限 |
61003 |
设备已存在 |
61004 |
设备号不符合规范 |
61005 |
设备备注名称不符合规范 |
批量导入设备批次号查询接口
请求地址: /openApi/v2/node/queryBatchAddInfo
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
applyId |
string |
是 |
批量插入批次号 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
successList |
successList[] |
成功列表(分页) |
failList |
failList[] |
失败列表(不分页) |
importStatus |
integer |
导入状态 |
-1:导入失败, 0:导入中, 1:导入完成 |
successList 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
备注 |
nodeId |
string |
设备id |
nodeEui |
string |
设备号 |
deviceSecret |
string |
设备Secret |
productId |
string |
产品productId |
productKey |
string |
产品密钥 |
failList 说明
参数名称 |
类型 |
名称 |
备注 |
nodeEui |
string |
设备号 |
deviceName |
string |
设备名称 |
failReason |
string |
失败原因 |
请求示例
{
"applyId":"7a6c09b5-b565-49fa-99b5-5d3c5facfbdf"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"importStatus": 1,
"successList": {
"records": [
{
"nodeId": "63a16d278e5f354034bd69a3",
"nodeEui": "mqttDevice008",
"deviceSecret": "B3DB80BB4DE5302E3C6739715E0C1B8D",
"productId": "5207C002",
"productKey": "82E9AD63B2C7D26A4B24355BE631E847"
}
],
"current": 1,
"size": 10,
"total": 1
},
"failList": [
{
"nodeEui": "mqttDevice009",
"deviceName": "009",
"failReason": "deviceName格式非法"
}
]
}
}
子设备管理
批量添加或解除子设备
请求地址: /openApi/v2/subDevice/batchAddOrRelieve
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
gatewayNodeId |
string |
是 |
网关设备id |
|
subdeviceNodeIds |
string[] |
是 |
子设备id集合 |
|
type |
boolean |
是 |
操作类型 |
true:批量添加子设备, false:批量解除子设备 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"gatewayNodeId": "63a18ad6d2c8a94fe4cd337b",
"subdeviceNodeIds": ["63a18b1ad2c8a94fe4cd3382", "63a18b25d2c8a94fe4cd3385"],
"type": true
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
61014 |
子设备已存在关联网关 |
分页查询子设备列表
请求地址: /openApi/v2/subDevice/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
nodeId |
string |
是 |
网关设备id |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
备注 |
nodeId |
string |
设备id |
nodeEui |
string |
设备号 |
deviceName |
string |
设备名称 |
deviceSecret |
string |
设备密钥 |
status |
integer |
设备启用状态 |
0:禁用, 1:启用 |
connected |
integer |
在线状态 |
-1:未激活, 0:离线, 1:在线 |
productId |
string |
所属产品productId |
productKey |
string |
所属产品productKey |
productName |
string |
所属产品名称 |
deviceType |
integer |
节点类型 |
0:设备, 1:网关 |
encrypted |
integer |
是否加密 |
0:不加密, 1:加密 |
upNodeId |
string |
子设备对应的网关设备的设备号 |
subDeviceCount |
integer |
网关子设备数量 |
relationState |
integer |
网关与子设备的关系 |
0:未关联, 1:已关联, 2:解除中 |
gatewayStatus |
integer |
子设备所属网关设备的状态 |
-1:未激活, 0:离线, 1:在线 |
localLogReport |
integer |
本地日志上报使能 |
0:禁用, 1:启用 |
otaType |
integer |
设备升级方式 |
0:tcp, 1:http |
hardVer |
string |
硬件版本 |
softVer |
string |
软件版本 |
versionReportAt |
string |
版本上报时间 |
createAt |
string |
创建时间 |
activeAt |
string |
智能设备激活时间 |
lastJoinAt |
string |
智能设备最近一次入网时间 |
lastDisconnectAt |
string |
智能设备最近一次离线时间 |
lastHeartbeatAt |
string |
智能设备最近一次心跳时间 |
请求示例
{
"nodeId": "63a18ad6d2c8a94fe4cd337b",
"page":1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"nodeId": "63a18b1ad2c8a94fe4cd3382",
"nodeEui": "test0001",
"deviceName": "test0001",
"deviceSecret": "4BE6AC005A6586EBD805FEF56DB39902",
"status": 1,
"connected": -1,
"productId": "2141E406",
"productKey": "34A3B1D8C42C698F0469DCEF0BB51C5F",
"productName": "网关子设备产品",
"deviceType": 0,
"encrypted": null,
"upNodeId": "8C3E488A-CFFC2801-testGateWay",
"subDeviceCount": 0,
"relationState": 0,
"gatewayStatus": null,
"localLogReport": 1,
"otaType": null,
"hardVer": null,
"softVer": null,
"versionReportAt": null,
"createAt": "2022-12-20 18:14:50",
"activeAt": null,
"lastJoinAt": null,
"lastDisconnectAt": null,
"lastHeartbeatAt": null
}
],
"current": 1,
"size": 10,
"total": 1
}
}
设备分组管理
添加分组
请求地址: /openApi/v2/deviceGroup/add
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
name |
string |
是 |
分组名称 |
支持中文、英文字母、数字和下划线(_),长度限制4~30个字符,中文算2个字符,企业下唯一 |
|
level |
integer |
是 |
层级 |
|
0:1级分组, 1:2级分组, 2:三级分组 |
num |
string |
否 |
分组编号 |
|
|
parentNum |
string |
否 |
所属父分组的分组编号 |
在创建2级和3级分组时为必填 |
|
description |
string |
否 |
分组描述 |
长度限制100个字符以内 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
groupId |
string |
分组id |
|
name |
string |
分组名称 |
|
num |
string |
分组编号 |
|
parentNum |
string |
所属父分组的分组编号 |
|
level |
integer |
层级 |
0:1级分组, 1:2级分组, 2:三级分组 |
description |
string |
分组描述 |
|
createAt |
string |
创建时间 |
|
请求示例
{
"name": "2222",
"level": "0"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"groupId": "63a171660191fd310a0b12fb",
"name": "2222",
"num": "YmUce1VAKFziSANQ",
"parentNum": null,
"level": 1,
"description": null,
"createAt": "2022-12-20 16:25:10"
}
}
错误码
code |
描述 |
61006 |
添加设备分组失败 |
61008 |
设备分组名称不合法 |
61009 |
分组描述不合法 |
61010 |
分组所属父级不存在 |
编辑分组
请求地址: /openApi/v2/deviceGroup/edit
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
groupId |
string |
是 |
分组id |
|
name |
string |
是 |
分组名称 |
支持中文、英文字母、数字和下划线(_),长度限制4~30个字符,中文算2个字符,企业下唯一 |
description |
string |
否 |
分组描述 |
长度限制100个字符以内 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"groupId": "63a1753a257ea9623fc1744e",
"name":"3333",
"description":"修改名称"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
61008 |
设备分组名称不合法 |
61009 |
分组描述不合法 |
61010 |
分组所属父级不存在 |
删除分组
请求地址: /openApi/v2/deviceGroup/delete
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
groupId |
string |
是 |
分组id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"groupId": "63a1753a257ea9623fc1744e"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
查询分组列表
请求地址: /openApi/v2/deviceGroup/list
传参方式: POST
备注: 无
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
groupId |
string |
分组id |
|
name |
string |
分组名称 |
|
num |
string |
分组编号 |
|
parentNum |
string |
父级编号 |
|
level |
integer |
层级 |
0:1级分组, 1:2级分组, 2:三级分组 |
description |
string |
分组描述 |
|
createAt |
string |
创建时间 |
|
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"groupId": "63637542f2c16c3e2ec2bb3a",
"name": "测试分组",
"num": "0rekF4H0cZ8IM5nK",
"parentNum": null,
"level": 1,
"description": null,
"createAt": "2022-11-03 16:01:06"
},
{
"groupId": "63637551f2c16c3e2ec2bb3b",
"name": "二级分组",
"num": "Z4LSklduJ8LJ3gPC",
"parentNum": "0rekF4H0cZ8IM5nK",
"level": 2,
"description": null,
"createAt": "2022-11-03 16:01:21"
},
{
"groupId": "6363755cf2c16c3e2ec2bb3c",
"name": "三级分组",
"num": "s60B3vEOiLEbvpQO",
"parentNum": "Z4LSklduJ8LJ3gPC",
"level": 3,
"description": null,
"createAt": "2022-11-03 16:01:32"
}
]
}
查询分组下设备
请求地址: /openApi/v2/deviceGroup/listDeviceUderGroup
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
groupId |
string |
是 |
分组id |
|
productId |
string |
否 |
产品productId |
|
connect |
string |
否 |
连接状态 |
-1:未激活, 0:离线, 1:在线 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
nodeId |
string |
设备id |
|
nodeEui |
string |
设备号 |
|
deviceName |
string |
设备名称 |
|
deviceSecret |
string |
设备密钥 |
|
status |
integer |
设备启用状态 |
0:禁用, 1:启用 |
connected |
integer |
在线状态 |
-1:未激活, 0:离线, 1:在线 |
productId |
string |
所属产品productId |
|
productKey |
string |
所属产品productKey |
|
productName |
string |
所属产品名称 |
|
deviceType |
integer |
节点类型 |
0:设备, 1:网关 |
encrypted |
integer |
是否加密 |
0:不加密, 1:加密 |
upNodeId |
string |
子设备对应的网关设备的设备号 |
|
subDeviceCount |
integer |
网关子设备数量 |
|
relationState |
integer |
网关与子设备的关系 |
0:未关联, 1:已关联br>2:解除中 |
gatewayStatus |
integer |
子设备所属网关设备的状态 |
-1:未激活, 0:离线, 1:在线 |
localLogReport |
integer |
本地日志上报使能 |
0:禁用, 1:启用 |
otaType |
integer |
设备升级方式 |
0:tcp, 1:http |
hardVer |
string |
硬件版本 |
|
softVer |
string |
软件版本 |
|
versionReportAt |
string |
版本上报时间 |
|
createAt |
string |
创建时间 |
|
activeAt |
string |
智能设备激活时间 |
|
lastJoinAt |
string |
智能设备最近一次入网时间 |
|
lastDisconnectAt |
string |
智能设备最近一次离线时间 |
|
lastHeartbeatAt |
string |
智能设备最近一次心跳时间 |
|
请求示例
{
"groupId": "63a1753a257ea9623fc1744e"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"nodeId": "63a12afd209856044ba0962d",
"nodeEui": "mqttDevice003",
"deviceName": "qqqq",
"deviceSecret": "0A79EC7E6D5C3AAD0140F6B92039D42F",
"status": 1,
"connected": -1,
"productId": "5207C002",
"productKey": "82E9AD63B2C7D26A4B24355BE631E847",
"productName": "OpenAPI产品MQTT测试001",
"deviceType": 0,
"encrypted": 0,
"upNodeId": null,
"subDeviceCount": 0,
"relationState": 0,
"gatewayStatus": null,
"localLogReport": 1,
"otaType": null,
"hardVer": null,
"softVer": null,
"versionReportAt": null,
"createAt": "2022-12-20 11:24:45",
"activeAt": null,
"lastJoinAt": null,
"lastDisconnectAt": null,
"lastHeartbeatAt": null
}
],
"current": 1,
"size": 10,
"total": 1
}
}
批量添加设备到分组
请求地址: /openApi/v2/deviceGroup/batchAddDevice
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeIds |
string |
是 |
设备id组 |
设备id用逗号(,)连接的字符串 |
groupId |
string |
是 |
分组id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
string |
响应内容,返回成功和失败数量 |
请求示例
{
"nodeIds": "6180a3bf7571341cc90f7b55,6180aa63ea679609a7aa24e7",
"groupId": "61e8f9a501f61368266f0deb"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": "操作结果:{success: 2,fail: 0}"
}
错误码
code |
描述 |
61011 |
设备所属分组超过上限 |
61012 |
分组添加设备超过上限 |
61013 |
设备已添加至分组,不可重复添加 |
移除分组下面的设备
请求地址: /openApi/v2/deviceGroup/removeDevice
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
是 |
设备id |
|
groupId |
string |
是 |
分组id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"groupId": "63a1753a257ea9623fc1744e",
"nodeId":"63a16d278e5f354034bd69a3"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
60009 |
数据不存在 |
查询设备分组
请求地址: /openApi/v2/deviceGroup/listGroupUnderDevice
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
是 |
设备id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
groupId |
string |
分组id |
|
name |
string |
分组名称 |
|
num |
string |
分组编号 |
|
parentNum |
string |
父级编号 |
|
level |
integer |
层级 |
0:1级分组, 1:2级分组, 2:三级分组 |
description |
string |
分组描述 |
createAt |
string |
创建时间 |
请求示例
{
"nodeId": "63a12afd209856044ba0962d"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"groupId": "63a1753a257ea9623fc1744e",
"name": "3333",
"num": "R6YzRTXaynS4Xjep",
"parentNum": null,
"level": 1,
"description": "修改名称",
"createAt": "2022-12-20 16:41:30"
}
]
}
错误码
物模型
属性设置
请求地址: /openApi/v2/model/propertySet
传参方式: POST
备注:
- 当产品为物模型产品时,下发指令设置产品属性
- 调用前提,产品已定义物模型,且设置的属性为可写可读属性
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
是 |
设备id |
|
identifier |
string |
是 |
属性标识 |
|
value |
string |
是 |
属性值 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"nodeId": "63a264fba4e4394a03996af1",
"identifier": "prop_int",
"value": "10"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
68001 |
产品未定义物模型 |
62001 |
设备不在线 |
60003 |
参数错误 |
68005 |
属性设置错误 |
属性查询
请求地址: /openApi/v2/model/propertyAsk
传参方式: POST
备注:
- 当产品为物模型产品时,下发指令查询产品属性
- 调用前提,产品已定义物模型,且查询的属性已定义
- 设备收到平台下发属性查询指令后应该通过属性上报方式上报属性
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
是 |
设备id |
|
identifier |
string |
是 |
属性标识 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"nodeId":"63a264fba4e4394a03996af1",
"identifier":"prop_int"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
68001 |
产品未定义物模型 |
62001 |
设备不在线 |
60003 |
参数错误 |
服务调用
请求地址: /openApi/v2/model/serviceCall
传参方式: POST
备注:
- 当产品为物模型产品时,可以通过服务调用来进行指令下发;
- 服务调用分为同步调用和异步调用,异步调用立即返回结果,同步调用其结果会在10s内返回,如果10s后才返回结果,则返回结果和异步调用结果一致
- 调用前提,产品已定义物模型,并且调用的服务标识和参数和定义的一致
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
是 |
设备id |
|
identifier |
string |
是 |
服务标识 |
|
value |
string |
是 |
输入参数 |
json格式,和定义服务的输入参数一致 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"nodeId":"63a264fba4e4394a03996af1",
"identifier":"switch",
"value":"{\"on\":15}"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
68001 |
产品未定义物模型 |
62001 |
设备不在线 |
60003 |
参数错误 |
68005 |
属性设置错误 |
设备物模型属性列表查询
请求地址: /openApi/v2/model/getPropertyReportList
传参方式: POST
备注:
- 无设备id时,设备号和产品productId必填
- 当设备id、设备号、产品productId都有值的情况下,以设备id为准
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
nodeId |
string |
否 |
设备id |
|
nodeEui |
string |
否 |
设备号 |
|
productId |
string |
否 |
产品productId |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object[] |
物模型属性列表 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
propertyId |
string |
属性唯一id |
time |
string |
属性上报时间 |
productId |
string |
产品productId |
nodeEui |
string |
设备号 |
identifier |
string |
属性标识 |
accessMode |
string |
读写模式 |
name |
string |
属性名称 |
value |
string |
属性值 |
label |
string |
属性内容 |
属性为枚举、布尔格式时为value对应的内容,其他参数如有带单位的则为带单位的数据 |
请求示例
{
"nodeId":"63a2b7d3a4e4394a03996b26"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"propertyId": "681f47d7-ff8e-47a0-a69d-3c8062c95d1b",
"time": "2022-12-21 15:38:00",
"productId": "65451EFB",
"nodeEui": "10MQTTH0005435",
"identifier": "prop_bool",
"accessMode": "rw",
"name": "prop_bool",
"value": "1"
"label": "开"
},
{
"propertyId": "67d343b1-eaf2-4a65-9e6a-e8130b246911",
"time": "2022-12-21 15:38:00",
"productId": "65451EFB",
"nodeEui": "10MQTTH0005435",
"identifier": "prop_float",
"accessMode": "rw",
"name": "prop_float",
"value": "1.25",
"label": "1.25"
},
{
"propertyId": "e75158db-4554-458d-a46f-96717462d673",
"time": "2022-12-21 15:38:00",
"productId": "65451EFB",
"nodeEui": "10MQTTH0005435",
"identifier": "prop_int",
"accessMode": "rw",
"name": "prop_int",
"value": "-16",
"label": "-16"
},
{
"propertyId": "0068db3a-c99c-490a-b208-f47dcea02410",
"time": "2022-12-21 15:38:00",
"productId": "65451EFB",
"nodeEui": "10MQTTH0005435",
"identifier": "uint8_prop",
"accessMode": "rw",
"name": "uint8_prop",
"value": "255",
"label": "255"
}
]
}
错误码
查询同一属性历史列表
请求地址: /openApi/v2/model/getPropertyReportSingleList
传参方式: POST
备注:
- 无设备id时,设备号和产品productId必填
- 当设备id、设备号、产品productId都有值的情况下,以设备id为准
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
nodeId |
string |
否 |
设备id |
|
nodeEui |
string |
否 |
设备号 |
|
productId |
string |
否 |
产品productId |
|
identifier |
string |
是 |
属性标识 |
beginTime |
string |
否 |
查询开始时间 |
默认当前时间前7天,最早为当前时间前30天 |
endTime |
string |
否 |
查询结束时间 |
默认当前时间,开始时间有值时必填 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
备注 |
propertyId |
string |
属性唯一id |
time |
string |
属性上报时间 |
productId |
string |
产品productId |
nodeEui |
string |
设备号 |
identifier |
string |
属性标识 |
accessMode |
string |
读写模式 |
name |
string |
属性名称 |
value |
string |
属性值 |
请求示例
{
"nodeId": "63e0c7bd5bb10716fadd1cd7",
"identifier": "prop_bool",
"page": 1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"propertyId": "f3e51d76-cf68-4f11-b673-864bd987b196",
"time": "2023-02-06 17:26:22",
"productId": "AA30C505",
"nodeEui": "20MQTT000507",
"identifier": "prop_bool",
"accessMode": "rw",
"name": "prop_bool",
"value": "0",
"label": null
}
],
"current": 1,
"size": 10,
"total": 1
}
}
错误码
分页查询服务调用
请求地址: /openApi/v2/model/getServiceCallList
传参方式: POST
备注:
- 无设备id时,设备号和产品productId必填
- 当设备id、设备号、产品productId都有值的情况下,以设备id为准
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
nodeId |
string |
否 |
设备id |
|
nodeEui |
string |
否 |
设备号 |
|
productId |
string |
否 |
产品productId |
|
identifier |
string |
是 |
服务标识 |
|
beginTime |
string |
否 |
查询开始时间 |
默认当前时间前7天,最早为当前时间前30天 |
endTime |
string |
否 |
查询结束时间 |
默认当前时间,开始时间有值时必填 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
备注 |
serviceCallId |
string |
服务调用唯一id |
time |
string |
服务调用时间 |
productId |
string |
产品productId |
nodeEui |
string |
设备号 |
identifier |
string |
服务标识 |
name |
string |
服务名称 |
inputData |
string |
服务调用输入 |
outputData |
string |
服务调用输出 |
请求示例
{
"nodeId": "63e0c7bd5bb10716fadd1cd7",
"identifier": "switch",
"page": 1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"serviceCallId": "562443c3-c109-40c1-940d-58f6127f2d37",
"time": "2023-02-06 17:27:02",
"productId": "AA30C505",
"nodeEui": "20MQTT000507",
"identifier": "switch",
"name": "测试",
"inputData": "{\"on\":\"100L/s\"}",
"ouputData": null
}
],
"current": 1,
"size": 10,
"total": 1
}
}
错误码
分页查询事件上报
请求地址: /openApi/v2/model/getEventReportList
传参方式: POST
备注:
- 无设备id时,设备号和产品productId必填
- 当设备id、设备号、产品productId都有值的情况下,以设备id为准
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
nodeId |
string |
否 |
设备id |
|
nodeEui |
string |
否 |
设备号 |
|
productId |
string |
否 |
产品productId |
|
identifier |
string |
是 |
事件标识 |
beginTime |
string |
否 |
查询开始时间 |
默认当前时间前7天,最早为当前时间前30天 |
endTime |
string |
否 |
查询结束时间 |
默认当前时间,开始时间有值时必填 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
eventId |
string |
事件id |
time |
string |
事件上报时间 |
productId |
string |
产品productId |
nodeEui |
string |
设备号 |
identifier |
string |
事件标识 |
name |
string |
名称 |
type |
string |
类型 |
warn:告警, erro:紧急, info:普通 |
outputData |
string |
输出数据 |
请求示例
{
"nodeId": "63e0c7bd5bb10716fadd1cd7",
"identifier": "TEST_EVENT",
"page": 1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"eventId": "1c030182-1091-4b18-859f-ace28c1711e1",
"time": "2023-02-06 17:26:26",
"productId": "AA30C505",
"nodeEui": "20MQTT000507",
"identifier": "TEST_EVENT",
"name": "测试事件",
"type": "warn",
"ouputData": "{\"prop_int\":\"-70km/h\"}"
}
],
"current": 1,
"size": 10,
"total": 1
}
}
错误码
OTA模块管理
添加OTA模块
请求地址: /openApi/v2/otaModule/add
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
module |
string |
是 |
模块标识 |
支持英文字母、数字、点、中划线和下划线,长度限制64个字符以内 |
moduleName |
string |
是 |
模块名称 |
支持中文、英文字母、数字、点、中划线和下划线,长度限制64个字符以内,中文算两个字符 |
moduleDesc |
string |
否 |
模块描述 |
长度限制100个字符以内 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
module |
string |
模块标识 |
moduleName |
string |
模块名称 |
moduleDesc |
string |
模块描述 |
productId |
string |
产品productId |
productName |
string |
产品名称 |
createAt |
string |
创建时间 |
请求示例
{
"productId": "65451EFB",
"module": "module001",
"moduleName": "OPENAPI2测试",
"moduleDesc": ""
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"module": "module001",
"moduleName": "OPENAPI2测试",
"productId": "65451EFB",
"productName": "网关接入子设备HEX",
"moduleDesc": "",
"createAt": "2022-12-30 16:39:22"
}
}
错误码
code |
描述 |
60004 |
产品不存在 |
63030 |
模块已存在 |
编辑OTA模块
请求地址: /openApi/v2/otaModule/edit
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
module |
string |
是 |
模块标识 |
|
moduleName |
string |
是 |
模块名称 |
支持中文、英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制64个字符以内,中文算两个字符 |
moduleDesc |
string |
否 |
模块描述 |
长度限制100个字符以内 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"productId": "65451EFB",
"module": "module001",
"moduleName": "OPENAPI2测试1",
"moduleDesc": "备注描述"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60004 |
产品不存在 |
60020 |
模块不存在 |
删除OTA模块
请求地址: /openApi/v2/otaModule/delete
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
module |
string |
是 |
模块标识 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"productId": "65451EFB",
"module": "module001"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
查询OTA模块详情
请求地址: /openApi/v2/otaModule/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
productId |
string |
是 |
产品productId |
|
module |
string |
是 |
模块标识 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
module |
string |
模块标识 |
moduleName |
string |
模块名称 |
moduleDesc |
string |
模块描述 |
productId |
string |
产品productId |
productName |
string |
产品名称 |
createAt |
string |
创建时间 |
请求示例
{
"productId": "65451EFB",
"module": "module001"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"module": "module001",
"moduleName": "OPENAPI2测试",
"productId": "65451EFB",
"productName": "网关接入子设备HEX",
"moduleDesc": "",
"createAt": "2022-12-30 16:39:22"
}
}
错误码
模块分页查询
请求地址: /openApi/v2/otaModule/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
productId |
string |
否 |
产品productId |
|
module |
string |
否 |
模块标识 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
备注 |
module |
string |
模块标识 |
moduleName |
string |
模块名称 |
moduleDesc |
string |
模块描述 |
productId |
string |
产品productId |
productName |
string |
产品名称 |
createAt |
string |
创建时间 |
请求示例
{
"module": "default",
"productId": "7E0204D0",
"page": 1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"module": "default",
"moduleName": "默认",
"productId": "7E0204D0",
"productName": "openapiMQTT非透传产品1",
"moduleDesc": "默认模块不可删除",
"createAt": "2022-12-28 08:45:12"
}
],
"current": 1,
"size": 10,
"total": 1
}
}
OTA固件管理
添加小固件(表单格式)
请求地址: /openApi/v2/firmware/add
传参方式: POST
备注:
- 添加固件接口,sign值计算方法与通用签名计算方法不同,请参考如何调用API中form-data签名计算示例
- 该接口适合上传较小固件,大小限制在50MB以内
请求参数
参数名称 |
参数值 |
是否必须 |
备注 |
appId |
添加api应用生成的appId |
是 |
|
sign |
计算的签名值,参考签名计算示例 |
是 |
|
nonce |
随机数,可以使用随机数或者uuid |
是 |
|
authorization |
鉴权令牌,通过获取token接口获取 |
是 |
|
Content-Type |
multipart/form-data |
是 |
|
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
name |
string |
是 |
固件名称 |
支持中文、英文字母、数字、特殊字符(_-@()),中文算两个字符,长度限制为4-200个字符 |
productId |
string |
是 |
产品productId |
|
softVer |
string |
是 |
固件版本 |
支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
hardVer |
string |
否 |
适配硬件版本 |
支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
module |
string |
是 |
模块标识 |
|
remark |
string |
否 |
固件描述 |
长度限制100个字符以内 |
firmwareType |
integer |
是 |
固件包类型 |
|
1:整包, 2:差分包 |
sourceVersion |
string |
否 |
源版本 |
固件包为差分包时必填,支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
file |
file |
是 |
固件文件 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
firmwareId |
string |
固件id |
|
createAt |
string |
创建时间 |
|
请求示例
name:测试固件
productId:8DC561D5
softVer:V1.0
hardVer:V2.0
module:default
remark:测试固件描述
firmwareType:1
sourceVersion:2345
file:[文件]
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"firmwareId": "602f4beb4e8bf61a7d516c23",
"createAt": "2021-02-19 13:26:02"
}
}
错误码
code |
描述 |
60004 |
产品不存在 |
60010 |
文件不存在 |
60020 |
模块不存在 |
63004 |
固件大小超出限制 |
63021 |
当前企业、产品、模块下,固件名称已存在 |
63022 |
当前企业、产品、模块下,固件版本已存在 |
63024 |
固件上传失败 |
修改小固件(表单格式)
请求地址: /openApi/v2/firmware/edit
传参方式: POST
备注:
- 当固件管理下存在升级计划时,只能编辑固件名称和固件描述
- 不存在升级计划时,file可为空,此时不更新文件
请求参数
参数名称 |
参数值 |
是否必须 |
备注 |
appId |
添加api应用生成的appId |
是 |
|
sign |
计算的签名值,参考签名计算示例 |
是 |
|
nonce |
随机数,可以使用随机数或者uuid |
是 |
|
authorization |
鉴权令牌,通过获取token接口获取 |
是 |
|
Content-Type |
multipart/form-data |
是 |
|
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
firmwareId |
string |
是 |
固件id |
|
name |
string |
是 |
固件名称 |
支持中文、英文字母、数字、特殊字符(_-@()),中文算两个字符,长度限制为4-200个字符 |
productId |
string |
否 |
产品productId |
不存在升级计划时必填 |
softVer |
string |
否 |
固件版本 |
不存在升级计划时必填,支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
hardVer |
string |
否 |
适配硬件版本 |
支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
module |
string |
否 |
模块标识 |
不存在升级计划时必填 |
remark |
string |
否 |
固件描述 |
长度限制100个字符以内 |
firmwareType |
integer |
否 |
固件包类型 |
不存在升级计划时必填 |
1:整包, 2:差分包 |
sourceVersion |
string |
否 |
源版本 |
不存在升级计划、固件包为差分包时必填,支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
file |
file |
否 |
固件文件 |
不传则不更新文件 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
1、存在升级计划时
firmwareId:602f4beb4e8bf61a7d516c23
name:测试固件
remark:测试固件描述
2、无升级计划时
firmwareId:602f4beb4e8bf61a7d516c23
name:测试固件
productId:8DC561D5
softVer:V1.0
hardVer:V2.0
module:default
remark:测试固件描述
firmwareType:1
sourceVersion:2345
file:[文件]
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60004 |
产品不存在 |
60010 |
文件不存在 |
60020 |
模块不存在 |
63004 |
固件大小超出限制 |
63021 |
当前企业、产品、模块下,固件名称已存在 |
63022 |
当前企业、产品、模块下,固件版本已存在 |
63024 |
固件上传失败 |
添加大固件(Json格式)
请求地址: /openApi/v2/firmware/addBig
传参方式: POST
备注:
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
name |
string |
是 |
固件名称 |
支持中文、英文字母、数字、特殊字符(_-@()),中文算两个字符,长度限制为4-200个字符 |
productId |
string |
否 |
产品productId |
不存在升级计划时必填 |
softVer |
string |
是 |
固件版本 |
支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
hardVer |
string |
否 |
适配硬件版本 |
支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
path |
string |
是 |
文件OSS地址 |
|
md5 |
string |
是 |
文件md5值 |
|
originalFilename |
string |
是 |
文件名称 |
|
fileKey |
string |
是 |
文件OSS标识 |
|
module |
string |
是 |
模块标识 |
|
remark |
string |
否 |
固件描述 |
长度限制100个字符以内 |
signMethod |
string |
是 |
签名方法 |
仅支持md5 |
md5 |
firmwareType |
integer |
是 |
固件包类型 |
|
1:整包, 2:差分包 |
sourceVersion |
string |
否 |
源版本 |
固件包为差分包时必填,支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
firmwareId |
string |
固件id |
|
createAt |
string |
创建时间 |
|
请求示例
{
"name": "测试固件",
"productId": "8DC561D5",
"softVer": "V1.0",
"hardVer": "V2.0",
"md5": "5340c78b52045b3f03718d105a820ac7",
"path": "https://xxxxxxx",
"originalFilename": "2.jpg",
"fileKey": "otaFirmware/1670378256275_2.jpg",
"module": "default",
"remark": "测试固件描述",
"signMethod": "md5",
"firmwareType": 1,
"sourceVersion": "2345"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"firmwareId": "602f4beb4e8bf61a7d516c23",
"createAt": "2021-02-19 13:26:02"
}
}
错误码
code |
描述 |
60004 |
产品不存在 |
60010 |
文件不存在 |
60020 |
模块不存在 |
63004 |
固件大小超出限制 |
63021 |
当前企业、产品、模块下,固件名称已存在 |
63022 |
当前企业、产品、模块下,固件版本已存在 |
60023 |
固件不存在 |
63024 |
固件上传失败 |
修改大固件(Json格式)
请求地址: /openApi/v2/firmware/editBig
传参方式: POST
备注:
- 当固件管理下存在升级计划时,只能编辑固件名称和固件描述
- 不存在升级计划时,path可为空,此时不校验文件相关字段,不更新文件
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
firmwareId |
string |
是 |
固件id |
|
name |
string |
是 |
固件名称 |
支持中文、英文字母、数字、特殊字符(_-@()),中文算两个字符,长度限制为4-200个字符 |
productId |
string |
否 |
产品productId |
不存在升级计划时必填 |
softVer |
string |
否 |
固件版本 |
不存在升级计划时必填,支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
hardVer |
string |
否 |
适配硬件版本 |
支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
path |
string |
否 |
文件OSS地址 |
不传则不更新文件 |
md5 |
string |
是 |
文件md5值 |
path不为空时必填 |
originalFilename |
string |
否 |
文件名称 |
path不为空时必填 |
fileKey |
string |
否 |
文件OSS标识 |
path不为空时必填 |
signMethod |
string |
否 |
签名方法 |
path不为空时必填,仅支持md5 |
md5 |
module |
string |
否 |
模块标识 |
不存在升级计划时必填 |
remark |
string |
否 |
固件描述 |
长度限制100个字符以内 |
firmwareType |
integer |
否 |
固件包类型 |
不存在升级计划时必填 |
1:整包, 2:差分包 |
sourceVersion |
string |
否 |
源版本 |
不存在升级计划、固件包为差分包时必填,支持英文字母、数字、点号(.)、中划线(-)和下划线(_),长度限制为64个字符以内 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
1、存在升级计划时
{
"firmwareId": "602f4beb4e8bf61a7d516c23",
"name": "测试固件",
"remark": "测试固件描述"
}
2、无升级计划时
{
"firmwareId": "602f4beb4e8bf61a7d516c23",
"name": "测试固件",
"productId": "8DC561D5",
"softVer": "V1.0",
"hardVer": "V2.0",
"md5": "5340c78b52045b3f03718d105a820ac7",
"path": "https://xxxxxxx",
"originalFilename": "2.jpg",
"fileKey": "otaFirmware/1670378256275_2.jpg",
"module": "default",
"remark": "测试固件描述",
"signMethod": "md5",
"firmwareType": 1,
"sourceVersion": "2345"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60004 |
产品不存在 |
60010 |
文件不存在 |
60020 |
模块不存在 |
63004 |
固件大小超出限制 |
63021 |
当前企业、产品、模块下,固件名称已存在 |
63022 |
当前企业、产品、模块下,固件版本已存在 |
60023 |
固件不存在 |
63024 |
固件上传失败 |
固件详情
请求地址: /openApi/v2/firmware/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
firmwareId |
string |
是 |
固件id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
firmwareId |
string |
固件id |
|
name |
string |
固件名称 |
|
productId |
string |
产品productId |
|
productName |
string |
产品名称 |
|
softVer |
string |
固件版本 |
|
hardVer |
string |
适配硬件版本 |
|
signMethod |
string |
签名方法 |
|
size |
integer |
文件大小 |
|
md5 |
string |
文件md5值 |
|
originalFilename |
string |
原始固件文件名称 |
|
fileKey |
string |
文件OSS标识 |
|
module |
string |
模块标识 |
|
moduleName |
string |
模块名称 |
|
remark |
string |
固件描述 |
|
firmwareType |
integer |
固件包类型 |
1:整包, 2:差分包 |
sourceVersion |
string |
源版本 |
|
createAt |
string |
创建时间 |
|
updateAt |
string |
更新时间 |
|
请求示例
{
"firmwareId": "63b3e8e140a321450c7d166f"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"firmwareId": "63b3e8e140a321450c7d166f",
"createAt": "2023-01-03 16:35:44",
"name": "测试固件",
"productId": "FB511D31",
"productName": "MQTT非透传免注册json950",
"hardVer": "V2.0",
"softVer": "V1.1",
"signMethod": "md5",
"size": 4616,
"remark": "测试固件描述",
"md5": "bcb95b23ede941e5483a316c096dd2e0",
"originalFilename": "1.jpg",
"fileKey": "otaFirmware/1672734942385_1.jpg",
"firmwareType": 1,
"sourceVersion": "",
"updateAt": "2023-01-03 16:42:31",
"module": "default",
"moduleName": "默认"
}
}
错误码
固件分页查询
请求地址: /openApi/v2/firmware/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
productId |
string |
否 |
产品productId |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
firmwareId |
string |
固件id |
name |
string |
固件名称 |
productId |
string |
产品productId |
productName |
string |
产品名称 |
softVer |
string |
固件版本 |
hardVer |
string |
适配硬件版本 |
signMethod |
string |
签名方法 |
size |
integer |
文件大小 |
md5 |
string |
文件md5值 |
originalFilename |
string |
原始固件文件名称 |
fileKey |
string |
文件OSS标识 |
module |
string |
模块标识 |
moduleName |
string |
模块名称 |
remark |
string |
固件描述 |
firmwareType |
integer |
固件包类型 |
1:整包, 2:差分包 |
sourceVersion |
string |
源版本 |
createAt |
string |
创建时间 |
updateAt |
string |
更新时间 |
请求示例
{
"productId": "E11822F6",
"page": 1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"firmwareId": "63c0f59744e95b7f8c811300",
"createAt": "2023-01-13 14:09:27",
"name": "TCP版本",
"productId": "E11822F6",
"productName": "TCP认证验证",
"hardVer": "v1.0",
"softVer": "v3.0.0",
"signMethod": "md5",
"remark": "",
"md5": "69f9321429ff3572e81bc4f107a5a346",
"size": 1856544,
"originalFilename": "DDC_firmwareL4.0.0.1.bin",
"fileKey": "otaFirmware/DDC_firmwareL4.0.0.1.bin",
"firmwareType": 1,
"sourceVersion": "",
"updateAt": "2023-01-13 14:09:27",
"module": "default",
"moduleName": "默认"
}
],
"current": 1,
"size": 10,
"total": 1
}
}
OTA升级
创建OTA升级计划
请求地址: /openApi/v2/otaPlan/add
传参方式: POST
备注: 返回数据中,batchUuid必存在,升级计划planId,不一定返回,如没有需要通过详情接口利用batchUuid获取
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
firmwareId |
string |
是 |
固件id |
|
|
notifyType |
integer |
是 |
推送类型 |
|
0.立即推送, 1.定时推送 |
strategy |
integer |
是 |
升级策略 |
|
0.静态升级, 1.动态升级 |
scope |
integer |
是 |
升级范围 |
|
0.指定设备, 1.全部设备 |
softVerScope |
string [] |
否 |
待升级的版本号 |
如果全部升级或者动态升级,则不能为空 |
|
startAt |
string |
否 |
开始时间 |
如果定时升级,则不能为空 |
|
endAt |
string |
否 |
结束时间 |
如果定时升级,则不能为空 |
|
retryInterval |
integer |
是 |
重试间隔 |
0,1,10,30,60,1440 |
0.不重试, 1.立即重试, 其余为X分钟后重试 |
retryLimit |
integer |
否 |
重试次数 |
如果选择重试间隔不为0则此项不能为空 |
1,2,5 |
expireTime |
integer |
是 |
超时时间(分钟) |
不填默认1440(24小时),范围1-1440 |
|
overwrite |
integer |
是 |
是否覆盖升级 |
|
0.否, 1.是 |
triggerType |
integer |
是 |
升级触发机制 |
|
1.设备端触发, 2.云端触发 |
nodeIds |
String[] |
否 |
升级的设备id数组 |
指定设备升级时不能为空 |
|
remark |
string |
否 |
任务描述 |
|
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
planId |
string |
升级计划id |
|
batchUuid |
string |
批次号 |
|
请求示例
1、静态升级-所有设备-定时升级-重试2次
{
"firmwareId": "63b3e8e140a321450c7d166f",
"notifyType": 1,
"strategy": 0,
"scope": 0,
"softVerScope": [
"v1.0.0"
],
"startAt": "2023-01-06 17:00:00",
"endAt": "2023-01-10 18:00:00",
"retryInterval": 30,
"retryLimit": 2,
"expireTime": 30,
"overwrite": 1,
"triggerType": 1,
"remark": "备注"
}
2、动态升级
{
"firmwareId": "63b3e8e140a321450c7d166f",
"notifyType": 0,
"strategy": 1,
"scope": 1,
"softVerScope": [
"v1.0.0"
],
"retryInterval": 0,
"overwrite": 0,
"triggerType": 1,
"remark": "动态升级"
}
3、静态升级-指定设备-立即推送-云端触发-不重试-不覆盖
{
"firmwareId": "63b3e8e140a321450c7d166f",
"notifyType": 0,
"strategy": 0,
"scope": 0,
"retryInterval": 0,
"overwrite": 0,
"triggerType": 2,
"nodeIds":["632ab50ea3e8582b78b38fee"],
"remark": "指定设备升级"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"batchUuid": "a5d15326-5c64-4c71-b8ca-d047f2c27ba1",
"planId": "63b79188a5cdd8367db36bf0"
}
}
取消OTA升级计划
请求地址: /openApi/v2/otaPlan/cancel
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
planId |
string |
是 |
升级计划id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"planId": "306134d4050d4800a8ab8bce88b1db43"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
OTA升级计划分页查询
请求地址: /openApi/v2/otaPlan/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
参数 |
备注 |
page |
integer |
否 |
页数 |
|
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
|
最小值为1,最大值为100,默认值为10 |
firmwareId |
string |
是 |
固件id |
|
status |
integer |
否 |
状态 |
0:升级中, 1:已完成, 2:已取消 |
strategy |
integer |
否 |
升级策略 |
0:静态升级, 1:动态升级 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
planId |
string |
固件id |
|
productId |
string |
产品productId |
|
productname |
string |
产品名称 |
|
module |
string |
模块标识 |
firmwareId |
string |
固件id |
|
strategy |
integer |
升级策略 |
0.静态升级, 1.动态升级 |
scope |
integer |
升级范围 |
0.指定设备, 1.全部设备 |
softVerScope |
string[] |
待升级的版本号 |
targetSoftVer |
string |
目标固件版本 |
notifyType |
integer |
推送类型 |
0.立即推送, 1.定时推送 |
triggerType |
integer |
升级触发机制 |
1.设备端触发, 2.云端触发 |
startAt |
string |
开始时间 |
|
endAt |
string |
结束时间 |
|
retryInterval |
integer |
重试间隔 |
0.不重试, 1.立即重试, 其余为X分钟后重试 |
retryLimit |
integer |
重试次数 |
|
expireTime |
integer |
超时时间(分钟) |
|
overwrite |
integer |
是否覆盖升级 |
0.否, 1.是 |
remark |
string |
任务描述 |
|
status |
integer |
升级计划状态 |
0.升级中, 1.已完成, 2:已取消 |
createAt |
string |
创建时间 |
|
updateAt |
string |
更新时间 |
|
isCancel |
boolean |
是否可取消 |
|
请求示例
{
"firmwareId": "63b3e8e140a321450c7d166f",
"page": 1,
"pageSize": 10,
"status": 0,
"strategy": 1
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"planId": "63bb7962d68a1239d503160e",
"productId": "FB511D31",
"productName": "MQTT非透传免注册json950",
"firmwareId": "63b3e8e140a321450c7d166f",
"strategy": 1,
"scope": 1,
"softVerScope": [
"v1.0.0"
],
"targetSoftVer": "V1.01",
"notifyType": 0,
"triggerType": 1,
"startAt": "2023-01-09 10:18:10",
"endAt": null,
"retryInterval": 0,
"retryLimit": 0,
"expireTime": 1440,
"overwrite": 0,
"status": 0,
"remark": "动态升级",
"createAt": "2023-01-09 10:18:10",
"updateAt": "2023-01-09 10:18:10",
"module": "default",
"isCancel": false
}
],
"current": 1,
"size": 10,
"total": 1
}
}
升级计划详情
请求地址: /openApi/v2/otaPlan/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
planId |
string |
否 |
升级计划id,两个参数必填一项 |
|
batchUuid |
string |
否 |
batchUuid,两个参数都有以planId为准 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
planId |
string |
固件id |
|
productId |
string |
产品productId |
|
productname |
string |
产品名称 |
|
module |
string |
模块标识 |
|
firmwareId |
string |
固件id |
|
strategy |
integer |
升级策略 |
0.静态升级, 1.动态升级 |
scope |
integer |
升级范围 |
0.指定设备, 1.全部设备 |
softVerScope |
string[] |
待升级的版本号 |
|
targetSoftVer |
string |
目标固件版本 |
|
notifyType |
integer |
推送类型 |
0.立即推送, 1.定时推送 |
triggerType |
integer |
升级触发机制 |
1.设备端触发, 2.云端触发 |
startAt |
string |
开始时间 |
|
|
endAt |
string |
结束时间 |
|
|
retryInterval |
integer |
重试间隔 |
0.不重试, 1.立即重试, 其余为X分钟后重试 |
retryLimit |
integer |
重试次数 |
|
expireTime |
integer |
超时时间(分钟) |
|
overwrite |
integer |
是否覆盖升级 |
0.否, 1.是 |
remark |
string |
任务描述 |
|
status |
integer |
升级计划状态 |
0.升级中, 1.已完成, 2:已取消 |
createAt |
string |
创建时间 |
|
updateAt |
string |
更新时间 |
|
isCancel |
boolean |
是否可取消 |
|
请求示例
{
"planId": "63bb7962d68a1239d503160e"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"planId": "63bb7962d68a1239d503160e",
"productId": "FB511D31",
"productName": "MQTT非透传免注册json950",
"firmwareId": "63b3e8e140a321450c7d166f",
"strategy": 1,
"scope": 1,
"softVerScope": [
"v1.0.0"
],
"targetSoftVer": "V1.01",
"notifyType": 0,
"triggerType": 1,
"startAt": "2023-01-09 10:18:10",
"endAt": null,
"retryInterval": 0,
"retryLimit": 0,
"expireTime": 1440,
"overwrite": 0,
"status": 0,
"remark": "动态升级",
"createAt": "2023-01-09 10:18:10",
"updateAt": "2023-01-09 10:18:10",
"module": "default",
"isCancel": false
}
}
升级计划详情-设备升级任务列表
请求地址: /openApi/v2/otaPlan/tasks
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
planId |
string |
是 |
升级计划id |
|
|
nodeEui |
string |
否 |
设备号 |
|
|
status |
string |
否 |
设备升级状态 |
|
0:待推送, 1:已推送, 2:升级中, 3:升级成功, 4:升级失败, 5:已取消, 6:已删除 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
taskId |
string |
升级任务Id |
|
planId |
string |
升级计划id |
|
firmwareId |
string |
固件id |
|
productId |
string |
产品productId |
|
productName |
string |
产品名称 |
|
module |
string |
模块标识 |
|
nodeEui |
string |
设备号 |
|
downId |
string |
downId |
|
softVer |
string |
固件版本 |
|
hardVer |
string |
硬件版本 |
|
targetSoftVer |
string |
目标固件版本 |
|
otaType |
integer |
智能设备下载固件的方式 |
1:TCP, 2:HTTP |
startAt |
string |
升级开始时间 |
|
endAt |
string |
升级结束时间 |
|
retryInterval |
integer |
重试时间间隔 |
|
retryLimit |
integer |
重试次数 |
|
retryCnt |
integer |
当前升级的次数,重试+1 |
|
overwrite |
integer |
是否覆盖升级 |
0:否 , 1:是 |
createdStrategy |
integer |
创建的升级策略 |
0:静态升级, 1:动态升级 |
errorInfo |
string |
升级失败的错误信息 |
|
createAt |
string |
创建时间 |
|
updateAt |
string |
更新时间 |
|
status |
integer |
升级计划的状态 |
0:升级中, 1:已完成, 2:已取消 |
triggerType |
integer |
触发方式 |
1:设备端触发, 2:云端触发 |
delayTaskId |
string |
延时任务的id |
|
expireAtStamp |
integer |
升级超时时间戳 |
|
expirationTime |
integer |
升级超时时间 |
|
请求示例
{
"planId": "63c0eda074ef5e16c5b66468",
"page":1,
"pageSize":10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"taskId": "63c0eda274ef5e16c5b66469",
"planId": "63c0eda074ef5e16c5b66468",
"firmwareId": "63c0ed758fea9e716ae06f70",
"productId": "A50F56D0",
"productName": "MQTT20网关设备",
"nodeEui": "20MQTTWJ00001",
"downId": "77AF1957",
"softVer": "v2.1.3",
"hardVer": "v1.0.1",
"targetSoftVer": "v3.0.0",
"otaType": 2,
"startAt": "2023-01-13 13:35:28",
"endAt": null,
"retryInterval": 0,
"retryLimit": 0,
"retryCnt": 0,
"overwrite": 0,
"createdStrategy": 1,
"errorInfo": null,
"createAt": "2023-01-13 13:35:29",
"updateAt": "2023-01-13 13:35:29",
"status": 0,
"triggerType": 2,
"delayTaskId": null,
"module": "default",
"expireAtStamp": null,
"expirationTime": 1673674528166
}
],
"current": 1,
"size": 10,
"total": 1
}
}
设备升级任务取消/重新升级
请求地址: /openApi/v2/otaPlan/taskCancelOrReCreate
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
taskId |
string |
是 |
升级任务id |
多个升级任务可用逗号(,)分隔 |
|
opt |
integer |
是 |
操作类型 |
|
0:取消升级, 1:重新升级 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
1、取消升级
{
"taskId": "601bff8b5b3bb45bef53c230,601bff8b5b3bb45bef53c231",
"opt": 0
}
2、重新升级
{
"taskId": "617109258ca4fb051b307ad5",
"opt": 1
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
应用推送
添加推送应用
请求地址: /openApi/v2/pushApp/add
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
appName |
string |
是 |
应用名称 |
pushType |
integer |
是 |
推送类型 |
0:http, 1:mqtt, 2:rabbitmq |
productIds[] |
string[] |
是 |
订阅产品productId组 |
httpPushInfo |
object |
否 |
http推送信息 |
mqttPushInfo |
object |
否 |
mqtt 推送信息 |
rabbitMqPushInfo |
object |
否 |
rabbitmq推送信息 |
pushDataFormat |
integer |
是 |
推送数据格式 |
1:json |
status |
integer |
是 |
是否启用 |
0:禁用, 1:启用 |
httpPushInfo 说明
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
httpUplinkRemote |
string |
否 |
上行应用数据推送地址 |
httpHeartBeatRemote |
string |
否 |
设备心跳消息推送地址 |
httpConnectRemote |
string |
否 |
设备上线/掉线消息推送地址 |
httpOtaResultRemote |
string |
否 |
设备OTA升级结果推送地址 |
httpLifeCycleRemote |
string |
否 |
设备生命周期变更推送地址 |
httpSubDeviceRemote |
string |
否 |
子设备拓扑关系变更推送地址 |
httpNeedVerify |
integer |
是 |
是否加密 |
0:不加密, 1:加密 |
mqttPushInfo 说明
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
mqttBroker |
string |
是 |
目的MQTT服务器地址 |
mqttPort |
integer |
是 |
目的MQTT服务器端口 |
mqttAdmin |
string |
是 |
用于推送的MQTT用户 |
mqttPassword |
string |
是 |
用于推送的MQTT密码 |
rabbitMqPushInfo 说明
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
rabbitBroker |
string |
是 |
目的RabbitMq服务器地址 |
rabbitPort |
integer |
是 |
目的RabbitMq服务器端口 |
rabbitAdmin |
string |
是 |
RabbitMq用户名 |
rabbitPassword |
string |
是 |
用于推送的RabbitMq密码 |
rabbitVHost |
string |
是 |
用于推送的RabbitMq虚拟主机 |
rabbitExchangePrefix |
string |
是 |
上行应用数据推送Exchange前缀 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
appId |
string |
推送应用id |
|
appSecret |
string |
推送应用密钥 |
|
status |
integer |
状态 |
0:禁用, 1:启用 |
appName |
string |
应用名称 |
|
createAt |
string |
创建时间 |
|
productIds |
string [] |
订阅的产品productId列表 |
|
productNames |
string [] |
订阅的产品名称列表 |
|
pushType |
string |
推送类型 |
0:http, 1:mqtt, 2:rabbitmq |
httpPushInfo |
object |
http推送信息 |
|
mqttPushInfo |
object |
mqtt推送信息 |
|
rabbitMqPushInfo |
object |
rabbitmq推送信息 |
|
示例
1、http
请求示例
{
"appName": "http推送应用",
"httpPushInfo": {
"httpConnectRemote": "http://localhost:8080/receive/conn",
"httpHeartBeatRemote": "http://localhost:8080/receive/heart",
"httpOtaResultRemote": "http://localhost:8080/receive/ota",
"httpUplinkRemote": "http://localhost:8080/receive/uplink",
"httpLifeCycleRemote": "http://localhost:8080/receive/lifeCycle",
"httpSubDeviceRemote": "http://localhost:8080/receive/subDevice",
"httpNeedVerify": 0
},
"pushDataFormat": 1,
"pushType": 0,
"status": 1,
"productIds": [
"B7C71C40"
]
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"appId": "xxxx",
"appSecret": "xxx",
"status": 1,
"appName": "http推送应用",
"createAt": "2023-01-15 15:56:00",
"productIds": [
"B7C71C40"
],
"productNames": [
"推送测试产品"
],
"pushType": 0,
"pushDataFormat": 1,
"httpPushInfo": {
"httpUplinkRemote": "http://localhost:8080/receive/uplink",
"httpHeartBeatRemote": "http://localhost:8080/receive/heart",
"httpConnectRemote": "http://localhost:8080/receive/conn",
"httpOtaResultRemote": "http://localhost:8080/receive/ota",
"httpLifeCycleRemote": "http://localhost:8080/receive/lifeCycle",
"httpSubDeviceRemote": "http://localhost:8080/receive/subDevice",
"httpNeedVerify": 0
},
"mqttPushInfo": null,
"rabbitMqPushInfo": null
}
}
2、mqtt
请求示例
{
"appName": "mqtt推送应用",
"mqttPushInfo": {
"mqttBroker": "xxxx.com",
"mqttPort": 1883,
"mqttAdmin": "xxxx",
"mqttPassword": "xxxx"
},
"pushDataFormat": 1,
"pushType": 1,
"status": 1,
"productIds": [
"B7C71C40"
]
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"appId": "xxxx",
"appSecret": "xxxx",
"status": 1,
"appName": "mqtt推送应用",
"createAt": "2023-01-15 15:56:50",
"productIds": [
"B7C71C40"
],
"productNames": [
"推送测试产品"
],
"pushType": 1,
"pushDataFormat": 1,
"httpPushInfo": null,
"mqttPushInfo": {
"mqttBroker": "xxxx.com",
"mqttPort": 1883,
"mqttAdmin": "xxxx",
"mqttPassword": "xxxx",
"mqttQos": 2,
"mqttUplinkTopic": "xxxx/app-data",
"mqttConnectTopic": "xxxx/connect",
"mqttHeartBeatTopic": "xxxx/heartbeat",
"mqttOtaResultTopic": "xxxx/ota-result",
"mqttLifeCycleTopic": "xxxx/life-cycle",
"mqttSubDeviceTopic": "xxxx/sub-device"
},
"rabbitMqPushInfo": null
}
}
3、rabbitmq
请求示例
{
"appName": "rabbitmq推送应用",
"rabbitMqPushInfo": {
"rabbitBroker": "rabbitmq.xxxx.com",
"rabbitPort": 5672,
"rabbitAdmin": "xxxx",
"rabbitPassword": "xxxx",
"rabbitVHost": "qa",
"rabbitExchangePrefix": "xxx"
},
"pushDataFormat":1,
"pushType": 2,
"status": 1,
"productIds": [
"B7C71C40"
]
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"appId": "xxxxx",
"appSecret": "xxxxx",
"status": 1,
"appName": "rabbitmq推送应用",
"createAt": "2023-01-15 15:59:37",
"productIds": [
"B7C71C40"
],
"productNames": [
"推送测试产品"
],
"pushType": 2,
"pushDataFormat": 1,
"httpPushInfo": null,
"mqttPushInfo": null,
"rabbitMqPushInfo": {
"rabbitBroker": "rabbitmq.xxxx.com",
"rabbitPort": 5672,
"rabbitAdmin": "xxxx",
"rabbitPassword": "xxxx",
"rabbitVHost": "qa",
"rabbitUplinkExchange": "xxx-app-data",
"rabbitConnectExchange": "xxx-connect",
"rabbitHeartBeatExchange": "xxx-heartbeat",
"rabbitOtaResultExchange": "xxx-ota-result",
"rabbitExchangePrefix": "xxx",
"rabbitLifeCycleExchange": "xxx-life-cycle",
"rabbitSubDeviceExchange": "xxx-sub-device"
}
}
}
错误码
code |
描述 |
67001 |
消息推送配置信息有误 |
67002 |
产品已存在推送应用 |
编辑推送应用
请求地址: /openApi/v2/pushApp/edit
传参方式: POST
备注:
- 只能编辑对应推送类型的参数
- 如果编辑信息包含 httpPushInfo/rabbitMqPushInfo/mqttPushInfo层级下字段需要全部包含,如果字段未包含的情况下,对应推送则将设置为空
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
备注 |
appId |
string |
是 |
推送应用id |
appName |
string |
是 |
推送应用名称 |
productIds[] |
string[] |
是 |
订阅产品productId组 |
httpPushInfo |
object |
否 |
http推送信息 |
|
与新增接口数据相同 |
mqttPushInfo |
object |
否 |
mqtt 推送信息 |
rabbitMqPushInfo |
object |
否 |
rabbitmq推送信息 |
status |
integer |
是 |
启用状态 |
0:禁用, 1:启用 |
mqttPushInfo 说明
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
mqttBroker |
string |
是 |
目的MQTT服务器地址 |
mqttPort |
integer |
是 |
目的MQTT服务器端口 |
mqttAdmin |
string |
是 |
用于推送的MQTT用户 |
mqttPassword |
string |
是 |
用于推送的MQTT密码 |
mqttQos |
integer |
否 |
消息质量 |
mqttUplinkTopic |
string |
否 |
上行数据topic |
mqttConnectTopic |
string |
否 |
连接消息topic |
mqttHeartBeatTopic |
string |
否 |
心跳消息topic |
mqttOtaResultTopic |
string |
否 |
升级结果Topic |
mqttLifeCycleTopic |
string |
否 |
设备生命周期推送Topic |
mqttSubDeviceTopic |
string |
否 |
子设备拓扑关系推送Topic |
rabbitMqPushInfo 说明
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
rabbitBroker |
string |
是 |
目的RabbitMq服务器地址 |
rabbitPort |
integer |
是 |
目的RabbitMq服务器端口 |
rabbitAdmin |
string |
是 |
RabbitMq用户名 |
rabbitPassword |
string |
是 |
用于推送的RabbitMq密码 |
rabbitVHost |
string |
是 |
用于推送的RabbitMq虚拟主机 |
rabbitExchangePrefix |
string |
是 |
上行应用数据推送Exchange前缀 |
rabbitUplinkExchange |
string |
否 |
上行交换机 |
rabbitConnectExchange |
string |
否 |
上下线交换机 |
rabbitHeartBeatExchange |
string |
否 |
心跳消息交换机 |
rabbitOtaResultExchange |
string |
否 |
ota结果交换机 |
rabbitLifeCycleExchange |
string |
否 |
生命周期交换机 |
rabbitSubDeviceExchange |
string |
否 |
子设备拓扑关系交换机 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"appId": "63bbda6a9139652aab3e7d54",
"mqttPushInfo": {
"mqttBroker": "xxxx.com",
"mqttPort": 1883,
"mqttAdmin": "xxxx",
"mqttPassword": "xxxx",
"mqttQos": 2,
"mqttUplinkTopic": "xxxx/app-data",
"mqttConnectTopic": "xxxx/connect",
"mqttHeartBeatTopic": "xxxx/heartbeat",
"mqttOtaResultTopic": "xxxx/ota-result",
"mqttLifeCycleTopic": "xxxx/life-cycle",
"mqttSubDeviceTopic": "xxxx/sub-device"
},
"pushDataFormat": 1,
"pushType": 1,
"status": 1,
"productIds": [
"D1784C95","8C09C149"
]
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
67001 |
消息推送配置信息有误 |
67002 |
产品已存在推送应用 |
删除推送应用
请求地址: /openApi/v2/pushApp/delete
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
appId |
string |
是 |
推送应用id |
|
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"appId": "601bb356112352169e31a57c"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
分页查询消息推送应用
请求地址: /openApi/v2/pushApp/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
appName |
string |
否 |
推送应用名称 |
productId |
string |
否 |
产品productId |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
appId |
string |
appSecret |
appSecret |
string |
推送应用密钥 |
status |
integer |
状态 |
0:禁用, 1:启用 |
appName |
string |
应用名称 |
createAt |
string |
创建时间 |
productIds |
string [] |
订阅的产品productId列表 |
productNames |
string [] |
订阅的产品名称列表 |
pushType |
string |
推送类型 |
0:http, 1:mqtt, 2:rabbitmq |
httpPushInfo |
object |
http推送信息 |
mqttPushInfo |
object |
mqtt推送信息 |
rabbitMqPushInfo |
object |
rabbitmq推送信息 |
请求示例
{
"page": 1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"appId": "63c4c54ae6b8cb748bf0f51b",
"appSecret": "3ED1CEC8FCCEDAA9926D6E5B8F5D21A0",
"status": 1,
"appName": "rabbitmq推送应用",
"createAt": "2023-01-16 11:32:26",
"productIds": [
"B7C71C40"
],
"productNames": [
"推送测试产品"
],
"pushType": 2,
"pushDataFormat": 1,
"httpPushInfo": null,
"mqttPushInfo": null,
"rabbitMqPushInfo": {
"rabbitBroker": "rabbitmq.xxxx.com",
"rabbitPort": 5672,
"rabbitAdmin": "xiot",
"rabbitPassword": "xxxx",
"rabbitVHost": "qa",
"rabbitExchangePrefix": "xxx",
"rabbitUplinkExchange": "xxx-app-data",
"rabbitConnectExchange": "xxx-connect",
"rabbitHeartBeatExchange": "xxx-heartbeat",
"rabbitOtaResultExchange": "xxx-ota-result",
"rabbitLifeCycleExchange": "xxx-life-cycle",
"rabbitSubDeviceExchange": "xxx-sub-device"
}
},
{
"appId": "63c3b1c28f2844756aceb493",
"appSecret": "3F846F3F8A28C1D92F0C6CD82EB69859",
"status": 1,
"appName": "mqtt推送应用",
"createAt": "2023-01-15 15:56:50",
"productIds": [
"B7C71C40"
],
"productNames": [
"推送测试产品"
],
"pushType": 1,
"pushDataFormat": 1,
"httpPushInfo": null,
"mqttPushInfo": {
"mqttBroker": "emqx4.xxxx.com",
"mqttPort": 1883,
"mqttAdmin": "xiot",
"mqttPassword": "xxxx",
"mqttQos": 2,
"mqttUplinkTopic": "iSUch4vzG0NqAAqPsQyK/app-data",
"mqttConnectTopic": "iSUch4vzG0NqAAqPsQyK/connect",
"mqttHeartBeatTopic": "iSUch4vzG0NqAAqPsQyK/heartbeat",
"mqttOtaResultTopic": "iSUch4vzG0NqAAqPsQyK/ota-result",
"mqttLifeCycleTopic": "iSUch4vzG0NqAAqPsQyK/life-cycle",
"mqttSubDeviceTopic": "iSUch4vzG0NqAAqPsQyK/sub-device"
},
"rabbitMqPushInfo": null
},
{
"appId": "63c3b1908f2844756aceb492",
"appSecret": "8C53615333039252FEAC42194863736A",
"status": 1,
"appName": "http推送应用",
"createAt": "2023-01-15 15:56:00",
"productIds": [
"B7C71C40"
],
"productNames": [
"推送测试产品"
],
"pushType": 0,
"pushDataFormat": 1,
"httpPushInfo": {
"httpUplinkRemote": "http://localhost:8080/receive/uplink",
"httpHeartBeatRemote": "http://localhost:8080/receive/heart",
"httpConnectRemote": "http://localhost:8080/receive/conn",
"httpOtaResultRemote": "http://localhost:8080/receive/ota",
"httpLifeCycleRemote": "http://localhost:8080/receive/lifeCycle",
"httpSubDeviceRemote": "http://localhost:8080/receive/subDevice",
"httpNeedVerify": 0
},
"mqttPushInfo": null,
"rabbitMqPushInfo": null
}
],
"current": 1,
"size": 10,
"total": 3
}
}
查询消息推送应用详情
请求地址: /openApi/v2/pushApp/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
appId |
string |
是 |
推送应用id |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
appId |
string |
推送应用id |
|
|
appSecret |
string |
推送应用密钥 |
|
|
status |
integer |
状态 |
0:禁用, 1:启用 |
|
appName |
string |
应用名称 |
|
|
createAt |
string |
创建时间 |
|
|
productIds |
string [] |
订阅的产品productId列表 |
|
|
productNames |
string [] |
订阅的产品名称列表 |
|
|
pushType |
string |
推送类型 |
0:http, 1:mqtt, 2:rabbitmq |
httpPushInfo |
object |
http推送信息 |
|
内容同分页查询接口 |
mqttPushInfo |
object |
mqtt推送信息 |
|
内容同分页查询接口 |
rabbitMqPushInfo |
object |
rabbitmq推送信息 |
|
内容同分页查询接口 |
请求示例
{
"appId": "63c4c54ae6b8cb748bf0f51b"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"appId": "63c4c54ae6b8cb748bf0f51b",
"appSecret": "3ED1CEC8FCCEDAA9926D6E5B8F5D21A0",
"status": 1,
"appName": "rabbitmq推送应用",
"createAt": "2023-01-16 11:32:26",
"productIds": [
"B7C71C40"
],
"productNames": [
"推送测试产品"
],
"pushType": 2,
"pushDataFormat": 1,
"httpPushInfo": null,
"mqttPushInfo": null,
"rabbitMqPushInfo": {
"rabbitBroker": "rabbitmq.xxxx.com",
"rabbitPort": 5672,
"rabbitAdmin": "xiot",
"rabbitPassword": "xxxx",
"rabbitVHost": "qa",
"rabbitExchangePrefix": "xxx",
"rabbitUplinkExchange": "xxx-app-data",
"rabbitConnectExchange": "xxx-connect",
"rabbitHeartBeatExchange": "xxx-heartbeat",
"rabbitOtaResultExchange": "xxx-ota-result",
"rabbitLifeCycleExchange": "xxx-life-cycle",
"rabbitSubDeviceExchange": "xxx-sub-device"
}
}
}
规则引擎
新增规则
请求地址: /openApi/v2/ruleEngine/add
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
name |
string |
是 |
规则名称 |
|
|
description |
string |
否 |
规则描述 |
|
|
start |
string |
是 |
开启状态 |
|
0:禁用, 1:开启 |
effectAllTime |
string |
是 |
生效时间 |
|
0:指定时间, 1:一直生效 |
effectTime |
string[] |
否 |
规则生效的时间段 |
effectAllTime=0时必填, 例如3.30-4.30生效,值为["03:30","04:30"] |
|
effectWeek |
string[] |
否 |
规则生效周 |
effectAllTime=0时必填, 例如周一-周五[2,3,4,5,6] |
1:周日,2:周一, 3:周二,4:周三, 5:周四,6:周五,7:周六 |
conditionRelation |
string |
是 |
条件触发关系 |
|
or:或, and:与 |
triggerPo |
object[] |
否 |
触发条件 |
最大50条 |
|
ruleActionPo |
object[] |
是 |
执行动作 |
最大50条 |
|
triggerPo 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
triggerType |
string |
是 |
触发条件 |
同规则下,定时触发器只能有一条 |
0:定时触发, 1:设备触发 |
cron |
string |
否 |
触发器cron表达式 |
triggerType=0必填, 例如每天定时15点21分:"21 15 * * ?" , 每周日、二8点20分:"20 08 ? * 1,3", 4月3号15点59分:"59 15 3 4 ?" |
|
triggerStrategy |
string |
否 |
触发机制 |
triggerType=1必填 |
0:仅首次, 1:每一次 |
nodeId |
string |
否 |
设备id |
triggerType=1必填 |
|
deviceTriggerType |
string |
否 |
设备触发方式 |
triggerType=1必填 |
0:属性上报, 1:事件上报, 2:设备状态 |
prop |
string |
否 |
属性标识 |
deviceTriggerType=0/1必填 |
operator |
string |
否 |
逻辑运算符 |
deviceTriggerType=0/1必填 |
>,>=,<,<=,==,!=,in,between |
value |
string |
否 |
属性值 |
deviceTriggerType=0/1必填 |
|
event |
st |
ring |
否 |
事件标识 |
deviceTriggerType=1必填 |
|
status |
string |
否 |
设备状态 |
deviceTriggerType=2必填 |
0:设备下线, 1:设备上线 |
ruleActionPo 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleActionType |
string |
是 |
触发方式 |
|
0:下发命令, 1:上报告警, 2:规则联动, 3:发送通知 |
nodeId |
string |
否 |
设备Id |
ruleActionType=0必填 |
|
deviceActionType |
string |
否 |
执行方式 |
ruleActionType=0必填 |
0:设置属性, 1:调用服务 |
propSetParams |
object |
否 |
设置属性参数 |
deviceActionType=0必填 |
|
serviceCallParams |
object |
否 |
调用服务参数 |
deviceActionType=1必填 |
|
delayTime |
string |
否 |
延时执行(秒) |
ruleActionType=0必填 |
|
level |
string |
否 |
级别 |
ruleActionType=1必填 |
1,2,3,4,5 |
alarmName |
string |
否 |
告警名称 |
ruleActionType=1必填 |
|
ruleId |
string |
否 |
规则id |
ruleActionType=2必填 |
|
operation |
string |
否 |
执行操作 |
ruleActionType=2必填 |
0:触发规则, 1:启用规则, 2:停用规则 |
noticeTypes |
Array<Int> |
否 |
通知方式 |
ruleActionType=3必填 |
1:短信, 2:邮件 |
smsDetail |
object |
否 |
短信详情 |
noticeTypes包含1必填 |
|
emailDetail |
object |
否 |
邮件详情 |
noticeTypes包含2必填 |
|
contacts |
Array<string> |
否 |
联系人id |
ruleActionType=3必填 |
|
propSetParams 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
identify |
string |
是 |
属性标识 |
|
value |
string |
是 |
属性值 |
|
serviceCallParams 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
identify |
string |
是 |
属性标识 |
|
propSetParamsList |
object[] |
是 |
属性列表参数 |
|
|
propSetParamsList 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
identify |
string |
是 |
属性标识 |
|
value |
string |
是 |
属性值 |
|
smsDetail 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleNoticeType |
integer |
是 |
模板类型 |
|
1:系统默认, 2:自定义 |
configId |
string |
是 |
配置id |
|
|
templateId |
string |
是 |
模板id |
|
variable |
array[object] |
否 |
模板变量 |
|
|
短信variable 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
key |
string |
是 |
模板变量key |
|
value |
string |
是 |
模板变量value |
|
|
emailDetail 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleNoticeType |
integer |
是 |
模板类型 |
|
1:系统默认, 2:自定义 |
configId |
string |
是 |
配置id |
|
|
templateId |
string |
是 |
模板id |
|
variable |
array[object] |
否 |
模板变量 |
|
|
邮件variable 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
key |
string |
是 |
模板变量key |
|
value |
string |
是 |
模板变量value |
|
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
ruleId |
string |
规则id |
|
|
请求示例
1、
{
"name": "规则测试添加1",
"start": 0,
"effectAllTime":1,
"conditionRelation": "or",
"triggerPo":[
{
"triggerType":0,
"cron":"51 09 * * ?"
}
],
"ruleActionPo":[
{
"ruleActionType":1,
"level":4,
"alarmName":"4级报警"
}
]
}
2、
{
"name": "规则测试添加2",
"description": "测试规则引擎添加",
"start": 0,
"effectAllTime": 1,
"conditionRelation": "and",
"triggerPo": [
{
"triggerType": 1,
"triggerStrategy": 0,
"nodeId": "61518485cfb170780841f377",
"deviceTriggerType": "0",
"prop": "temp",
"operator": ">",
"value": 10
}
],
"ruleActionPo": [
{
"ruleActionType": 0,
"nodeId": "61518485cfb170780841f377",
"deviceActionType": 1,
"serviceCallParams": {
"identify": "ontemp",
"propSetParamsList": [
{
"identify": "temp",
"value": 10
},
{
"identify": "on",
"value": 10
}
]
},
"delayTime": 5
}
]
}
3、
{
"name":"添加规则-发送通知",
"description":"发送通知",
"effectAllTime":"1",
"effectWeek":[
],
"effectTime":[
],
"start":"1",
"conditionRelation":"and",
"triggerPo":[
{
"triggerType":"1",
"triggerStrategy":"1",
"productId":"0D797D34",
"nodeEui":"LNTEST001",
"deviceName":"设备测试001",
"nodeId":"60d97c009a7f6138b0f2e21b",
"type":"int32",
"deviceTriggerType":"0",
"operator":">",
"prop":"test_property_001",
"value":"10"
}
],
"ruleActionPo":[
{
"ruleActionType":"3",
"noticeTypes":[
1,
2
],
"smsDetail":{
"ruleNoticeType":2,
"configId":"64424e3a509e83502e4832c1",
"templateId":"6444f5a5c7078f5ba357e813",
"variable":[
{
"key":"name",
"value":"productName"
},
{
"key":"nodeEui",
"value":"nodeEui"
},
{
"key":"ruleName",
"value":"ruleName"
}
]
},
"emailDetail":{
"ruleNoticeType":2,
"configId":"6445e32b7cfcfd58c02c13d1",
"templateId":"644617bb78d12f475ee08d4f",
"variable":[
{
"key":"nodeEui",
"value":"nodeEui"
}
]
},
"contacts":[
"6444934039daf707aa3eab7b",
"64448cd06b099e4adc25a373"
]
}
]
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"ruleId": "63c38a990c40c20e50b8bfe3"
}
}
错误码
code |
描述 |
60005 |
设备不存在 |
64020 |
定时触发器只能有一个 |
64005 |
触发条件超出上限 |
64008 |
执行动作超出上限 |
64006 |
告警名称不规范 |
64014 |
规则联动选择规则不存在或不符合要求 |
68001 |
产品未定义物模型 |
64022 |
执行动作,发送通知,参数错误 |
64023 |
执行动作,上报告警,参数错误 |
编辑规则
请求地址: /openApi/v2/ruleEngine/edit
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleId |
string |
是 |
规则id |
|
|
name |
string |
是 |
规则名称 |
|
|
description |
string |
否 |
规则描述 |
|
|
start |
string |
是 |
开启状态 |
|
0:禁用, 1:开启 |
effectAllTime |
string |
是 |
生效时间 |
|
0:指定时间, 1:一直生效 |
effectTime |
string[] |
否 |
规则生效的时间段 |
effectAllTime=0时必填, 例如3.30-4.30生效,值为["03:30","04:30"] |
|
effectWeek |
string[] |
否 |
规则生效周 |
effectAllTime=0时必填, 例如周一-周五[2,3,4,5,6] |
1:周日,2:周一, 3:周二,4:周三, 5:周四,6:周五,7:周六 |
conditionRelation |
string |
是 |
条件触发关系 |
or:或, and:与 |
|
triggerPo |
object[] |
否 |
触发条件 |
最大50条 |
|
ruleActionPo |
object[] |
是 |
执行动作 |
最大50条 |
|
triggerPo 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
**timingUuid** |
string |
否 |
触发条件id |
详情中返回的数据,修改原触发条件时必填 |
|
triggerType |
string |
是 |
触发条件 |
|
0:定时触发, 1:设备触发 |
cron |
string |
否 |
触发器cron表达式 |
triggerType=0必填, 例如每天定时15点21分:"21 15 * * ?" , 每周日、二8点20分:"20 08 ? * 1,3", 4月3号15点59分:"59 15 3 4 ?" |
|
triggerStrategy |
string |
否 |
触发机制 |
triggerType=1必填 |
0:仅首次, 1:每一次 |
nodeId |
string |
否 |
设备id |
triggerType=1必填 |
|
|
deviceTriggerType |
string |
否 |
设备触发方式 |
triggerType=1必填 |
0:属性上报, 1:事件上报, 2:设备状态 |
prop |
string |
否 |
属性标识 |
deviceTriggerType=0/1必填 |
|
operator |
string |
否 |
逻辑运算符 |
deviceTriggerType=0/1必填 |
>,>=,<,<=,==,!=,in,between |
value |
string |
否 |
属性值 |
deviceTriggerType=0/1必填 |
|
|
event |
string |
否 |
事件标识 |
deviceTriggerType=1必填 |
|
|
status |
string |
否 |
设备状态 |
deviceTriggerType=2必填 |
0:设备下线, 1:设备上线 |
ruleActionPo 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
**actionId** |
string |
否 |
指定动作id |
详情中返回的数据,修改原执行动作时必填 |
|
ruleActionType |
string |
是 |
触发方式 |
|
0:下发命令, 1:上报告警, 2:规则联动, 3:发送通知 |
nodeId |
string |
否 |
设备Id |
ruleActionType=0必填 |
|
|
deviceActionType |
string |
否 |
执行方式 |
ruleActionType=0必填 |
0:设置属性, 1:调用服务 |
propSetParams |
object |
否 |
设置属性参数 |
deviceActionType=0必填,结构和新增中相同 |
|
|
serviceCallParams |
object |
否 |
调用服务参数 |
deviceActionType=1必填,结构和新增中相同 |
|
|
delayTime |
string |
否 |
延时执行(秒) |
ruleActionType=0必填 |
|
|
level |
string |
否 |
级别 |
ruleActionType=1必填 |
1,2,3,4,5 |
alarmName |
string |
否 |
告警名称 |
ruleActionType=1必填 |
|
|
ruleId |
string |
否 |
规则id |
ruleActionType=2必填 |
|
|
operation |
string |
否 |
执行操作 |
ruleActionType=2必填 |
0:触发规则, 1:启用规则, 2:停用规则 |
noticeTypes |
Array<Int> |
否 |
通知方式 |
ruleActionType=3必填 |
1:短信, 2:邮件 |
smsDetail |
object |
否 |
短信详情 |
noticeTypes包含1必填 |
|
emailDetail |
object |
否 |
邮件详情 |
noticeTypes包含2必填 |
|
contacts |
Array<string> |
否 |
联系人id |
ruleActionType=3必填 |
|
smsDetail 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleNoticeType |
integer |
是 |
模板类型 |
|
1:系统默认, 2:自定义 |
configId |
string |
是 |
配置id |
|
|
templateId |
string |
是 |
模板id |
|
variable |
array[object] |
否 |
模板变量 |
|
|
短信variable 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
key |
string |
是 |
模板变量key |
|
value |
string |
是 |
模板变量value |
|
|
emailDetail 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleNoticeType |
integer |
是 |
模板类型 |
|
1:系统默认, 2:自定义 |
configId |
string |
是 |
配置id |
|
|
templateId |
string |
是 |
模板id |
|
variable |
array[object] |
否 |
模板变量 |
|
|
邮件variable 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
key |
string |
是 |
模板变量key |
|
value |
string |
是 |
模板变量value |
|
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
productId |
string |
产品productId |
|
|
请求示例
{
"ruleId": "63c38a990c40c20e50b8bfe3",
"name": "rule-nodeId",
"description": "",
"start": "1",
"effectAllTime": "1",
"conditionRelation": "and",
"ruleActionPo": [
{
"nodeId": "61518485cfb170780841f377",
"deviceActionType": "1",
"serviceCallParams": {
"identify": "s1_sync",
"propSetParamsList": [
{
"value": "1",
"identify": "s_int",
"type": "int32"
},
{
"value": "1",
"identify": "s_float",
"type": "float"
},
{
"value": "1",
"identify": "s_double",
"type": "double"
},
{
"value": "1",
"identify": "s_bool",
"type": "bool"
},
{
"value": "111111",
"identify": "s_text",
"type": "text"
},
{
"value": "1",
"identify": "s_enum",
"type": "enum"
}
]
},
"ruleActionType": "0",
"actionId": "3f4e05f9-dff2-4b37-86d9-a28d11f6a9911",
"delayTime": "0",
"deviceName": "MY00000056"
}
],
"triggerPo": [
{
"cron": "00 06 * * ?",
"dateType": "2",
"timingUuid": null,
"triggerType": "0"
},
{
"nodeId": "61518485cfb170780841f377",
"triggerStrategy": "0",
"productId": "9105BDA6",
"timingUuid": "0ebaaaa9-b73c-4311-853a-c84c191062a4",
"triggerType": "1",
"deviceTriggerType": "2",
"type": null,
"deviceName": "接口添加单一设备",
"status": "1"
}
]
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
60005 |
设备不存在 |
64020 |
定时触发器只能有一个 |
64005 |
触发条件超出上限 |
64008 |
执行动作超出上限 |
64006 |
告警名称不规范 |
64014 |
规则联动选择规则不存在或不符合要求 |
68001 |
产品未定义物模型 |
64022 |
执行动作,发送通知,参数错误 |
64023 |
执行动作,上报告警,参数错误 |
删除规则
请求地址: /openApi/v2/ruleEngine/delete
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleId |
string |
是 |
规则id |
|
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"ruleId":"62ce31b8d9ba552efd7e4405"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
查询规则详情
请求地址: /openApi/v2/ruleEngine/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleId |
string |
是 |
规则id |
|
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
ruleId |
string |
规则id |
|
name |
string |
规则名称 |
|
description |
string |
规则描述 |
|
createAt |
string |
创建时间 |
|
updateAt |
string |
更新时间 |
|
start |
string |
开启状态 |
0:禁用, 1:开启 |
effectAllTime |
string |
生效时间 |
0:指定时间, 1:一直生效 |
effectTime |
string[] |
规则生效的时间段 |
|
|
effectWeek |
string[] |
规则生效周 |
1:周日,2:周一, 3:周二,4:周三, 5:周四,6:周五,7:周六 |
conditionRelation |
string |
条件触发关系 |
or:或, and:与 |
triggerPo |
object[] |
触发条件 |
|
ruleActionPo |
object[] |
执行动作 |
|
triggerPo 说明
参数名称 |
类型 |
名称 |
参数 |
timingUuid |
string |
触发条件id |
|
triggerType |
string |
触发条件 |
0:定时触发, 1:设备触发 |
cron |
string |
触发器cron表达式 |
|
triggerStrategy |
string |
触发机制 |
0:仅首次, 1:每一次 |
nodeId |
string |
设备id |
|
|
productId |
string |
产品productId |
|
|
nodeEui |
string |
设备号 |
|
|
deviceName |
string |
设备名称 |
|
|
deviceTriggerType |
string |
设备触发方式 |
0:属性上报, 1:事件上报, 2:设备状态 |
prop |
string |
属性标识 |
|
type |
string |
属性数据类型 |
|
operator |
string |
逻辑运算符 |
>,>=,<,<=,==,!=,in,between |
value |
string |
属性值 |
|
|
event |
string |
事件标识 |
|
|
status |
string |
设备状态 |
0:设备下线, 1:设备上线 |
ruleActionPo 说明
参数名称 |
类型 |
名称 |
参数 |
actionId |
string |
指定动作id |
|
ruleActionType |
string |
触发方式 |
0:下发命令, 1:上报告警, 2:规则联动 |
nodeId |
string |
设备Id |
|
|
productId |
string |
产品productId |
|
|
nodeEui |
string |
设备号 |
|
|
deviceName |
string |
设备名称 |
|
|
deviceActionType |
string |
执行方式 |
0:设置属性, 1:调用服务 |
propSetParams |
object |
设置属性参数 |
|
|
serviceCallParams |
object |
调用服务参数 |
|
|
delayTime |
string |
延时执行(秒) |
|
|
level |
string |
级别 |
1,2,3,4,5 |
alarmName |
string |
告警名称 |
|
|
ruleId |
string |
关联规则id |
|
|
ruleName |
string |
关联规则名称 |
|
|
operation |
string |
执行操作 |
0:触发规则, 1:启用规则, 2:停用规则 |
propSetParams 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
identify |
string |
属性标识 |
|
value |
string |
属性值 |
|
type |
string |
属性数据类型 |
|
serviceCallParams 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
identify |
string |
属性标识 |
|
propSetParamsList |
object[] |
属性列表参数 |
|
|
propSetParamsList 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
identify |
string |
属性标识 |
|
value |
string |
属性值 |
|
type |
string |
属性数据类型 |
|
请求示例
{
"ruleId": "63c38a990c40c20e50b8bfe3"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"ruleId": "63c38a990c40c20e50b8bfe3",
"name": "rule-nodeId",
"description": "",
"createAt": "2023-01-15 13:09:45",
"start": "1",
"effectAllTime": "1",
"effectTime": [],
"effectWeek": [],
"conditionRelation": "and",
"ruleActionPo": [
{
"nodeEui": "MY00000056",
"deviceActionType": "1",
"productId": "B81550DD",
"serviceCallParams": {
"identify": "s1_sync",
"propSetParamsList": [
{
"value": "1",
"identify": "s_int",
"type": "int32"
},
{
"value": "1",
"identify": "s_float",
"type": "float"
}
]
},
"ruleActionType": "0",
"actionId": "3f4e05f9-dff2-4b37-86d9-a28d11f6a991",
"delayTime": "0",
"deviceName": "MY00000056"
}
],
"triggerPo": [
{
"cron": "00 06 * * ?",
"dateType": "2",
"timingUuid": "af0fdf7d-106d-4fb1-aeb0-8a858b8db4c5",
"triggerType": "0"
},
{
"nodeEui": "MQTT00000000066",
"triggerStrategy": "0",
"productId": "9105BDA6",
"timingUuid": "0ebaaaa9-b73c-4311-853a-c84c191062a4",
"triggerType": "1",
"deviceTriggerType": "2",
"deviceName": "接口添加单一设备",
"status": "1"
}
],
"updateAt": "2023-01-16 15:48:52"
}
}
规则禁启用
请求地址: /openApi/v2/ruleEngine/opt
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleId |
string |
是 |
规则id |
|
|
start |
integer |
是 |
状态 |
|
0:停用, 1:启用 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"ruleId":"62d65f983bcc2c394166eb95",
"start":"0"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
分页查询规则
请求地址: /openApi/v2/ruleEngine/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
|
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
|
name |
string |
是 |
规则名称 |
模糊查询 |
|
start |
integer |
是 |
状态 |
|
0:停用, 1:启用 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
备注 |
ruleId |
string |
规则id |
|
name |
string |
规则名称 |
|
description |
string |
规则描述 |
|
createAt |
string |
创建时间 |
|
start |
string |
开启状态 |
0:禁用, 1:开启 |
timingUuid |
string |
触发条件id |
|
请求示例
{
"page": 1,
"pageSize": 5,
"name": "测试",
"start": 1
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"ruleId": "63c26d043865b9307d7a6092",
"name": "测试规则0113060",
"description": "@&1232",
"createAt": "2023-01-14 16:51:16",
"start": "1",
"timingUuid": null
},
{
"ruleId": "63c2613c3865b9307d7a6091",
"name": "触发条件0101",
"description": "test",
"createAt": "2023-01-14 16:01:00",
"start": "1",
"timingUuid": "5ab15430-4b64-4377-8dbe-339bb448b076"
},
{
"ruleId": "63c25da23865b9307d7a6090",
"name": "触发条件自定义01",
"description": "test",
"createAt": "2023-01-14 15:45:38",
"start": "1",
"timingUuid": "e61f055f-52ea-44c9-9d93-01d4da15e15c"
},
{
"ruleId": "63c25d8e3865b9307d7a608f",
"name": "触发条件每周01",
"description": "test",
"createAt": "2023-01-14 15:45:18",
"start": "1",
"timingUuid": "9f0639e7-6442-4153-aa32-55f3c0eef669"
},
{
"ruleId": "63c25d7b3865b9307d7a608e",
"name": "触发条件每天01",
"description": "test",
"createAt": "2023-01-14 15:44:59",
"start": "1",
"timingUuid": "662f77dc-f9d2-4af5-94fd-149b196efa1f"
}
],
"current": 1,
"size": 5,
"total": 62
}
}
获取规则列表
请求地址: /openApi/v2/ruleEngine/getRuleList
传参方式: POST
备注: 添加、编辑规则时可用该接口筛选前置条件,用于规则联动
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
ruleId |
string |
否 |
规则id |
添加时为空,编辑时需填写 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
ruleId |
string |
规则id |
|
|
name |
string |
规则名称 |
|
|
请求示例
{
"ruleId": "63a0012ef79f704c8b4b5bc7"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"ruleId": "63c394982f029d4685a0dbb9",
"name": "编辑规则"
},
{
"ruleId": "63c38a990c40c20e50b8bfe3",
"name": "rule-nodeId"
}
]
}
获取规则变量
请求地址: /openApi/v2/ruleEngine/ruleVariable/list
传参方式: GET
备注: 添加、编辑规则时可用该接口筛选前置条件,用于发送通知,当前接口无请求参数
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
code |
string |
变量code |
|
|
name |
string |
变量名称 |
|
|
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"code": "ruleName",
"name": "规则名称"
},
{
"code": "nodeEui",
"name": "设备Id"
},
{
"code": "productName",
"name": "产品名称"
},
{
"code": "nodeName",
"name": "设备名称"
},
{
"code": "alarmName",
"name": "告警名称"
}
]
}
联系人列表
请求地址: /openApi/v2/ruleEngine/contact/list
传参方式: GET
备注: 添加、编辑规则时可用该接口筛选前置条件,用于发送通知
请求参数
Params:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
search |
string |
否 |
联系人名称或电话或邮箱 |
|
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
id |
string |
数据库id |
|
|
name |
string |
名称 |
|
|
mobile |
string |
手机号 |
|
|
email |
string |
邮箱 |
|
|
createAt |
string |
创建时间 |
|
|
请求示例
/openApi/v2/ruleEngine/contact/list?search=8
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"mobile": "15657993164",
"name": "l8",
"id": "6444d1cdd56b65373bf84643",
"createAt": "2023-04-23 14:35:57",
"email": "21111@qq.com"
}
]
}
短信配置列表
请求地址: /openApi/v2/ruleEngine/smsConfig/list
传参方式: POST
备注: 添加、编辑规则时可用该接口筛选前置条件,用于发送通知
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数 |
ruleNoticeType |
integer |
是 |
模板获取方式 |
|
1:系统默认 2:自定义 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
|
name |
string |
名称 |
|
请求示例
{"ruleNoticeType":1}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"name": "短信配置测试",
"id": "64424d2bc4cee663bd97a3fd"
},
{
"name": "短信配置测试1",
"id": "64424e3a509e83502e4832c1"
},
{
"name": "短信配置测试3",
"id": "6446184178d12f475ee08d50"
}
]
}
短信模板列表
请求地址: /openApi/v2/ruleEngine/smsTemplate/list
传参方式: POST
备注: 添加、编辑规则时可用该接口筛选前置条件,用于发送通知
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数 |
ruleNoticeType |
integer |
是 |
模板获取方式 |
|
1:系统默认 2:自定义 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
configId |
string |
配置id |
|
template |
array[object] |
模板内容 |
|
template 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
模板数据库id |
|
configId |
string |
配置id |
|
name |
string |
模板名称 |
|
variable |
array[string] |
模板变量 |
|
请求示例
{"ruleNoticeType":1}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"template": [
{
"configId": "64424e3a509e83502e4832c1",
"variable": [
"name",
"nodeEui",
"ruleName"
],
"name": "短信模板测试",
"id": "6444f5a5c7078f5ba357e813"
},
{
"configId": "64424e3a509e83502e4832c1",
"variable": [
"name",
"nodeEui",
"ruleName"
],
"name": "短信模板测试1",
"id": "64466cff9afb794cd87aeb91"
}
],
"configId": "64424e3a509e83502e4832c1"
}
]
}
邮件配置列表
请求地址: /openApi/v2/ruleEngine/emailConfig/list
传参方式: POST
备注: 添加、编辑规则时可用该接口筛选前置条件,用于发送通知
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数 |
ruleNoticeType |
integer |
是 |
模板获取方式 |
|
1:系统默认 2:自定义 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
|
name |
string |
配置名称 |
|
请求示例
{"ruleNoticeType":1}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"name": "邮件配置",
"id": "6445e32b7cfcfd58c02c13d1"
}
]
}
邮件模板列表
请求地址: /openApi/v2/ruleEngine/emailTemplate/list
传参方式: POST
备注: 添加、编辑规则时可用该接口筛选前置条件,用于发送通知
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数 |
ruleNoticeType |
integer |
是 |
模板获取方式 |
|
1:系统默认 2:自定义 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
configId |
string |
配置id |
|
template |
array[object] |
模板内容 |
|
template 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
模板数据库id |
|
configId |
string |
配置id |
|
name |
string |
模板名称 |
|
variable |
array[string] |
模板变量 |
|
请求示例
{"ruleNoticeType":1}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": [
{
"template": [
{
"configId": "6445e32b7cfcfd58c02c13d1",
"variable": [
"nodeEui1",
"k1",
"f1",
"h1"
],
"name": "邮件模板2223",
"id": "64461f8481dc6e4d636b49bc"
}
],
"configId": "6445e32b7cfcfd58c02c13d1"
}
]
}
告警日志
查询告警日志
请求地址: /openApi/v2/alarmCenter/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
beginTime |
string |
否 |
查询开始时间 |
默认当前时间前7天,最早为当前时间前30天 |
endTime |
string |
否 |
查询结束时间 |
默认当前时间,开始时间有值时必填 |
name |
string |
否 |
告警名称 |
模糊查询 |
level |
string |
否 |
告警级别 |
1,2,3,4,5 |
status |
string |
否 |
处理状态 |
0:未处理, 1:已处理 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
alarmId |
string |
告警id |
|
name |
string |
告警名称 |
|
level |
string |
告警级别 |
1,2,3,4,5 |
alarmInfo |
string |
告警信息 |
|
status |
string |
处理状态 |
0:未处理, 1:已处理 |
date |
string |
告警时间 |
|
请求示例
{
"page": 1,
"pageSize": 10,
"name": "告警",
"level": 1,
"beginTime":"2023-01-29 00:00:00",
"endTime":"2023-01-30 00:00:00"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"alarmId": "63d570b1fe2cc74768dd92be",
"name": "告警11",
"level": "1",
"alarmInfo": "规则:wwww,联动触发告警",
"status": "0",
"date": "2023-01-29 03:00:00"
},
{
"alarmId": "63d570b1fe2cc74768dd92bc",
"name": "告警11",
"level": "1",
"alarmInfo": "规则:3r22fawfaw,联动触发告警",
"status": "0",
"date": "2023-01-29 03:00:00"
}
],
"current": 1,
"size": 10,
"total": 2
}
}
告警处理
请求地址: /openApi/v2/alarmCenter/handle
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
alarmId |
string |
否 |
告警id |
all=0单条处理时必填 |
|
all |
string |
是 |
处理方式 |
|
0:单条处理, 1:一键处理 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"alarmId":"62bc053980182f25d46e1aa3",
"all":"0"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
场景日志
分页查询场景日志
请求地址: /openApi/v2/sceneLog/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
beginTime |
string |
否 |
查询开始时间 |
默认当前时间前7天,最早为当前时间前30天 |
endTime |
string |
否 |
查询结束时间 |
默认当前时间,开始时间有值时必填 |
status |
string |
否 |
处理状态 |
0:未处理, 1:已处理 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
参数 |
sceneLogId |
string |
场景日志id |
|
ruleId |
string |
规则id |
|
time |
integer |
日志时间 |
|
status |
string |
执行状态 |
0:失败, 1:成功 |
请求示例
{
"ruleId": "63a0012ef79f704c8b4b5bc7",
"page": 1,
"pageSize": 10,
"beginTime":"2023-01-01 00:00:00",
"endTime":"2023-01-30 00:00:00"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"sceneLogId": "e1dec9b1-c5ea-4328-a15a-fe7525ce2fb7",
"ruleId": "63a0012ef79f704c8b4b5bc7",
"time": "2023-01-06 09:05:17",
"status": "0"
}
],
"current": 1,
"size": 10,
"total": 1
}
}
分页查询场景日志详情
请求地址: /openApi/v2/sceneLogInfo/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
sceneLogId |
string |
是 |
场景日志id |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
备注 |
sceneInfoLogId |
string |
场景详情日志id |
|
sceneLogId |
string |
场景日志id |
|
performObject |
string |
执行对象 |
status |
string |
执行状态 |
0:失败, 1:成功 |
failInfo |
string |
失败原因 |
|
time |
integer |
日志时间 |
|
请求示例
{
"sceneLogId": "e1dec9b1-c5ea-4328-a15a-fe7525ce2fb7",
"page": 1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"sceneLogId": "e1dec9b1-c5ea-4328-a15a-fe7525ce2fb7",
"sceneInfoLogId": "c554c8f5-5bd0-4418-bdf0-c28d11323cdd",
"performObject": "规则测试2",
"failInfo": "-",
"time": "2023-01-06 09:05:17",
"status": "1"
},
{
"sceneLogId": "e1dec9b1-c5ea-4328-a15a-fe7525ce2fb7",
"sceneInfoLogId": "421b6065-f264-4f2b-9bff-3912c9210daf",
"performObject": "20MQTTWJ00001",
"failInfo": "服务不存在",
"time": "2023-01-06 09:05:17",
"status": "0"
},
{
"sceneLogId": "e1dec9b1-c5ea-4328-a15a-fe7525ce2fb7",
"sceneInfoLogId": "eb57c3f5-1035-4ead-9814-68765d881237",
"performObject": "20MQTTWJ00001",
"failInfo": "属性不存在",
"time": "2023-01-06 09:05:17",
"status": "0"
}
],
"current": 1,
"size": 10,
"total": 3
}
}
设备本地日志
设备本地日志上传
请求地址: /openApi/v2/localLog/upload
传参方式: POST
备注: 无
请求参数
参数名称 |
参数值 |
是否必须 |
备注 |
appId |
添加api应用生成的appId |
是 |
|
sign |
计算的签名值,参考签名计算示例 |
是 |
|
nonce |
随机数,可以使用随机数或者uuid |
是 |
|
authorization |
鉴权令牌,通过获取token接口获取 |
是 |
|
Content-Type |
multipart/form-data |
是 |
|
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数值 |
level |
string |
是 |
紧急程度 |
|
1:低, 2:中等, 3:紧急 |
simpleAt |
string |
是 |
时间 |
格式yyyy-MM-dd HH:mm:ss |
|
nodeId |
string |
是 |
设备id |
|
|
file |
file |
是 |
日志文件 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
level:1
simpleAt:2023-01-11 09:30:08
nodeId:637592778fe5ca5d246db354
file:[文件]
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
分页查询设备本地日志
请求地址: /openApi/v2/localLog/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
参数 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
beginTime |
string |
否 |
查询开始时间 |
默认当前时间前7天,最早为当前时间前30天 |
endTime |
string |
否 |
查询结束时间 |
默认当前时间,开始时间有值时必填 |
level |
string |
否 |
日志级别 |
|
0:低, 1:中等, 2:紧急 |
timeType |
string |
否 |
时间类型 |
|
0:采集时间, 1:上传时间 |
productId |
string |
否 |
产品productId |
|
|
nodeEui |
string |
否 |
设备号 |
|
|
nodeId |
string |
否 |
设备id |
当设备id、设备号或产品productId都有值的情况下,以nodeId为准 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
备注 |
deviceLocalLogId |
string |
设备本地日志id |
productId |
string |
产品productId |
productName |
string |
产品名称 |
nodeEui |
string |
设备号 |
nodeId |
string |
设备id |
level |
string |
日志级别 |
0:低, 1:中等, 2:紧急 |
originalFilename |
string |
上传文件的名称 |
fileKey |
string |
oss上的文件的key |
path |
string |
oss下载地址 |
simpleAt |
string |
采集时间 |
createAt |
string |
创建时间 |
请求示例
{
"productId":"",
"nodeEui":"",
"nodeId":"637592778fe5ca5d246db354",
"level":"1",
"timeType":"1",
"beginTime":"2023-01-01 00:00:00",
"endTime":"2023-01-30 00:00:00",
"page": 1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"deviceLocalLogId": "63c377cdf7a2292c2eb97f53",
"productId": "2916C822",
"productName": "MQTT非透传json371",
"nodeEui": "MQTT000000000253",
"nodeId": "637592778fe5ca5d246db354",
"level": "1",
"originalFilename": "1.jpg",
"fileKey": "deviceLocalLog/xxxx_1.jpg",
"path": "https://xxxx",
"simpleAt": "2023-01-11 09:30:08",
"createAt": "2023-01-15 11:49:32"
},
{
"deviceLocalLogId": "63c377333b17973539aff0ec",
"productId": "2916C822",
"productName": "MQTT非透传json371",
"nodeEui": "MQTT000000000253",
"nodeId": "637592778fe5ca5d246db354",
"level": "1",
"originalFilename": "1.jpg",
"fileKey": "deviceLocalLog/xxxx_1.jpg",
"path": "https://xxxx",
"simpleAt": "2023-01-11 09:30:08",
"createAt": "2023-01-15 11:46:59"
}
],
"current": 1,
"size": 10,
"total": 2
}
设备运行日志
分页查询设备运行日志
请求地址: /openApi/v2/runtimeLog/list
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
page |
integer |
否 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
否 |
分页数 |
最小值为1,最大值为100,默认值为10 |
beginTime |
string |
否 |
查询开始时间 |
默认当前时间前1天,最早为当前时间前7天 |
endTime |
string |
否 |
查询结束时间 |
默认当前时间,开始时间有值时必填 |
productId |
string |
否 |
产品productId |
nodeEui |
string |
否 |
设备号 |
nodeId |
string |
否 |
设备id |
当设备id、设备号、产品productId都有值的情况下,以nodeId为准 |
module |
string |
否 |
模块 |
DEVICE_STATUS:设备状态, DEVICE_ACTION:设备行为, MESSAGE_DEVICE_TO_CLOUD:设备到云消息, MESSAGE_CLOUD_TO_DEVICE:云到设备消息, OTA:OTA, REMOTE_CONFIG:远程配置, DEVICE_ANALYZE:数据解析, MODEL_DATA_REPORT:物模型消息, MODEL_DATA_VERIFY:物模型数据校验, SERVER_PUSH:服务端推送, API_CALL:API调用, DEVICE_SHADOW:设备影子, RULE_ENGINE:规则引擎, CLOUD_GATEWAY:云网关, SUB_RELATION:拓扑关系 |
status |
string |
否 |
状态 |
200:成功, 400:失败 |
messageId |
string |
否 |
消息id |
messageContent |
string |
否 |
消息内容 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
records |
object[] |
分页列表 |
|
current |
integer |
当前页 |
|
size |
integer |
分页数 |
|
total |
integer |
总页数 |
|
records 说明
参数名称 |
类型 |
名称 |
备注 |
runTimeLogId |
string |
运行日志id |
productId |
string |
产品productId |
nodeEui |
string |
设备号 |
time |
string |
时间 |
messageContent |
string |
消息内容 |
content |
string |
返回内容 |
module |
string |
模块 |
参数内容同请求参数 |
opt |
string |
操作 |
src |
string |
来源 |
traceId |
string |
来源id |
messageId |
integer |
messageId |
status |
string |
状态 |
请求示例
{
"productId": "AE06B207",
"nodeEui": "FFFF301B977E2342"
"beginTime":"2023-01-29 00:00:00",
"endTime":"2023-01-30 00:00:00",
"page": 1,
"pageSize": 10
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"runTimeLogId": "UpNPWYYB70wcY5WdRQnv",
"productId": "AE06B207",
"nodeEui": "FFFF301B977E2342",
"time": "2023-01-29 16:20:11",
"messageContent": "{\"payload\":\"{\\\"openId\\\":\\\"845F86E6\\\",\\\"productId\\\":\\\"AE06B207\\\",\\\"nodeEui\\\":\\\"FFFF301B977E2342\\\",\\\"command\\\":1,\\\"timestamp\\\":1676535611853,\\\"encrypted\\\":false,\\\"messageId\\\":1676535611,\\\"requestId\\\":\\\"a952e7f0-2551-4393-9574-5acdb6dea8ef\\\",\\\"payload\\\":{\\\"NAM\\\":\\\"智能单色灯5\\\"},\\\"topic\\\":\\\"/sys/845F86E6/08903667/301B974DB651/subdevice/model/property/report\\\",\\\"reportType\\\":2}\",\"timestamp\":1676535611853,\"topic\":\"/sys/845F86E6/08903667/301B974DB651/subdevice/model/property/report\"}",
"content": "{\"code\":\"70016\",\"reason\":\"连接失败\"}",
"module": "SERVER_PUSH",
"opt": "http",
"src": null,
"traceId": null,
"messageId": 1676535611,
"status": "400"
},
{
"runTimeLogId": "TZNPWYYB70wcY5WdRQnv",
"productId": "AE06B207",
"nodeEui": "FFFF301B977E2342",
"time": "2023-01-29 16:20:11",
"messageContent": "{\"payload\":\"{\\\"params\\\":[{\\\"identify\\\":\\\"MAC\\\",\\\"value\\\":\\\"FFFF301B977E2342\\\"},{\\\"identify\\\":\\\"CEN\\\",\\\"value\\\":\\\"0\\\"},{\\\"identify\\\":\\\"CAP\\\",\\\"value\\\":\\\"7E\\\"},{\\\"identify\\\":\\\"ADD\\\",\\\"value\\\":\\\"2444\\\"},{\\\"identify\\\":\\\"NAM\\\",\\\"value\\\":\\\"智能单色灯5\\\"},{\\\"identify\\\":\\\"LIVE\\\",\\\"value\\\":\\\"ON\\\"},{\\\"identify\\\":\\\"data\\\",\\\"value\\\":\\\"\\\"},{\\\"identify\\\":\\\"RSSI\\\",\\\"value\\\":\\\"-76\\\"},{\\\"identify\\\":\\\"FWV\\\",\\\"value\\\":\\\"V6.7_LT52.0\\\"},{\\\"identify\\\":\\\"TYP\\\",\\\"value\\\":\\\"LT-LEV\\\"}]}\",\"timestamp\":1676535611853,\"topic\":\"/sys/845F86E6/08903667/301B974DB651/subdevice/model/property/report\"}",
"content": "-",
"module": "MODEL_DATA_REPORT",
"opt": "属性上报",
"src": null,
"traceId": null,
"messageId": 1676535611,
"status": "200"
}
],
"current": 1,
"size": 10,
"total": 2
}
}
OSS文件
获取OSS文件上传STS凭证
请求地址: /openApi/v2/
传参方式: POST
备注:
- 对于比较大的固件,考虑到其上传会消耗大量的时间,而造成的用户体验感降低,平台开放接口,授权STS凭证给用户,用户拿着STS凭证即可直接把文件上传到OSS服务器 ,而不经过平台的转发
- STS凭证具有有效期,用户应在有效期内使用STS凭证完成文件上传,否则需要重新获取
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
参数值 |
type |
integer |
是 |
文件类型 |
1:设备证书存储的目录, 2:固件存储的目录, 3:设备本地日志存储的目录 |
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
参数 |
备注 |
endPoint |
string |
OSS访问域名 |
|
|
accessKeyId |
string |
OSS秘钥id |
|
|
accessKeySecret |
string |
OSS秘钥 |
|
|
stsToken |
string |
STS凭证 |
|
|
expiation |
long |
STS凭证有效期 |
|
|
bucket |
string |
OSS桶 |
|
|
deviceCertificateDir |
string |
设备证书存放目录 |
|
|
otaFirmwareDir |
string |
固件存放目录 |
|
|
deviceLocalLogDir |
string |
设备本地日志存放目录 |
|
|
请求示例
{
"type": 1
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"endPoint": "oss-cn-zhangjiakou.aliyuncs.com",
"accessKeyId": "yourAccessKeyId",
"accessKeySecret": "yourAccessKeySecret",
"stsToken": "yourStsToken",
"expiation": 1675069200000,
"bucket": "test-senthink-xiot",
"deviceCertificateDir": "deviceCertificate/xxxxxx",
"otaFirmwareDir": "",
"deviceLocalLogDir": ""
}
}
通知服务
短信配置-查询详情
请求地址: /senthink/openApi/v1/sms/config/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
id |
string |
是 |
短信配置id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
name |
string |
配置名称 |
provider |
string |
服务商 |
accessKey |
string |
AccessKey |
accessSecret |
string |
AccessSecret |
remark |
string |
备注 |
createAt |
string |
创建时间 |
请求示例
{
"id": "644910f4ecdc64dds6be021"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"id": "644910f4ecdc64dds6be021",
"name": "d正式配置",
"provider": "aliyun",
"accessKey": "LI5t8ZErqpEy6mSXKPboJZ",
"accessSecret": "9s9vPKQFRddjdTDqYBl3daBJVquKT",
"remark": null,
"createAt": "2023-04-26 19:54:28"
}
}
错误码
短信配置-查询列表
请求地址: /senthink/openApi/v1/sms/config/getPage
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
search |
string |
否 |
配置名称 |
|
page |
integer |
是 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
是 |
分页数 |
最小值为1,最大值为100,默认值为10 |
searchBgnTime |
string |
否 |
时间开始区间 |
|
searchEndTime |
string |
否 |
时间结束区间 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
asc |
bool |
是否做了升序排列 |
current |
integer |
当前页数 |
limit |
integer |
限制 |
offset |
integer |
偏移量 |
optimizeCount |
bool |
是否优化了数据总数的查询 |
orderByField |
string |
排序字段 |
pages |
integer |
总页数 |
records |
array[object] |
查询的结果集 |
searchCount |
bool |
是否查询了数据总数 |
size |
integer |
每页显示数量 |
total |
integer |
数据总数 |
records 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
name |
string |
配置名称 |
provider |
string |
服务商 |
accessKey |
string |
AccessKey |
accessSecret |
string |
AccessSecret |
remark |
string |
备注 |
createAt |
string |
创建时间 |
请求示例
{
"page": 1,
"pageSize": 10,
"search":"短信配置测试1",
"searchBgnTime":"2023-04-20 11:05:28",
"searchEndTime":"2023-04-22 11:05:29"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"id": "64424e3a509e83502e4832c1",
"name": "短信配置测试1",
"provider": "aliyun",
"accessKey": "11111@qq.com",
"accessSecret": "哒哒哒哒哒哒",
"remark": "",
"createAt": "2023-04-21 16:50:02"
}
],
"pages": 1,
"current": 1,
"size": 10,
"searchCount": true,
"total": 1,
"optimizeCount": true,
"offset": 0,
"limit": 2147483647,
"asc": true,
"orderByField": null
}
}
错误码
短信模板-查询详情
请求地址: /senthink/openApi/v1/sms/template/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
id |
string |
是 |
短信模板id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
configId |
string |
配置数据库Id |
name |
string |
模板名称 |
signName |
string |
签名名称 |
code |
string |
模板code |
variable |
array[string] |
模板变量 |
createAt |
string |
创建时间 |
请求示例
{
"id": "6444f5a5c7078f5ba357e813"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"id": "6444f5a5c7078f5ba357e813",
"name": "短信模板测试",
"configId": "64424e3a509e83502e4832c1",
"signName": "短信签名名称",
"code": "codeTest1",
"createAt": "2023-04-23 17:08:51",
"variable": [
"name",
"nodeEui",
"ruleName"
]
}
}
错误码
短信模板-查询列表
请求地址: /senthink/openApi/v1/sms/template/getPage
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
search |
string |
否 |
短信模板名称 |
|
configId |
string |
是 |
短信配置id |
|
page |
integer |
是 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
是 |
分页数 |
最小值为1,最大值为100,默认值为10 |
searchBgnTime |
string |
否 |
时间开始区间 |
|
searchEndTime |
string |
否 |
时间结束区间 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
asc |
bool |
是否做了升序排列 |
current |
integer |
当前页数 |
limit |
integer |
限制 |
offset |
integer |
偏移量 |
optimizeCount |
bool |
是否优化了数据总数的查询 |
orderByField |
string |
排序字段 |
pages |
integer |
总页数 |
records |
array[object] |
查询的结果集 |
searchCount |
bool |
是否查询了数据总数 |
size |
integer |
每页显示数量 |
total |
integer |
数据总数 |
records 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
configId |
string |
配置数据库Id |
name |
string |
模板名称 |
signName |
string |
签名名称 |
code |
string |
模板code |
variable |
array[string] |
模板变量 |
createAt |
string |
创建时间 |
请求示例
{
"page": 1,
"pageSize": 10,
"search": "模板",
"configId":"64424e3a509e83502e4832c1",
"searchBgnTime":"2023-04-23 16:57:28",
"searchEndTime":"2023-04-26 17:05:29"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"id": "6444f5a5c7078f5ba357e813",
"name": "短信模板",
"configId": "64424e3a509e83502e4832c1",
"signName": "短信签名名称",
"code": "codeTest1",
"createAt": "2023-04-23 17:08:51",
"variable": [
"name",
"nodeEui",
"ruleName"
]
}
],
"pages": 1,
"current": 1,
"size": 10,
"searchCount": true,
"total": 2,
"optimizeCount": true,
"offset": 0,
"limit": 2147483647,
"asc": true,
"orderByField": null
}
}
错误码
短信模板-发送短信
请求地址: /senthink/openApi/v1/sms/template/send
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
templateId |
string |
是 |
短信模板id |
|
mobiles |
string |
是 |
手机号 |
多个手机号以","分隔 |
variable |
array[object] |
否 |
模板变量 |
|
variable 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
key |
string |
是 |
模板变量key |
|
value |
string |
是 |
模板变量value |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"templateId":"64466cff9afb794cd87aeb91",
"mobiles":"15667667887",
"variable":[
{
"key":"name",
"value":"testNode11"
},
{
"key":"nodeEui",
"value":"hhhhh"
},
{
"key":"ruleName",
"value":"dddf"
}
]
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
4001 |
请求参数有误 |
20008 |
变量名与变量值个数不匹配 |
邮件配置-查询详情
请求地址: /senthink/openApi/v1/email/config/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
id |
string |
是 |
邮件配置id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
name |
string |
配置名称 |
provider |
string |
服务商 |
address |
string |
服务器地址 |
port |
integer |
端口 |
sender |
string |
发件人 |
userName |
string |
用户名 |
password |
string |
密码 |
remark |
string |
备注 |
createAt |
string |
创建时间 |
请求示例
{
"id": "6445e32b7cfcfd58c02c13d1"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"id": "6445e32b7cfcfd58c02c13d1",
"name": "邮件配置",
"provider": "default",
"address": "11111@qq.com",
"port": 5678,
"sender": "11111ddd1@qq.com",
"userName": "aliyun",
"password": "11111@qq.com",
"remark": "哒哒哒哒哒哒1",
"createAt": "2023-04-24 10:02:19"
}
}
错误码
邮件配置-查询列表
请求地址: /senthink/openApi/v1/email/config/getPage
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
search |
string |
否 |
配置名称 |
|
page |
integer |
是 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
是 |
分页数 |
最小值为1,最大值为100,默认值为10 |
searchBgnTime |
string |
否 |
时间开始区间 |
|
searchEndTime |
string |
否 |
时间结束区间 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
asc |
bool |
是否做了升序排列 |
current |
integer |
当前页数 |
limit |
integer |
限制 |
offset |
integer |
偏移量 |
optimizeCount |
bool |
是否优化了数据总数的查询 |
orderByField |
string |
排序字段 |
pages |
integer |
总页数 |
records |
array[object] |
查询的结果集 |
searchCount |
bool |
是否查询了数据总数 |
size |
integer |
每页显示数量 |
total |
integer |
数据总数 |
records 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
name |
string |
配置名称 |
provider |
string |
服务商 |
address |
string |
服务器地址 |
port |
integer |
端口 |
sender |
string |
发件人 |
userName |
string |
用户名 |
password |
string |
密码 |
remark |
string |
备注 |
createAt |
string |
创建时间 |
请求示例
{
"page": 1,
"pageSize": 10,
"search":"配置",
"searchBgnTime":"2023-04-24 09:05:28",
"searchEndTime":"2023-04-24 11:05:29"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"id": "6445e32b7cfcfd58c02c13d1",
"name": "邮件配置",
"provider": "default",
"address": "11111@qq.com",
"port": 5678,
"sender": "11111ddd1@qq.com",
"userName": "aliyun",
"password": "11111@qq.com",
"remark": "哒哒哒哒哒哒1",
"createAt": "2023-04-24 10:02:19"
}
],
"pages": 1,
"current": 1,
"size": 10,
"searchCount": true,
"total": 1,
"optimizeCount": true,
"offset": 0,
"limit": 2147483647,
"asc": true,
"orderByField": null
}
}
错误码
邮件模板-查询详情
请求地址: /senthink/openApi/v1/email/template/query
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
id |
string |
是 |
邮件模板id |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
configId |
string |
配置数据库Id |
name |
string |
模板名称 |
title |
string |
邮件标题 |
variable |
array[string] |
模板变量 |
不重复的标题和内容变量集合 |
titleVariable |
array[string] |
标题变量 |
contentVariable |
array[string] |
内容变量 |
createAt |
string |
创建时间 |
请求示例
{
"id": "6448c82a1600c705f01f4288"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"id": "6448c82a1600c705f01f4288",
"name": "邮件模板2223",
"configId": "6445e32b7cfcfd58c02c13d1",
"title": "测试测试${nodeEui1}${nodeEss1}",
"content": "邮件模板内容测试${nodeEui1},邮件模板内容测试${k1},邮件模板内容测试${f1},邮件模板内容测试${h1}",
"createAt": "2023-04-26 14:43:51",
"titleVariable": [
"nodeEui1",
"nodeEss1"
],
"contentVariable": [
"nodeEui1",
"k1",
"f1",
"h1"
],
"variable": [
"nodeEui1",
"nodeEss1",
"k1",
"f1",
"h1"
]
}
}
错误码
邮件模板-查询列表
请求地址: /senthink/openApi/v1/email/template/getPage
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
search |
string |
否 |
邮件模板名称 |
|
configId |
string |
是 |
邮件配置id |
|
page |
integer |
是 |
页数 |
最小值为1,默认值为1 |
pageSize |
integer |
是 |
分页数 |
最小值为1,最大值为100,默认值为10 |
searchBgnTime |
string |
否 |
时间开始区间 |
|
searchEndTime |
string |
否 |
时间结束区间 |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
data 说明
参数名称 |
类型 |
名称 |
备注 |
asc |
bool |
是否做了升序排列 |
current |
integer |
当前页数 |
limit |
integer |
限制 |
offset |
integer |
偏移量 |
optimizeCount |
bool |
是否优化了数据总数的查询 |
orderByField |
string |
排序字段 |
pages |
integer |
总页数 |
records |
array[object] |
查询的结果集 |
searchCount |
bool |
是否查询了数据总数 |
size |
integer |
每页显示数量 |
total |
integer |
数据总数 |
records 说明
参数名称 |
类型 |
名称 |
备注 |
id |
string |
数据库id |
configId |
string |
配置数据库Id |
name |
string |
模板名称 |
title |
string |
邮件标题 |
variable |
array[string] |
模板变量 |
不重复的标题和内容变量集合 |
titleVariable |
array[string] |
标题变量 |
contentVariable |
array[string] |
内容变量 |
createAt |
string |
创建时间 |
请求示例
{
"page": 1,
"pageSize": 10,
"search":"334",
"configId":"6445e32b7cfcfd58c02c13d1",
"searchBgnTime":"2023-04-26 11:05:28",
"searchEndTime":"2023-04-26 15:05:29"
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": {
"records": [
{
"id": "6448c67859925d0d7eaf011f",
"name": "邮件模板334",
"configId": "6445e32b7cfcfd58c02c13d1",
"title": "设备${nodeEui}${nodeEss}",
"content": "邮件模板内容测试${nodeEui},邮件模板内容测试${k},邮件模板内容测试${f},邮件模板内容测试${h}",
"createAt": "2023-04-26 14:36:24",
"titleVariable": [
"nodeEui",
"nodeEss"
],
"contentVariable": [
"nodeEui",
"k",
"f",
"h"
],
"variable": [
"nodeEui",
"nodeEss",
"k",
"f",
"h"
]
}
],
"pages": 1,
"current": 1,
"size": 10,
"searchCount": true,
"total": 1,
"optimizeCount": true,
"offset": 0,
"limit": 2147483647,
"asc": true,
"orderByField": null
}
}
错误码
邮件模板-发送邮件
请求地址: /senthink/openApi/v1/email/template/send
传参方式: POST
备注: 无
请求参数
Body:
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
templateId |
string |
是 |
短信模板id |
|
emails |
string |
是 |
邮箱 |
多个邮箱地址以","分隔 |
variable |
array[object] |
否 |
模板变量 |
|
variable 说明
参数名称 |
类型 |
是否必须 |
名称 |
备注 |
key |
string |
是 |
模板变量key |
|
value |
string |
是 |
模板变量value |
|
响应参数
名称 |
类型 |
说明 |
code |
string |
响应码 |
msg |
string |
响应码说明 |
data |
object |
响应内容 |
请求示例
{
"templateId":"64461f8481dc6e4d636b49bc",
"emails":"1111@qq.com,111ddd1@qq.com",
"variable":[
{
"key":"nodeEui1",
"value":"testNode11"
},
{
"key":"k1",
"value":"ddd"
},
{
"key":"f1",
"value":"dddf"
},
{
"key":"h1",
"value":"ddddvddf"
}
]
}
响应示例
{
"code": "8001",
"msg": "操作成功",
"data": true
}
错误码
code |
描述 |
4001 |
请求参数有误 |
20008 |
变量名与变量值个数不匹配 |