# 使用指定输出版本重新运行处理节点

```{raw} html
<div class="mo-api-page-show-toc" aria-hidden="true"></div>
```

创建指定产物节点的重跑计划与分支。当前接口只完成创建，不自动启动执行。

```text
POST https://api.moi.matrixorigin.cn/v5/lineage/artifacts/{artifact_id}/nodes/{node_id}/output-emissions/{target_output_emission_id}/rerun-with-revisions
```

## 调用前准备

准备有目标工作区访问权限的[个人访问令牌](../../../../../guides/genesis/api-keys.md#创建和管理个人访问令牌)和[目标工作区 ID](../../../../../guides/ai-studio/resource-center/workspace.md#复制工作区-id)。

## 请求示例

示例中的凭据和资源标识需替换为当前调用者的实际值。

```bash
curl -X POST "https://api.moi.matrixorigin.cn/v5/lineage/artifacts/$ARTIFACT_ID/nodes/$NODE_ID/output-emissions/$TARGET_OUTPUT_EMISSION_ID/rerun-with-revisions" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "mode": "rerun_downstream_with_revisions",
  "source_effective_set_version": 4,
  "selected_revisions_json": {
    "block-001": {
      "revision_id": "rev-002"
    }
  }
}'
```

## 路径参数

| 参数 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| `artifact_id` | string | 是 | 根资产 ID 与源运行 ID 组成的复合标识，作为一个路径段编码。 |
| `node_id` | string | 是 | 完整节点路径，例如 root.prepare。 |
| `target_output_emission_id` | string | 是 | 目标输出发射 ID。 |

artifact_id 是根资产 ID 与源运行 ID 组成的复合标识，例如 asset-001:case-001；将完整值作为一个路径段编码。node_id 使用完整节点路径，例如 root.prepare，不能替换为任意展示名称。

## 请求体

| 字段 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| `mode` | string 或 null | 否 | 重新运行模式；填写时只能为 rerun_downstream_with_revisions。 |
| `source_effective_set_version` | integer 或 null | 否 | 来源生效集合版本记录，不执行当前 head 版本比较。 |
| `selected_revisions_json` | 任意 JSON | 是 | 所选修订的合法 JSON 值，当前尚未形成执行消费闭环。 |

selected_revisions_json 必须出现，可提交任意合法 JSON 值，包括对象、数组、标量或 null；不要把 JSON 对象再编码为字符串来假定完成修订选择。当前入口只检查 JSON 有效性并保存选择，实际重跑输入尚未消费这组修订，不能保证所选修订已用于执行。

source_effective_set_version 当前只作为记录值，不与最新生效版本比较。所选 emission 仍需属于目标节点，但该参数不能防止使用过期修订。

## 成功响应

请求成功时返回 HTTP 201，响应如下。

HTTP 201 表示已创建处于 initializing 状态的重跑计划和分支，尚未启动执行。当前公开调用链没有针对该已创建分支的完整启动入口；不能将本次创建解释为已开始重跑。

```json
{
  "artifact_id": "asset-001:case-001",
  "node_id": "root.prepare",
  "node_execution_id": "",
  "rerun_id": "",
  "branch_id": "",
  "case_id": "",
  "status": "initializing"
}
```

响应字段如下。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `artifact_id` | string | 复合产物标识。 |
| `node_id` | string | 完整节点路径。 |
| `node_execution_id` | string | 节点执行ID。 |
| `rerun_id` | string | 重跑计划ID。 |
| `branch_id` | string | 重跑分支ID。 |
| `case_id` | string | 运行ID。 |
| `status` | string | 状态；固定为 "initializing"。 |

## 错误响应

:::::::{div} mo-api-tabs mo-api-response-tabs
::::::{tab-set}
:::::{tab-item} 响应示例
```json
{
  "code": "ErrParamInvalid",
  "msg": "请求参数无效",
  "data": null
}
```
:::::
:::::{tab-item} 字段说明
| 字段 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| `code` | string | 否 | 错误代码。 |
| `msg` | string | 否 | 可读错误信息。 |
| `data` | null | 否 | 错误响应中为 null。 |
:::::
::::::
:::::::

## 后续操作

使用返回的 rerun_id 查询已创建分支。当前没有针对该分支的完整公开启动闭环；不要再次创建来代替启动。
