Update Asset

全量或部分更新资产信息。

操作权限

需授权的资源

所需操作权限

资产

Write

约束条件

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

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

请求格式

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

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

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

isPatchUpdate

Query

可选

Boolean

是否是局部更新,默认为 true

  • 当其值为true时,只更新参数中指定字段的值。

  • 当其值为false时,更新所有字段的值,即未指定值的字段将被置空。

请求参数(Body)

名称

必需/可选

数据类型

描述

asset

必需

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,String类型。Value的类型取决于模型中这个属性的定义。详情请见 attributes的表示方法>>

timezone

可选

String

时区。详情请见 时区表示方法>>

tags

可选

Map (Key为String, Value为String)

用户自定义标签,详情见 标签的作用与表示方法>>

错误码

代码

描述

12958

由于资产属性校验失败导致更新失败。

示例 1

请求示例

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

返回示例

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

Java SDK调用示例

public class UpdateAsset {
    private static String accessKey = "yourAppAccessKey";
    private static String secretKey = "yourAppSecretKey";
    private static String orgId = "yourOrgId";
    private static String url = "https://{apigw-address}";


   //调用该示例代码之前,确保EnOS管理门户中存在以该Asset ID命名的资产,且需要更新的字段存在,标识符与示例代码中使用的相同。

    public static void main(String[] args) {
        UpdateAssetRequest request = new UpdateAssetRequest();
        request.setOrgId(orgId);

        AssetUpdateVo asset = new AssetUpdateVo();
        asset.setAssetId("XBOBqC1O");
        Map<String, Object> newAttrs = new HashMap<>();
        newAttrs.put("doubleTest",123.45);
        asset.setAttributes(newAttrs);

        request.setAsset(asset);
        request.setIsPatchUpdate(true);

        UpdateAssetResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
                .url(url)
                .getResponse(request, request.getResponseClass());
        System.out.println(response);
    }
}