
# 创建应用
#### 功能介绍
创建应用
#### URI
POST /v1/{project_id}/eihealth-projects/{eihealth_project_id}/apps
表1路径参数 
| 参数                  | 是否必选 | 参数类型   | 描述                                                                                                                                                                         |
|:---|:---|:---|:---|
| eihealth_project_id | 是    | String | 平台项目ID，您可以在平台单击所需的项目名称，进入项目设置页面查看。 最小长度：**1** 最大长度：**128**                                                          |
| project_id          | 是    | String | 华为云项目ID，您可以从[获取项目ID](https://support.huaweicloud.com/api-eihealth/eihealth_33_0044.html)中获取。 最小长度：**1** 最大长度：**128** |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。Token认证就是在调用API的时候将Token加到请求消息头，从而通过身份认证，获得操作API的权限，[获取Token](https://support.huaweicloud.com/api-eihealth/eihealth_33_0010.html)接口响应消息头中X-Subject-Token的值即为Token。 最小长度：**1** 最大长度：**32768** |
   
表3请求Body参数 
| 参数          | 是否必选 | 参数类型                                                                                | 描述                                                                                                                                                                                         |
|:---|:---|:---|:---|
| name        | 是    | String                                                                              | 应用名称 目标应用名称 取值范围：长度为\[1,56\]，以大小写字母开头，允许出现中划线(-)、下划线(_)、小写字母和数字，且必须以大小写字母或数字结尾。 最小长度：**1** 最大长度：**56**                                  |
| version     | 是    | String                                                                              | 应用版本 取值范围：\[1,24\]，以小写字母或数字或大写字母开头，允许出现中划线，必须以小写字母或数字或大写字母结尾。更新应用时，应用版本不支持修改。 最小长度：**1** 最大长度：**24**                                  |
| summary     | 否    | String                                                                              | 应用简述 取值范围\[0,128\] 最小长度：**0** 最大长度：**128**                                                                                            |
| description | 否    | String                                                                              | 应用描述 取值范围\[0,65535\]，后续支持markdown文本 最小长度：**0** 最大长度：**65535**                                                                    |
| labels      | 否    | Array of strings                                                                    | 应用标签 取值范围\[0,5\]，单个标签最大长度32字符，支持中文、字母、数字、空格、下划线和中划线，且不能以空格开头或者结尾。 最小长度：**1** 最大长度：**32** 数组长度：**0 - 5** |
| image       | 是    | String                                                                              | docker镜像地址 取值范围\[5-255\]，不能包含中文字符 最小长度：**5** 最大长度：**255**                                                                           |
| commands    | 是    | Array of strings                                                                    | docker启动时执行命令 取值范围\[1-300\]，单个命令长度取值范围\[0-256\]，不能包含中文字符 最小长度：**0** 最大长度：**256** 数组长度：**1 - 300**          |
| resources   | 否    | [ResourceDto] object                               | 应用申请资源                                                                                                                                                                                     |
| inputs      | 否    | Array of [AppInputParameterDto] objects   | 应用的输入参数列表 数组长度：**0 - 128**                                                                                                                                     |
| outputs     | 否    | Array of [AppOutputParameterDto] objects | 应用的输出参数列表 数组长度：**0 - 128**                                                                                                                                       |
| node_labels | 否    | Array of strings                                                                    | 节点标签 取值范围\[0,1\]，单个标签最大长度63字符 最小长度：**1** 最大长度：**63** 数组长度：**0 - 1**                                      |
| icon        | 否    | String                                                                              | 图标base64编码 最小长度：**0** 最大长度：**20000**                                                                                                |
   
 表4ResourceDto 
| 参数       | 是否必选 | 参数类型   | 描述                                                                                                                                                                                           |
|:---|:---|:---|:---|
| cpu_type | 否    | String | cpu架构类型，不填默认X86 最小长度：**0** 最大长度：**24**                                                                                               |
| cpu      | 否    | String | cpu申请使用量，取值范围\[0.1-128\]，单位C，支持一位小数。对于应用，不填默认1C；对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用 最小长度：**0** 最大长度：**24**                 |
| memory   | 否    | String | 内存申请使用量，取值范围\[0.1-3072\]，单位G，支持一位小数。对于应用，不填默认1G；对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用 最小长度：**0** 最大长度：**24**                |
| gpu_type | 否    | String | gpu架构类型，取值范围 ' '\|GPU\|Snt9\|D310。对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用 最小长度：**0** 最大长度：**24**                               |
| gpu      | 否    | String | gpu申请使用量，取值范围\[0-16\]，仅支持整数，Snt9有特殊约束，申请数量需要是0,1,2,4,8。对于应用，不填默认0；对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用 最小长度：**0** 最大长度：**24** |
   
 表5AppInputParameterDto 
| 参数          | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| name        | 是    | String           | 参数名称，单个应用内唯一。取值范围：长度为\[1,32\]，以小写字母开头，允许出现中划线(-)、小写字母和数字，且必须以小写字母或数字结尾。 最小长度：**1** 最大长度：**32**                                                                       |
| description | 否    | String           | 参数描述。取值范围：\[0-255\] 最小长度：**0** 最大长度：**255**                                                                                                                        |
| required    | 是    | Boolean          | 参数是否必须                                                                                                                                                                                                                   |
| concurrent  | 否    | String           | 参数是否开启并发。当前支持vars_iter并发类型，不填表示未开启并发。 最小长度：**0** 最大长度：**16**                                                                                                    |
| type        | 是    | String           | 参数类型。取值：\[STRING，FILE，DIRECTORY，ENUM\]                                                                                                                                                                                   |
| pattern     | 否    | String           | 提示用户参数填写的格式，取值范围：\[0-64\]。对于STRING类型，匹配字符串内容，比如后缀约束.fastq；对于ENUM类型，可以提示一定要在param_enum列表范围内取值；对于FILE类型，约束文件后缀类型；对于DIRECTORY类型，提示目录下需要包含哪些文件； 最小长度：**0** 最大长度：**64** |
| values      | 否    | Array of strings | 参数取值 如填写，只支持填一项，根据参数类型进行不同的校验 最小长度：**0** 最大长度：**2048** 数组长度：**0 - 128**                                                                    |
| enum        | 否    | Array of strings | 枚举参数的取值列表，列表最大长度20，每一项字符串最长128。参数类型为ENUM时需要填此字段 最小长度：**0** 最大长度：**128** 数组长度：**0 - 20**                                                  |
   
 表6AppOutputParameterDto 
| 参数          | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| name        | 是    | String           | 参数名称，单个应用内唯一。取值范围：长度为\[1,32\]，以小写字母开头，允许出现中划线(-)、小写字母和数字，且必须以小写字母或数字结尾。 最小长度：**1** 最大长度：**32**                                                                 |
| description | 否    | String           | 参数描述。取值范围：\[0-255\] 最小长度：**0** 最大长度：**255**                                                                                                                        |
| required    | 是    | Boolean          | 参数是否必须                                                                                                                                                                                                                  |
| type        | 是    | String           | 参数类型。取值：\[STRING，FILE，DIRECTORY，ENUM\]                                                                                                                                                                                  |
| pattern     | 否    | String           | 提示用户参数填写的格式，取值范围：\[0-64\]。对于STRING类型，匹配字符串内容，比如后缀约束.fastq；对于ENUM类型，可以提示一定要在param_enum列表范围内取值；对于FILE类型，约束文件后缀类型；对于DIRECTORY类型，提示目录下需要包含哪些文件； 最小长度：**0** 最大长度：**64** |
| values      | 否    | Array of strings | 参数取值 如填写，只支持填一项，根据参数类型进行不同的校验 最小长度：**0** 最大长度：**2048** 数组长度：**0 - 128**                                                                 |
| enum        | 否    | Array of strings | 枚举参数的取值列表，列表最大长度20，每一项字符串最长128。参数类型为ENUM时需要填此字段 最小长度：**0** 最大长度：**128** 数组长度：**0 - 20**                                                |
   
#### 响应参数
**状态码： 201**
表7响应Body参数 
| 参数 | 参数类型   | 描述   |
|:---|:---|:---|
| id | String | 应用id |
   
#### 请求示例
创建应用，应用名称为demo-app，版本为1.0.0
```
https://eihealth.cn-north-4.myhuaweicloud.com/v1/{project_id}/eihealth-projects/{eihealth_project_id}/apps
{
  "name" : "demo-app",
  "version" : "1.0.0",
  "summary" : "summary",
  "description" : "description",
  "labels" : [ "labelA", "labelB" ],
  "image" : "gwj-test-01/busybox:latest",
  "commands" : [ "echo eihealth;" ],
  "resources" : {
    "cpu_type" : "X86",
    "cpu" : "1C",
    "memory" : "1G",
    "gpu_type" : "GPU",
    "gpu" : 0
  },
  "inputs" : [ {
    "name" : "dir-parameter",
    "description" : "parameter description",
    "required" : true,
    "concurrent" : "vars_iter",
    "type" : "DIRECTORY",
    "pattern" : "*.fastq",
    "values" : [ "/test" ]
  } ],
  "outputs" : [ {
    "name" : "dir-parameter",
    "description" : "parameter description",
    "required" : true,
    "type" : "DIRECTORY",
    "pattern" : "*.fastq",
    "values" : [ "/test" ]
  } ],
  "node_labels" : [ "health.node" ],
  "icon" : "data:image/png;base64,xxxxx"
}
```
#### 响应示例
**状态码： 201**
CREATED
```
{
  "id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1"
}
```
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 201 | CREATED |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-eihealth/ErrorCode.html)。
