
# 新增空间
#### 功能介绍
应用服务器可调用此接口新增空间，空间包含空间名称、空间关联的空间定义编码以及空间定义中各个属性的值。
空间定义编码、空间定义中各个属性的字段名及字段约束可通过 [查询空间定义列表](https://support.huaweicloud.com/api-ocsmartcampus/ocsmartcampus_06_0038.html) 接口获得。
创建的时候通过参数指定(X-Root-Zone-Id)该空间归属的项目，不指定该参数有可能把归属到默认的项目。
空间为树状结构，通过为待创建空间指定父空间ID实现父子关系，进而逐级构成树状结构。
注意：
- 空间定义中包含了此类空间包含的属性定义，包含属性的校验规则（类型、是否必填以及最大值最小值等），请遵循属性定义填写空间的属性值。
  
 
#### URI
POST /v1/iotfm/zones
#### 请求参数
表1请求Header参数 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                                                                                              |
|:---|:---|:---|:---|
| X-Auth-Token   | 是    | String | **参数说明** ：用户Token。通过调用 [生成Token](https://support.huaweicloud.com/api-ocsmartcampus/ocsmartcampus_06_0008.html) 接口获取，接口返回的响应消息头中"X-Subject-Token"就是需要获取的用户Token。 |
| X-Instance-Id  | 是    | String | **参数说明**：实例ID。通过访问智能设施云平台界面后获取，智能设施云平台资源均为实例级隔离，所有业务接口必须填写正确的实例ID才能被成功调用。 **取值范围**：长度8-36，只允许大小写字母、数字和-字符的组合。            |
| X-Root-Zone-Id | 否    | String | **参数说明**：项目ID。 **取值范围**：长度不超过24，只允许字母、数字的组合。                                                                             |
   
表2请求Body参数 
| 参数              | 是否必选 | 参数类型                 | 描述                                                                                                                                      |
|:---|:---|:---|:---|
| parent_id       | 否    | String               | **参数说明**：父级空间ID。 **取值范围**：长度固定24，只允许大小写字母、数字的组合。                                                 |
| parent_code     | 否    | String               | **参数说明**：父空间编码。除了首层空间场景外，parent_id和parent_code必须有一个必填。 **取值范围**：长度为1-32，只允许大小写字母、数字、#、_、.和-的组合。 |
| definition_code | 是    | String               | **参数说明**：空间定义编码。系统预置了$default-sub-zone，可以使用该规格编码创建，但注意该规格的规格属性为空，也不允许变更该规格。 **取值范围**：长度1-256。   |
| code            | 否    | String               | **参数说明**：空间编码，实例级唯一。由用户指定，相当于接口外部ID，系统内部ID自动生成。 **取值范围**：长度为1-32，只允许大小写字母、数字、#、_、.和-的组合。       |
| name            | 是    | String               | **参数说明**：空间名。 **取值范围**：长度1-256。                                                                  |
| description     | 否    | String               | **参数说明**：空间描述。 **取值范围**：长度不超过1024。                                                               |
| area            | 否    | Integer              | **参数说明**：面积（m²）。单位：平方米。 **取值范围**：数字类型，值范围是1-100000000（1亿平方米）。                                   |
| base_location   | 否    | String               | **参数说明**：详细地址信息。 **取值范围**：长度为0-256。                                                            |
| country         | 否    | String               | **参数说明**：国家/地区。当前只支持"中国"，其他不支持。 **取值范围**：长度为1-256。                                            |
| province        | 否    | String               | **参数说明**：省份。当前只支持中国行政空间，其他不支持。 **取值范围**：长度为1-256。                                              |
| city            | 否    | String               | **参数说明**：城市。当前只支持中国行政空间，其他不支持。 **取值范围**：长度为1-256。                                             |
| county          | 否    | String               | **参数说明**：区县。当前只支持中国行政空间，其他不支持。 **取值范围**：长度为1-256。                                               |
| properties      | 否    | Map\<String,String\> | **参数说明**：属性键值对。                                                                                                                         |
   
#### 响应参数
**状态码：201**
表3响应Body参数 
| 参数              | 参数类型                                                                                                              | 描述                                                                                                              |
|:---|:---|:---|
| id              | String                                                                                                            | **参数说明**：空间全局唯一ID。 **取值范围**：长度固定24，只允许大小写字母、数字的组合。                       |
| definition_code | String                                                                                                            | **参数说明**：空间规格定义编码。系统自定义规格以$开头，用户自定义不以$开头。 **取值范围**：长度1-256。             |
| code            | String                                                                                                            | **参数说明**：空间编码。可由用户指定，实例级唯一。 **取值范围**：长度为1-32，只允许大小写字母、数字、#、_、.和-的组合。  |
| name            | String                                                                                                            | **参数说明**：空间名称。 **取值范围**：长度1-256。                                        |
| parent_id       | String                                                                                                            | **参数说明**：父级空间ID。 **取值范围**：长度固定24，只允许大小写字母、数字的组合。                          |
| parent_code     | String                                                                                                            | **参数说明**：父空间编码。 **取值范围**：长度为1-32，只允许大小写字母、数字、#、_、.和-的组合。                  |
| parent_name     | String                                                                                                            | **参数说明**：父级名称。 **取值范围**：长度1-256。                                        |
| description     | String                                                                                                            | **参数说明**：空间描述。 **取值范围**：长度0-1024。                                       |
| time_zone       | String                                                                                                            | **参数说明**：空间所属的时区。格式为UTC±hh:mm。                                                                                  |
| area            | Integer                                                                                                           | **参数说明**：面积（m²）。单位：平方米。 **取值范围**：数字类型，值范围是1-100000000（1亿平方米）。            |
| base_location   | String                                                                                                            | **参数说明**：详细地址信息。 **取值范围**：长度0-256。                                      |
| country         | String                                                                                                            | **参数说明**：国家/地区。当前只支持"中国"，其他不支持。 **取值范围**：长度1-256。                        |
| province        | String                                                                                                            | **参数说明**：省份。当前只支持中国行政空间，其他不支持。 **取值范围**：长度1-256。                      |
| city            | String                                                                                                            | **参数说明**：城市。当前只支持中国行政空间，其他不支持。 **取值范围**：长度1-256。                        |
| county          | String                                                                                                            | **参数说明**：区县。当前只支持中国行政空间，其他不支持。 **取值范围**：长度1-256。                          |
| city_code       | String                                                                                                            | **参数说明**：城市编码。根据中国行政空间为每个区县级定义的唯一编码，当前只支持中国行政空间，其他不支持。 **取值范围**：长度1-32。 |
| children_count  | Integer                                                                                                           | **参数说明**：直接下级数量。 **取值范围**：大小为0-100。                                       |
| path            | Array of [ZonePathItemDto] objects | 从根到当前节点的路径，不包含当前节点。                                                                                             |
| properties      | Map\<String,String\>                                                                                              | **参数说明**：属性键值对，json格式。属性是在自定义空间规格里面定义的。 **取值范围**：每个值要满足空间规格自定义属性的范围要求。  |
| create_time     | String                                                                                                            | **参数说明**：创建时间，格式为：yyyy-MM-dd'T'HH:mm:ss.SSS'Z'。 **取值范围**：大小为0-20。        |
   
 表4ZonePathItemDto 
| 参数    | 参数类型    | 描述                                                         |
|:---|:---|:---|
| id    | String  | 空间ID                                                       |
| name  | String  | 空间名称                                                       |
| depth | Integer | 空间层级，从顶层空间到当前节点的深度，顶层空间深度为1，按层级别依次递增。如depth为2，则代表本空间为第二层级。 |
   
**状态码：400**
表5响应Body参数 
| 参数         | 参数类型   | 描述                                                                       |
|:---|:---|:---|
| error_code | String | **参数说明**：错误码。 **取值范围**：长度8-36。   |
| error_msg  | String | **参数说明**：错误描述。 **取值范围**：长度2-512。 |
   
#### 请求示例
- 新增空间(根据系统生成的父空间ID)
  ```
  POST https://{endpoint}/v1/iotfm/zones
  {
    "parent_id" : "1c8ba99030344005c02316a2",
    "definition_code" : "custom-sub-zone",
    "code" : "5c8ba99030344005c02316ad",
    "name" : "深圳园区1栋",
    "description" : "深圳园区1栋",
    "area" : 1000000,
    "base_location" : "深圳市龙岗区坂田街道1栋",
    "country" : "中国",
    "province" : "广东省",
    "city" : "深圳市",
    "county" : "龙岗区",
    "properties" : {
      "status" : "维护中"
    }
  }
  ```
  
- 新增空间(根据用户自定义的父空间code)
  ```
  POST https://{endpoint}/v1/iotfm/zones
  {
    "parent_code" : "1c8ba99030344005c02316a2",
    "definition_code" : "custom-sub-zone",
    "code" : "5c8ba99030344005c02316ad",
    "name" : "深圳园区1栋",
    "description" : "深圳园区1栋",
    "area" : 1000000,
    "base_location" : "深圳市龙岗区坂田街道1栋",
    "country" : "中国",
    "province" : "广东省",
    "city" : "深圳市",
    "county" : "龙岗区",
    "properties" : {
      "status" : "维护中"
    }
  }
  ```
  
 
#### 响应示例
**状态码：201**
Created
```
{
  "path" : [ {
    "id" : "18b94dc0bb320e7860a2607d",
    "name" : "深圳",
    "depth" : 1
  }, {
    "id" : "18b94dc0bb320e7860a2607c",
    "name" : "深圳园区",
    "depth" : 2
  } ],
  "id" : "1c8ba11111344005c02316a2",
  "parent_id" : "1c8ba99030344005c02316a2",
  "parent_code" : "1c8ba99030344005c02316a3",
  "parent_name" : "深圳园区",
  "definition_code" : "custom-sub-zone",
  "code" : "5c8ba99030344005c02316ad",
  "name" : "深圳园区1栋",
  "description" : "深圳园区1栋",
  "time_zone" : "UTC+08:00",
  "area" : 100000,
  "base_location" : "深圳市龙岗区坂田街道1栋",
  "country" : "中国",
  "province" : "广东省",
  "city" : "深圳市",
  "county" : "龙岗区",
  "city_code" : "285130",
  "children_count" : 0,
  "properties" : {
    "status" : "维护中"
  },
  "create_time" : "2023-11-14T06:18:59.818Z"
}
```
#### 状态码
| 状态码 | 描述             |
|:---|:---|
| 201 | Created        |
| 400 | Error response |
   
