Create and Associate Asset¶
创建一个逻辑资产,并关联到资产树上。
操作权限¶
需授权的资源 |
所需操作权限 |
---|---|
资产树管理 |
Full Access |
请求格式¶
POST https://{apigw-address}/asset-tree-service/v2.1/asset-nodes?action=createAsset
请求参数(URI)¶
名称 |
位置(Path/Query) |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|---|
orgId |
Query |
必需 |
String |
资产所属的组织ID。如何获取orgId信息>> |
treeId |
Query |
必需 |
String |
需要获取的资产树ID。如何获取资产树信息ID>> |
parentAssetId |
Query |
必需 |
String |
待关联资产的父节点的资产ID。 |
请求参数(Body)¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
asset |
必需 |
Asset结构体 |
创建资产时需要提供的资产详情。见 Asset结构体>> |
Asset结构体 ¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
modelId |
必需 |
String |
资产所属模型ID。如何获取modelId信息>> |
name |
必需 |
StringI18n |
支持国际化的资产名称。结构请见 国际化名称结构体>> |
timezone |
必需 |
String |
|
description |
可选 |
String |
资产描述。 |
attributes |
可选 |
Map(Key为String,Value为Object) |
资产所属的模型属性。详情请见 attributes的表示方法>> |
tags |
可选 |
Map |
用户自定义标签,详情请见 标签的作用与表示方法>> |
响应参数¶
名称 |
数据类型 |
描述 |
---|---|---|
data |
String |
创建的资产ID。 |
错误码¶
名称 |
错误信息 |
描述 |
---|---|---|
17404 |
TreeId is not exist |
Tree ID 不存在。 |
17752 |
Parent assetId is not existed in the tree |
父资产不存在该树上。 |
17762 |
The tree is locked |
一次只允许一个用户修改资产树,暂时不能操作该资产树,请再次请求。 |
17770 |
Exceeding the layer limit(7) |
该树超过最高层数限制(7层)。 |
99400 |
Invalid arguments |
请求参数非法,请检查请求参数。 |
99500 |
System error |
服务器内部错误,请联系EnOS。 |
示例¶
请求示例¶
url: https://{apigw-address}/asset-tree-service/v2.1/asset-nodes?treeId=yourTreeId&action=createAsset&parentAssetId=yourParentAssetId&orgId=yourOrgId
method: POST
requestBody:
{
"asset": {
"modelId": "STRING-INVERTER-MODEL",
"name": {
"defaultValue": "逆变器 #1",
"i18nValue": {
"en_US": "Inverter #1"
}
},
"timezone": "+08:00",
"description": "This is a sample asset.",
"attributes": {
"foo": 100,
"bar": "example"
},
"tags": {
"foo": "bar",
"hello": "world"
}
}
}
返回示例¶
{
"code": 0,
"msg": "ok",
"requestId": "01b5477a-374e-49a0-8b68-7dbfe8f0b74f",
"data": "cRUdS7sJ"
}
Java SDK调用示例¶
package com.envisioniot.enos.asset_tree_service;
import java.util.HashMap;
import java.util.Map;
import com.envisioniot.enos.asset_tree_service.v2_1.CreateAssetNodeRequest;
import com.envisioniot.enos.asset_tree_service.v2_1.CreateAssetNodeResponse;
import org.junit.Test;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.asset_tree_service.vo.AssetCreateVo;
import com.envisioniot.enos.asset_tree_service.vo.I18nVo;
public class CreateAssetNodeTest {
private static String AccessKey = "yourAccessKey";
private static String SecretKey = "yourSecretKey";
private static String OrgId = "yourOrgId";
private static String ServerUrl = "yourServerUrl";
@Test
public void testCreateAssetNode() {
CreateAssetNodeRequest request = new CreateAssetNodeRequest();
request.setOrgId(OrgId);
request.setTreeId("yourTreeId");
request.setParentAssetId("yourParentAssetId");
AssetCreateVo asset = new AssetCreateVo();
Map < String, String > i18nValue = new HashMap();
i18nValue.put("zh_CN", "assetName");
I18nVo name = new I18nVo();
name.setDefaultValue("asseTDefaultName");
name.setI18nValue(i18nValue);
asset.setName(name);
asset.setModelId("yourModelId");
asset.setTimezone("+08:00");
asset.setDescription("This is a sampled asset");
request.setAsset(asset);
CreateAssetNodeResponse response = Poseidon.config(PConfig.init().appKey(AccessKey).appSecret(SecretKey).debug())
.url(ServerUrl).getResponse(request, CreateAssetNodeResponse.class);
}
}