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

资产所属时区。

使用+08:00格式表示不支持夏令时的时区。 使用Asia/Shanghai格式表示支持夏令时的时区。 详情请见 时区表示方法>>

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);
    }
}