# 删除 Catalog

删除指定 Catalog。删除不可逆；应先查询引用并处理下级对象。

```text
POST https://moi.matrixorigin.cn/newmoi/catalog/delete
```

## 调用前准备

先[查询 Catalog 引用](list-catalog-references.md)并处理下级对象，再[查询 Catalog 列表](list-catalogs.md)确认目标 Catalog ID。准备有目标工作区访问权限的个人访问令牌、目标工作区 ID 和 Catalog ID。

下方示例使用：

- `$AI_STUDIO_API_KEY`：实际个人访问令牌，通过 `X-API-Key` Header 传递。
- `$WORKSPACE_ID`：目标工作区 ID，通过 `X-Workspace-ID` Header 传递。
- `$CATALOG_ID`：要删除的 Catalog ID。

## 请求体

| 参数 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| `id` | integer | 是 | 要删除的 Catalog ID。 |

## 请求示例

```bash
curl -X POST "https://moi.matrixorigin.cn/newmoi/catalog/delete" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H 'Content-Type: application/json' \
  -d '{
    "id": '"$CATALOG_ID"'
  }'
```

## 成功响应

成功时返回 `200`，`data` 为 `null`。

```json
{
  "code": "OK",
  "msg": "OK",
  "data": null
}
```

响应字段如下。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `code` | string | 成功时为 `OK`。 |
| `msg` | string | 成功时为 `OK`。 |
| `data` | null | 删除成功时固定为 `null`。 |

## 错误响应

```json
{
  "code": "ErrCatalogHasChildren",
  "msg": "Catalog 包含下级对象",
  "data": null
}
```

### 常见 HTTP 错误

```{list-table}
:header-rows: 1
:widths: 12 22 32 34

* - HTTP 状态码
  - 错误代码
  - 常见原因
  - 建议操作
* - `400`
  - `ErrParamInvalid`
  - 请求体或 Catalog ID 无效。
  - 使用列表返回的正整数 ID。
* - `403`
  - `ErrForbidden`
  - 当前身份没有删除权限。
  - 请求授予 `catalog.delete` 权限。
* - `409`
  - `ErrReadonlySystemCatalog`
  - 目标是只读系统 Catalog。
  - 不要删除该 Catalog。
* - `409`
  - `ErrCatalogHasChildren`
  - Catalog 仍包含下级对象。
  - 先删除或迁移下级对象。
* - `409`
  - `ErrKnowledgeBaseCatalogInUse`
  - Catalog 正被知识库使用。
  - 处理知识库依赖后再删除。
* - `500`
  - `ErrServer`
  - 服务端未能删除 Catalog。
  - 稍后重试。
```

## 后续操作

[查询文件产物](list-file-artifacts.md)，确认目标已不再出现。
