# View custom operator details

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

View the configuration of a custom operator. This allows you to confirm implementation, input and output definitions, and enablement status.

```text
GET https://moi.matrixorigin.cn/newmoi/workflow/v2/custom-operators/$OPERATOR_ID
```

## Preparation before calling

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


## Request parameters

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

```{raw} html
<dl class="mo-api-fields">

</dl>
```

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

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

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

:::
::::

## Successful response

The response returns operator configuration. Input, output, and binding configurations are returned as serialized content and can be used to configure workflows or test inputs as defined by the fields within them.


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>code</code><span class="mo-api-field__type">string</span></dt><dd>OK on success.</dd></div>
  <div class="mo-api-field"><dt><code>msg</code><span class="mo-api-field__type">string</span></dt><dd>OK on success.</dd></div>
  <div class="mo-api-field"><dt><code>data.id</code><span class="mo-api-field__type">integer</span></dt><dd>Custom operator ID.</dd></div>
  <div class="mo-api-field"><dt><code>data.node_id</code><span class="mo-api-field__type">string</span></dt><dd>Operator ID in the workflow.</dd></div>
  <div class="mo-api-field"><dt><code>data.name</code><span class="mo-api-field__type">string</span></dt><dd>Operator name.</dd></div>
  <div class="mo-api-field"><dt><code>data.identifier</code><span class="mo-api-field__type">string</span></dt><dd>Operator ID.</dd></div>
  <div class="mo-api-field"><dt><code>data.description</code><span class="mo-api-field__type">string</span></dt><dd>Operator description; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.version</code><span class="mo-api-field__type">string</span></dt><dd>Operator version; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.language</code><span class="mo-api-field__type">integer</span></dt><dd>Implements the numerical encoding of the language; returns if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.kind</code><span class="mo-api-field__type">integer</span></dt><dd>Numeric encoding of the operator type; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.handler</code><span class="mo-api-field__type">string</span></dt><dd>Processing function; returns if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.isolation_level</code><span class="mo-api-field__type">string</span></dt><dd>Isolation configuration; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.source_file_id</code><span class="mo-api-field__type">string</span></dt><dd>Source file ID; returned when created using a source file.</dd></div>
  <div class="mo-api-field"><dt><code>data.input_schema</code><span class="mo-api-field__type">string</span></dt><dd>Enter the defined serialization content.</dd></div>
  <div class="mo-api-field"><dt><code>data.output_schema</code><span class="mo-api-field__type">string</span></dt><dd>Output the defined serialized content.</dd></div>
  <div class="mo-api-field"><dt><code>data.binding_config</code><span class="mo-api-field__type">string</span></dt><dd>The serialized content of the binding configuration; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.created_by</code><span class="mo-api-field__type">string</span></dt><dd>Creator ID; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.updated_by</code><span class="mo-api-field__type">string</span></dt><dd>Last updater ID; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.created_at</code><span class="mo-api-field__type">integer</span></dt><dd>Creation timestamp; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.updated_at</code><span class="mo-api-field__type">integer</span></dt><dd>Last updated timestamp; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.base_node_id</code><span class="mo-api-field__type">string</span></dt><dd>The basic operator associated with the built-in binding type; returned when there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.base_node_version</code><span class="mo-api-field__type">string</span></dt><dd>The basic operator version associated with the built-in binding type; returned when there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.catalog_id</code><span class="mo-api-field__type">integer</span></dt><dd>The associated Catalog ID; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.database_id</code><span class="mo-api-field__type">integer</span></dt><dd>The associated database ID; returned if there is a value.</dd></div>
  <div class="mo-api-field"><dt><code>data.enabled</code><span class="mo-api-field__type">boolean</span></dt><dd>Whether the operator is enabled.</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": {
    "id": 123,
    "node_id": "moi:custom.operator:workspace:text_counter",
    "name": "文本计数",
    "identifier": "text_counter",
    "description": "统计输入文本的字符数。",
    "version": "v1",
    "input_schema": "{\"type\":\"object\"}",
    "output_schema": "{\"type\":\"object\"}",
    "enabled": true
  }
}
```

:::
::::

## 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
}
```

:::
::::

## Follow-up operations

When modification is required, [Update custom operator](update-custom-operator.md). When returning the list [query custom operator list](list-custom-operators.md).
