Create Asset Tree


创建一棵资产树,并同时创建该资产树的根节点。

操作权限

需授权的资源 所需操作权限
资产树管理 Full Access

请求格式

POST https://{apigw-address}/asset-tree-service/v2.1/asset-trees?action=create

请求参数(URI)

名称 位置(Path/Query) 必需/可选 数据类型 描述
orgId Query 必需 String 资产所属的组织ID。如何获取orgId信息>>

请求参数(Body)

名称 必需/可选 数据类型 描述
asset 必需 Asset结构体 创建根节点资产所需的详情。见 Asset结构体>>
tree 可选 TreeCreateVo 结构体 创建资产树所需要的详情。见 TreeCreateVo结构体>>

Asset结构体

名称 必需/可选 数据类型 描述
modelId 必需 String 资产所属模型ID。 如何获取modelId信息>>
name 必需 StringI18n 支持国际化的资产名称。结构请见 国际化名称结构体>>
timezone 必需 String 资产所属时区。 使用+08:00格式表示不支持夏令时的时区。 使用Asia/Shanghai格式表示支持夏令时的时区。 详情请见 时区表示方法>>
description 可选 String 资产描述。
attributes 可选 Map(Key为String,Value为Object) 资产所属的模型属性。详情请见 attributes的表示方法>>
tags 可选 Map(Key为String,Value为String) 用户自定义标签。详情请见 标签的作用与表示方法>>

TreeCreateVo结构体

名称 必需/可选 数据类型 描述
name 可选 StringI18n 支持国际化的资产树名称。见 国际化名称结构体>>
tags 可选 Map 用户自定义标签。详情请见 标签的作用与表示方法>>

响应参数

名称 数据类型 描述
data String 创建的资产树ID。

错误码

名称 错误信息 描述
17772 The quota of tree reaches ceiling 资产树数量达到OU上限。
99400 Invalid arguments 请求参数非法,请检查请求参数。
99500 System error 服务器内部错误,请联系EnOS。

示例

请求示例

url: https://{apigw-address}/asset-tree-service/v2.1/asset-trees?action=create&orgId=yourOrgId
method: POST
requestBody:
{
    "asset":{
        "modelId":"modelName",
        "name":{
            "defaultValue":"Name"
        },
        "timezone":"+12:00",
        "description":"Example of description"
    },
    "tree":{
        "name":{
            "defaultValue":"Name"
        }
    }
}

返回示例

{
  "msg":  "OK",
  "code": 0,
  "data": "HfzFPn1H",
  "requestId": "bb4f8c40-604a-451e-83bd-99cfba6bd53e"
}

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.api.common.constant.request.Pagination;
import com.envisioniot.enos.api.common.constant.request.Projection;
import com.envisioniot.enos.asset_tree_service.v2_1.*;
import com.envisioniot.enos.asset_tree_service.vo.*;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;

public class AssetTreeTest {
    private static String AccessKey = "yourAccessKey";
    private static String SecretKey = "yourSecretKey";
    private static String OrgId = "yourOrgId";
    private static String ServerUrl = "yourServerUrl";

    @Test
    public void testCreateTree() {
        TreeCreateVo tree = new TreeCreateVo();
        I18nVo treeName = new I18nVo();
        treeName.setDefaultValue("treeDefaultName");
        tree.setName(treeName);
        CreateTreeRequest request = new CreateTreeRequest();
        Map < String, String > i18nValue = new HashMap();
        i18nValue.put("zh_CN", "assetName");
        I18nVo name = new I18nVo();
        name.setDefaultValue("assetDefaultName");
        name.setI18nValue(i18nValue);
        AssetCreateVo asset = new AssetCreateVo();
        asset.setModelId("yourModelId");
        asset.setName(name);
        asset.setTimezone("+08:00");
        asset.setDescription("This is a sampled asset");
        request.setTree(tree);
        request.setAsset(asset);
        request.setOrgId(OrgId);
        CreateTreeResponse response = Poseidon.config(PConfig.init().appKey(AccessKey).appSecret(SecretKey).debug())
            .url(ServerUrl)
            .getResponse(request, CreateTreeResponse.class);
    }
}