
# 创建任务 - CreateTask
#### 功能介绍
该接口用于创建任务。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/VIAS/doc?api=CreateTask)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### URI
POST /v2/{project_id}/services/{service_name}/tasks
表1路径参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                           |
|:---|:---|:---|:---|
| project_id   | 是    | String | **参数解释：** 用户项目ID，获取方法参见[获取项目ID和名称](https://support.huaweicloud.com/api-vias/vias_03_0283.html)。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
| service_name | 是    | String | **参数解释：** 服务API名称。 **约束限制：** 不涉及。 **取值范围：** 字符串长度\[1, 100\]。 **默认取值：** 不涉及。                                                                  |
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                     |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** 用户Token，获取方法参见[认证鉴权](https://support.huaweicloud.com/api-vias/vias_03_0009.html)。 **约束限制：** 不涉及。 **取值范围：** 字符串长度\[0, 32768\]。 **默认取值：** 不涉及。 |
   
表3请求Body参数 
| 参数                   | 是否必选 | 参数类型                                                               | 描述                                                                                                                |
|:---|:---|:---|:---|
| name                 | 是    | String                                                             | **参数解释：** 任务名称。 **约束限制：** 不涉及。 **取值范围：** 只能由中文、字母（a～z A～Z）、数字（0～9）、中划线（-）、下划线（_）组成，长度范围为\[1，100\]。 **默认取值：** 不涉及。 |
| description          | 否    | String                                                             | **参数解释：** 任务的描述。 **约束限制：** 不涉及。 **取值范围：** 字符串长度\[0, 500\]。 **默认取值：** 不涉及。                                         |
| schedule             | 否    | [TaskSchedule] object           | **参数解释：** 定时任务参数，定时周期 仅支持周模式。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                        |
| input                | 是    | [TaskInput] object                 | **参数解释：** 任务的输入配置。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                   |
| output               | 是    | [TaskOutput] object               | **参数解释：** 任务的输出配置。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                   |
| config               | 否    | [TaskServiceConfig] object | **参数解释：** 任务配置参数。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                    |
| service_version      | 是    | String                                                             | **参数解释：** 服务版本号。 **约束限制：** 不涉及。 **取值范围：** 需要满足正则：\^\[a-z0-9.\]{3,32}$。 **默认取值：** 不涉及。                             |
| is_saved_as_template | 否    | Boolean                                                            | **参数解释：** 是否保存为模板。 **约束限制：** 不涉及。 **取值范围：** - true：保存为模板 - false：不保存为模板 **默认取值：** false                           |
| resource_order_id    | 否    | String                                                             | **参数解释：** 资源订单id，与算法相关。 **约束限制：** 不涉及。 **取值范围：** 需要满足正则表达式\^\[a-z0-9-_\]{4,36}$。 **默认取值：** 不涉及。                   |
   
 表4TaskSchedule 
| 参数            | 是否必选 | 参数类型                                                            | 描述                                                                                                                                 |
|:---|:---|:---|:---|
| type          | 是    | String                                                          | **参数解释：** 计划任务的类型，使用计划任务时必填。可选类型weekly（每周执行）。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                         |
| timezone      | 是    | String                                                          | **参数解释：** 用户所处的时区，使用计划任务时必填。精确到分钟。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                    |
| days_of_week  | 否    | Array of integers                                               | **参数解释：** 任务会在一周的哪几天执行，当且仅当计划任务类型为weekly时，该字段需填且必填。1\~7分别指代星期一至星期日。 **约束限制：** 不涉及。 **取值范围：** 列表长度\[1, 7\]。 **默认取值：** 不涉及。          |
| days_of_month | 否    | Array of integers                                               | **参数解释：** 任务会在一个月的哪几天执行，当且仅当计划任务类型为monthly时，该字段需填且必填。1\~31分别指代一个月中的1日至31日，当前系统不支持该参数。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
| periods       | 否    | Array\<Array\<[TimeWindow]\>\> | **参数解释：** 时间段模式配置，指定周计划或者月计划中具体每天作业的执行时间段，至少需指定一个时间段。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                 |
   
 表5TimeWindow 
| 参数       | 是否必选 | 参数类型   | 描述                                                                                            |
|:---|:---|:---|:---|
| begin_at | 否    | String | **参数解释：** 单个时间段执行的起始时间，必填。其余计划任务类型时，格式为hh:mm:ss。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
| end_at   | 否    | String | **参数解释：** 单个时间段执行的结束时间，必填，其余计划任务类型时，格式为hh:mm:ss。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
   
 表6TaskInput 
| 参数   | 是否必选 | 参数类型                                                                 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| type | 是    | String                                                               | **参数解释：** 任务的输入类型，创建时必填，视频源类型为video_source 时 不支持切换为其他的type。创建时可选类型有 obs（对象存储服务存储的文件 仅云上任务支持，支持输出到webhook）， url（指定的文件地址或取流地址 仅云上任务支持，支持输出到webhook）， edgecamera（绑定在IEF的边缘摄像头 仅边缘任务支持，支持输出到webhook）, restful（从自定义的流媒体服务器通过Restful接口获取取流地址 云上和边缘任务均支持，支持输出到webhook）， vcn（VCN设备 仅边缘任务支持）, video_source（使用VIAS平台视频中心管理的视频源，云上和边缘任务均支持）， 建议使用video_source类型，其他类型为了兼容老业务，后续将废弃。 **约束限制：** 不涉及。 **取值范围：** - video_source - obs (不建议使用，后续废弃) - url (不建议使用，后续废弃) - edgecamera (不建议使用，后续废弃) - restful (不建议使用，后续废弃) - vcn (不建议使用，后续废弃) **默认取值：** 不涉及。                                                                                                                                                                                                                                                 |
| data | 是    | Array of [TaskInputData] objects | **参数解释：** 任务的输入详情，必填。针对不同的输入类型有不同的配置。创建时允许填写多路输入，但更新时只允许填写一路输入。 当输入类型为：obs，需要配置 bucket，path ， index 。例如： "bucket": "aicam", "path": "3rdpartylicenses.txt", "index": 0 当输入类型为：url，需要配置 url， index 。例如： "url": "https://xxx-xxx.com", "index": 0 当输入类型为：restful，需要配置 certificate_check， rtsp_path_in_response， url， index， headers 。例如："certificate_check": true, "url": "https://hsaij-dasahbi.com", "rtsp_path_in_response": "data/url", "index": 0, "headers": { "AAA": "AAA" } 当输入类型为：vcn，需要配置 device_id， stream_type， index。例如："device_id": "21356478954612546874#gdhjkiushdgdksjhslmhscjsckjhdbnk", "stream_type": 1, "index": 0 当输入类型为：EdgeCamera，需要配置 id， index 例如："id": "007cdafc-6000-47ce-b0e3-870b4a0db65e","index": 0 **约束限制：** 不涉及。 **取值范围：** 列表长度\[1, 50\]。 **默认取值：** 不涉及。 |
| vcn  | 否    | [TaskInputVcn] object             | VCN服务器信息，仅输入类型为vcn时需填且必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
 表7TaskInputData 
| 参数                    | 是否必选 | 参数类型    | 描述                                                                                                                                                   |
|:---|:---|:---|:---|
| video_source_id       | 否    | String  | **参数解释：** 视频源id,当输入类型为video_source时必填。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                  |
| stream_name           | 否    | String  | **参数解释：** 视频流名称。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                        |
| bucket                | 否    | String  | **参数解释：** OBS桶名，当输入为obs类型时必填。 **约束限制：** 不涉及。 **取值范围：** 字符串长度\[0, 64\]。 **默认取值：** 不涉及。                                                                |
| path                  | 否    | String  | **参数解释：** OBS的路径，当输入为obs类型时必填。 **约束限制：** 不涉及。 **取值范围：** 字符串长度\[0, 1023\]。 **默认取值：** 不涉及。                                                             |
| url                   | 否    | String  | **参数解释：** url输入源的地址或者获取视频流地址的restful请求地址，当输入为url类型或者restful类型时必填。 **约束限制：** 不涉及。 **取值范围：** 字符串长度\[0, 1000\]。 **默认取值：** 不涉及。                          |
| headers               | 否    | Object  | **参数解释：** 获取视频流地址的restful请求携带的请求头，当输入为restful类型时可选。整体呈json格式，以键值对的形式表示请求头和取值，最多允许10组。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                   |
| rtsp_path_in_response | 否    | String  | **参数解释：** restful请求返回的body中，视频流地址的路径，当输入为restful类型时必填。 **约束限制：** 不涉及。 **取值范围：** 字符串长度\[0, 1024\]。 **默认取值：** 不涉及。                                     |
| device_id             | 否    | String  | **参数解释：** VCN设备ID，当输入为vcn类型时必填。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                         |
| stream_type           | 否    | Integer | **参数解释：** 准备进行分析的码流。 **约束限制：** 不涉及。 **取值范围：** 1\~3，其中1代表主码流，2代表子码流1，3代表子码流2。 **默认取值：** 不涉及。                                                          |
| id                    | 否    | String  | **参数解释：** IEF挂载的边缘设备的ID，当输入为edgecamera类型时必填。 **约束限制：** 不涉及。 **取值范围：** 字符串长度\[0, 63\]。 **默认取值：** 不涉及。                                                 |
| certificate_check     | 否    | Boolean | **参数解释：** 是否需要对https请求进行证书校验，当输入为restful类型时必填。取值为true或者false。 **约束限制：** 不涉及。 **取值范围：** - true：对https请求进行证书校验 - false：不对https请求进行证书校验 **默认取值：** false |
   
 表8TaskInputVcn 
| 参数       | 是否必选 | 参数类型    | 描述                                                                                                        |
|:---|:---|:---|:---|
| ip       | 是    | String  | **参数解释：** VCN服务器的IP地址，仅输入类型为vcn时需填且必填。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                       |
| port     | 是    | Integer | **参数解释：** VCN服务器的端口号，仅输入类型为vcn时需填且必填。 **约束限制：** 不涉及。 **取值范围：** 0-65535 **默认取值：** 不涉及。                     |
| username | 是    | String  | **参数解释：** VCN服务器的账号名，仅输入类型为vcn时需填且必填。 **约束限制：** 不涉及。 **取值范围：** 需要满足正则表达式\^.{1,100}$。 **默认取值：** 不涉及。       |
| password | 是    | String  | **参数解释：** VCN服务器的与账号对应的密码，仅输入类型为vcn时需填且必填。 **约束限制：** 不涉及。 **取值范围：** 需要满足正则表达式\^.{1,1000}$。 **默认取值：** 不涉及。 |
   
 表9TaskOutput 
| 参数           | 是否必选 | 参数类型                                                               | 描述                                                                                                    |
|:---|:---|:---|:---|
| obs          | 否    | [TaskOutputObs] object         | 输出为obs类型时的配置信息。                                                                                       |
| dis          | 否    | [TaskOutputDis] object         | 输出为dis类型时的配置信息。                                                                                       |
| webhook      | 否    | [TaskOutputWebhook] object | 输出为webhook类型时的配置信息。                                                                                   |
| event_center | 否    | Boolean                                                            | **参数解释：** 输出方式是否选择为事件中心。 **约束限制：** 不涉及。 **取值范围：** - true：输出方式是事件中心 - false：输出方式不是事件中心 **默认取值：** false |
   
 表10TaskOutputObs 
| 参数            | 是否必选 | 参数类型             | 描述                                                                                                                                                      |
|:---|:---|:---|:---|
| bucket        | 是    | String           | **参数解释：** OBS桶名，选用obs类型输出时必填。 **约束限制：** 不涉及。 **取值范围：** 需要满足正则表达式\^\[a-z0-9\](?!.*\[-.\]\[-.\].*)(\[a-z0-9-.\]{1,61})\[a-z0-9\]$。 **默认取值：** 不涉及。         |
| path          | 是    | String           | **参数解释：** OBS的路径，选用obs类型输出时必填. **约束限制：** 不涉及。 **取值范围：** 需要满足正则表达式 \^(?!\[/.\\s\])(?!.*//.*)(\[\^:\*?"\<\>\|\\\]{0,1023})(?\<!\[.\\s\])$。 **默认取值：** 不涉及。 |
| data_category | 否    | Array of strings | **参数解释：** 作业输出数据类别的列表，选填，仅部分服务需要。当输出类型下有这个列表时，表示希望这个输出类型下存放dataCategory列表内的数据。 **约束限制：** 不涉及。 **取值范围：** 列表长度\[0, 10\]。 **默认取值：** 不涉及。                   |
   
 表11TaskOutputDis 
| 参数            | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| stream_name   | 是    | String           | **参数解释：** DIS流名称，选用dis类型输出时必填。 **约束限制：** 不涉及。 **取值范围：** 需要满足正则表达式\^\[-A-Za-z0-9_\]{1,64}$。 **默认取值：** 不涉及。                                                                                                                   |
| data_category | 否    | Array of strings | **参数解释：** 任务输出数据类别的列表，选填，仅部分服务需要。当输出类型下有这个列表时，表示希望这个输出类型下存放dataCategory列表内的数据。 【例如创建边缘人脸任务API中，输出结果支持data_category参数，取值范围为\[FacaImage,OriginImage\],分别表示是否发送人脸图和原始图】 **约束限制：** 不涉及。 **取值范围：** 列表长度\[0, 10\]。 **默认取值：** 不涉及。 |
   
 表12TaskOutputWebhook 
| 参数            | 是否必选 | 参数类型             | 描述                                                                                                                                    |
|:---|:---|:---|:---|
| url           | 是    | String           | **参数解释：** 结果回调地址，选用webhook类型输出时必填。 **约束限制：** 不涉及。 **取值范围：** 字符串长度\[0, 1000\]。 **默认取值：** 不涉及。                                          |
| headers       | 是    | Object           | **参数解释：** 结果回调时需要携带的请求头，选用webhook类型输出时必填。 **约束限制：** 不涉及。 **取值范围：** json格式，以键值对的形式表示请求头和取值，至少1组，至多10组。 **默认取值：** 不涉及。                  |
| data_category | 否    | Array of strings | **参数解释：** 任务输出数据类别的列表，选填，仅部分服务需要。当输出类型下有这个列表时，表示希望这个输出类型下存放dataCategory列表内的数据。 **约束限制：** 不涉及。 **取值范围：** 列表长度\[0, 10\]。 **默认取值：** 不涉及。 |
   
 表13TaskServiceConfig 
| 参数     | 是否必选 | 参数类型   | 描述                                                                                                            |
|:---|:---|:---|:---|
| common | 否    | Object | **参数解释：** 任务运行时指定的具体的自定义配置项，由服务发布者定义。整体呈json格式，具体配置项参见相应算法服务的说明。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
   
#### 响应参数
**状态码：200**
表14响应Body参数 
| 参数    | 参数类型                                                  | 描述                                                    |
|:---|:---|:---|
| tasks | Array of [tasks] objects | **参数解释：** 任务创建成功生成的任务ID列表。 **取值范围：** 列表长度\[1, 1000\]。 |
   
 表15tasks 
| 参数 | 参数类型   | 描述                                      |
|:---|:---|:---|
| id | String | **参数解释：** 任务创建成功生成的任务ID。 **取值范围：** 不涉及。 |
   
**状态码：400**
表16响应Body参数 
| 参数         | 参数类型             | 描述                                        |
|:---|:---|:---|
| error_code | String           | **参数解释：** 错误码。 **取值范围：** 不涉及。             |
| error_msg  | String           | **参数解释：** 错误信息描述。 **取值范围：** 不涉及。          |
| detail     | String           | **参数解释：** 错误详情。 **取值范围：** 不涉及。            |
| params     | Array of strings | **参数解释：** 错误参数列举。 **取值范围：** 列表长度\[0, 1\]。 |
| reason     | String           | **参数解释：** 错误原因。 **取值范围：** 不涉及。            |
| advice     | String           | **参数解释：** 建议。 **取值范围：** 不涉及。              |
   
**状态码：500**
表17响应Body参数 
| 参数         | 参数类型             | 描述                                        |
|:---|:---|:---|
| error_code | String           | **参数解释：** 错误码。 **取值范围：** 不涉及。             |
| error_msg  | String           | **参数解释：** 错误信息描述。 **取值范围：** 不涉及。          |
| detail     | String           | **参数解释：** 错误详情。 **取值范围：** 不涉及。            |
| params     | Array of strings | **参数解释：** 错误参数列举。 **取值范围：** 列表长度\[0, 1\]。 |
| reason     | String           | **参数解释：** 错误原因。 **取值范围：** 不涉及。            |
| advice     | String           | **参数解释：** 建议。 **取值范围：** 不涉及。              |
   
#### 请求示例
- 创建输入类型为"video_source"，输出类型为"webhook"，算法版本为1.1，没有任务启动参数，不保存作业模板的请求体
  ```
  /v2/{project_id}/services/{service_name}/tasks
  {
    "name" : "Test",
    "input" : {
      "type" : "video_source",
      "data" : [ {
        "video_source_id" : "xxxxxxx-xxxxxxx-xxxxxxx-xxxxx-xxxxxx"
      } ]
    },
    "output" : {
      "webhook" : {
        "url" : "http://test",
        "headers" : {
          "a" : "a"
        }
      }
    },
    "config" : {
      "common" : { }
    },
    "service_version" : "1.1",
    "is_saved_as_template" : false
  }
  ```
- 兼容IVA的老接口，采用此请求体
  ```
  /v2/{project_id}/services/{service_name}/tasks
  {
    "name" : "test-alg-819",
    "input" : {
      "type" : "url",
      "data" : [ {
        "url" : "https://iuwhediue-input.com",
        "index" : 0
      } ]
    },
    "output" : {
      "webhook" : {
        "url" : "https://iuwhediue-output.com",
        "headers" : {
          "AA" : "AA"
        }
      }
    },
    "config" : {
      "common" : {
        "viewpoint" : 1
      }
    },
    "service_version" : "3.0",
    "is_saved_as_template" : false,
    "resource_order_id" : "029b34a69efd48769215e429deff0cec"
  }
  ```
- 创建定时任务，若存在相邻两天前一天结束时间为23:59:00，第二天开始为00:00:00，则为跨天任务，保持运行中状态。
  ```
  /v2/{project_id}/services/{service_name}/tasks
  {
    "name" : "test-alg-819",
    "schedule" : {
      "type" : "weekly",
      "timezone" : "+08:00",
      "days_of_week" : [ 1, 2, 3, 4, 5, 6, 7 ],
      "periods" : [ [ ], [ ], [ ], [ ], [ {
        "begin_at" : "22:15:00",
        "end_at" : "23:59:00"
      } ], [ {
        "begin_at" : "00:00:00",
        "end_at" : "23:59:00"
      } ], [ {
        "begin_at" : "22:15:00",
        "end_at" : "23:59:00"
      } ] ]
    },
    "input" : {
      "type" : "url",
      "data" : [ {
        "url" : "https://iuwhediue-input.com",
        "index" : 0
      } ]
    },
    "output" : {
      "webhook" : {
        "url" : "https://iuwhediue-output.com",
        "headers" : {
          "AA" : "AA"
        }
      }
    },
    "config" : {
      "common" : {
        "viewpoint" : 1
      }
    },
    "service_version" : "3.0",
    "is_saved_as_template" : false,
    "resource_order_id" : "029b34a69efd48769215e429deff0cec"
  }
  ```
#### 响应示例
**状态码：200**
任务创建成功。
```
{
  "tasks" : [ {
    "id" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  } ]
}
```
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 200 | 任务创建成功。 |
| 400 | 请求错误。   |
| 500 | 内部错误。   |
   
