
# 新建检查任务 - CreateTaskV2
#### 功能介绍
在项目下新建代码检查任务，支持设置项目ID、代码仓地址、分支、规则集等信息。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-codecheck/codecheck_03_0006.html)。
#### 授权信息
账号根用户具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备如下身份策略权限，更多的权限说明请参见[权限和授权项](https://support.huaweicloud.com/api-codecheck/Permission.html)。
| 授权项                       | 访问级别  | 资源类型（\*为必须） | 条件键                     | 别名 | 依赖的授权项 |
|:---|:---|:---|:---|:---|:---|
| codeartscheck:task:create | Write | task \*     | -                       | -  | -      |
| codeartscheck:task:create | Write | -           | codeartscheck:ProjectId | -  | -      |
   
#### URI
POST /v2/{project_id}/task
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 项目的32位UUID，项目唯一标识，通过[查询项目列表](https://support.huaweicloud.com/api-projectman/ListProjectsV4.html)接口获取。 **约束限制：** 不涉及。 **取值范围：** 长度为\[1\~32\]的字符。 **默认取值：** 不涉及。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** 用户Token。通过调用IAM服务[获取用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口获取（响应消息头中X-Subject-Token的值）。 **约束限制：** 不涉及。 **取值范围：** 长度为\[1\~100000\]的字符。 **默认取值：** 不涉及。 |
| Content-Type | 是    | String | **参数解释：** 设置媒体类型和编码格式。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** application/json;charset=UTF-8                                                                                               |
   
表3请求Body参数 
| 参数               | 是否必选 | 参数类型                                                           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| git_url          | 是    | String                                                         | **参数解释：** 代码仓地址。 **约束限制：** 不涉及。 **取值范围：** repo仓传以git开头的地址；非repo仓传以http开头的地址。 **默认取值：** 不涉及。                                                                                                                                                                                                                                         |
| git_branch       | 是    | String                                                         | **参数解释：** 计划创建任务的对应代码仓的分支。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                             |
| language         | 否    | Array of strings                                               | **参数解释：** 启用的检查语言，数组格式，支持的语言请关注服务更新特性文档。 **约束限制：** 与rule_sets 2选1使用。                                                                                                                                                                                                                                                                                                                                                                                                |
| rule_sets        | 否    | Array of [RuleSetV2] objects | **参数解释：** 启用的规则集，数组格式，当只传语言，不传规则集ID时，与language参数等效，启用这些语言在项目下的默认规则集，支持的语言请关注服务更新特性文档。 **约束限制：** 与language 2选1使用。                                                                                                                                                                                                                                                                                                                                                    |
| task_type        | 否    | String                                                         | **参数解释：** 任务类型。 **约束限制：** 不涉及。 **取值范围：** - full：代码仓分支对应的全量任务。   - inc：MR增量任务。    **默认取值：** full |
| username         | 否    | String                                                         | **参数解释：** 用户名，与access_token联合使用，用于在创建三方仓时，由Check服务创建1个通用git扩展点，从而保存代码仓信息。 **约束限制：** username、access_token组合与endpoint_id 2选1使用。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                        |
| access_token     | 否    | String                                                         | **参数解释：** 密码或访问密钥/令牌，username，用于在创建三方仓时，由Check服务创建1个通用git扩展点，从而保存代码仓信息。 **约束限制：** username、access_token组合与endpoint_id 2选1使用。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                          |
| endpoint_id      | 否    | String                                                         | **参数解释：** 用户预先创建的项目下的代码源扩展点ID，保存了代码仓信息。创建第三方代码源任务，若未填写endpoint，会自动创建扩展点，需要账号有创建扩展点权限，且项目下扩展点未达到上限。 **约束限制：** username、access_token组合与endpoint_id 2选1使用。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                               |
| inc_config       | 否    | [IncConfigV2] object       | **参数解释：** 基于某一任务创建分支任务、MR任务时使用的参数。 **约束限制：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                   |
| resource_pool_id | 否    | String                                                         | **参数解释：** 用户购买的资源池ID，创建任务时如传此参数，任务将使用对应资源池进行检查。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                        |
   
 表4RuleSetV2 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| ruleset_id | 否    | String | **参数解释：** 规则集ID。 **约束限制:** 长度为\[1\~32\]个字符。 **取值范围：** 不涉及。 **默认取值：** 不涉及。     |
| language   | 是    | String | **参数解释：** 检查语言，支持的语言请关注服务更新特性文档。 **约束限制:** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
   
 表5IncConfigV2 
| 参数                | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| parent_task_id    | 否    | String | **参数解释：** 需要关联的任务ID。 **约束限制：** 32位UUID。 **取值范围：** 不涉及。 **默认取值：** 不涉及。         |
| git_source_branch | 否    | String | **参数解释：** MR增量任务的源分支。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。            |
| git_target_branch | 否    | String | **参数解释：** MR增量任务的目标分支。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。           |
| merge_id          | 否    | String | **参数解释：** MR编号。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                  |
| event_type        | 否    | String | **参数解释：** 创建MR增量任务时需传。 **约束限制：** 不涉及。 **取值范围：** merge_request。 **默认取值：** 不涉及。 |
| action            | 否    | String | **参数解释：** 创建MR增量任务时需传。 **约束限制：** 不涉及。 **取值范围：** open。 **默认取值：** 不涉及。          |
| title             | 否    | String | **参数解释：** 创建MR增量任务时需传，MR标题。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。      |
   
#### 响应参数
**状态码：200**
表6响应Body参数 
| 参数      | 参数类型   | 描述                                                                                                                                                           |
|:---|:---|:---|
| task_id | String | **参数解释：** 任务ID。 **取值范围：** 全量任务为32位UUID，MR增量任务为"MR_"+32位UUID。 |
   
**状态码：400**
表7响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                             |
|:---|:---|:---|
| error_code | String | **参数解释：** 错误码。 **取值范围：** 不涉及。  |
| error_msg  | String | **参数解释：** 错误描述。 **取值范围：** 不涉及。 |
   
**状态码：401**
表8响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                             |
|:---|:---|:---|
| error_code | String | **参数解释：** 错误码。 **取值范围：** 不涉及。  |
| error_msg  | String | **参数解释：** 错误描述。 **取值范围：** 不涉及。 |
   
#### 请求示例
新建检查任务：检查任务的检查类型为source，对应代码仓URL根据实际情况显示，代码仓分支为master，语言类型为cpp。
```
POST https://{endpoint}/v2/{project_id}/task
{
  "git_url" : "git@code*****************958.git",
  "git_branch" : "master",
  "language" : [ "cpp" ]
}
```
#### 响应示例
**状态码：200**
请求成功!
```
{
  "task_id" : "d161fd0**********cb3c1d6a783e"
}
```
**状态码：400**
请求异常。
```
{
  "error_code" : "CC.xxxxxxxx.400",
  "error_msg" : "请求参数校验失败,请检查请求参数是否正确"
}
```
**状态码：401**
权限不足。
```
{
  "error_code" : "CC.00000003",
  "error_msg" : "认证信息过期"
}
```
#### 状态码
| 状态码 | 描述    |
|:---|:---|
| 200 | 请求成功! |
| 400 | 请求异常。 |
| 401 | 权限不足。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-codecheck/ErrorCode.html)。
