# Litmus Unify/Integrations - LE, LEM, LUNS API Docs

> **Applies to:** Litmus Unify **2.0.x** (current). The version map shows which operations also exist in **<v2.0.0** and how they differ. Full `<v2.0.0` request bodies are in collections.json.

### Version map

| 2.0.x operation | In <v2.0.0? | Difference |
|---|---|---|
| `Kafka` (`kafka`) | Yes -- "Get Kafka Integrations" (and UNS/"Kafka") | None |
| `Kafka Update And Reconnect` (`kafkaUpdateAndReconnect`) | Yes -- "Kafka Update and (re)Connect" | **Removed from the live 2.0.1 schema** (Mutation introspection lists no `kafka*` mutations; only the `kafka` query remains) |
| `Kafka Update Pub Filters` (`kafkaUpdatePubFilters`) | No | **Not in the live 2.0.1 schema** (no `kafka*` mutations exist) |
| Connectors -- all `Connector*` operations (`connectorCreate`, `connectorUpdate`, `connectorEnable`, etc.) | No | New in 2.0.x. The entire connectors framework (typed, JSON-Schema-validated outflow connectors) was added in 2.0.x |

## Table of Contents

- [Kafka](#kafka)
- [Kafka Update And Reconnect](#kafka-update-and-reconnect)
- [Kafka Update Pub Filters](#kafka-update-pub-filters)
- [Connectors](#connectors)
- [Connector](#connector)
- [Connector Types](#connector-types)
- [Connector Create](#connector-create)
- [Connector Update](#connector-update)
- [Connector Update Topics](#connector-update-topics)
- [Connector Enable](#connector-enable)
- [Connector Disable](#connector-disable)
- [Connector Restart](#connector-restart)
- [Connector Delete](#connector-delete)
- [Connector Status Changed](#connector-status-changed)

---

## Kafka

**POST** `{{uns_url}}/mqtt/gql`

# Kafka

Read the Kafka bridge configuration and status. Takes no arguments.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Response

Returns `Kafka!`: `currentCfg` and `defaultCfg` (both `KafkaCfg`: brokers, balancer, auth method, compression, topic mappings, ...), the active `pubFilters`, and `status` (`{ active, pubStats }`).

> **Naming inconsistency**: the Kafka types use PascalCase field names (`ID`, `Name`, `Enabled`, `Brokers`, `Balancer`, `TopicsMapping`, ...), unlike the camelCase used across the rest of the Unify schema. Send and select Kafka config fields exactly as the PascalCase names shown.

## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
query Kafka {
    kafka {
        currentCfg {
            ID
            Name
            Enabled
            Brokers
            Balancer
            Topic
            TopicsMapping {
                InTopic
                OutTopic
            }
            Username
            Password
            AuthMethod
            RequireSsl
            TrustedCaChain
            Compression
            RequiredAcks
            WriteTimeoutSec
        }
        defaultCfg {
            ID
            Name
            Enabled
            Brokers
            Balancer
            Topic
            TopicsMapping {
                InTopic
                OutTopic
            }
            Username
            Password
            AuthMethod
            RequireSsl
            TrustedCaChain
            Compression
            RequiredAcks
            WriteTimeoutSec
        }
        pubFilters
        status {
            active
            pubStats {
                ConnAttempts
                Writes
                Messages
                Bytes
                Errors
                Retries
            }
        }
    }
}

```

### Response

**Status**: 200 OK

```json
{
  "data": {
    "kafka": {
      "currentCfg": {
        "ID": "00000000-0000-0000-0000-000000000000",
        "Name": "default",
        "Enabled": false,
        "Brokers": [
          "localhost:9092"
        ],
        "Balancer": "RoundRobin",
        "Topic": null,
        "TopicsMapping": [
          {
            "InTopic": "#",
            "OutTopic": "litmus"
          }
        ],
        "Username": "",
        "Password": "",
        "AuthMethod": "Plain",
        "RequireSsl": false,
        "TrustedCaChain": null,
        "Compression": "Zstd",
        "RequiredAcks": "Leader",
        "WriteTimeoutSec": 10
      },
      "defaultCfg": {
        "ID": "C108AB28-482E-489F-8FB5-033D4DB1C889",
        "Name": "conn-RjDeFa",
        "Enabled": false,
        "Brokers": [
          "localhost:9092"
        ],
        "Balancer": "RoundRobin",
        "Topic": null,
        "TopicsMapping": [
          {
            "InTopic": "#",
            "OutTopic": "litmus"
          }
        ],
        "Username": "",
        "Password": "",
        "AuthMethod": "Plain",
        "RequireSsl": false,
        "TrustedCaChain": null,
        "Compression": "Zstd",
        "RequiredAcks": "Leader",
        "WriteTimeoutSec": 10
      },
      "pubFilters": null,
      "status": {
        "active": false,
        "pubStats": null
      }
    }
  }
}
```

---

## Kafka Update And Reconnect

**POST** `{{uns_url}}/mqtt/gql`

# Kafka Update And Reconnect

Replace the Kafka bridge configuration and reconnect to the brokers.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Field (`kafkaUpdateAndReconnectInput`) | Type | Required | Notes |
|---|---|---|---|
| `Enabled` | `Boolean!` | yes | Turn the bridge on/off. |
| `Brokers` | `[String!]!` | yes | Kafka broker addresses, e.g. `localhost:9092`. |
| `Balancer` | `Balancer!` | yes | `LeastBytes`, `RoundRobin`, `Hash`, `Crc32`. |
| `Topic` / `TopicsMapping` | `String` / `[KafkaMappingItemReq!]` | no | Single target topic, or per-topic `{ InTopic, OutTopic }` mappings. |
| `Username` / `Password` | `String!` | yes | SASL credentials (empty when `AuthMethod = None`). |
| `AuthMethod` | `AuthMethod!` | yes | `None`, `Plain`, `ScramSha256`, `ScramSha512`. |
| `RequireSsl` / `TrustedCaChain` | `Boolean!` / `String` | yes / no | TLS to the brokers. |
| `Compression` | `Compression!` | yes | `None`, `Gzip`, `Snappy`, `Lz4`, `Zstd`. |
| `RequiredAcks` | `RequiredAcks!` | yes | `None`, `Leader`, `All`. |
| `WriteTimeoutSec` | `Int!` | yes | Producer write timeout. |

## Response

Returns `kafkaUpdateAndReconnectPayload`.
> **Removed in 2.0.1**: `kafkaUpdateAndReconnect` is absent from the live 2.0.1 schema (introspecting the Mutation type lists no `kafka*` mutations; only the `kafka` query remains). Calling it fails GraphQL validation. Retained below for historical reference.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
mutation KafkaUpdateAndReconnect {
    kafkaUpdateAndReconnect {
        cfg {
            ID
            Name
            Enabled
            Brokers
            Balancer
            Topic
            TopicsMapping {
                InTopic
                OutTopic
            }
            Username
            Password
            AuthMethod
            RequireSsl
            TrustedCaChain
            Compression
            RequiredAcks
            WriteTimeoutSec
        }
    }
}

```

**Variables**

```json
{
  "input": {
    "Enabled": false,
    "Brokers": [
      "localhost:9092"
    ],
    "Balancer": "LeastBytes",
    "Username": "",
    "Password": "",
    "AuthMethod": "None",
    "RequireSsl": false,
    "Compression": "None",
    "RequiredAcks": "Leader",
    "WriteTimeoutSec": 10
  }
}
```

### Response

**Status**: 422 Unprocessable Entity

```json
{
  "errors": [
    {
      "message": "masked error",
      "extensions": {
        "code": "GRAPHQL_VALIDATION_FAILED"
      }
    }
  ],
  "data": null
}
```

---

## Kafka Update Pub Filters

**POST** `{{uns_url}}/mqtt/gql`

# Kafka Update Pub Filters

Set the MQTT topic filters whose messages are published to Kafka.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Field (`kafkaUpdatePubFiltersInput`) | Type | Required | Notes |
|---|---|---|---|
| `filters` | `[String!]!` | yes | MQTT filter expressions, e.g. `enterprise/#`. |

## Response

Returns `kafkaUpdatePubFiltersPayload` with the active `filters`.
> **Removed in 2.0.1**: `kafkaUpdatePubFilters` is absent from the live 2.0.1 schema (no `kafka*` mutations exist; only the `kafka` query remains). Calling it fails GraphQL validation. Retained below for historical reference.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
mutation KafkaUpdatePubFilters($input: kafkaUpdatePubFiltersInput) {
    kafkaUpdatePubFilters(input: $input) {
        filters
    }
}

```

**Variables**

```json
{
  "input": {
    "filters": [
      "enterprise/#"
    ]
  }
}
```

### Response

**Status**: 422 Unprocessable Entity

```json
{
  "errors": [
    {
      "message": "masked error",
      "extensions": {
        "code": "GRAPHQL_VALIDATION_FAILED"
      }
    }
  ],
  "data": null
}
```

---

## Connectors

**POST** `{{uns_url}}/mqtt/gql`

# Connectors

List every configured connector instance. Takes no arguments.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Response

Returns `[Connector!]!` (each `{ id, name, type, config, topics, enabled, status, schema }`). `status` is a `ConnectorStatus` `{ state, stats, error, errorAt }` where `state` (`ConnectorState`) is one of `UNKNOWN`, `PROVISIONING`, `CONNECTING`, `CONNECTED`, `DISCONNECTED`, `ERROR`, `RECONNECTING`, and `stats` (`ConnectorStats`) carries `messagesIn`/`messagesOut`, `bytesIn`/`bytesOut`, `errors`, `messagesDropped`, `queueDepth`, `reconnectCount`, `uptimeSeconds`, `extraStats`.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
query Connectors {
    connectors {
        id
        name
        type
        config
        topics {
            originTopic
            targetTopic
            direction
            originPrefix
            targetPrefix
            order
            config
            consumerGroup
        }
        enabled
        status {
            state
            error
            errorAt
        }
        schema
    }
}

```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connectors"
      ]
    }
  ],
  "data": null
}
```

---

## Connector

**POST** `{{uns_url}}/mqtt/gql`

# Connector

Fetch a single connector instance by id.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Argument | Type | Required | Notes |
|---|---|---|---|
| `id` | `ID!` | yes | Connector id. |

## Response

Returns `Connector` (or `null` if not found).
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
query Connector($id: ID!) {
    connector(id: $id) {
        id
        name
        type
        config
        topics {
            originTopic
            targetTopic
            direction
            originPrefix
            targetPrefix
            order
            config
            consumerGroup
        }
        enabled
        status {
            state
            stats {
                messagesIn
                messagesOut
                bytesIn
                bytesOut
                errors
                messagesDropped
                queueDepth
                reconnectCount
                uptimeSeconds
                extraStats
            }
            error
            errorAt
        }
        schema
    }
}

```

**Variables**

```json
{
  "id": "00000000-0000-0000-0000-000000000000"
}
```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connector"
      ]
    }
  ],
  "data": {
    "connector": null
  }
}
```

---

## Connector Types

**POST** `{{uns_url}}/mqtt/gql`

# Connector Types

List the connector types available on this installation, each with the JSON Schema describing its `config`.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Response

Returns `[ConnectorTypeInfo!]!` (each `{ type, schema }`, where `schema` is a JSON Schema).
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
query ConnectorTypes {
    connectorTypes {
        type
        schema
    }
}

```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connectorTypes"
      ]
    }
  ],
  "data": null
}
```

---

## Connector Create

**POST** `{{uns_url}}/mqtt/gql`

# Connector Create

Create a connector instance of a given type.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Field (`ConnectorCreateInput`) | Type | Required | Notes |
|---|---|---|---|
| `type` | `String!` | yes | A `type` from `Connector Types`. |
| `name` | `String!` | yes | Display name. |
| `config` | `JSON!` | yes | Config object validated against the type's JSON Schema. |
| `topics` | `[TopicMappingInput!]` | no | Topic mappings (see `Connector Update Topics`). |
| `enabled` | `Boolean` | no | Defaults to `true`. |

## Response

Returns the created `Connector!`.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
mutation ConnectorCreate($input: ConnectorCreateInput!) {
    connectorCreate(input: $input) {
        id
        name
        type
        config
        topics {
            originTopic
            targetTopic
            direction
            originPrefix
            targetPrefix
            order
            config
            consumerGroup
        }
        enabled
        status {
            state
            stats {
                messagesIn
                messagesOut
                bytesIn
                bytesOut
                errors
                messagesDropped
                queueDepth
                reconnectCount
                uptimeSeconds
                extraStats
            }
            error
            errorAt
        }
        schema
    }
}

```

**Variables**

```json
{
  "input": {
    "type": "mqtt",
    "name": "docs-connector",
    "config": {},
    "enabled": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connectorCreate"
      ]
    }
  ],
  "data": null
}
```

---

## Connector Update

**POST** `{{uns_url}}/mqtt/gql`

# Connector Update

Update a connector's name and/or config.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Field (`ConnectorUpdateInput`) | Type | Required | Notes |
|---|---|---|---|
| `id` | `ID!` | yes | Connector id. |
| `name` | `String` | no | New display name. |
| `config` | `JSON` | no | New config object. |

## Response

Returns the updated `Connector!`.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
mutation ConnectorUpdate($input: ConnectorUpdateInput!) {
    connectorUpdate(input: $input) {
        id
        name
        type
        config
        topics {
            originTopic
            targetTopic
            direction
            originPrefix
            targetPrefix
            order
            config
            consumerGroup
        }
        enabled
        status {
            state
            stats {
                messagesIn
                messagesOut
                bytesIn
                bytesOut
                errors
                messagesDropped
                queueDepth
                reconnectCount
                uptimeSeconds
                extraStats
            }
            error
            errorAt
        }
        schema
    }
}

```

**Variables**

```json
{
  "input": {
    "id": "docs-connector",
    "name": "docs-connector-2"
  }
}
```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connectorUpdate"
      ]
    }
  ],
  "data": null
}
```

---

## Connector Update Topics

**POST** `{{uns_url}}/mqtt/gql`

# Connector Update Topics

Replace a connector's topic mappings.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Field (`ConnectorUpdateTopicsInput`) | Type | Required | Notes |
|---|---|---|---|
| `id` | `ID!` | yes | Connector id. |
| `topics` | `[TopicMappingInput!]!` | yes | Each `{ originTopic, targetTopic, direction, order, originPrefix, targetPrefix, config, consumerGroup }`. |

`TopicMappingInput` (and the `TopicMapping` output) carries `originTopic`, `targetTopic`, `direction`, `order`, plus `originPrefix`, `targetPrefix`, `config` (`String`), and `consumerGroup`. `direction` (`TopicDirection`) is `BOTH`, `OUTBOUND`, or `INBOUND`.

## Response

Returns the updated `Connector!`.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
mutation ConnectorUpdateTopics($input: ConnectorUpdateTopicsInput!) {
    connectorUpdateTopics(input: $input) {
        id
        name
        type
        config
        topics {
            originTopic
            targetTopic
            direction
            originPrefix
            targetPrefix
            order
            config
            consumerGroup
        }
        enabled
        status {
            state
            stats {
                messagesIn
                messagesOut
                bytesIn
                bytesOut
                errors
                messagesDropped
                queueDepth
                reconnectCount
                uptimeSeconds
                extraStats
            }
            error
            errorAt
        }
        schema
    }
}

```

**Variables**

```json
{
  "input": {
    "id": "docs-connector",
    "topics": [
      {
        "originTopic": "a/b",
        "targetTopic": "c/d",
        "direction": "BOTH",
        "order": 0
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connectorUpdateTopics"
      ]
    }
  ],
  "data": null
}
```

---

## Connector Enable

**POST** `{{uns_url}}/mqtt/gql`

# Connector Enable

Enable a connector instance.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Argument | Type | Required | Notes |
|---|---|---|---|
| `id` | `ID!` | yes | Connector id. |

## Response

Returns the updated `Connector!`.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
mutation ConnectorEnable($id: ID!) {
    connectorEnable(id: $id) {
        id
        name
        type
        config
        topics {
            originTopic
            targetTopic
            direction
            originPrefix
            targetPrefix
            order
            config
            consumerGroup
        }
        enabled
        status {
            state
            stats {
                messagesIn
                messagesOut
                bytesIn
                bytesOut
                errors
                messagesDropped
                queueDepth
                reconnectCount
                uptimeSeconds
                extraStats
            }
            error
            errorAt
        }
        schema
    }
}

```

**Variables**

```json
{
  "id": "docs-connector"
}
```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connectorEnable"
      ]
    }
  ],
  "data": null
}
```

---

## Connector Disable

**POST** `{{uns_url}}/mqtt/gql`

# Connector Disable

Disable a connector instance without deleting it.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Argument | Type | Required | Notes |
|---|---|---|---|
| `id` | `ID!` | yes | Connector id. |

## Response

Returns the updated `Connector!`.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
mutation ConnectorDisable($id: ID!) {
    connectorDisable(id: $id) {
        id
        name
        type
        config
        topics {
            originTopic
            targetTopic
            direction
            originPrefix
            targetPrefix
            order
            config
            consumerGroup
        }
        enabled
        status {
            state
            stats {
                messagesIn
                messagesOut
                bytesIn
                bytesOut
                errors
                messagesDropped
                queueDepth
                reconnectCount
                uptimeSeconds
                extraStats
            }
            error
            errorAt
        }
        schema
    }
}

```

**Variables**

```json
{
  "id": "docs-connector"
}
```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connectorDisable"
      ]
    }
  ],
  "data": null
}
```

---

## Connector Restart

**POST** `{{uns_url}}/mqtt/gql`

# Connector Restart

Restart a connector instance (re-establishes its external connection).
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Argument | Type | Required | Notes |
|---|---|---|---|
| `id` | `ID!` | yes | Connector id. |

## Response

Returns the updated `Connector!`.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
mutation ConnectorRestart($id: ID!) {
    connectorRestart(id: $id) {
        id
        name
        type
        config
        topics {
            originTopic
            targetTopic
            direction
            originPrefix
            targetPrefix
            order
            config
            consumerGroup
        }
        enabled
        status {
            state
            stats {
                messagesIn
                messagesOut
                bytesIn
                bytesOut
                errors
                messagesDropped
                queueDepth
                reconnectCount
                uptimeSeconds
                extraStats
            }
            error
            errorAt
        }
        schema
    }
}

```

**Variables**

```json
{
  "id": "docs-connector"
}
```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connectorRestart"
      ]
    }
  ],
  "data": null
}
```

---

## Connector Delete

**POST** `{{uns_url}}/mqtt/gql`

# Connector Delete

Delete a connector instance.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Argument | Type | Required | Notes |
|---|---|---|---|
| `id` | `ID!` | yes | Connector id. |

## Response

Returns `Boolean!` (`true` on success).
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
mutation ConnectorDelete($id: ID!) {
    connectorDelete(id: $id)
}

```

**Variables**

```json
{
  "id": "docs-connector"
}
```

### Response

**Status**: 200 OK

```json
{
  "errors": [
    {
      "message": "masked error",
      "path": [
        "connectorDelete"
      ]
    }
  ],
  "data": null
}
```

---

## Connector Status Changed

**POST** `{{uns_url}}/mqtt/gql`

# Connector Status Changed

Subscription that pushes connector state transitions in real time. Pair it with `Connector` for the initial snapshot.
## Endpoint

```http
POST {{uns_url}}/mqtt/gql
```
## Authentication

OAuth2 Bearer token (Keycloak password grant). In Postman the token is inherited from the collection auth; see the collection overview for the raw token request.
## Arguments

| Argument | Type | Required | Notes |
|---|---|---|---|
| `id` | `ID!` | yes | Connector id to watch. |

## Response

Streams `ConnectorStatus` (`{ state, stats, error, errorAt }`).
> GraphQL **subscription**, delivered over WebSocket; it cannot be exercised with a plain HTTP POST.
## Errors

GraphQL operations return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

```json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```

> **Masked errors**: Litmus Unify masks error detail by default, most failures surface as `{"message": "masked error"}` with `data: null`. The `path` identifies which field failed. Validation failures additionally carry `extensions.code = GRAPHQL_VALIDATION_FAILED` and return HTTP `422`.

A missing or expired Bearer token returns HTTP `401` with the body `bad token`.


### Request Body

**GraphQL Query**

```graphql
subscription ConnectorStatusChanged($id: ID!) {
    connectorStatusChanged(id: $id) {
        state
        stats {
            messagesIn
            messagesOut
            bytesIn
            bytesOut
            errors
            messagesDropped
            queueDepth
            reconnectCount
            uptimeSeconds
            extraStats
        }
        error
        errorAt
    }
}

```

**Variables**

```json
{
  "id": "id"
}
```

---

