
# 创建应用 - CreateXdmApplication
#### 功能介绍
本接口用于在工业数字模型驱动引擎（Industrial Digital Model Engine，简称iDME）中创建应用实例。应用是iDME-数据建模引擎（xDM Foundation，简称xDM-F）的核心资源载体，创建后可用于承载数据模型、业务逻辑及服务编排。每个租户下的应用数量受配额限制，请提前确保配额充足。
#### 接口约束
- 调用本接口前，系统会自动初始化租户默认配额，并校验当前配额是否充足。若配额不足（如应用数量已达上限），接口将返回配额不足错误，创建失败。
  
- 除特定已开通白名单的区域外，其他区域租户必须先购买并开通iDME设计服务（STUDIO），才能调用本接口创建应用。如果当前租户未开通该服务，接口将返回未授权错误。
  
 
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/iDME/doc?api=CreateXdmApplication)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-idme/idme_api_0017.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项             | 访问级别  | 资源类型（\*为必须） | 条件键 | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | dme:apps:create | Write | -           | -   | -  | -      |
     
  
 
#### URI
POST /v1/{project_id}/apps
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 项目ID，用于标识资源所属的项目空间。 获取方式请参见[获取项目ID](https://support.huaweicloud.com/api-idme/idme_api_0024.html)。 **约束限制：** 不涉及。 **取值范围：** 由英文字母和数字组成，长度为1-36个字符。 **默认取值：** 不涉及。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** IAM用户的认证Token，用于接口调用身份鉴权。 获取方式请参见[获取IAM用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
   
表3请求Body参数 
| 参数                 | 是否必选 | 参数类型                                                                               | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| app_name_cn        | 是    | String                                                                             | **参数解释：** 应用的中文名称，用于在中文界面展示应用名称。 **约束限制：** 不涉及。 **取值范围：** 仅支持中文、英文字母、数字、下划线（_）、短横线（-），且不能为"XDM"（不区分大小写），最大长度为128个字符。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| app_name_en        | 是    | String                                                                             | **参数解释：** 应用的英文名称，用于系统内部标识和英文界面展示。 **约束限制：** 不涉及。 **取值范围：** 仅支持英文字母和数字，且必须以大写字母开头，且不能为"XDM"（不区分大小写），最大长度为128个字符。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| app_desc           | 否    | String                                                                             | **参数解释：** 应用的中文描述，说明应用的用途、功能等信息。 **约束限制：** 不涉及。 **取值范围：** 仅支持中文、英文字母（大小写）、数字、括号、下划线（_）、短横线（-）、空格及常用标点符号，最大长度为1024个字符。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| app_desc_en        | 否    | String                                                                             | **参数解释：** 应用的英文描述，说明应用的用途、功能等信息。 **约束限制：** 不涉及。 **取值范围：** 仅支持英文字母（大小写）、数字、下划线（_）、短横线（-）、空格及常用标点符号，最大长度为1024个字符。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| app_env            | 是    | String                                                                             | **参数解释：** 应用部署的环境标识，用于区分不同生命周期的环境。 **约束限制：** 不涉及。 **取值范围：** - dev：用于开发环境。   - sit：用于功能测试环境。   - uat：用于用户测试环境。   - train：用于培训环境。   - beta：用于灰度部署环境。   - production：用于生产环境。    **默认取值：** 不涉及。 |
| database_type      | 是    | String                                                                             | **参数解释：** 应用使用的数据库类型，决定数据存储方案。 **约束限制：** 不涉及。 **取值范围：** - mysql：关系型数据库管理系统。   - postgresql：对象-关系型数据库管理系统。    **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| app_user_list      | 是    | Array of [AppUserList] objects | **参数解释：** 应用责任人，用于指定应用的管理者和使用者。 **约束限制：** 必须填写当前租户下的IAM账户信息，且不能为空数组。 **取值范围：** AppUserList对象数组，每个对象包含用户ID和用户名。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| integration_mode   | 是    | String                                                                             | **参数解释** 应用的集成模式，定义外部系统访问应用的方式。 **约束限制：** 不涉及。 **取值范围：** - API：通过RESTful API接口集成。   - SDK：通过SDK工具包集成。    **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| app_type           | 否    | String                                                                             | **参数解释：** 应用的使用场景类型，区分不同的应用规模。 **约束限制：** 不涉及。 **取值范围：** - default：标准，适用于企业生产、商用和运营等标准化使用场景。   - lite：轻量，适用于教学、培训、课程开发等轻量级应用场景。    **默认取值：** default。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| permission_control | 否    | String                                                                             | **参数解释：** 应用的权限控制策略，用于数据访问安全控制。 **约束限制：** 不涉及。 **取值范围：** - NONE：关闭权限校验。租户下的所有IAM用户均可调用。   - ALL：开启权限校验。    **默认取值：** NONE。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| id_type            | 否    | String                                                                             | **参数解释：** 应用的ID类型，用于应用运行态中数据模型内置ID的属性类型。 **约束限制：** ID类型一经设置，仅支持由数值改为文本，不支持由文本改为数值，且文本类型的应用仅支持JDK17版本。 **取值范围：** - LONG：数值类型   - STRING：文本类型    **默认取值：** LONG。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
 表4AppUserList 
| 参数   | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| id   | 否    | String | **参数解释：** IAM用户的唯一标识，用于区分不同用户。 **约束限制：** 不涉及。 **取值范围：** 由英文字母和数字组成，长度为1-36个字符。 **默认取值：** 不涉及。 |
| name | 否    | String | **参数解释：** IAM用户的显示名称。 **约束限制：** 不涉及。 **取值范围：** 最大长度255个字符。 **默认取值：** 不涉及。                     |
   
#### 响应参数
**状态码：200**
表5响应Body参数 
| 参数                 | 参数类型                                                                        | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| id                 | String                                                                      | **参数解释：** 应用的唯一标识，由系统自动生成。 **取值范围：** 由英文和数字组成，且长度固定为32个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| project_id         | String                                                                      | **参数解释：** 项目ID，用于标识资源所属的项目空间。 **取值范围：** 由英文字母和数字组成，长度为1-36个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| mark_for_delete    | Integer                                                                     | **参数解释：** 逻辑删除标记，标识数据是否被标记删除。 **取值范围：** - 0：未删除   - 1：删除                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| create_by          | String                                                                      | **参数解释：** 应用创建人的用户名。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| create_time        | Long                                                                        | **参数解释：** 应用的创建时间，格式为Unix时间戳（毫秒）。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| update_by          | String                                                                      | **参数解释：** 最近一次更新应用的用户名。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| update_time        | Long                                                                        | **参数解释：** 应用的最近更新时间，格式为Unix时间戳（毫秒）。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| name_cn            | String                                                                      | **参数解释：** 应用的中文名称。 **取值范围：** 仅支持中文、英文字母、数字、下划线（_）、短横线（-），且不能为"XDM"（不区分大小写），最大长度为128个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| name_en            | String                                                                      | **参数解释：** 应用的英文名称。 **取值范围：** 仅支持英文字母和数字，且必须以大写字母开头，且不能为"XDM"（不区分大小写），最大长度为128个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| desc_cn            | String                                                                      | **参数解释：** 应用的中文描述。 **取值范围：** 仅支持中文、英文字母（大小写）、数字、括号、下划线（_）、短横线（-）、空格及常用标点符号，最大长度为1024个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| desc_en            | String                                                                      | **参数解释：** 应用的英文描述。 **取值范围：** 仅支持英文字母（大小写）、数字、下划线（_）、短横线（-）、空格及常用标点符号，最大长度为1024个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| database_type      | String                                                                      | **参数解释：** 应用的数据库类型。 **取值范围：** - mysql：关系型数据库管理系统。   - postgresql：对象-关系型数据库管理系统。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| environment        | String                                                                      | **参数解释：** 应用运行的环境标识。 **取值范围：** - dev：用于开发环境。   - sit：用于功能测试环境。   - uat：用于用户测试环境。   - train：用于培训环境。   - beta：用于灰度部署环境。   - production：用于生产环境。    |
| versions           | Array of [Version] objects | **参数解释：** 应用版本信息。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| migrating          | Boolean                                                                     | **参数解释：** 判断是否在迁移中。 **取值范围：** true：迁移中。 false：未迁移。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| migrate_status     | String                                                                      | **参数解释：** 迁移状态。 **取值范围：** - 0：未迁移   - 1：迁移中                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| app_type           | String                                                                      | **参数解释：** 应用的使用场景类型，区分不同的应用规模。 **取值范围：** - default：标准，适用于企业生产、商用和运营等标准化使用场景。   - lite：轻量，适用于教学、培训、课程开发等轻量级应用场景。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| permission_control | String                                                                      | **参数解释：** 应用的权限控制策略，用于数据访问安全控制。 **取值范围：** - NONE：关闭权限校验。租户下的所有IAM用户均可调用。   - ALL：开启权限校验。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| id_type            | String                                                                      | **参数解释：** 应用的ID类型，用于应用运行态中数据模型内置ID的属性类型。 **取值范围：** - LONG：数值类型   - STRING：文本类型                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表6Version 
| 参数           | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| version      | String  | **参数解释：** 应用版本。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                        |
| publish_time | Long    | **参数解释：** 应用发布时间。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                      |
| jdk_version  | Integer | **参数解释：** 应用的JDK版本。 **取值范围：** - JDK17   - JDK8    |
| model_count  | Integer | **参数解释：** xDM-F版本模型数。 **取值范围：** 大于等于0的整数。                                                                                                                                                                                                                                                                                                                                                                                             |
   
#### 请求示例
创建一个中文名称为"测试应用"、英文名称为"TEST"、环境为"dev"的标准使用场景的应用。
```
POST https://{endpoint}/v1/71710b9f65b9496d96f53f4ef7f6128b/apps
{
  "app_name_cn" : "测试应用",
  "app_name_en" : "TEST",
  "app_env" : "dev",
  "app_desc" : "这是一个测试应用",
  "app_desc_en" : "This is a test application",
  "app_type" : "default",
  "permission_control" : "ALL",
  "database_type" : "mysql",
  "integration_mode" : "API",
  "app_user_list" : [ {
    "id" : "user001",
    "name" : "ADMIN"
  }, {
    "id" : "user002",
    "name" : "DEVELOPER"
  } ]
}
```
#### 响应示例
**状态码：200**
表示创建应用成功。
```
{
  "id" : "",
  "project_id" : "71710b9f65b9496d96f53f4ef7f6128b",
  "mark_for_delete" : 0,
  "create_by" : "",
  "create_time" : 1685987901000,
  "update_by" : "",
  "update_time" : 1685987901000,
  "name_cn" : "测试应用",
  "name_en" : "TEST",
  "desc_cn" : "这是一个测试应用",
  "desc_en" : "This is a test application",
  "database_type" : "mysql",
  "environment" : "dev",
  "migrate_status" : "0",
  "app_type" : "default",
  "permission_control" : "NONE",
  "id_type" : "LONG",
  "versions" : null,
  "migrating" : false
}
```
#### 状态码
| 状态码 | 描述        |
|:---|:---|
| 200 | 表示创建应用成功。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-idme/ErrorCode.html)。
