Adds a Thing Specification Language (TSL) feature to a specified product. You can specify the extended information about the feature.

Limits

  • If a product is published, you must call the CancelReleaseProduct operation to unpublish the product before you call this operation.
  • Before you call the operation, you can use the json-schema library to verify the input parameters in ThingModelJson. For more information, see Data structure of ThingModelJson.
  • You can call this operation to add a maximum of 10 TSL features. TSL features include properties, services, and events.
  • Each Alibaba Cloud account can run a maximum of 5 queries per second (QPS).
    Note RAM users of an Alibaba Cloud account share the quota of the account.

Debugging

OpenAPI Explorer automatically calculates the signature value. For your convenience, we recommend that you call this operation in OpenAPI Explorer. OpenAPI Explorer dynamically generates a sample code of the operation for different SDKs.

Request parameters

ParameterTypeRequiredExampleDescription
ActionStringYesCreateThingModel

The operation that you want to perform. Set the value to CreateThingModel.

ProductKeyStringYesa1BwAGV****

The ProductKey of the product.

You can view the ProductKey on the Product Details page of the IoT Platform console. You can also obtain the ProductKey by calling the QueryProductList operation.

IotInstanceIdStringNoiot-cn-0pp1n8t****

The ID of the instance. You can view the instance ID on the Overview page in the IoT Platform console.

Important
  • If your instance has an ID, you must configure this parameter. If you do not set this parameter, the call fails.
  • If your instance has no Overview page or ID, you do not need to set this parameter.

For more information, see Overview.

ThingModelJsonStringNo{ "properties":[ { "identifier": "SimCardType", "extendConfig":"{...}", "dataSpecs": { "max": "1", "dataType": "INT", "unit": "mmHg", "min": "0", "step": "1" }, "std": false, "custom": true, "dataType": "INT", "rwFlag": "READ_ONLY", "productKey": "a1bPo9p****", "required": false, "customFlag": true, "name": "SIM card type" } ], "services":[...], "events":[...] }

The details of the new features.

Note You can specify a maximum of 10 features.

Example:


{
  "properties": [
    {
      "custom": true,
      "dataSpecsList": [
        {
          "childDataType": "TEXT",
          "childName": "CCID number of the device SIM card",
          "dataSpecs": {
            "custom": true,
            "dataType": "TEXT",
            "length": 20
          },
          "dataType": "STRUCT",
          "identifier": "CCID",
          "name": "CCID number of the device SIM card"
        },
        {
          "childDataType": "INT",
          "childName": "Battery power",
          "dataSpecs": {
            "custom": true,
            "dataType": "INT",
            "max": "60000",
            "min": "0",
            "step": "1"
          },
          "dataType": "STRUCT",
          "identifier": "battery",
          "name": "Battery power"
        },
        {
          "childDataType": "TEXT",
          "childName": "Other information",
          "dataSpecs": {
            "custom": true,
            "dataType": "TEXT",
            "length": 1024
          },
          "dataType": "STRUCT",
          "identifier": "other_info",
          "name": "Other information"
        }
      ],
      "dataType": "STRUCT",
      "identifier": "DEV_INFO",
      "name": "Device information",
      "productKey": "a1T***",
      "propertyId": 18786548,
      "required": false,
      "rwFlag": "READ_ONLY"
    },
    {
      "custom": true,
      "dataSpecs": {
        "childDataType": "INT",
        "custom": true,
        "dataType": "ARRAY",
        "size": 1,
        "dataSpecs": {
          "custom": true,
          "dataType": "INT",
          "max": "65535",
          "min": "0",
          "step": "1",
          "unit": "ppm",
          "unitName": "Parts per million"
        }
      },
      "dataType": "ARRAY",
      "identifier": "airRH_SR",
      "name": "Dehumidifier humidity",
      "productKey": "a1T***",
      "propertyId": 18786551,
      "required": false,
      "rwFlag": "READ_ONLY"
    }
  ],
  "services": [...],
  "events": [...]
}
                                

In the properties structure of the ThingModelJson parameter, you can use the extendConfig parameter to define the extended information of the TSL model. For more information, see Data structure of ThingModelJson.

FunctionBlockIdStringNoBatteryModule

The identifier of the custom TSL module. Each identifier is unique in a product. The identifier must be 1 to 30 characters in length, and can contain letters, digits, and underscores (_).

This parameter must be used in combination with the FunctionBlockName parameter. If you do not specify this parameter, the system imports the default module.

FunctionBlockNameStringNoBattery_Module

The name of the custom module. The name must be 4 to 30 characters in length, and can contain letters, digits, and underscores (_).

This parameter must be used in combination with the FunctionBlockId parameter. If you do not specify this parameter, the system imports the default module.

In addition to the preceding operation-specific request parameters, you must specify common request parameters when you call this operation. For more information about common request parameters, see Common parameters.

Response parameters

ParameterTypeExampleDescription
CodeStringiot.system.SystemException

The error code returned if the call fails. For more information, see Error codes.

ErrorMessageStringA system exception occurred.

The error message returned if the call fails.

RequestIdStringE55E50B7-40EE-4B6B-8BBE-D3ED55CCF565

The ID of the request.

SuccessBooleantrue

Indicates whether the call was successful.

  • true: The call was successful.
  • false: The call failed.

Examples

Sample requests

https://iot.cn-shanghai.aliyuncs.com/?Action=CreateThingModel
&ProductKey=a1bPo9p****
&ThingModelJson={"properties":[{"identifier": "SimCardType","dataSpecs": {"max": "1", "dataType": "INT","unit": "mmHg","min": "0","step": "1"},"std": false,"custom": true,"dataType": "INT","rwFlag": "READ_ONLY","productKey": "a1bPo9p****","required": false,"customFlag": true, "name": "SIM card type"}]}
&<Common request parameters>

Sample success responses

XML format

<CreateThingModelResponse>
  <RequestId>9E76053E-26ED-4AB4-AE58-8AFC3F1E7E8E</RequestId>
  <Success>true</Success>
</CreateThingModelResponse>

JSON format

{
  "RequestId": "9E76053E-26ED-4AB4-AE58-8AFC3F1E7E8E",
  "Success": true
}

Error codes

For a list of error codes, visit the API Error Center.