# Set node effective version

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

Switches the effective revision of the output block of the specified processing node.

```text
POST https://moi.matrixorigin.cn/newmoi/lineage/artifacts/{artifact_id}/nodes/{node_id}/effective-revisions
```

## Preparation before calling

Prepare a personal access token and target workspace ID that has access to the target workspace.


## Request body

::::{div} mo-api-split
:::{div} mo-api-split-main

```{raw} html
<dl class="mo-api-fields">
  <div class="mo-api-field"><dt><code>switches</code><span class="mo-api-field__type">array</span><span class="mo-api-field__required">Required</span></dt><dd>The output block and target revision to switch.</dd></div>
  <div class="mo-api-field"><dt><code>switches[].block_id</code><span class="mo-api-field__type">string</span><span class="mo-api-field__required">Required</span></dt><dd>Output block ID.</dd></div>
  <div class="mo-api-field"><dt><code>switches[].effective_revision_id</code><span class="mo-api-field__type">string</span></dt><dd>The revision ID to be made effective.</dd></div>
  <div class="mo-api-field"><dt><code>switches[].use_original</code><span class="mo-api-field__type">boolean</span></dt><dd>Set the original content as the effective content.</dd></div>
  <div class="mo-api-field"><dt><code>expected_effective_set_version</code><span class="mo-api-field__type">integer</span></dt><dd>The expected effective revision set version.</dd></div>
</dl>
```

:::
:::{div} mo-api-split-aside

```{raw} html
<p class="mo-api-example-label">Request example</p>
```

```bash
curl -X POST "https://moi.matrixorigin.cn/newmoi/lineage/artifacts/$ARTIFACT_ID/nodes/$NODE_ID/effective-revisions" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "switches": [
      {"block_id": "block-001", "effective_revision_id": "rev-002"}
    ]
  }'
```

:::
::::

## Successful response

When the request is successful, the data of this operation is returned. Just because the write or run request has been accepted does not mean that the subsequent processing has been completed; please confirm the result based on the return status or subsequent query.


The response fields are as follows.

::::{div} mo-api-split
:::{div} mo-api-split-main

```{raw} html
<dl class="mo-api-fields">
  <div class="mo-api-field"><dt><code>data.artifact_id</code><span class="mo-api-field__type">string</span></dt><dd>Product ID.</dd></div>
  <div class="mo-api-field"><dt><code>data.node_id</code><span class="mo-api-field__type">string</span></dt><dd>Node ID.</dd></div>
  <div class="mo-api-field"><dt><code>data.effective_set_version</code><span class="mo-api-field__type">integer</span></dt><dd>The effective revision set version after switching.</dd></div>
</dl>
```

:::
:::{div} mo-api-split-aside

```{raw} html
<p class="mo-api-example-label">Successful response example</p>
```

```json
{
  "code": "OK",
  "msg": "OK",
  "data": {"artifact_id": "art-001", "node_id": "node-001", "effective_set_version": 4}
}
```

:::
::::

## Error response

::::{div} mo-api-split
:::{div} mo-api-split-main

```{raw} html
<dl class="mo-api-fields">
  <div class="mo-api-field"><dt><code>code</code><span class="mo-api-field__type">string</span></dt><dd>Error code.</dd></div>
  <div class="mo-api-field"><dt><code>msg</code><span class="mo-api-field__type">string</span></dt><dd>Readable error message.</dd></div>
  <div class="mo-api-field"><dt><code>data</code><span class="mo-api-field__type">null</span></dt><dd>`null` in an error response.</dd></div>
</dl>
```

:::
:::{div} mo-api-split-aside

```{raw} html
<p class="mo-api-example-label">Error response example</p>
```

```json
{
  "code": "ErrParamInvalid",
  "msg": "请求参数无效",
  "data": null
}
```

:::
::::
