# 查看已保存 SQL 的版本

列出一条已保存 SQL 记录的所有版本。使用响应中的 `version_id` 查看内容、修改草稿或定稿版本。

```text
POST https://moi.matrixorigin.cn/newmoi/workbook/version/list
```

## 调用前准备

准备个人访问令牌、工作区 ID 和 SQL 保存记录 ID。`$AI_STUDIO_API_KEY` 是个人访问令牌，用作 `X-API-Key` 请求头的值；`$WORKSPACE_ID` 是目标工作区 ID，用作 `X-Workspace-ID` 请求头的值。

下方示例中的 `$WORKBOOK_ID` 是要查看版本的 SQL 保存记录 ID。每次最多返回 `100` 个版本；未指定 `page_size` 时返回 `20` 个。响应中的 `next_page_token` 非空时，将该值原样填入下一次请求的 `page_token`；为空时说明已到最后一页。

## 请求体

| 字段 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| `workbook_id` | string | 是 | SQL 保存记录的 ID。 |
| `page_size` | integer | 否 | 每页数量，范围 `1` 至 `100`；不传时为 `20`。 |
| `page_token` | string | 否 | 下一页标记。 |

## 请求示例

```bash
curl -X POST "https://moi.matrixorigin.cn/newmoi/workbook/version/list" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H 'Content-Type: application/json' \
  -d "{
    \"workbook_id\": \"$WORKBOOK_ID\"
  }"
```

## 成功响应

`data.result` 为版本列表。`status` 为 `draft` 表示可编辑草稿，为 `finalize` 表示已定稿、只读。

```json
{
  "code": 200,
  "data": {
    "total": 1,
    "result": [
      {
        "id": "version-123",
        "name": "v1",
        "status": "draft"
      }
    ],
    "next_page_token": ""
  }
}
```

响应字段如下。

本文中，字段路径中的 `[]` 表示数组中的每一项。例如，`items[].name` 表示 `items` 数组中每一项的 `name` 字段。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `data.total` | integer | 当前 SQL 保存记录的版本总数。 |
| `data.result` | array | 版本列表。 |
| `data.result[].id` | string | 版本 ID。 |
| `data.result[].name` | string | 版本名称。 |
| `data.result[].status` | string | 版本状态：`draft` 表示可编辑草稿；`finalize` 表示已定稿、只读。 |
| `data.next_page_token` | string | 下一页标记；为空时没有下一页。 |

## 错误响应

```json
{
  "code": 404,
  "message": "SQL 工作簿不存在"
}
```

### 常见 HTTP 错误

```{list-table}
:header-rows: 1
:widths: 15 45 40

* - HTTP 状态码
  - 常见原因
  - 建议操作
* - `400`
  - SQL 保存记录 ID 或分页参数无效。
  - 检查 `workbook_id` 和 `page_size`。
* - `401`
  - 个人访问令牌缺失或无效。
  - 检查个人访问令牌和工作区 ID。
* - `403`
  - 当前访问凭据没有读取 SQL 保存记录的权限。
  - 使用有权限的访问凭据，或联系管理员授权。
* - `404`
  - SQL 保存记录不存在。
  - 检查 `workbook_id`。
* - `500`
  - 服务无法读取版本列表。
  - 记录请求时间和错误信息后重试。
```

## 后续操作

保存目标项的标识，再[查看已保存 SQL 的版本内容](get-workbook.md)。
