
# 创建脚本 - CreateScript
#### 功能介绍
创建一个新脚本，当前支持的脚本类型有DLI SQL、Flink SQL、RDS SQL、Spark SQL、Hive SQL、DWS SQL、Shell、Presto SQL、ClickHouse SQL、HetuEngine SQL、Python、Spark Python和Impala SQL。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DGC/doc?api=CreateScript)中调试该接口，支持自动认证鉴权。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-dataartsstudio/abcd.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
 
#### URI
- URI格式 POST /v1/{project_id}/scripts
  
 
- 参数说明
  表1URI参数说明 
  | 参数名        | 是否必选 | 参数类型   | 说明                                                                                                    |
  |:---|:---|:---|:---|
  | project_id | 是    | String | 项目编号，获取方法请参见[项目ID和账号ID](https://support.huaweicloud.com/api-dataartsstudio/projectid_accountid.html)。 |
     
  
#### 请求参数
表2请求Header参数 
| 参数名       | 是否必选 | 参数类型   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| workspace | 否    | String | 工作空间id。获取方法请参见[实例ID和工作空间ID](https://support.huaweicloud.com/api-dataartsstudio/dataartsstudio_02_0350.html)。 - 如果不设置该参数，默认查询default工作空间下的数据。  - 如果需要查询其他工作空间的数据，需要带上该消息头。 说明： - 多个DataArts Studio实例需要指定工作空间。  - 当工作空间里面没有default工作空间时，工作空间为必填参数，否则会报错。      |
   
表3Script参数说明 
| 参数名            | 是否必选 | 参数类型                  | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| name           | 是    | String                | 脚本名称，只能包含五种字符：英文字母、数字、中文、中划线和点号，且长度小于等于128个字符。脚本名称不能重复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| type           | 是    | String                | 脚本类型，包含： - FlinkSQL  - DLISQL  - SparkSQL  - HiveSQL  - DWSSQL  - RDSSQL  - Shell  - PRESTO  - ClickHouseSQL  - HetuEngineSQL  - PYTHON  - ImpalaSQL  - SparkPython   |
| content        | 是    | String                | 脚本内容，最大支持4MB。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| directory      | 否    | String                | 脚本所在目录路径。 通过DataArts Studio管理控制台 \> 数据开发，左侧列表选择"数据开发 \> 脚本开发"。在脚本的目录树上，可以查看到当前已经创建的目录，默认在根目录/。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| connectionName | 否    | String                | 脚本关联的连接名称。当type参数值为DLISQL、Flink SQL、SparkSQL、HiveSQL、DWSSQL、Shell、PRESTO、ClickHouseSQL、HetuEngineSQL、RDSSQL、ImpalaSQL、PYTHON、SparkPython其中之一时，这个参数是必选的。默认值为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| database       | 否    | String                | 执行SQL语句所关联的数据库，当type参数值为DLISQL、SparkSQL、HiveSQL、DWSSQL、PRESTO、ClickHouseSQL、ImpalaSQL、HetuEngineSQL、RDSSQL其中之一时，才支持此参数。 - type为DLI SQL时，可以通过[查看所有数据库](https://support.huaweicloud.com/api-dli/dli_02_0029.html)接口获取数据库信息。  - type为其他类型的时候，必选。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| queueName      | 是    | String                | DLI资源队列名称，当type参数值为DLI SQL时，才支持此参数。可以通过[查询队列列表接口](https://support.huaweicloud.com/api-dli/dli_02_0196.html)获取队列信息。默认值为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| configuration  | 否    | map \<String,Object\> | 用户定义适用于此作业的配置参数，当type参数值为DLI SQL时，才支持此参数。当前支持的配置项列表请参考[conf参数说明](https://support.huaweicloud.com/api-dli/dli_02_0102.html)。默认值为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| description    | 否    | String                | 描述，长度不能超过255个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| owner          | 否    | String                | 责任人名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| targetStatus   | 否    | String                | 在开启审批开关后，需要填写该字段。表示创建脚本的目标状态，有三种状态：SAVED、SUBMITTED和PRODUCTION，分别表示脚本创建后是保存态，提交态，生产态。 - 保存态表示脚本仅保存，无法调度运行，需要提交并审核通过后才能运行。  - 提交态表示脚本保存后会自动提交，需要审核通过才能运行。  - 生产态表示脚本跳过审批环节，创建后可以直接运行。注意：只有工作空间的管理员用户才能创建生产态的脚本。 审批开关的配置请参见[审批中心](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1820.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| approvers      | 否    | List\<JobApprover\>   | 在开启审批开关后，需要填写该字段，表示脚本审批人，参考[表4]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   
 表4审批人属性说明 
| 参数名          | 是否必选 | 参数类型   | 说明     |
|:---|:---|:---|:---|
| approverName | 是    | String | 审批人名称。 |
   
#### 响应参数
无
#### 请求示例
创建一个脚本名称为echoTimeShell的脚本，脚本类型为Shell，脚本内容为echo a，脚本关联的连接名称为con。
```
POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts
{
    "name": "echoTimeShell",
    "type": "Shell",
    "content": "echo a",
    "queueName": "default",
    "connectionName": "con"
}
```
开启审批开关情况下，创建一个脚本。
```
POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts
{
    "name": "echoTimeShell",
    "type": "Shell",
    "content": "echo a",
    "queueName": "default",
    "connectionName": "con",
    "targetStatus":"SUBMITTED",
    "approvers": [
      {
        "approverName": "userName1"
      },
      {
        "approverName": "userName2"
      }
    ]
}
```
#### 响应示例
- 成功响应 HTTP状态码 204
  
- 失败响应 HTTP状态码 400
  ```
  {
      "error_code":"DLF.6247",
      "error_msg":"The script type is not specified."
  }
  ```
  
 
#### 状态码
状态码请参见[状态码](https://support.huaweicloud.com/api-dataartsstudio/dataartsstudio_02_0310.html)。
#### 创建Python脚本响应体样例
```
POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/scripts
{
    "configuration":{
        "pythonVersion":"Python 3", // 指定Python版本，Python 3或Python 2
        "inputs":"", // 指定输入参数
        "arguments":"" // 指定交互式参数
    },
    "connectionName":"mrs-host", // 指定数据连接
    "content":"## PYTHON \n  print('hello world')", // 指定python脚本内容
    "description":"", // 脚本描述
    "name":"zhangsan-test", // 脚本名称
    "owner":"zhangsan", // 脚本责任人
    "templateVersion":"1.0", // 当前版本
    "type":"PYTHON", // 脚本类型
    "approvers": [   // 指定审批人，可选字段，开启审批模式下使用
      {
        "approverName": "userName1"
      },
      {
        "approverName": "userName2"
      }
    ]
}
```
