
# 创建资产
#### 功能介绍
创建资产
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=IoTAnalytics&api=CreateAssetNew)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### URI
POST /v1/{project_id}/assets
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                |
|:---|:---|:---|:---|
| project_id | 是    | String | 项目ID 最大长度：**128** |
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                     |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 租户Token 最大长度：**65535** |
   
表3请求Body参数 
| 参数             | 是否必选 | 参数类型                                                                                       | 描述                                                                                            |
|:---|:---|:---|:---|
| asset_model_id | 是    | String                                                                                     | 资产模型ID 最大长度：**128**                                                                           |
| name           | 是    | String                                                                                     | 资产名称，正则："\^\[a-zA-Z\]\[a-zA-Z0-9_-\]{0,63}$" 最大长度：**64**                                      |
| display_name   | 否    | String                                                                                     | 资产显示名称，修改资产时，""代表配置为空、null或不携带代表不修改，正则："\^\[\\u4E-\\u9FA5A-Za-z0-9_@#.-\]{0,64}$" 最大长度：**64** |
| parent         | 否    | String                                                                                     | 父资产ID，根资产的父资产ID为null，修改资产时，null或不携带代表不修改 最大长度：**128**                                         |
| properties     | 否    | Array of [PropertyRequest] objects | 属性集，最多200个                                                                                    |
| analyses       | 否    | Array of [AnalysisRequest] objects | 分析任务集，最多50个                                                                                   |
   
 表4PropertyRequest 
| 参数        | 是否必选 | 参数类型   | 描述                                     |
|:---|:---|:---|:---|
| name      | 是    | String | 属性名称，必须是模型中已存在的 最大长度：**64**            |
| value     | 否    | Object | 值，只有static型属性可以填写                      |
| device_id | 否    | String | 设备ID，只有measurement型属性可以填写 最大长度：**128** |
   
 表5AnalysisRequest 
| 参数        | 是否必选 | 参数类型                                                                                   | 描述                           |
|:---|:---|:---|:---|
| name      | 是    | String                                                                                 | 分析任务名，必须是模型中已存在的 最大长度：**64** |
| transform | 否    | [DTTransformRequest] object | 转换计算                         |
| aggregate | 否    | [DTAggregateRequest] object | 聚合计算                         |
| stream    | 否    | [DTStreamRequest] object       | 流计算                          |
   
 表6DTTransformRequest 
| 参数      | 是否必选 | 参数类型                                                                                   | 描述           |
|:---|:---|:---|:---|
| inputs  | 否    | Array of [InputRequest] objects   | 输入参数，最多支持10个 |
| outputs | 否    | Array of [OutputRequest] objects | 输出配置请求       |
   
 表7DTAggregateRequest 
| 参数      | 是否必选 | 参数类型                                                                                   | 描述           |
|:---|:---|:---|:---|
| inputs  | 否    | Array of [InputRequest] objects   | 输入参数，最多支持10个 |
| outputs | 否    | Array of [OutputRequest] objects | 输出配置请求       |
   
 表8OutputRequest 
| 参数                      | 是否必选 | 参数类型   | 描述                                                                                                                                                                                           |
|:---|:---|:---|:---|
| name                    | 是    | String | 输出参数名称,formulas中定义的name 最大长度：**128**                                                                                                                                                         |
| output_static_asset_id  | 否    | String | 输出资产ID，填写模型中定义的输出模型对应的某资产ID；创建资产时，如果是输出到本资产的模型，且output_static_asset_id和output_dynamic_asset_id都未配置，则后台自动配置output_static_asset_id为本资产ID；修改资产时，如果output_static_asset_id为null则表示置空 最大长度：**128** |
| output_dynamic_asset_id | 否    | String | 输出资产ID，填写公式动态生成资产ID，可根据入参获取资产ID，如：GetAssetId("assetmodelName1","staticPropertyName1",paramA)；修改资产时，如果output_static_asset_id为null则表示置空 最大长度：**1024**                                          |
   
 表9DTStreamRequest 
| 参数     | 是否必选 | 参数类型                                                                                 | 描述           |
|:---|:---|:---|:---|
| inputs | 是    | Array of [InputRequest] objects | 输入参数，最多支持10个 |
   
 表10InputRequest 
| 参数                 | 是否必选 | 参数类型                                                                                       | 描述                                                   |
|:---|:---|:---|:---|
| name               | 是    | String                                                                                     | 参数名，正则： "\^\[A-Za-z\]\[A-Za-z_\]{0,31}$" 最大长度：**32** |
| property_reference | 是    | [PropertyReferenceReq] object | 属性引用                                                 |
   
 表11PropertyReferenceReq 
| 参数       | 是否必选 | 参数类型   | 描述                                             |
|:---|:---|:---|:---|
| asset_id | 否    | String | 引用的资产ID，只有single型参数才能填写，可填写null置空 最大长度：**128** |
   
#### 响应参数
**状态码： 201**
表12响应Body参数 
| 参数               | 参数类型                                                                                          | 描述                                                                                                                                                                                 |
|:---|:---|:---|
| asset_id         | String                                                                                        | 资产ID                                                                                                                                                                               |
| asset_model_id   | String                                                                                        | 资产模型ID                                                                                                                                                                             |
| asset_model_name | String                                                                                        | 资产模型名称                                                                                                                                                                             |
| name             | String                                                                                        | 资产名称                                                                                                                                                                               |
| display_name     | String                                                                                        | 资产显示名称                                                                                                                                                                             |
| properties       | Array of [PropertyResponse] objects | 属性集                                                                                                                                                                                |
| analyses         | Array of [AnalysisResponse] objects | 分析任务集                                                                                                                                                                              |
| root             | String                                                                                        | 根资产ID                                                                                                                                                                              |
| parent           | String                                                                                        | 父资产ID，根资产的父资产ID为null                                                                                                                                                               |
| children         | Array of strings                                                                              | 子资产ID集                                                                                                                                                                             |
| state            | String                                                                                        | 资产状态，正常状态（ACTIVE），异常状态（INACTIVE）；只有草稿态（SKETCH）资产有此状态；资产处于异常状态的场景有：1、该资产存在未填写设备ID的测量数据类别的属性；2、该资产存在未填写静态值的静态配置类别的属性；3、该资产存在分析任务，该分析任务的输入参数存在属性引用类型为引用其他资产属性，且没有为该输入参数配置引用的其他资产的资产ID |
| publish_state    | String                                                                                        | 资产发布状态，发布中（PUBLISHING），发布完成（PUBLISHED）；只能对草稿态（SKETCH）的根资产进行发布，也只有草稿态的根资产有此字段；如果根资产从未发布过则值为null                                                                                     |
| created_time     | String                                                                                        | 创建时间，格式"yyyy-MM-dd'T'HH:mm:ss'Z'"                                                                                                                                                  |
| modified_time    | String                                                                                        | 修改时间，格式"yyyy-MM-dd'T'HH:mm:ss'Z'"                                                                                                                                                  |
| published_time   | String                                                                                        | 发布时间，只能对草稿态（SKETCH）的根资产进行发布，也只有草稿态的根资产有此字段；如果从未发布过则值为null；格式"yyyy-MM-dd'T'HH:mm:ss'Z'"                                                                                             |
   
 表13PropertyResponse 
| 参数           | 参数类型                                                                    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| device_id    | String                                                                  | 设备ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| property_id  | String                                                                  | 属性ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| name         | String                                                                  | 属性名称，正则："\^\[a-zA-Z0-9_\]{1,64}$" 最大长度：**64**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| display_name | String                                                                  | 属性显示名称，正则："\^\[\\u4E00-\\u9FA5A-Za-z0-9_@#.-\]{1,64}$" 最大长度：**64**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| source_type  | String                                                                  | 属性类别，静态配置（static）、测量数据（measurement）、分析任务（analysis）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| data_schema  | [DataSchema] object | 属性数据格式定义                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| unit         | String                                                                  | 单位 最小长度：**1** 最大长度：**64**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| value        | Object                                                                  | 静态属性的值，如：1 1.1 "value" {"name":"value"}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| is_tag       | Boolean                                                                 | 属性是否为标签。资产ID、标签属性、时间戳三者组成属性数据唯一键，两条唯一键相同性数据以覆盖方式存储；一个模型中只能配置三个属性为标签，标签配置后标签不能删除，配置标签性也不能删除；只有integer、double、string类型的属性可以被配置为标签。示例： 资产ID asset1上依次上报如下六组数据： 资产ID 属性A（标签） 属性B 属性C 时间戳 asset1 valueA_1 valueB_1 valueC_1 T1 asset1 valueA_1 valueB_2 valueC_2 T2 asset1 valueA_2 valueB_3 valueC_3 T2 asset1 valueA_2 valueB_4 valueC_4 T2 asset1 valueB_5 valueC_5 T3 asset1 valueB_6 valueC_6 T3 根据唯一键规则最终存储为如下四组数据： 资产ID 属性A（标签） 属性B 属性C 时间戳 asset1 valueA_1 valueB_1 valueC_1 T1 asset1 valueA_1 valueB_2 valueC_2 T2 asset1 valueA_2 valueB_4 valueC_4 T2 asset1 valueB_6 valueC_6 T3 |
   
 表14DataSchema 
| 参数         | 参数类型    | 描述                                                                                                                                                       |
|:---|:---|:---|
| min        | Number  | integer或double类型的的最小值，当属性值超过范围时系统不予存储，integer时范围：-9223372036854775808 \~ 9223372036854775807；double时范围：-1.7976931348623157E308 \~ 1.7976931348623157E308 |
| max        | Number  | integer或double类型的最大值，当属性值超过范围时系统不予存储，integer时范围：-9223372036854775808 \~ 9223372036854775807；double时范围：-1.7976931348623157E308 \~ 1.7976931348623157E308  |
| min_length | Integer | string类型的最小长度，当属性值超过范围时系统不予存储，范围：0 \~ 4096                                                                                                               |
| max_length | Integer | string类型的最大长度，当属性值超过范围时系统不予存储，范围：0 \~ 4096                                                                                                               |
| data_type  | String  | 数据类型，字符串（string）、整数（integer）、浮点数（double）、对象（object），系统支持的对象型存储大小为1MB，超过时不予存储                                                                             |
   
 表15AnalysisResponse 
| 参数           | 参数类型                                                                                  | 描述                                                 |
|:---|:---|:---|
| analysis_id  | String                                                                                | 分析任务ID                                             |
| name         | String                                                                                | 分析任务名称                                             |
| display_name | String                                                                                | 分析任务显示名称                                           |
| type         | String                                                                                | 分析任务类型，转换计算（transform）、聚合计算（aggregate）、流计算（stream） |
| transform    | [TransformResponse] object | 转换计算                                               |
| aggregate    | [AggregateResponse] object | 聚合计算                                               |
| stream       | [StreamResponse] object       | 流计算                                                |
   
 表16TransformResponse 
| 参数              | 参数类型                                                                                      | 描述                                        |
|:---|:---|:---|
| inputs          | Array of [InputResponse] objects   | 输入参数                                      |
| expression      | [Formula] object                         | 转换计算表达式定义                                 |
| output_property | String                                                                                    | 输出属性名(不推荐使用，待废弃，使用outputs替代) 最大长度：**128** |
| outputs         | Array of [OutputResponse] objects | 输出配置响应                                    |
   
 表17Formula 
| 参数       | 参数类型                                                                                  | 描述                                                                                      |
|:---|:---|:---|
| formula  | String                                                                                | 公式，最多1024个字符(分析任务单输出场景，配合TransformModel或AggregateModel的output_property使用) 最大长度：**1024** |
| formulas | Array of [NamedFormula] objects | 带名称的公式                                                                                  |
   
 表18AggregateResponse 
| 参数              | 参数类型                                                                                      | 描述                                        |
|:---|:---|:---|
| inputs          | Array of [InputResponse] objects   | 输入参数                                      |
| expression      | [Expression] object                   | 聚合计算表达式定义                                 |
| output_property | String                                                                                    | 输出属性名(不推荐使用，待废弃，使用outputs替代) 最大长度：**128** |
| outputs         | Array of [OutputResponse] objects | 输出配置响应                                    |
| schedule        | [DTSchedule] object                   | 调度策略                                      |
   
 表19Expression 
| 参数         | 参数类型                                                                                  | 描述                                                                                      |
|:---|:---|:---|
| time_range | String                                                                                | 时间范围，调度时间往前的时间范围，比如1m表示调度时间往前1分钟到调度时间的时间范围，正则："1m\|5m\|15m\|1h"                         |
| formula    | String                                                                                | 公式，最多1024个字符(分析任务单输出场景，配合TransformModel或AggregateModel的output_property使用) 最大长度：**1024** |
| formulas   | Array of [NamedFormula] objects | 带名称的公式                                                                                  |
   
 表20NamedFormula 
| 参数      | 参数类型   | 描述                                                              |
|:---|:---|:---|
| name    | String | 公式名称，不能和输入参数名重复，正则："\^\[A-Za-z\]\[A-Za-z_\]{0,31}$" 最大长度：**32** |
| formula | String | 公式，最多1024个字符 最大长度：**1024**                                      |
   
 表21OutputResponse 
| 参数                      | 参数类型   | 描述                                                                                                                                                                                           |
|:---|:---|:---|
| name                    | String | 输出参数名称,formulas中定义的name 最大长度：**128**                                                                                                                                                         |
| output_static_asset_id  | String | 输出资产ID，填写模型中定义的输出模型对应的某资产ID；创建资产时，如果是输出到本资产的模型，且output_static_asset_id和output_dynamic_asset_id都未配置，则后台自动配置output_static_asset_id为本资产ID；修改资产时，如果output_static_asset_id为null则表示置空 最大长度：**128** |
| output_dynamic_asset_id | String | 输出资产ID，填写公式动态生成资产ID，可根据入参获取资产ID，如：GetAssetId("assetmodelName1","staticPropertyName1",paramA)；修改资产时，如果output_static_asset_id为null则表示置空 最大长度：**1024**                                          |
| output_asset_model_id   | String | 输出模型ID，如果输出到本模型可以不携带 最大长度：**128**                                                                                                                                                            |
| output_property         | String | 输出属性名 最大长度：**128**                                                                                                                                                                           |
   
 表22DTSchedule 
| 参数     | 参数类型   | 描述                                                       |
|:---|:---|:---|
| period | String | 调度周期，正则： "1m\|5m\|15m\|1h"，表示从每小时第0分0秒开始，每1m、5m、15m、1h调度 |
   
 表23StreamResponse 
| 参数      | 参数类型                                                                                    | 描述           |
|:---|:---|:---|
| inputs  | Array of [InputResponse] objects | 输入参数         |
| job_id  | String                                                                                  | 流计算任务ID      |
| outputs | Array of [StreamOutput] objects   | 输出属性，最多支持10个 |
   
 表24InputResponse 
| 参数                 | 参数类型                                                                                                  | 描述   |
|:---|:---|:---|
| name               | String                                                                                                | 参数名  |
| property_reference | [PropertyReferenceResponse] object | 属性引用 |
   
 表25PropertyReferenceResponse 
| 参数               | 参数类型   | 描述                                                                                |
|:---|:---|:---|
| type             | String | 属性引用类型，引用本资产属性（this）、引用其他资产属性（single）、引用子资产属性（children）                           |
| asset_model_id   | String | 引用属性所属的资产模型ID，该字段仅当type为"引用其他资产属性"或"引用子资产属性"时有效；使用导入模型和导出模型接口时，该字段无效 最大长度：**128** |
| asset_model_name | String | 引用属性所属的资产模型名称，请求中携带该字段时可以不携带asset_model_id字段 最大长度：**64**                          |
| property_name    | String | 引用属性的名称 最大长度：**64**                                                               |
| asset_id         | String | 引用的资产ID，修改资产时携带null表示置空                                                           |
   
 表26StreamOutput 
| 参数              | 参数类型   | 描述                                             |
|:---|:---|:---|
| name            | String | 输出参数名称，必须是接收数据类型为资产数据的实时分析作业中已定义的 最大长度：**128** |
| output_property | String | 输出属性名，必须是本模型分析任务类别的属性的属性名 最大长度：**128**         |
   
#### 请求示例
```
{
  "asset_model_id" : "string",
  "name" : "string",
  "display_name" : "string",
  "parent" : "string",
  "properties" : [ {
    "name" : "string",
    "value" : 0,
    "device_id" : "string"
  } ],
  "analyses" : [ {
    "name" : "string",
    "transform" : {
      "inputs" : [ {
        "name" : "string",
        "property_reference" : {
          "asset_id" : "string"
        }
      } ],
      "outputs" : [ {
        "name" : "string",
        "output_static_asset_id" : "string",
        "output_dynamic_asset_id" : "string"
      } ]
    },
    "aggregate" : {
      "inputs" : [ {
        "name" : "string",
        "property_reference" : {
          "asset_id" : "string"
        }
      } ],
      "outputs" : [ {
        "name" : "string",
        "output_static_asset_id" : "string",
        "output_dynamic_asset_id" : "string"
      } ]
    },
    "stream" : {
      "inputs" : [ {
        "name" : "string",
        "property_reference" : {
          "asset_id" : "string"
        }
      } ]
    }
  } ]
}
```
#### 响应示例
**状态码： 201**
Created
```
{
  "asset_id" : "string",
  "asset_model_id" : "string",
  "asset_model_name" : "string",
  "name" : "string",
  "display_name" : "string",
  "properties" : [ {
    "device_id" : "string",
    "property_id" : "string",
    "name" : "string",
    "display_name" : "string",
    "source_type" : "static|measurement|analysis",
    "data_schema" : {
      "min" : 0,
      "max" : 0,
      "min_length" : 0,
      "max_length" : 0,
      "data_type" : "string"
    },
    "unit" : "string",
    "value" : 0,
    "is_tag" : true
  } ],
  "analyses" : [ {
    "analysis_id" : "string",
    "name" : "string",
    "display_name" : "string",
    "type" : "transform|aggregate|stream",
    "transform" : {
      "inputs" : [ {
        "name" : "string",
        "property_reference" : {
          "type" : "this|single|children",
          "asset_model_id" : "string",
          "property_name" : "string",
          "asset_id" : "string"
        }
      } ],
      "expression" : {
        "formula" : "string",
        "formulas" : [ {
          "name" : "string",
          "formula" : "string"
        } ]
      },
      "output_property" : "string",
      "outputs" : [ {
        "name" : "string",
        "output_static_asset_id" : "string",
        "output_dynamic_asset_id" : "string",
        "output_asset_model_id" : "string",
        "output_property" : "string"
      } ]
    },
    "aggregate" : {
      "inputs" : [ {
        "name" : "string",
        "property_reference" : {
          "type" : "this|single|children",
          "asset_model_id" : "string",
          "property_name" : "string",
          "asset_id" : "string"
        }
      } ],
      "expression" : {
        "time_range" : "1m|5m|15m|1h",
        "formula" : "string",
        "formulas" : [ {
          "name" : "string",
          "formula" : "string"
        } ]
      },
      "output_property" : "string",
      "outputs" : [ {
        "name" : "string",
        "output_static_asset_id" : "string",
        "output_dynamic_asset_id" : "string",
        "output_asset_model_id" : "string",
        "output_property" : "string"
      } ],
      "schedule" : {
        "period" : "1m|5m|15m|1h"
      }
    },
    "stream" : {
      "inputs" : [ {
        "name" : "string",
        "property_reference" : {
          "type" : "this|single|children",
          "asset_model_id" : "string",
          "property_name" : "string",
          "asset_id" : "string"
        }
      } ],
      "job_id" : "string",
      "outputs" : [ {
        "name" : "string",
        "output_property" : "string"
      } ]
    }
  } ],
  "root" : "string",
  "parent" : "string",
  "children" : [ "string" ],
  "state" : "ACTIVE|INACTIVE",
  "publish_state" : "PUBLISHING|PUBLISHED",
  "created_time" : "string",
  "modified_time" : "string",
  "published_time" : "string"
}
```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 201 | Created               |
| 400 | Bad Request           |
| 401 | Unauthorized          |
| 403 | Forbidden             |
| 404 | Not Found             |
| 409 | Conflict              |
| 500 | Internal Server Error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-iotanalytics/ErrorCode.html)。
