Update Logical Asset(Preview)


更新全部或部分逻辑资产的信息。

操作权限

需授权的资源

所需操作权限

资产树管理

Full Access

约束条件

  • 需要更新的逻辑资产必须存在。

  • 需要更新的目标字段必须存在。

请求格式

POST https://{apigw-address}/asset-service/v2.1/logical-assets?action=update

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

资产所属的组织 ID。如何获取 orgId 信息>>

isPatchUpdate

Query

可选

Boolean

是否只更新一部分信息。

  • true(默认):表示只更新一部分指定的字段。

  • false:表示更新所有字段。如果有些字段没有指定更新的值,其值将被置空。

请求参数(Body)

名称

必需/可选

数据类型

描述

assetUpdateVo

必需

AssetUpdateVo 结构体

用于资产更新。

  • isPatchUpdatetrue 时,则只更新 asset 结构体中声明的需要更新的字段;未被声明的参数,其值会被保留。

  • isPatchUpdatefalse 时,更新 asset 声明的所有参数的值。未被声明的参数,其值将被置空。

asset 的结构见 AssetUpdateVo 结构体>>

AssetUpdateVo 结构体

名称

必需/可选

数据类型

描述

assetId

必需

String

资产 ID。如何获取 Asset ID 信息>>

name

可选

StringI18n

该资产的各语言名称。结构请见 国际化名称结构体>>

description

可选

String

资产描述

attributes

  • 如果 isPatchUpdatefalseattributes 必填,且必须包括所有模型功能定义中已规定的属性,并为他们赋值。

  • 如果 isPatchUpdatetrueattributes 选填,其对应的模型功能定义中的属性也都是选填的,属性的值也可以留空。

Map(Key 为 String,Value 的数据类型由模型功能定义决定)

资产所属的模型属性,Key 为属性 ID。更多信息,参见 attributes 的表示方法>>

timezone

可选

String

时区。时区表示方法>>

tags

可选

Map (Key 和 Value 为 String)

用户自定义标签。标签的作用与表示方法>>

错误码

代码

错误信息

描述

17404

Logical asset does not exist

assetId 未找到或不存在。

17958

Asset validation failed

根据模型校验资产失败。

示例

请求示例

url: https://{apigw-address}/asset-service/v2.1/logical-asset?action=update&orgId=yourOrgId&isPatchUpdate=true
method: POST
requestBody:
{
    "assetUpdateVo":{
        "assetId":"yourAssetId",
        "name":{
            "defaultValue":"instanceName",
            "i18nValue":{
                "en_US":"English name ",
                "zh_CN":"Chinese name"
            }
        },
        "description":"description",
        "attributes":{
         "color": "blue",
         "number": 135
        },
        "timezone":"+08:00",
        "tags":{
            "year":"2000",
            "author":"authorName"
        }
    }
}

返回示例

{
 "code": 0,
 "msg": "OK",
 "requestId": "fa11232e-7e45-4176-a382-963c1240a27f"
}

Java SDK 调用示例

public class UpdateLogicAssetTest {

    private static String accessKey = "yourAccessKey";
    private static String secretKey = "yourSecretKey";
    private static String orgId = "yourOrgId";
    private static String serverUrl = "https://{apigw-address}";

    @Test
    public void testCreateAssetNode() {
        UpdateLogicAssetRequest request = new UpdateLogicAssetRequest();
        request.setOrgId(orgId);
        AssetUpdateVo assetUpdateVo = new AssetUpdateVo();
        assetUpdateVo.setAssetId("yourAssetId");//要更新的逻辑资产 ID,输入设备 ID 则更新失败
        I18nVo name = new I18nVo();
        name.setDefaultValue("instanceName");
        assetUpdateVo.setName(name);
        request.setAsset(assetUpdateVo);
        UpdateLogicAssetResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
            .url(serverUrl).getResponse(request, UpdateLogicAssetResponse.class);
    }
}