# 创建脚本 - CreateScripts
#### 功能介绍
创建作业脚本：自定义脚本
- 脚本有标签属性，表示是高危脚本。创建时候不需要对脚本进行是否是高危的二次校验。
- 进行租户隔离；北向接口创建的脚本，审批人字段不填写，默认不需要审批。
#### 接口约束
- 脚本名称：同一租户下，脚本名称不能重复，最大字符64个字符，支持中文+字母+数字+下划线。
- 脚本内容最大100kb。
- 脚本参数个数最多20个。
- 脚本描述：最大256个字符。
- 单个参数的参数名称 64个字符，只支持字母+数字+下划线。
- 单个参数的值最大1024个字符，正则表达式如下：\^((?!.{2,})\[a-zA-Z0-9_-/.\*\\x20?:",=+@\\\[{\]}\])\*$。
- 审批人最多支持5人。
- 脚本输出的日志总量只支持1MB。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/COC/doc?api=CreateScripts)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-coc/coc_api_06.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                 | 访问级别  | 资源类型（\*为必须） | 条件键 | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | coc:document:create | Write | document \* | -   | -  | -      |
     
#### URI
POST /v1/job/scripts
#### 请求参数
表1请求Header参数 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                                              |
|:---|:---|:---|:---|
| X-Auth-Token   | 是    | String | **参数解释：** 租户token。 **约束限制：** 从IAM获取的租户token。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                      |
| x-project-id   | 否    | String | **参数解释：** 项目ID。 **约束限制：** region对应的项目ID。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                          |
| x-user-profile | 否    | String | **参数解释：** IAM5.0用户信息。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                              |
| X-Language     | 否    | String | **参数解释：** 国际化标记，zh-cn表示中文，en-us或不传表示英文。 **约束限制：** zh-cn表示中文，en-us或不传表示英文。 **取值范围：** zh-cn/en-us。 **默认取值：** 不涉及。 |
   
表2请求Body参数 
| 参数                    | 是否必选 | 参数类型                                                                                                         | 描述                                                                                                                                                  |
|:---|:---|:---|:---|
| name                  | 是    | String                                                                                                       | **参数解释：** 脚本名称。 **约束限制：** 只能包含中文、英文、数字、下划线。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                           |
| properties            | 是    | [ScriptPropertiesModel] object   | **参数解释：** 脚本属性。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                        |
| description           | 是    | String                                                                                                       | **参数解释：** 脚本描述。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                        |
| type                  | 是    | String                                                                                                       | **参数解释：** 脚本类型。 对于脚本后缀： - SHELL：后缀为.sh。 - PYTHON：后缀为.py。 - BAT：后缀为.bat。 **约束限制：** 值只能为：SHELL、PYTHON、BAT。 **取值范围：** SHELL、PYTHON、BAT。 **默认取值：** 不涉及。 |
| content               | 是    | String                                                                                                       | **参数解释：** 脚本内容。 **约束限制：** 对应语言的脚本内容。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                  |
| enterprise_project_id | 否    | String                                                                                                       | **参数解释：** 企业项目ID，默认为：0。 **约束限制：** 真实的企业项目ID。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                          |
| script_params         | 否    | Array of [ScriptParamDefine] objects | **参数解释：** 脚本入参。 **约束限制：** 参数个数：0-20个。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                 |
   
 表3ScriptPropertiesModel 
| 参数         | 是否必选 | 参数类型                                                                                               | 描述                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| risk_level | 是    | String                                                                                             | **参数解释：** 风险等级。 **约束限制：** - LOW：低风险。 - MEDIUM：中风险。 - HIGH：高风险。 **取值范围：** LOW/MEDIUM/HIGH。 **默认取值：** 不涉及。                                                                                                                                                                                                         |
| version    | 是    | String                                                                                             | **参数解释：** 脚本版本号。 **约束限制：** 格式：1.0.0 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                |
| reviewers  | 否    | Array of [ReviewerInfo] objects | **参数解释：** 审批人，不填写不需要审批。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                             |
| protocol   | 否    | String                                                                                             | **参数解释：** 审批消息通知协议，用于通知审批人。 **约束限制：** - DEFAULT：默认。 - SMS：短信。 - EMAIL：邮件。 - DING_TALK：钉钉。 - WE_LINK：welink。 - WECHAT：微信。 - CALLNOTIFY：语言。 - NOT_TO_NOTIFY：不通知。 **取值范围：** - DEFAULT：默认。 - SMS：短信。 - EMAIL：邮件。 - DING_TALK：钉钉。 - WE_LINK：welink。 - WECHAT：微信。 - CALLNOTIFY：语言。 - NOT_TO_NOTIFY：不通知。 **默认取值：** 不涉及。 |
   
 表4ReviewerInfo 
| 参数            | 是否必选 | 参数类型   | 描述                                                                         |
|:---|:---|:---|:---|
| reviewer_name | 是    | String | **参数解释：** 审批人名称（IAM用户名）。 **约束限制：** IAM用户名。 **取值范围：** 不涉及。 **默认取值：** 不涉及。   |
| reviewer_id   | 是    | String | **参数解释：** 审批人ID（IAM用户Id）。 **约束限制：** IAM用户Id。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
   
 表5ScriptParamDefine 
| 参数                | 是否必选 | 参数类型    | 描述                                                                                                                                  |
|:---|:---|:---|:---|
| param_name        | 是    | String  | **参数解释：** 参数名。 **约束限制：** 参数名仅支持字母、数字以及下划线。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                            |
| param_value       | 是    | String  | **参数解释：** 参数值。 **约束限制：** - 参数长度为1-4096位。 - 可以包含大写字母、小写字母、数字及特殊字符(_-/.\* ?:",=+@#\[{\]})。 - 禁止出现连续'.'。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
| param_description | 是    | String  | **参数解释：** 参数描述。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                        |
| param_order       | 是    | Integer | **参数解释：** 参数顺序。【已废弃】该参数已废弃，传入该参数不会生效。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                  |
| sensitive         | 是    | Boolean | **参数解释：** 是否是敏感参数。 **约束限制：** true/false。 **取值范围：** true/false。 **默认取值：** 不涉及。                                                       |
   
#### 响应参数
**状态码：200**
表6响应Body参数 
| 参数   | 参数类型   | 描述                                       |
|:---|:---|:---|
| data | String | **参数解释：** 创建脚本，系统返回的脚本ID。 **取值范围：** 不涉及。 |
   
**状态码：400**
表7响应Body参数 
| 参数         | 参数类型   | 描述                                 |
|:---|:---|:---|
| error_code | String | **参数解释：** 错误码。 **取值范围：** 参见错误码章节。  |
| error_msg  | String | **参数解释：** 错误描述。 **取值范围：** 参见错误码章节。 |
   
#### 请求示例
创建一个SHELL脚本，审批消息通过微信通知审批人。
```
POST https://{Endpoint}/v1/job/scripts
{
  "type" : "SHELL",
  "content" : "echo ${value}",
  "name" : "09101112",
  "description" : "实例脚本",
  "properties" : {
    "risk_level" : "HIGH",
    "version" : "1.0.0",
    "reviewers" : [ {
      "reviewer_name" : "test",
      "reviewer_id" : "7a8513cd87b7448283xxxxxxxxx"
    } ],
    "protocol" : "WECHAT"
  },
  "script_params" : [ {
    "param_name" : "a",
    "param_value" : "string",
    "param_description" : "string",
    "param_order" : 1,
    "sensitive" : true
  } ]
}
```
#### 响应示例
**状态码：200**
创建的脚本uuid。
更多状态码请参考[状态码](https://support.huaweicloud.com/api-coc/coc_api_05_03.html)。
```
{
  "data" : "SC2023102521xxxxxxxxxx"
}
```
**状态码：400**
包含错误信息。
更多状态码请参考[状态码](https://support.huaweicloud.com/api-coc/coc_api_05_03.html)。
```
{
  "error_code" : "COC.00040701",
  "error_msg" : "script_params size must be between 0 and 50"
}
```
#### 状态码
| 状态码 | 描述                                                                                    |
|:---|:---|
| 200 | 创建的脚本uuid。 更多状态码请参考[状态码](https://support.huaweicloud.com/api-coc/coc_api_05_03.html)。 |
| 400 | 包含错误信息。 更多状态码请参考[状态码](https://support.huaweicloud.com/api-coc/coc_api_05_03.html)。    |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-coc/ErrorCode.html)。
