> Source: https://wexa.ai/docs/connectors/get-om-connection-form

# get-om-connection-form

Read a data source's connection form, as the console's Data Sources wizard shows it. Name the source by its `service_type` from [`list-om-catalog`](/docs/connectors/list-om-catalog). Needs the `fabric:orchestrate.read` grant.

The shape of `result` for `get-om-connection-form` is not recorded here: it was not captured against a live deployment. The fields differ from one source to the next. Call it once and read what comes back rather than assuming a shape.

**Get a data source's form**

**Wexa MCP server**

```bash
curl -sS -X POST https://fabric.wexa.ai/mcp/$FABRIC_PROJECT_ID \
  -H "authorization: Bearer $FABRIC_API_KEY" \
  -H "Mcp-Session-Id: $MCP_SESSION_ID" \
  -H "content-type: application/json" -H "accept: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get-om-connection-form","arguments":{"service_type":"Snowflake"}}}'
```

**REST API**

```bash
curl -sS https://fabric.wexa.ai/v1/get-om-connection-form \
  -H "authorization: Bearer $FABRIC_API_KEY" \
  -H "content-type: application/json" \
  -d '{"service_type":"Snowflake"}'
```

**TypeScript SDK**

```ts
import { Fabric } from '@wexa-fabric/sdk'

const fabric = new Fabric()
const result = await fabric.getOmConnectionForm({
  service_type: 'Snowflake'
})
```

**Python SDK**

```python
from wexa import Fabric

fabric = Fabric()
out = fabric.get_om_connection_form(
    service_type="Snowflake",
)
```

## Parameters

| Parameter | Type | Required | Notes |
| --- | --- | --- | --- |
| `service_type` | string | Required | The data source's service type from `list-om-catalog`, e.g. `Snowflake`. Must be a non-empty string. One that is not a data source Wexa can connect is refused (404); the message points at `list-om-catalog`. |

**More details**

**Response fields**

- `service_type`: The source's service type.
- `category`: What to pass to `configure-connector` as `category`: the service type in lower case.
- `fields`: The form's fields. Each has `field_id`, `label`, `type`, `required`, `is_secret` and, where there is one, `default_value` and `options`. A nested field has a dotted id such as `authType.password`.
- `required_fields`: The ids of the required fields.
- `secret_fields`: The ids of the fields that hold secrets. Wexa masks them in its logs and in errors.
- `defaults`: What the console submits without asking: the source's hidden defaults and each field's default value. `configure-connector` adds them for you.
- `filters`: The metadata filters of the "Set Default Filters" step, each with a `field_id` such as `databaseFilterPattern` and a `label`.
- `default_filter_patterns`: Every filter starts empty (no includes, no excludes), which means include everything.

The answer lists the fields to fill in, which of them are required and which are secret, the defaults the console submits without asking, and the metadata filters of the wizard's "Set Default Filters" step. It is the form only, never a saved connector, so it is safe to read at any time.

Fill the form in and pass the values to [`configure-connector`](/docs/connectors/configure-connector) as `om_connection`, keyed by each field's id, and the filters you want as `filters`.

Only reads, so not marked consequential: it is audited lightly and is never held for approval. Reading a form needs only `fabric:orchestrate.read`; saving the values is `configure-connector`, which only an admin may call.

Every tool call works the same way: [How every tool call works](/docs/sdks-and-apis/how-every-tool-call-works).
