Update Thing Model


Update a model. This API is only available if 2.3 Cumulative Update 2 has been applied to your environment. For the full change list of 2.3 Cumulative Update 2, see Cumulative Update 2.

Operation Permissions

Required Authorization Required Operation Permission
Model Management Full Access

Request Format

POST https://{apigw-address}/model-service/v2.1/thing-models?action=update

Request Parameters (URI)

Name Location (Path/Query) Mandatory/Optional Data Type Description
orgId Query Mandatory String The organization ID which the model belongs to. How to get orgId>>
isPatchUpdate Query Optional Boolean
  • true (default): Only the fields specified in the parameters are updated. The values of those fields not specified will be retained.
  • false: The fields specified in the parameters are updated. Those fields not specified will have their existing values (if any) deleted.

Request Parameters (Body)

Name Mandatory/Optional Data Type Description
modelId Mandatory String The model ID.
name Mandatory if isPatchUpdate is true StringI18n The model name, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
desc Optional String The model description.
category Optional String The model category.
tags Optional Map (Key and Value are of String type) User-defined tags.
featuresToDelete Optional String Array The features to delete from the model, identified using the feature identifier. Applicable only when isPatchUpdate is true. If any of the features in the array are listed in attributes, measurepoints, events, or services, they will not be deleted.
attributes Optional Map (Key is of String type, and Value is of the ThingAttribute Struct)

The attributes of the model. The key is the static attribute ID. For more information, see ThingAttribute Struct.

Note: Attributes that already exist in the parent or child model cannot be added.
measurepoints Optional Map (Key is of String type, and Value is of the ThingMeasurepoint Struct)

The measurement points of the model. The key is the measurement point ID, of String type. For more information, see ThingMeasurepoint Struct.

Note: Measurement points that already exist in the parent or child model cannot be added.
services Optional Map (Key is of String type, and Value is of the ThingService Struct)

The services of the model. The key is the service ID. For more information, see ThingService Struct.

Note: Services that already exist in the parent or child model cannot be added.
events Optional Map (Key is of String type, and Value is of the ThingEvent Struct)

The events of the model. The key is the event ID. For more information, see ThingEvent Struct.

Note: Events that already exist in the parent or child model cannot be added.

ThingAttribute Struct

Name Mandatory/Optional Data Type Description
identifier Optional String The attribute ID.
dataType Optional String The data type. E.g.: ARRAY, BOOL, DATE, ENUM, INT, FLOAT, DOUBLE, STRUCT, STRING, TIMESTAMP, FILE
dataDefinition Optional String The data definition of the dataType in this structure, which is a JSON string. For example, when the dataType is “STRING”, it defines the string length; when the dataType is “ENUM”, it defines the value and description. How to use dataDefinition>>
isRequired Optional Boolean If true, the value of this attribute must be set when the asset is instantiated; otherwise the asset will return a validation failure error when it is created.
defaultValue Optional As defined in the thing model

The default value of the attribute. If the attribute has no default value, defaultValue would be null.

Note: EnOS Edge does not support this parameter.

name Optional StringI18n The attribute name, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
desc Optional String The attribute description.
i18nDesc Optional StringI18n The attribute description, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
tags Optional Map (The Key and Value are of String type.) User-defined tags.
isStdElement Optional Boolean
  • true: This is an industry standard element.
  • false: This is not an industry standard element.

Note: EnOS Edge does not support this parameter.

stdElementId Optional String

The URN of the element if isStdElement is true. The format is urn:enos:modelelement:std: <id> : <version> . id is the standard ID. <version> is the version of the element.

If isStdElement is false , then stdElementId is null.

If stdElementId is provided, the element definition will be taken from the standard element definition and the dataDefinition parameter will be ignored.

Note: EnOS Edge does not support this parameter.

unit Optional Unit Struct For more information, see Unit Struct.

ThingMeasurepoint Struct

Name Mandatory/Optional Data Type Description
identifier Optional String The ID of the measurement point.
dataType Optional String Data type. E.g.: ARRAY, DATE, ENUM, INT, FLOAT, DOUBLE, STRUCT, STRING, TIMESTAMP, FILE
dataDefinition Optional String The data definition of the dataType in this structure, which is a JSON string. For example, when the dataType is “STRING”, it defines the string length; when the dataType is “ENUM”, it defines the value and description. How to use dataDefinition>>
name Optional StringI18n The measurement point name, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
desc Optional String The measurement point description.
i18nDesc Optional StringI18n The measurement point description, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
tags Optional Map User-defined tags. (The Key and Value are of String type.)
isStdElement Optional Boolean
  • true: This is an industry standard element.
  • false: This is not an industry standard element.

Note: EnOS Edge does not support this parameter.

stdElementId Optional String

The URN of the element if isStdElement is true . The format is urn:enos:modelelement:std: <id> : <version> . id is the element ID. <version> is the version of the element.

If isStdElement is false , then stdElementId is null.

If stdElementId is provided, the element definition will be taken from the standard element definition and the dataDefinition parameter will be ignored.

Note: EnOS Edge does not support this parameter.

hasQuality Optional Boolean
  • true: Has the quality indicator.
  • false: Does not have the quality indicator.
signalType Optional String The signal/point type. E.g.: Generic, AI, PI, DI
unit Optional Unit Struct For more information, see Unit Struct.

ThingService Struct

Name Mandatory/Optional Data Type Description
identifier Optional String The service ID.
name Optional StringI18n The service name, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
desc Optional String The service description.
i18nDesc Optional StringI18n The service description, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
tags Optional Map User-defined tags. (The Key and Value are of String type.)
isStdElement Optional Boolean
  • true: This is an industry standard element.
  • false: This is not an industry standard element.

Note: EnOS Edge does not support this parameter.

stdElementId Optional String

The URN of the element if isStdElement is true . The format is urn:enos:modelelement:std: <id> : <version> . id is the element ID. <version> is the version of the element.

If isStdElement is false , then stdElementId is null.

If stdElementId is provided, the element definition will be taken from the standard element definition and the dataDefinition parameter will be ignored.

Note: EnOS Edge does not support this parameter.

inputData Optional ThingDatapoint Struct The service’s input parameters list. For more information, see ThingDatapoint Struct.
outputData Optional ThingDatapoint Struct The service’s output parameters list. For more information, see ThingDatapoint Struct.
callType Optional String

The calling type. This parameter will be deprecated.

  • ASYNC: Asynchronous.
  • SYNC: Synchronous.

ThingEvent Struct

Name Mandatory/Optional Data Type Description
identifier Optional String The event ID.
name Optional StringI18n The event name, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
desc Optional String The event description.
i18nDesc Optional StringI18n The event description, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
tags Optional Map User-defined tags. (The Key and Value are of String type.)
isStdElement Optional Boolean
  • true: This is an industry standard element.
  • false: This is not an industry standard element.

Note: EnOS Edge does not support this parameter.

stdElementId Optional String

The URN of the element if isStdElement is true. The format is urn:enos:modelelement:std: <id> : <version> . id is the element ID. <version> is the version of the element.

If isStdElement is false , then stdElementId is null.

If stdElementId is provided, the element definition will be taken from the standard element definition and the dataDefinition parameter will be ignored.

Note: EnOS Edge does not support this parameter.

outputData Optional ThingDatapoint Struct The event’s output parameters list. For more information, see ThingDatapoint Struct.
eventType Optional String Event type. E.g.: INFO, WARN, ERROR

ThingDatapoint Struct

Name Mandatory/Optional Data Type Description
identifier Optional String The data point ID.
dataType Optional String Data type. E.g.: ARRAY, DATE, ENUM, INT, FLOAT, DOUBLE, STRUCT, STRING, TIMESTAMP, FILE
dataDefinition Optional String The data definition of the dataType in this structure, which is a JSON string. For example, when the dataType is “STRING”, it defines the string length; when the dataType is “ENUM”, it defines the value and description. How to use dataDefinition>>
name Optional StringI18n The data point name, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
desc Optional String The data point description.
i18nDesc Optional StringI18n The data point description, supports internationalization. For more details on the structure and locales supported, see Internationalized name struct.
tags Optional Map User-defined tags. (The Key and Value are of String type.)
isStdElement Optional Boolean
  • true: This is an industry standard element.
  • false: This is not an industry standard element.

Note: EnOS Edge does not support this parameter.

stdElementId Optional String

The URN of the element if isStdElement is true. The format is urn:enos:modelelement:std: <id> : <version> . id is the element ID. <version> is the version of the element.

If isStdElement is false , then stdElementId is null.

If stdElementId is provided, the element definition will be taken from the standard element definition and the dataDefinition parameter will be ignored.

Note: EnOS Edge does not support this parameter.

unit Optional Unit Struct For more information, see Unit Struct.

Unit Struct

Name Mandatory/Optional Data Type Description
unitId Optional String The unit ID.
multiplier Optional String The multiplier of the unit. For more information, see Multiplier.

Multiplier

The multiplier of the unit can have the following values:

YOTTA ,//Y     10^24
ZETTA ,//Z     10^21
EXA   ,//E     10^18
PETA  ,//P     10^15
TERA  ,//T     10^12
GIGA  ,//G     10^9
MEGA  ,//M     10^6
KILO  ,//k     10^3
HECTO ,//h     10^2
DECA  ,//da    10^1
ONE   ,//      10^0
DECI  ,//d     10^-1
CENTI ,//c     10^-2
MILLI ,//m     10^-3
MICRO ,//μ     10^-6
NANO  ,//n     10^-9
PICO  ,//p     10^-12
FEMTO ,//f     10^-15
ATTO  ,//a     10^-18
ZEPTO ,//z     10^-21
YOCTO ,//y     10^-24

Error Codes

Code Description
10404 Model does not exist.
10945 Model element conflicts with parent-child model.
10952 Total number of elements (attribute, measurement points, events, and services) for the model exceeds the limit.

Samples

Request Sample

url: https://{apigw-address}/model-service/v2.1/thing-models?action=update&orgId=yourOrgId&isPatchUpdate=true
method: POST
requestBody:
{
  "modelId": "yourModelId",
  "name": {
    "defaultValue": "Device Name",
    "i18nValue": {
      "zh_CN": "设备名称",
      "en_US": "Device Name"
    }
  },
  "desc": "jw-1112",
  "category": "system",
  "tags": {
    "group": "1"
  },
  "attributes": {
    "capacity": {
      "identifier": "capacity",
      "name": {
        "defaultValue": "capacity",
        "i18nValue": {
          "en_US": "capacity",
          "zh_CN": "容量"
        }
      },
      "desc": "Capacity",
      "i18nDesc": {
        "defaultValue": "Capacity description",
        "i18nValue": {
          "en_US": "Capacity description",
          "zh_CN": "容量描述"
        }
      },
      "tags": {
        "cap": "1"
      },
      "stdElementId": "urn:user:modelelement:std:atom-property-int:1.0",
      "isStdElement": true,
      "dataType": "INT",
      "unit": {
          "unitId": "G",
          "multiplier": "ONE"
      },
      "dataDefinition": null,
      "isRequired": true,
      "defaultValue": 111
    }
  },
  "measurepoints": {
    "ActiveSC": {
      "identifier": "ActiveSC",
      "name": {
        "defaultValue": "活动状态字",
        "i18nValue": {
          "en_US": "ActiveSC_Name"
        }
      },
      "desc": "ActiveSC desc",
      "i18nDesc": {
        "defaultValue": "ActiveSC desc",
        "i18nValue": {
          "en_US": "ActiveSC desc",
          "zh_CN": "活动状态描述"
        }
      },
      "tags": {},
      "stdElementId": null,
      "isStdElement": false,
      "dataType": "INT",
      "unit": null,
      "dataDefinition": null,
      "hasQuality": false,
      "signalType": "DI"
    }
  },
  "services": {
    "speedup": {
      "identifier": "speedup",
      "name": {
        "defaultValue": "speedup",
        "i18nValue": {
          "en_US": "speedup"
        }
      },
      "desc": "Speedup",
      "i18nDesc": {
        "defaultValue": "Speedup",
        "i18nValue": {
          "en_US": "Speedup",
          "zh_CN": "加速"
        }
      },
      "tags": null,
      "stdElementId": null,
      "isStdElement": false,
      "outputData": [
        {
          "identifier": "delta",
          "name": {
            "defaultValue": "delta",
            "i18nValue": {
              "en_US": "delta"
            }
          },
          "desc": "Delta",
          "i18nDesc": {
            "defaultValue": "Delta",
            "i18nValue": {
              "en_US": "Delta",
              "zh_CN": "Delta 描述"
            }
          },
          "tags": {},
          "stdElementId": null,
          "isStdElement": false,
          "dataType": "INT",
          "unit": null,
          "dataDefinition": null
        }
      ],
      "inputData": [
        {
          "identifier": "delta",
          "name": {
            "defaultValue": "delta",
            "i18nValue": {
              "en_US": "delta"
            }
          },
          "desc": "Delta",
          "i18nDesc": {
            "defaultValue": "Delta",
            "i18nValue": {
              "en_US": "Delta",
              "zh_CN": "Delta 描述"
            }
          },
          "tags": {},
          "stdElementId": null,
          "isStdElement": false,
          "dataType": "INT",
          "unit": {
            "unitId": "rpm",
            "multiplier": "ONE"
          },
          "dataDefinition": null
        }
      ],
      "callType": "ASYNC"
    }
  },
  "events": {
    "alert": {
      "identifier": "alert",
      "name": {
        "defaultValue": "alert",
        "i18nValue": {
          "en_US": "alert"
        }
      },
      "desc": "Alert",
      "i18nDesc": {
        "defaultValue": "Alert",
        "i18nValue": {
          "en_US": "Alert",
          "zh_CN": "告警"
        }
      },
      "tags": null,
      "stdElementId": null,
      "isStdElement": false,
      "outputData": [
        {
          "identifier": "event1",
          "name": {
            "defaultValue": "event1",
            "i18nValue": {
              "en_US": "event1"
            }
          },
          "desc": "Event 1",
          "i18nDesc": {
            "defaultValue": "Event 1",
            "i18nValue": {
              "en_US": "Event 1",
              "zh_CN": "事件"
            }
          },
          "tags": {},
          "stdElementId": null,
          "isStdElement": false,
          "dataType": "INT",
          "unit": null,
          "dataDefinition": null
        }
      ],
      "eventType": "ERROR"
    }
  }
}

Response Sample

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

Java SDK Sample

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.api.common.constant.common.StringI18n;
import com.envisioniot.enos.model_service.v2_1.UpdateThingModelRequest;
import com.envisioniot.enos.model_service.v2_1.UpdateThingModelResponse;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UpdateThingModel {
  public static void main(String[] args) {
    String appKey = "yourAppAccessKey";
    String appSecret = "yourAppSecretKey";
    String serverUrl = "https://{apigw-address}";

    String orgId = "yourOrgId";

    UpdateThingModelRequest request = new UpdateThingModelRequest();
    request.setModelId("yourModelId");
    request.setIsPatchUpdate(true);
    StringI18n i18n = new StringI18n();
    i18n.setDefaultValue("Device Name");
    request.setName(i18n);
    Map<String, String> tags = new HashMap<>();
    tags.put("group", "1");
    request.setTags(tags);
    request.setDesc("jw-1112");
    request.setOrgId(orgId);
    List<String> featuresToDelete = new ArrayList<>();
    featuresToDelete.add("test_measure_point");
    request.setFeaturesToDelete(featuresToDelete);
    UpdateThingModelResponse response = Poseidon.config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
      .url(serverUrl)
      .getResponse(request, request.getResponseClass());
    if (response.success()) {
      System.out.println("update is successful!");
    }else{
      System.out.println(response.toString());
    }
  }
}