# 创建Flink作业Savepoint - CreateFlinkSavepoint
#### 功能介绍
为运行中的Flink作业触发Savepoint，用于保存作业当前状态。此接口为异步接口，响应仅表示快照创建请求已接收，快照实际生成状态可通过[查询Flink作业Savepoint列表](https://support.huaweicloud.com/api-aidatalake/ListFlinkSavepoint.html)接口查询。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-aidatalake/aidatalake_02_0003.html)。
#### URI
POST /v2/workspaces/{workspace_id}/flink-jobs/{job_id}/flink-savepoints
表1路径参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| workspace_id | 是    | String | **参数解释** ：工作空间ID，用于资源隔离。获取方法请参见[获取工作空间ID](https://support.huaweicloud.com/api-aidatalake/aidatalake_02_0044.html)。 **约束限制**：不涉及。 **取值范围**：只能由英文字母、数字及中划线组成，且长度为32\~36个字符。 **默认取值**：不涉及。 |
| job_id       | 是    | String | **参数解释** ：Flink作业ID，用于唯一标识一个Flink作业，可通过[查询Flink作业列表](https://support.huaweicloud.com/api-aidatalake/ListFlinkJobs.html)接口获取。 **约束限制**：不涉及。 **取值范围**：采用UUIDv7格式，固定36个字符。 **默认取值**：不涉及。   |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释** ：用户Token，用于接口认证鉴权，可通过调用[获取IAM用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口获取。 **约束限制**：不涉及。 **取值范围**：长度不超过65534个字符。 **默认取值**：不涉及。 |
   
表3请求Body参数 
| 参数                 | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| description        | 否    | String  | **参数解释**：作业快照的描述信息。 **约束限制**：不涉及。 **取值范围**：0\~512个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| format             | 否    | String  | **参数解释**：Savepoint存储格式。 **约束限制**：不涉及。 **取值范围**： - NATIVE：原生格式，兼容Flink内部状态。   - CANONICAL：通用格式，可跨版本使用。    **默认取值**：NATIVE。                                      |
| drain_mode_enabled | 否    | Boolean | **参数解释**：是否启用Drain模式。启用后，触发Savepoint前将先发送Watermark到所有算子以触发窗口计算完成，然后再保存状态快照。 **约束限制**：不涉及。 **取值范围**： - true：启用Drain模式。   - false：不启用Drain模式。    **默认取值**：false。 |
   
#### 响应参数
**状态码：201**
表4响应Body参数 
| 参数           | 参数类型   | 描述                                                                                                        |
|:---|:---|:---|
| savepoint_id | String | **参数解释**：Savepoint唯一标识。 **取值范围**：UUIDv7格式，固定36位，由英文小写字母、数字及中划线组成。 |
   
**状态码：400**
表5响应Body参数 
| 参数           | 参数类型   | 描述                                                                                         |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码，用于标识具体的错误类型。 **取值范围**：长度为1\~256个字符。   |
| error_msg    | String | **参数解释**：错误描述信息，用于说明错误原因。 **取值范围**：长度为1\~1024个字符。  |
| solution_msg | String | **参数解释**：解决建议，用于提供错误的解决方案。 **取值范围**：长度为0\~1024个字符。 |
   
**状态码：401**
表6响应Body参数 
| 参数           | 参数类型   | 描述                                                                                         |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码，用于标识具体的错误类型。 **取值范围**：长度为1\~256个字符。   |
| error_msg    | String | **参数解释**：错误描述信息，用于说明错误原因。 **取值范围**：长度为1\~1024个字符。  |
| solution_msg | String | **参数解释**：解决建议，用于提供错误的解决方案。 **取值范围**：长度为0\~1024个字符。 |
   
**状态码：403**
表7响应Body参数 
| 参数           | 参数类型   | 描述                                                                                         |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码，用于标识具体的错误类型。 **取值范围**：长度为1\~256个字符。   |
| error_msg    | String | **参数解释**：错误描述信息，用于说明错误原因。 **取值范围**：长度为1\~1024个字符。  |
| solution_msg | String | **参数解释**：解决建议，用于提供错误的解决方案。 **取值范围**：长度为0\~1024个字符。 |
   
**状态码：404**
表8响应Body参数 
| 参数           | 参数类型   | 描述                                                                                         |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码，用于标识具体的错误类型。 **取值范围**：长度为1\~256个字符。   |
| error_msg    | String | **参数解释**：错误描述信息，用于说明错误原因。 **取值范围**：长度为1\~1024个字符。  |
| solution_msg | String | **参数解释**：解决建议，用于提供错误的解决方案。 **取值范围**：长度为0\~1024个字符。 |
   
**状态码：500**
表9响应Body参数 
| 参数           | 参数类型   | 描述                                                                                         |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码，用于标识具体的错误类型。 **取值范围**：长度为1\~256个字符。   |
| error_msg    | String | **参数解释**：错误描述信息，用于说明错误原因。 **取值范围**：长度为1\~1024个字符。  |
| solution_msg | String | **参数解释**：解决建议，用于提供错误的解决方案。 **取值范围**：长度为0\~1024个字符。 |
   
#### 请求示例
为运行中的Flink作业创建一个Savepoint快照，使用NATIVE格式保存作业状态。
```
POST /v2/workspaces/{workspace_id}/flink-jobs/{job_id}/flink-savepoints
{
  "description" : "升级前备份",
  "format" : "NATIVE"
}
```
#### 响应示例
**状态码：201**
```
{
  "savepoint_id" : "019f68a2-5e11-xxxx-xxxx-6e670d65ab03"
}
```
**状态码：400**
```
{
  "error_code" : "AIDataLake.01011001",
  "error_msg" : "Invalid parameter",
  "solution_msg" : "Please check the input parameters according to the documentation."
}
```
**状态码：401**
```
{
  "error_code" : "AIDataLake.01011003",
  "error_msg" : "Auth Token not exists in header",
  "solution_msg" : "Please check if auth Token is included in the request header."
}
```
**状态码：403**
```
{
  "error_code" : "AIDataLake.01011005",
  "error_msg" : "Current account has no permission",
  "solution_msg" : "Please connect administrators to add permission."
}
```
**状态码：404**
```
{
  "error_code" : "AIDataLake.01051001",
  "error_msg" : "Flink job 019f609a-e90c-xxxx-xxxx-a4ec9018e7f2 does not exist",
  "solution_msg" : "Please check if Flink job 019f609a-e90c-xxxx-xxxx-a4ec9018e7f2 is entered correctly or has been deleted."
}
```
**状态码：500**
```
{
  "error_code" : "AIDataLake.01010001",
  "error_msg" : "Internal system error",
  "solution_msg" : "Contact operations for analysis."
}
```
#### 状态码
| 状态码 | 描述          |
|:---|:---|
| 201 | 请求下发成功。     |
| 400 | 请求参数错误。     |
| 401 | 认证失败。       |
| 403 | 权限不足。       |
| 404 | Flink作业不存在。 |
| 500 | 系统内部错误。     |
   
