Batch Associate Asset¶
将指定已有资产节点批量关联到资产树上。待关联的资产可以是设备资产,也可以是逻辑资产。如果待关联的资产节点是一个设备资产,可使用设备资产的 product key、 device key 或者 asset ID 来描述,如果待关联的资产节点是一个逻辑资产,可使用逻辑资产的 ID 来描述。
使用此 API 前,确保当前环境已安装 EnOS 2.3 CU 3。
操作权限¶
需授权的资源 |
所需操作权限 |
---|---|
资产树管理 |
Full Access |
请求格式¶
POST https://{apigw-address}/asset-tree-service/v2.1/asset-nodes?action=associateAssetBatch
请求参数(URI)¶
名称 |
位置(Path/Query) |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|---|
orgId |
Query |
必需 |
String |
资产所属的组织 ID。如何获取 orgId 信息>> |
treeId |
Query |
必需 |
String |
需要获取的资产树 ID。如何获取资产树信息 ID>> |
parentAssetId |
Query |
必需 |
String |
待关联资产的父资产 ID。 |
请求参数(Body)¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
assetIdentifiers |
必需 |
AssetIdentifiersVo 结构体数组 |
资产的信息。其结构参见 AssetIdentifiersVo 结构体。 |
AssetIdentifiersVo 结构体 ¶
备注
以下非必须字段中,必须提供 assetId
或 productKey
+ deviceKey
的组合,用于指定设备。
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
assetId |
可选 |
String |
资产 ID。如何获取 assetId 信息>> |
productKey |
可选 |
String |
设备的 product key,需与 |
deviceKey |
可选 |
String |
设备的 device key,需与 |
响应参数¶
名称 |
数据类型 |
描述 |
---|---|---|
data |
EnosBatchEachData 结构体数组 |
成功或失败消息列表。有关 EnosBatchEachData 结构体的定义,参见 EnosBatchEachData 结构体。 |
successSize |
Integer |
成功关联数。 |
totalSize |
Integer |
需要关联总数。 |
EnosBatchEachData 结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
code |
Integer |
更新成功或失败的指示码。成功时返回 |
msg |
String |
成功时返回 |
data |
String |
若创建成功,则为 |
错误码¶
名称 |
错误信息 |
描述 |
---|---|---|
17752 |
Parent assetId is not existed in the tree |
父资产不存在该树上。 |
17758 |
AssetId is existed in the tree |
Asset ID 已存在。 |
17762 |
The tree is locked |
一次只允许一个用户修改资产树,暂时不能操作该资产树,请再次请求。 |
17770 |
Exceeding the layer limit(7) |
该树超过最高层数限制(7层)。 |
99400 |
Invalid arguments |
请求参数非法,请检查请求参数。 |
99404 |
TreeId is not exist |
Tree ID 不存在。 |
99500 |
System error |
服务器内部错误,请联系 EnOS。 |
示例¶
请求示例¶
url: https://{apigw-address}/asset-tree-service/v2.1/asset-nodes?action=associateAssetBatch&orgId=yourOrgId&treeId=yourTreeId&parentAssetId=yourParentAssetId
method: POST
requestBody:
{
"assetIdentifiers": [
{
"assetId": "assetId1"
},
{
"deviceKey": "yourDeviceKey",
"productKey": "yourProductKey"
}
]
}
返回示例¶
{
"code":99206,
"msg":"Partial Content Success",
"requestId":"deb2cf9d-b512-456f-b046-30e365c54e9c",
"data":[
{
"code":758,
"msg":"asset is existed in the tree.",
"data":"assetId1"
},
{
"code":0,
"msg":"OK",
"data":"assetId2"
}
],
"successSize":1,
"totalSize":2
}
Java SDK 调用示例¶
package com.envisioniot.enos.asset_tree_service;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.asset_tree_service.v2_1.AssociateAssetNodeRequest;
import com.envisioniot.enos.asset_tree_service.v2_1.AssociateAssetNodeResponse;
import org.junit.Test;
@Test
public void testAssociateAssetNode() {
AssociateAssetNodeBatchRequest request = new AssociateAssetNodeBatchRequest();
request.setOrgId(OrgId);
request.setTreeId("yourTreeId");
request.setParentAssetId("yourParentAssetId");
List<AssetIdentifierVo> assetIdentifiersVoList = new ArrayList<>();
AssetIdentifierVo assetIdentifiersVo1=new AssetIdentifierVo("assetId1");
assetIdentifiersVoList.add(assetIdentifiersVo1);
AssetIdentifierVo assetIdentifiersVo2=new AssetIdentifierVo("yourProductKey","yourDeviceKey");
assetIdentifiersVoList.add(assetIdentifiersVo2);
request.setAssetIdentifiers(assetIdentifiersVoList);
AssociateAssetNodeBatchResponse response =
Poseidon.config(PConfig.init().appKey(AccessKey).appSecret(SecretKey).debug()).url(ServerUrl)
.getResponse(request, AssociateAssetNodeBatchResponse.class);
System.out.println(GsonUtil.toJson(response));
}