# View workflow operator details

View the directory definition of an operator. This can be used to confirm whether the operator is suitable for the workflow and to obtain the operator ID required for subsequent operations.

```text
GET https://moi.matrixorigin.cn/newmoi/workflow/v2/workitems/catalog/$NODE_ID
```

## Preparation before calling

First [query operator list](list-operators.md) to confirm the operator you want to view. Prepare the personal access token, target workspace ID, and operator ID that have access to the target workspace.

The example below uses:

- `$AI_STUDIO_API_KEY`: The actual personal access token, passed through the `X-API-Key` Header.
- `$WORKSPACE_ID`: Target workspace ID, passed through `X-Workspace-ID` Header.
- `$NODE_ID`: The operator ID to be viewed is obtained from the [Query Operator List](list-operators.md) response and written to the request address.

## Call example

```bash
curl "https://moi.matrixorigin.cn/newmoi/workflow/v2/workitems/catalog/$NODE_ID" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID"
```

## Path parameters

| Parameters | Type | Is it required | Description |
| --- | --- | --- | --- |
| `node_id` | string | Yes | The operator ID to be viewed. |

## Successful response


The response returns the directory definition of the operator. Different types of operators will return different configuration fields, so please configure subsequent calls according to the response content of the target operator.

```json
{
  "code": "OK",
  "msg": "OK",
  "data": {
    "node_id": "moi:data.sql.process",
    "display_name": "SQL 处理"
  }
}
```

The response fields are as follows.

| Field | Type | Description |
| --- | --- | --- |
| `code` | string | `OK` on success. |
| `msg` | string | `OK` on success. |
| `data` | object | Operator directory definition; fields vary with operator type. |
| `data.node_id` | string | Operator ID. |
| `data.display_name` | string | Operator display name; returned if there is a value. |
| `data.short_description` | string | Brief description of the operator; returned if there is a value. |
| `data.category` | string | The category to which the operator belongs; returned if there is a value. |
| `data.tags` | string[] | Operator label; returned if there is a value. |
| `data.source` | string | Operator source; returned if there is a value. |
| `data.provider` | string | Operator provider; returned if there is a value. |
| `data.preferred_version` | string | Recommended version; returned if there is a value. |
| `data.visibility` | string | Operator visibility; returned if there is a value. |
| `data.versions` | array | Available version definitions, arranged from newest to oldest; returned if there is a value. |
| `data.versions[].version` | string | Version number; returned if there is a value. |
| `data.versions[].description` | string | Version description; returned if there is a value. |
| `data.versions[].visibility` | string | Version visibility; returned if there is a value. |
| `data.versions[].stream` | boolean | Whether this version is a streaming operator. |
| `data.versions[].source` | string | The source of this version; returned if there is a value. |
| `data.versions[].provider` | string | The provider of this version; returned if there is a value. |
| `data.versions[].input_schema` | string | The serialized content of the input schema; returned if there is a value. |
| `data.versions[].output_schema` | string | Output the serialized content of schema; return if there is a value. |
| `data.versions[].data_flow` | object | Data flow convention; returned when there is a value. |
| `data.versions[].input_ui_schema` | object | Input interface definition; returned if there is a value. |
| `data.versions[].output_ui_schema` | object | Output interface definition; returned if there is a value. |
| `data.versions[].i18n` | object | Multi-language content, with language identifier as key; returned if there is a value. |
| `data.versions[].i18n_default_locale` | string | Default language identifier; returned if there is a value. |
| `data.versions[].input` | object | Normalized input contract; returned if there is a value. |
| `data.versions[].output` | object | Normalized output contract; returned if there is a value. |
| `data.versions[].agent_context` | object | The context definition of the operator for the agent; returned when there is a value. |
| `data.versions[].user_id` | string | The user ID that created this version; returned if there is a value. |

In this document, `[]` after a type denotes an array. In a field path, `[]` denotes each item in an array; for example, `items[].name` is the `name` field of each item in the `items` array.


## 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>
</dl>
```
:::
:::{div} mo-api-split-aside
```{raw} html
<p class="mo-api-example-label">Error response example</p>
```
```json
{
  "code": "ErrParamInvalid",
  "msg": "请求参数无效",
  "data": null
}
```
:::
::::
## Follow-up operations

When returning the list [query operator list](list-operators.md).
