Update Asset


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

操作权限

需授权的资源

所需操作权限

资产树管理

Full Access

约束条件

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

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

请求格式

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

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

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

弃用 isPatchUpdate

Query

可选

Boolean

该参数在 2.3 CU 2 及其后的版本中已弃用,推荐使用 updateMode 参数替代。

  • true (默认):只更新参数中指定字段的值。

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

updateMode

Query

可选

String

更新模式。使用该参数需安装 2.3 CU 2。如果请求中包含此参数与 isPatchUpdate 参数,将忽略 isPatchUpdate。可用的选项如下。

  • patchUpdate (默认):只更新参数中指定字段的值。未指定值的字段将被保留。

  • overwrite:更新所有字段的值。必须指定资产名称、时区等必填字段,否则 API 调用将失败。即未指定非必填值的字段将置为 null。

  • tagDelete:只删除指定 assetIdtagKeys 中的指定标签。除 tagKeys 以外的参数将保持不变。

请求参数(Body)

名称

必需/可选

数据类型

描述

asset

必需

AssetUpdateVo 结构体

用于资产更新的信息。其结构参见 AssetUpdateVo 结构体

AssetUpdateVo 结构体

名称

必需/可选

数据类型

描述

assetId

必需

String

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

name

可选

StringI18n

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

description

可选

String

资产描述

attributes

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

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

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

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

timezone

可选

String

时区。时区表示方法>>

tags

可选

Map (Key 和 Value 为 String)

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

tagKeys

仅当 updateModetagDelete 才生效。

String 数组

待删除资产标签的列表,由其标签键定义。

错误码

代码

错误信息

描述

12404

Asset is not existent

assetId 未找到或不存在。

12958

Asset validate failed

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

示例 1

请求示例

url: https://{apigw-address}/asset-service/v2.1/assets?action=update&orgId=yourOrgId&updateMode=tagDelete
method: POST
requestBody:
{
  "asset": {
    "assetId": "yourAssetId",
    "name": {
      "defaultValue": "instanceName",
      "i18nValue": {
        "en_US": "English name ",
        "zh_CN": "Chinese name"
      }
    },
    "description": "description",
    "attributes": {
      "number": 135
    },
    "timezone": "+08:00",
    "tags": {
      "year": "2000",
      "author": "authorName"
    },
    "tagKeys": ["book1","book2"]
  }
}

返回示例

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

Java SDK 调用示例

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.asset_service.v2_1.UpdateAssetRequest;
import com.envisioniot.enos.asset_service.v2_1.UpdateAssetResponse;
import com.envisioniot.enos.asset_service.vo.AssetUpdateVo;

import java.util.HashMap;
import java.util.Map;

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

    //Make sure that an asset with this asset ID and the fields to be updated exist.

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

        AssetUpdateVo asset = new AssetUpdateVo();
        Map<String,String> tags = new HashMap<>();
        tags.put("book1","book2");
        asset.setTags(tags);
        asset.setAssetId("yourAssetId");
        request.setAsset(asset);
        UpdateAssetResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
                .url(serverUrl)
                .getResponse(request, request.getResponseClass());
        System.out.println(response);
    }
}