# LitmusEdge 4.0.x API Documentation/Integration/Create Instance - Provider Examples - LE, LEM, LUNS API Docs

## Create Instance - MQTT - Generic

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The MQTT Generic integration enables Edge System to connect to the MQTT broker.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
    
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system) | Yes |
| Port | MQTT broker port | Yes |
| Client id | Unique client identity | Yes |
| Username | User name | No  |
| Password | User password | No  |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration. | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publishing | No  |
| LWT topic | It refers to the specific topic where the last will message will be published. | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| Mosquitto Message Broker | 1.x | Nov 14, 2019 |
| HiveMQ | 2.x | Nov 14, 2019 |

**Provider ID:** `generic-mqtt-tcp`
**Provider Name:** MQTT - Generic

**Required properties:**
- `name` _string_ — Name: Instance Name
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.

**Optional properties:**
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `clientId` _string_ — Client ID: Client ID is required by MQTT server.
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `port` _integer_ — Port: Port of MQTT host.
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `topic` _string_ — Integration Topic: MQTT topic
- `password` _string_ — Password: The password
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `username` _string_ — Username: The username
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "generic-mqtt-tcp",
    "Config": "{\"name\": \"My MQTT - Generic Integration\", \"hostname\": \"192.168.1.100\", \"port\": 1883, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "generic-mqtt-tcp",
            "Config": "{\"name\": \"My MQTT - Generic Integration\", \"hostname\": \"192.168.1.100\", \"port\": 1883, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - AMQP SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

AMQP SSL Integration enables Edge System to connect with AMQP broker via SSL.

Supported Versions
------------------

Supports RabbitMQ versions starting with 2.0 but primarily tested against recent 3. x releases. Some features and behaviors may be server-version specific.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to AMQP broker) - Yes

* Inbound (Subscribe data from AMQP broker to Edge) - No


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or hostname of AMQP broker (Must be reachable from Edge system) | Yes |
| Port | AMQP broker port | Yes |
| Virtual host | specifies the namespace of permissions, exchanges, queues and bindings on the server | No  |
| Username | Username | No  |
| Password | Password | No  |
| Exchange | AMQP exchange | No  |
| Exchange type | can be one of "direct", "fanout", "topic", "x-custom" | No  |
| Exchange durable | \[*\] | No  |
| Exchange auto delete | \[*\] | No  |
| Exchange internal | \[*\] | No  |
| Exchange no wait | \[*\] | No  |
| Routing key | AMQP routing key | Yes |
| ISO8601 timestamp | Convert a message timestamp into ISO8601 format before send | No  |
| CA Certificate | SSL CA Certificate | Yes |
| Certificate | Self-signed SSL certificate | No  |
| Private key | SSL private Key | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

\[*\] Exchange names starting with "amq." are reserved for pre-declared and standardized exchanges. The client MAY declare an exchange starting with "amq." if the passive option is set, or the exchange already exists. Names can consist of a non-empty sequence of letters, digits, hyphen, underscore, period, or colon.

Each exchange belongs to one of a set of exchange kinds/types implemented by the server. The exchange types define the functionality of the exchange - i.e. how messages are routed through it. Once an exchange is declared, its type cannot be changed. The common types are "direct", "fanout", "topic" and "headers".

Durable and Non-Auto-Deleted exchanges survive server restarts and remain declared when there are no remaining bindings. These selections are best for long-lived exchange configurations like stable routes and default exchanges.

Non-Durable and Auto-Deleted exchanges are deleted when there are no remaining bindings and not restored on server restart. These selections are useful for temporary topologies that should not pollute the virtual host on failure or after the consumers have completed.

Non-Durable and Non-Auto-deleted exchanges remain while the server is running, including when there are no remaining bindings. These selections are useful for temporary topologies that may have long delays between bindings.

Durable and Auto-Deleted exchanges survive server restarts and are removed before and after server restarts when there are no remaining bindings. These selections are useful for robust temporary topologies or when you require binding durable queues to auto-deleted exchanges.

Note: RabbitMQ declares the default exchange types like 'amq.fanout' as durable, so queues that bind to these pre-declared exchanges must also be durable.

Exchanges declared as `internal` do not accept publishings. Internal exchanges are useful when you wish to implement inter-exchange topologies that should not be exposed to users of the broker.

When No Wait is selected, you can continue without waiting for a confirmation from the server. The channel may be closed because of an error. Add a NotifyClose listener to respond to any exceptions.AMQP TCP connector Readme

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** |
| --- | --- |
| RabbitMQ | 3.12 |

**Provider ID:** `amqp-ssl`
**Provider Name:** AMQP SSL

**Required properties:**
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `port` _integer_ — Port: Port number
- `hostname` _string_ — Hostname
- `name` _string_ — Name: Instance Name
- `routingKey` _string_ — Routing key

**Optional properties:**
- `exchange` _string_ — Exchange
- `exchangeDurable` _boolean_ — Exchange durable
- `throttlingLimit` _integer_ — Throttling limit
- `username` _string_ — Username
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `certificate` _string_ — Certificate: Certificate can be added here.
- `exchangeInternal` _boolean_ — Exchange internal
- `exchangeNoWait` _boolean_ — Exchange no wait
- `iso8601Timestamp` _boolean_ — ISO8601 timestamp: Convert timestamp to ISO8601
- `password` _string_ — Password
- `privateKey` _string_ — Private key: Private key can be added here.
- `exchangeAutoDelete` _boolean_ — Exchange auto delete
- `exchangeType` _string_ — exchangeType: Exchange type
  Options: `direct`, `fanout`, `topic`, `x-custom`
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `virtualHost` _string_ — Virtual host: Virtual hostname

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "amqp-ssl",
    "Config": "{\"name\": \"My AMQP SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 5671, \"virtualHost\": \"192.168.1.100\", \"username\": \"admin\", \"password\": \"password\", \"exchange\": \"placeholder_exchange\", \"exchangeType\": \"direct\", \"exchangeDurable\": true, \"exchangeAutoDelete\": false, \"exchangeInternal\": false, \"exchangeNoWait\": false, \"routingKey\": \"<certificate>\", \"iso8601Timestamp\": false, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "amqp-ssl",
            "Config": "{\"name\": \"My AMQP SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 5671, \"virtualHost\": \"192.168.1.100\", \"username\": \"admin\", \"password\": \"password\", \"exchange\": \"placeholder_exchange\", \"exchangeType\": \"direct\", \"exchangeDurable\": true, \"exchangeAutoDelete\": false, \"exchangeInternal\": false, \"exchangeNoWait\": false, \"routingKey\": \"<certificate>\", \"iso8601Timestamp\": false, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - AWS IoT Core - MQTT Gen 2

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The AWS IoT Core MQTT Gen 2 connector enables Edge System to connect with Amazon AWS IoT Core over SSL using the V2 architecture.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
    
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system) | Yes |
| Port | MQTT broker port | Yes |
| Certificate | SSL Certificate | Yes |
| Private key | SSL certificate private key | Yes |
| Client id | Unique client identity | No  |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration. | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publish or Subscribe | Yes |
| LWT topic | It refers to the specific topic where the last will message will be published. | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No  |

Compatibility Validation
------------------------
This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| Amazon AWS | N/A | N/A |

**Provider ID:** `aws-iot-core-mqtt-gen-2`
**Provider Name:** AWS IoT Core - MQTT Gen 2

**Required properties:**
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `certificate` _string_ — Certificate: Certificate can be added here.
- `privateKey` _string_ — Private key: Private key can be added here.
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `name` _string_ — Name: Instance Name
- `topic` _string_ — Integration Topic: MQTT topic

**Optional properties:**
- `caCert` _string_ — CA Certificate: Amazon Root CA certificate (optional - uses system trust store if not provided).
- `clientId` _string_ — Client ID: Client ID is required by MQTT server.
- `persistentStorage` _boolean_ — Persistent storage
- `port` _integer_ — Port: Port of MQTT host.
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "aws-iot-core-mqtt-gen-2",
    "Config": "{\"name\": \"My AWS IoT Core - MQTT Gen 2 Integration\", \"hostname\": \"a1o8e9c82gegra.iot.us-east-2.amazonaws.com\", \"port\": 8883, \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"caCert\": \"<certificate>\", \"clientId\": \"my-client-id\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"/events\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "aws-iot-core-mqtt-gen-2",
            "Config": "{\"name\": \"My AWS IoT Core - MQTT Gen 2 Integration\", \"hostname\": \"a1o8e9c82gegra.iot.us-east-2.amazonaws.com\", \"port\": 8883, \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"caCert\": \"<certificate>\", \"clientId\": \"my-client-id\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"/events\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - AWS IoT SiteWise Edge

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The AWS IoT SiteWise Edge Integration enables Edge system to connect to the MQTT broker in AWS IoT SiteWise Edge Gateway. Seamlessly allow the AWS IoT SiteWise Edge Data Processor & AWS IoT SiteWise Edge Publisher to publish the data into AWS IoT SiteWise

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes

Configurations
--------------

| **Variable** | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | **Required** |
| --- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|
| Name | Connector Name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Yes          |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Yes          |
| Port | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Yes          |
| Client id | Unique client identity                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Yes          |
| Username | User name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | No           |
| Password | User password                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | No           |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration.                                                                                                                 | Yes          |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time. As an example, in Mosquitto, you have the following settings:<ul><li>max_queued_messages (default 100)</li><li>max_queued_bytes (default 0)</li></ul>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes          |
| PropertyAlias | AWS IoT SiteWise Asset Property Alias | Yes          |
| Integration topic | Default topic for Publishing | Yes          |
| Additional Alias definition | Optional string to further define dynamic propertyAlias and Integration Topic | No           |
| LWT topic | It refers to the specific topic where the last will message will be published. | No           |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No           |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No           |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No           |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No           |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No           |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No           |

Format Directives
-----------------

| **Symbol** | **Definition** | **Context**             |
|------------|----------------|-------------------------|
| $ | Special character indicate a variable character follows. A variable represents some dynamic string value. Supported variables defined as follows: | -                       |
| $S | Additional Alias definition | from Connector Settings |
| $D | Device Name | from DeviceHub Tag      |
| $N | Tag Name | from DeviceHub Tag |
| $R | Raw Tag Type | from DeviceHub Tag |
| $P | Tag Description | from DeviceHub Tag |
| $H | Hostname | from OS |
| % | Special character indicating a function character follows. A function represents some action to be taken on the next variable. Supported functions defined as follows: | - |
| %L | Lowercase() | apply to next variable |
| %U | Uppercase() | apply to next variable |

Format Directives Notes
-----------------------

To use a special character in its literal form, enter symbol twice (`$$` -> `$`, `%%` -> `%`) <br/> Example `"$$$D.%%$N" -> "$deviceABC.%tagXYZ"`

**Provider ID:** `aws-sitewise-edge`
**Provider Name:** MQTT - AWS IoT SiteWise Edge

**Required properties:**
- `name` _string_ — Instance Name
- `clientId` _string_ — Client ID: Client ID is required by MQTT server.
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `topic` _string_ — Integration Topic: MQTT topic
- `propertyAlias` _string_ — Property Alias: AWS IoT Sitewise Asset Property Alias
- `port` _integer_ — Port: Port of MQTT host.

**Optional properties:**
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `additionalAliasDefinition` _string_ — Additional Alias Definition: Optional string to further define dynamic propertyAlias and Integration Topic
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `throttlingLimit` _integer_ — Throttling limit
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `persistentStorage` _boolean_ — Persistent storage
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`
- `willTopic` _string_ — LWT topic: MQTT LWT topic

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "aws-sitewise-edge",
    "Config": "{\"name\": \"My MQTT - AWS IoT SiteWise Edge Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8883, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"propertyAlias\": \"placeholder_propertyAlias\", \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"additionalAliasDefinition\": \"placeholder_additionalAliasDefinition\", \"qos\": 1, \"workersCount\": 100, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "aws-sitewise-edge",
            "Config": "{\"name\": \"My MQTT - AWS IoT SiteWise Edge Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8883, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"propertyAlias\": \"placeholder_propertyAlias\", \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"additionalAliasDefinition\": \"placeholder_additionalAliasDefinition\", \"qos\": 1, \"workersCount\": 100, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Azure IoT Hub using SAS Key over SSL Gen 2

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Azure IoT Hub MQTT SAS key integration enables Edge System to connect to the MQTT broker.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes

* Inbound (Subscribe data from MQTT Broker to Edge) - Yes


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system) | Yes |
| Port | MQTT broker port | Yes |
| Client ID | Unique client identity | No  |
| Username | User name | No  |
| Password | User password | No  |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration. | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publish or Subscribe | No  |
| LWT topic | It refers to the specific topic where the last will message will be published. | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| Azure Services | N/A | N/A |

**Provider ID:** `azure-iot-hub-sas-gen-2`
**Provider Name:** Azure IoT Hub using SAS Key over SSL Gen 2

**Required properties:**
- `name` _string_ — Name: Instance Name
- `sasKey` _string_ — SAS Key: Primary or secondary shared access key.
- `tokenTTL` _integer_ — Token TTL (minutes): The token expiry time in minutes
- `deviceId` _string_ — Device ID: ID of the device as shown in your Azure IoT account.
- `hostname` _string_ — Hostname: DNS name of MQTT host. It can be found in "Overview" tab of your Azure IoT hub.
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.

**Optional properties:**
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `port` _integer_ — Port: Port of MQTT host.
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `topic` _string_ — Integration Topic: MQTT topic
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`
- `throttlingLimit` _integer_ — Throttling limit
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "azure-iot-hub-sas-gen-2",
    "Config": "{\"name\": \"My Azure IoT Hub using SAS Key over SSL Gen 2 Integration\", \"hostname\": \"loopedge.azure-devices.net\", \"port\": 8883, \"deviceId\": \"loopedge-000c29dedd9e\", \"sasKey\": \"<certificate>\", \"workersCount\": 16, \"topic\": \"devices/loopedge-000c29dedd9e/messages/events/\", \"tokenTTL\": 1440, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "azure-iot-hub-sas-gen-2",
            "Config": "{\"name\": \"My Azure IoT Hub using SAS Key over SSL Gen 2 Integration\", \"hostname\": \"loopedge.azure-devices.net\", \"port\": 8883, \"deviceId\": \"loopedge-000c29dedd9e\", \"sasKey\": \"<certificate>\", \"workersCount\": 16, \"topic\": \"devices/loopedge-000c29dedd9e/messages/events/\", \"tokenTTL\": 1440, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - IBM Watson over SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The IBM Watson MQTT SSL integration enables Edge System to connect with IBM Watson over SSL.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
    
* Inbound (Subscribe data from MQTT Broker to Edge ) - Yes
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system) | Yes |
| Port | MQTT broker port | Yes |
| CA certificate | It is a digital certificate issued by a trusted Certificate Authority and is used to authenticate the identity of servers or entities in an SSL/TLS connection. | No  |
| Organization id | The IBM unique six-character organization ID | Yes |
| Device type | Device types are groups of devices that share common characteristics. | Yes |
| Device id | A user-defined string identifier for the device. This ID must be unique within the registry. | Yes |
| Token | Token that was generated when the device was registered with Watson IoT Platform | Yes |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration. | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publish or Subscribe | Yes |
| LWT topic | It refers to the specific topic where the last will message will be published. | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

**Provider ID:** `ibm-watson-mqtt-ssl`
**Provider Name:** MQTT - IBM Watson over SSL

**Required properties:**
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `deviceType` _string_ — Device Type: Device Type is required by MQTT server.
- `orgId` _string_ — Organization ID: The unique six-character organization ID
- `topic` _string_ — Integration Topic: MQTT topic
- `deviceId` _string_ — Device ID: Device ID is required by MQTT server.
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `name` _string_ — Name: Instance Name
- `port` _integer_ — Port: Port of MQTT host.
- `token` _string_ — Token: Token that was generated when the device was registered with Watson IoT Platform.

**Optional properties:**
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `willTopic` _string_ — LWT topic: MQTT LWT topic

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "ibm-watson-mqtt-ssl",
    "Config": "{\"name\": \"My MQTT - IBM Watson over SSL Integration\", \"hostname\": \"{orgId}.messaging.internetofthings.ibmcloud.com\", \"port\": 8883, \"caCert\": \"<certificate>\", \"orgId\": \"my-client-id\", \"deviceType\": \"DeviceType1\", \"deviceId\": \"Device1\", \"token\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"iot-2/evt/status/fmt/json\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "ibm-watson-mqtt-ssl",
            "Config": "{\"name\": \"My MQTT - IBM Watson over SSL Integration\", \"hostname\": \"{orgId}.messaging.internetofthings.ibmcloud.com\", \"port\": 8883, \"caCert\": \"<certificate>\", \"orgId\": \"my-client-id\", \"deviceType\": \"DeviceType1\", \"deviceId\": \"Device1\", \"token\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"iot-2/evt/status/fmt/json\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - InfluxDB v1.7.x SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

InfluxDB v1.7.x SSL integration enables Edge System to connect with the InfluxDB v1.7.x database via SSL

Supported Versions
------------------

Compatible with InfluxDB 1.x

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes
    
* Inbound (Read Database to Edge) - No
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Address | InfluxDB database url (e.g., [http://localhost:8086](http://localhost:8086/)) | Yes |
| Database | Database name | Yes |
| Username | User name (can be empty) | No  |
| Password | User password (can be empty) | No  |
| CA Certificate | SSL CA Certificate | No  |
| Certificate | SSL Certificate | No  |
| Private key | SSL Private key | No  |
| Batch Size | The number of messages to be collected as a batch before inserting into the database | No  |
| Batch Commit Time | The time, in seconds, before the next commit, regardless of batch size | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| docker: influxdb | 1.7 | N/A |

**Provider ID:** `influxdb-ssl`
**Provider Name:** DB - InfluxDB v1.7.x SSL

**Required properties:**
- `address` _string_ — InfluxDB address
- `database` _string_ — InfluxDB database name: Database name
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `password` _string_ — Password
- `username` _string_ — Username
- `batchSize` _integer_ — Insert batch size: The number of batch messages to insert
- `persistentStorage` _boolean_ — Persistent storage
- `privateKey` _string_ — Private key: Private key can be added here.
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `batchCommitTimeSec` _integer_ — Insert batch commit time: The time of batch messages to commit
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `certificate` _string_ — Certificate: Certificate can be added here.
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `throttlingLimit` _integer_ — Throttling limit
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "influxdb-ssl",
    "Config": "{\"name\": \"My DB - InfluxDB v1.7.x SSL Integration\", \"address\": \"http://localhost:8086\", \"database\": \"mydb\", \"username\": \"admin\", \"password\": \"password\", \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"batchSize\": 500, \"batchCommitTimeSec\": 5, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "influxdb-ssl",
            "Config": "{\"name\": \"My DB - InfluxDB v1.7.x SSL Integration\", \"address\": \"http://localhost:8086\", \"database\": \"mydb\", \"username\": \"admin\", \"password\": \"password\", \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"batchSize\": 500, \"batchCommitTimeSec\": 5, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Kafka SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Kafka SSL integration enables Edge System to connect with the Kafka broker.

Supported Versions
------------------

Compatible with Kafka versions from 0.10.1.0 to 2.1.0.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Kafka broker) - Yes

* Inbound (Subscribe data from Kafka broker to Edge) - Yes


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Brokers | List of Kafka brokers separated by comma (Must be reachable from Edge system) | Yes |
| SASL mechanism | SASL mechanism values include: NONE, SASL_PLAINTEXT. SCRAM-SHA-256, and SCRAM-SHA-512. This field can only be used if username is not empty | Yes |
| Username | User name | No  |
| Password | User password | No  |
| CA certificate | It is a digital certificate issued by a trusted Certificate Authority and is used to authenticate the identity of servers or entities in an SSL/TLS connection | No  |
| Certificate | SSL Certificate | No  |
| Private key | SSL certificate private key | No  |
| Insecure skip verify | Insecure Skip Verify controls whether a client verifies the server's certificate chain and host name | No  |
| Topic | Default topic for Publish | Yes |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| CloudKarafka | 0.11.0.0 | N/A |
| Confluent | N/A | N/A |

**Provider ID:** `kafka-ssl`
**Provider Name:** Kafka SSL

**Required properties:**
- `brokers` _string_ — Brokers list separated by comma
- `insecureSkipVerify` _boolean_ — Insecure Skip Verify: Insecure Skip Verify controls whether a client verifies the server's certificate chain and host name
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `name` _string_ — Name: Instance Name
- `saslMechanism` _string_ — SASL mechanism
  Options: `NONE`, `SASL_PLAINTEXT`, `SCRAM-SHA-256`, `SCRAM-SHA-512`
- `topic` _string_ — Topic: The topic name

**Optional properties:**
- `throttlingLimit` _integer_ — Throttling limit
- `certificate` _string_ — Certificate: Certificate can be added here.
- `password` _string_ — Password: The password
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `username` _string_ — Username: The username
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `privateKey` _string_ — Private key: Private key can be added here.

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "kafka-ssl",
    "Config": "{\"name\": \"My Kafka SSL Integration\", \"brokers\": \"one.litmus.pro:9094,two.litmus.pro:9094,three.litmus.pro:9094\", \"saslMechanism\": \"SCRAM-SHA-256\", \"username\": \"admin\", \"password\": \"password\", \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"insecureSkipVerify\": false, \"topic\": \"integration/data\", \"workersCount\": 2000, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "kafka-ssl",
            "Config": "{\"name\": \"My Kafka SSL Integration\", \"brokers\": \"one.litmus.pro:9094,two.litmus.pro:9094,three.litmus.pro:9094\", \"saslMechanism\": \"SCRAM-SHA-256\", \"username\": \"admin\", \"password\": \"password\", \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"insecureSkipVerify\": false, \"topic\": \"integration/data\", \"workersCount\": 2000, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Litmus UNS

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Litmus UNS integration enables Edge System to connect to the Litmus MQTT broker.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Litmus MQTT Broker) - Yes
    
* Inbound (Subscribe data from Litmus MQTT Broker to Edge) - Yes
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Litmus UNS Token | Base64 one-time Token to access Litmus UNS endpoint | No |

Compatibility Validation
------------------------

N/A

**Provider ID:** `litmus-uns`
**Provider Name:** Litmus UNS

**Required properties:**
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `UNSClientID` _string_ — MQTT Client ID: Litmus UNS MQTT Client ID
- `UNSHierarchy` _string_ — UNS Hierarchy: UNS Hierarchy levels info
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `insecureSkipVerify` _boolean_ — Insecure skip verify
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `token` _string_ — Litmus UNS Token: Base64 one-time Token to access Litmus UNS endpoint
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "litmus-uns",
    "Config": "{\"name\": \"My Litmus UNS Integration\", \"workersCount\": 100, \"UNSClientID\": \"my-client-id\", \"insecureSkipVerify\": false, \"caCert\": \"<certificate>\", \"UNSHierarchy\": \"\", \"token\": \"password\", \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1, \"jsonConfig\": \"\", \"throttlingLimit\": 0}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "litmus-uns",
            "Config": "{\"name\": \"My Litmus UNS Integration\", \"workersCount\": 100, \"UNSClientID\": \"my-client-id\", \"insecureSkipVerify\": false, \"caCert\": \"<certificate>\", \"UNSHierarchy\": \"\", \"token\": \"password\", \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1, \"jsonConfig\": \"\", \"throttlingLimit\": 0}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - Generic Gen 2

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The MQTT Generic Gen 2 integration enables Edge System to connect to the MQTT broker.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
    
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes
    

Configurations
--------------

| **Variable** | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | **Required** |
| --- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|
| Name | Connector name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Yes          |
| Connection Type | The connection type to broker (TCP/SSL)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Yes          |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Yes          |
| Port | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | Yes          |
| CA certificate | It is a digital certificate issued by a trusted Certificate Authority and is used to authenticate the identity of servers or entities in an SSL/TLS connection. | Yes (SSL)    |
| Certificate | SSL certificate | Yes (SSL)           |
| Private key | SSL certificate private key | Yes (SSL)           |
| Client id | Unique client identity                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Yes          |
| Username | User name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | No           |
| Password | User password                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | No           |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration.                                                                                                                                         | Yes          |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes          |
| Integration topic | Default topic for Publishing                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | No           |
| LWT topic | It refers to the specific topic where the last will message will be published.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | No           |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message.                                                                                                                                                                                                                                                                                                                                                                                                         | No           |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | No           |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | No           |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message.                                                                                                                                                                                                                                                                                                                                                                                                                                        | No           |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                                                                                                                                                                                 | No           |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                                                                                                                                                                  | No           |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                                                                                                                                                                   | No           |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| Mosquitto Message Broker | 1.x | Nov 14, 2019 |
| HiveMQ | 2.x | Nov 14, 2019 |

**Provider ID:** `generic-mqtt-gen-2`
**Provider Name:** MQTT - Generic Gen 2

**Required properties:**
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `topic` _string_ — Integration Topic: MQTT topic
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `connectionType` _string_ — Connection Type: MQTT Connection type
  Options: `tcp`, `ssl`
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `password` _string_ — Password: The password
- `pingTimeout` _integer_ — Ping Timeout (seconds): The time a client waits for a ping response from the broker after sending a PINGREQ message
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `certificate` _string_ — Certificate: Certificate can be added here.
- `clientId` _string_ — Client ID: Client ID is required by MQTT server.
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `port` _integer_ — Port: Port of MQTT host.
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`
- `privateKey` _string_ — Private key: Private key can be added here.
- `throttlingLimit` _integer_ — Throttling limit
- `username` _string_ — Username: The username
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "generic-mqtt-gen-2",
    "Config": "{\"name\": \"My MQTT - Generic Gen 2 Integration\", \"connectionType\": \"tcp\", \"hostname\": \"192.168.1.100\", \"port\": 1883, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"pingTimeout\": 7, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "generic-mqtt-gen-2",
            "Config": "{\"name\": \"My MQTT - Generic Gen 2 Integration\", \"connectionType\": \"tcp\", \"hostname\": \"192.168.1.100\", \"port\": 1883, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"pingTimeout\": 7, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - MongoDB

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

MongoDB Integration enables Edge System to connect with MongoDB database

Supported Versions
------------------

* MongoDB 2.x - MongoDB 3.2
    

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes
    
* Inbound (Read from Database to Edge) - No
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | IP Address or Hostname of MongoDB Server (Must be reachable from Edge system) | Yes |
| Port | MongoDB Server port | Yes |
| Username | User name (can be empty) | No  |
| Password | User password (can be empty) | No  |
| Auth database | Authentication database name (can be empty) | No  |
| Auth mechanism | Authentication mechanism (can be one of "SCRAM-SHA-1", "MONGODB-CR", "MONGO-CR", "PLAIN", "MONGODB-X509") | No  |
| Database | Database name. If database does not exist it is created | Yes |
| Collection | Collection name. If collection does not exist it is created | Yes |
| Mapping | Fields from a predefined message JSON structure can be mapped to a custom one. Example: {"sourceField": "targetField"} where 'sourceField' is a key in the predefined message, and 'targetField' is the key in the destination message. | No  |
| Commit timeout | Transaction commit timeout (ms) | No  |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |

**Provider ID:** `mongodb`
**Provider Name:** DB - MongoDB

**Required properties:**
- `database` _string_ — Database: The database name
- `hostname` _string_ — Hostname: DNS name or IP of the host.
- `collection` _string_ — Collection: The collection
- `port` _integer_ — Port: Port of MongoDB host.
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `authDatabase` _string_ — Auth database: The authentication database name
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `authMechanism` _string_ — Auth mechanism: The mechanisms to confirm an identity and establish trust to ensure security in the driver and server before connecting
  Options: `SCRAM-SHA-1`, `MONGODB-CR`, `MONGO-CR`, `PLAIN`, `MONGODB-X509`
- `mapping` _object_ — Mapping: The mapping list
- `throttlingLimit` _integer_ — Throttling limit
- `username` _string_ — Username: The username
- `commitTimeout` _integer_ — Commit timeout: Transaction commit timeout (ms)
- `maxTransactionSize` _integer_ — Max transaction size: Maximum number of messages before a transaction is committed regardless of timeout
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `password` _string_ — Password: The password

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "mongodb",
    "Config": "{\"name\": \"My DB - MongoDB Integration\", \"hostname\": \"192.168.1.100\", \"port\": 27017, \"username\": \"admin\", \"password\": \"password\", \"authDatabase\": \"mydb\", \"authMechanism\": \"SCRAM-SHA-1\", \"database\": \"mydb\", \"collection\": \"mytable\", \"mapping\": {}, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "mongodb",
            "Config": "{\"name\": \"My DB - MongoDB Integration\", \"hostname\": \"192.168.1.100\", \"port\": 27017, \"username\": \"admin\", \"password\": \"password\", \"authDatabase\": \"mydb\", \"authMechanism\": \"SCRAM-SHA-1\", \"database\": \"mydb\", \"collection\": \"mytable\", \"mapping\": {}, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - Microsoft SQL Server

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Microsoft SQL Server integration enables Edge System to connect with MSSQL Database.

Supported Communication
-----------------------

* Outbound (Write from Edge to SQL Server) - Yes
    
* Inbound (Read from SQL Server to Edge) - No
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | IP Address or Hostname of MSSQL Server (Must be reachable from Edge system) | Yes |
| Port | MSSQL Server port | Yes |
| Username | User name (can be empty) | No  |
| Password | User password (can be empty) | No  |
| Database | Database name | Yes |
| Table | Table name | Yes |
| Mapping | Data from a predefined table could be mapped into a custom one. Example: {"from": "to"} where "from" is a column from predefined table, and "to" is a column from destination table | No  |
| Create table | If selected and table doesn't exist, the table is created with the necessary format \[1\] | No  |
| Commit timeout | Transaction commit timeout (ms) | No  |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** |
| --- | --- |
| Microsoft SQL Server | v15 (2019) |
| Microsoft SQL Server | v14 (2017) |

**Provider ID:** `mssql`
**Provider Name:** DB - Microsoft SQL Server

**Required properties:**
- `table` _string_ — Table: The table name
- `createTable` _boolean_ — Create table: Create the table if it doesn't exist. To do this you need permissions.
- `database` _string_ — Database: The database name
- `hostname` _string_ — Hostname: DNS name or IP of the host.
- `name` _string_ — Name: Instance Name
- `port` _integer_ — Port: Port of MSSQL host.

**Optional properties:**
- `bulkSize` _integer_ — Bulk insert count: Buffer messages and perform bulk insert once the Bulk insert count is reached
- `commitTimeout` _integer_ — Commit timeout: Transaction commit timeout (ms)
- `password` _string_ — Password: The password
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `mapping` _object_ — Mapping: The mapping list
- `maxTransactionSize` _integer_ — Max transaction size: Maximum number of messages before a transaction is committed regardless of timeout
- `username` _string_ — Username: The username

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "mssql",
    "Config": "{\"name\": \"My DB - Microsoft SQL Server Integration\", \"hostname\": \"192.168.1.100\", \"port\": 1433, \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "mssql",
            "Config": "{\"name\": \"My DB - Microsoft SQL Server Integration\", \"hostname\": \"192.168.1.100\", \"port\": 1433, \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - MySQL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

MySQL Integration enables Edge System to connect with MySQL Database

Supported Versions
------------------

MySQL (4.1+), MariaDB, Percona Server, Google CloudSQL or Sphinx (2.2.3+)

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes

* Inbound (Read from Database to Edge) - No


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | IP Address or Hostname of MSSQL Server (Must be reachable from Edge system) | Yes |
| Port | MSSQL Server port | Yes |
| Username | User name | Yes |
| Password | User password (can be empty) | No  |
| Database | Database name | Yes |
| Table | Table name | Yes |
| Mapping | Data from a predefined table could be mapped into a custom one. Example: {"from": "to"} where "from" is a column from predefined table, and "to" is a column from destination table | No  |
| Create table | If selected and table doesn't exist, the table is created with the necessary format \[1\] | No  |
| Commit timeout | Transaction commit timeout (ms) | No  |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| MySQL | 8   | N/A |

**Provider ID:** `mysql`
**Provider Name:** DB - MySQL

**Required properties:**
- `createTable` _boolean_ — Create table: Create the table if it doesn't exist. To do this you need permissions.
- `hostname` _string_ — Hostname: DNS name or IP of the host.
- `name` _string_ — Name: Instance Name
- `database` _string_ — Database: The database name
- `table` _string_ — Table: The table name
- `username` _string_ — Username: The username
- `port` _integer_ — Port: Port of MySql host.

**Optional properties:**
- `mapping` _object_ — Mapping: The mapping list
- `maxTransactionSize` _integer_ — Max transaction size: Maximum number of messages before a transaction is committed regardless of timeout
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `commitTimeout` _integer_ — Commit timeout: Transaction commit timeout (ms)
- `password` _string_ — Password: The password
- `throttlingLimit` _integer_ — Throttling limit
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `bulkSize` _integer_ — Bulk insert count: Buffer messages and perform bulk insert once the Bulk insert count is reached

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "mysql",
    "Config": "{\"name\": \"My DB - MySQL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 3306, \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "mysql",
            "Config": "{\"name\": \"My DB - MySQL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 3306, \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - PostgreSQL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

PostgreSQL Integration enables Edge System to connect with PostgreSQL Database

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes

* Inbound (Read from Database to Edge) - No


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | IP Address or Hostname of PostgreSQL Server (Must be reachable from Edge system) | Yes |
| Port | PostgreSQL Server port | Yes |
| Username | User name | Yes |
| Password | User password | Yes |
| Database | Database name | Yes |
| Table | Table name | Yes |
| Mapping | Data from a predefined table could be mapped into a custom one. Example: {"from": "to"} where "from" is a column from predefined table, and "to" is a column from destination table | No  |
| Create table | If selected and table doesn't exist, the table is created with the necessary format \[1\] | No  |
| Commit timeout | Transaction commit timeout (ms) | No  |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| PostgreSQL | 12  | N/A |

**Provider ID:** `postgresql`
**Provider Name:** DB - PostgreSQL

**Required properties:**
- `createTable` _boolean_ — Create table: Create the table if it doesn't exist. To do this you need permissions.
- `database` _string_ — Database: The database name
- `username` _string_ — Username: The username
- `hostname` _string_ — Hostname: DNS name or IP of the host.
- `table` _string_ — Table: The table name
- `name` _string_ — Name: Instance Name
- `password` _string_ — Password: The password
- `port` _integer_ — Port: Port of PostgreSQL host.

**Optional properties:**
- `mapping` _object_ — Mapping: The mapping list
- `persistentStorage` _boolean_ — Persistent storage
- `commitTimeout` _integer_ — Commit timeout: Transaction commit timeout (ms)
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `maxTransactionSize` _integer_ — Max transaction size: Maximum number of messages before a transaction is committed regardless of timeout
- `bulkSize` _integer_ — Bulk insert count: Buffer messages and perform bulk insert once the Bulk insert count is reached

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "postgresql",
    "Config": "{\"name\": \"My DB - PostgreSQL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 5432, \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "postgresql",
            "Config": "{\"name\": \"My DB - PostgreSQL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 5432, \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - AMQP TCP

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

AMQP TCP Integration enables Edge System to connect with AMQP broker via TCP.

Supported Versions
------------------

Supports RabbitMQ versions starting with 2.0 but primarily tested against recent 3. x releases. Some features and behaviors may be server-version specific.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to AMQP broker) - Yes

* Inbound (Subscribe data from AMQP broker to Edge) - No


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or hostname of AMQP broker (Must be reachable from Edge system) | Yes |
| Port | AMQP broker port | Yes |
| Virtual host | specifies the namespace of permissions, exchanges, queues and bindings on the server | No  |
| Username | Username | No  |
| Password | Password | No  |
| Exchange | AMQP exchange | No  |
| Exchange type | can be one of "direct", "fanout", "topic", "x-custom" | No  |
| Exchange durable | \[*\] | No  |
| Exchange auto delete | \[*\] | No  |
| Exchange internal | \[*\] | No  |
| Exchange no wait | \[*\] | No  |
| Routing key | AMQP routing key | Yes |
| ISO8601 timestamp | Convert a message timestamp into ISO8601 format before send | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

\[*\] Exchange names starting with "amq." are reserved for pre-declared and standardized exchanges. The client MAY declare an exchange starting with "amq." if the passive option is set, or the exchange already exists. Names can consist of a non-empty sequence of letters, digits, hyphen, underscore, period, or colon.

Each exchange belongs to one of a set of exchange kinds/types implemented by the server. The exchange types define the functionality of the exchange - i.e. how messages are routed through it. Once an exchange is declared, its type cannot be changed. The common types are "direct", "fanout", "topic" and "headers".

Durable and Non-Auto-Deleted exchanges survive server restarts and remain declared when there are no remaining bindings. These selections are best for long-lived exchange configurations like stable routes and default exchanges.

Non-Durable and Auto-Deleted exchanges are deleted when there are no remaining bindings and not restored on server restart. These selections are useful for temporary topologies that should not pollute the virtual host on failure or after the consumers have completed.

Non-Durable and Non-Auto-deleted exchanges remain while the server is running, including when there are no remaining bindings. These selections are useful for temporary topologies that may have long delays between bindings.

Durable and Auto-Deleted exchanges survive server restarts and are removed before and after server restarts when there are no remaining bindings. These selections are useful for robust temporary topologies or when you require binding durable queues to auto-deleted exchanges.

Note: RabbitMQ declares the default exchange types like 'amq.fanout' as durable, so queues that bind to these pre-declared exchanges must also be durable.

Exchanges declared as `internal` do not accept publishings. Internal exchanges are useful when you wish to implement inter-exchange topologies that should not be exposed to users of the broker.

When No Wait is selected, you can continue without waiting for a confirmation from the server. The channel may be closed because of an error. Add a NotifyClose listener to respond to any exceptions.AMQP TCP connector Readme

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** |
| --- | --- |
| RabbitMQ | 3.12 |

**Provider ID:** `amqp-tcp`
**Provider Name:** AMQP TCP

**Required properties:**
- `routingKey` _string_ — Routing key
- `port` _integer_ — Port: Port number
- `hostname` _string_ — Hostname
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `throttlingLimit` _integer_ — Throttling limit
- `exchangeType` _string_ — exchangeType: Exchange type
  Options: `direct`, `fanout`, `topic`, `x-custom`
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `username` _string_ — Username
- `virtualHost` _string_ — Virtual host: Virtual hostname
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `exchange` _string_ — Exchange
- `exchangeAutoDelete` _boolean_ — Exchange auto delete
- `exchangeDurable` _boolean_ — Exchange durable
- `iso8601Timestamp` _boolean_ — ISO8601 timestamp: Convert timestamp to ISO8601
- `password` _string_ — Password
- `exchangeInternal` _boolean_ — Exchange internal
- `persistentStorage` _boolean_ — Persistent storage
- `exchangeNoWait` _boolean_ — Exchange no wait

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "amqp-tcp",
    "Config": "{\"name\": \"My AMQP TCP Integration\", \"hostname\": \"192.168.1.100\", \"port\": 5672, \"virtualHost\": \"192.168.1.100\", \"username\": \"admin\", \"password\": \"password\", \"exchange\": \"placeholder_exchange\", \"exchangeType\": \"direct\", \"exchangeDurable\": true, \"exchangeAutoDelete\": false, \"exchangeInternal\": false, \"exchangeNoWait\": false, \"routingKey\": \"<certificate>\", \"iso8601Timestamp\": false, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "amqp-tcp",
            "Config": "{\"name\": \"My AMQP TCP Integration\", \"hostname\": \"192.168.1.100\", \"port\": 5672, \"virtualHost\": \"192.168.1.100\", \"username\": \"admin\", \"password\": \"password\", \"exchange\": \"placeholder_exchange\", \"exchangeType\": \"direct\", \"exchangeDurable\": true, \"exchangeAutoDelete\": false, \"exchangeInternal\": false, \"exchangeNoWait\": false, \"routingKey\": \"<certificate>\", \"iso8601Timestamp\": false, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Aveva Data Hub

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Aveva Data Hub integration enables Edge System to connect with Aveva Data Hub.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Aveva Data Hub ) - Yes

* Inbound (Subscribe data from Aveva Data Hub to Edge) - Yes


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Description | Enter a description for the connection | No  |
| Endpoint | Region Endpoints for West US (primary), Northern Australia, Eastern Europe. _The endpoint is found in Aveva Data Hub > Security > Clients > Client > Connection Information > Regional Endpoints_ | Yes |
| Client id | ID used to authenticate and access data. _This Client ID is found in Aveva Data Hub > Security > Clients > Client > Details> Client ID_ | Yes |
| Client secret | ID used to authenticate and access data. A user can create a new Secret in Aveva Data Hub > Security > Clients > Client >Secrets and use the secret as this field | Yes |
| Tenant id | ID required for a tenant to make connection. A tenant represents the set of services, applications, data, and configuration state available to a customer._The Tenant ID is found in Aveva Data Hub > Security > Client > Details_ | Yes |
| Stream id | Default SDS stream. Sequential Data Store stream name found in AVEVA Data Hub > Data Management . Stream ID can found in a stream’s Details | Yes |
| Namespace | The Namespace of the Default SDS stream name. | Yes |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

**Provider ID:** `aveva-datahub`
**Provider Name:** Aveva Data Hub

**Required properties:**
- `clientId` _string_ — Client Id
- `clientSecret` _string_ — Client Secret
- `namespace` _string_ — Namespace
- `tenantId` _string_ — Tenant Id
- `endpoint` _string_ — Endpoint
- `name` _string_ — Name: Instance Name
- `stream` _string_ — Stream Id

**Optional properties:**
- `description` _string_ — Description: Instance Description
- `persistentStorage` _boolean_ — Persistent storage
- `throttlingLimit` _integer_ — Throttling limit
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "aveva-datahub",
    "Config": "{\"name\": \"My Aveva Data Hub Integration\", \"description\": \"placeholder_description\", \"endpoint\": \"/example/path\", \"clientId\": \"my-client-id\", \"clientSecret\": \"password\", \"tenantId\": \"my-client-id\", \"stream\": \"placeholder_stream\", \"namespace\": \"placeholder_namespace\", \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "aveva-datahub",
            "Config": "{\"name\": \"My Aveva Data Hub Integration\", \"description\": \"placeholder_description\", \"endpoint\": \"/example/path\", \"clientId\": \"my-client-id\", \"clientSecret\": \"password\", \"tenantId\": \"my-client-id\", \"stream\": \"placeholder_stream\", \"namespace\": \"placeholder_namespace\", \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - OSI PI Historian

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

OSI PI Web Integration enables Edge System to connect with PI Historian Web API

Supported Communication
-----------------------

* Outbound - Publish data from Edge to PI

* Inbound - Subscribe to data from PI to Edge

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Description | Enter a description for the connection | No |
| Endpoint | Address of OSI PI Historian Web API (configured with OMF plugin) | Yes |
| Username | User name | Yes |
| Password | User password | Yes |
| CA Certificate | SSL CA Certificate | No |
| Compression | Enable gzip compression for OMF requests | Yes |
| Request Timeout | HTTP Request Timeout in milliseconds | Yes |
| Data Source Type | Text to be used as root name for datasource. If empty, PI points will show "PIWebAPI_OMF" | No |
| Data Source Version | Text to be used datasource suffix. Requires non-empty DataSourceType | No |
| Tag Name Format | Text with format-directives to generate PI point names | Yes |
| Tag Type Format | Text with format-directives to generate AF type names | Yes |
| Tag Description Format | Text with format-directives to generate PI point descriptions | No |
| Timezone | UTC Timezone information to append to Outbound data timestamps | No |
| Check Tags | Check if point name exists before attempting to create new | No |
| Publish Count Threshold | Publish count threshold (1 disables batching) | Yes |
| Publish Delay Threshold | Publish delay threshold in milliseconds (0 disables batching) | Yes |
| PIServer | Name of PI Data Archive server. Defaults to first found | No |
| Subscribe Interval | Polling interval in seconds | Yes |
| Max Subscription Events| Maximum number of events processed per subscription poll (prioritised by most recent) | Yes |
| Insecure Skip Verify | InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name. Select to disable verification | No |
| Parallel Publish Count | The number of simultaneously publishing messages | Yes |
| Persistent Storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No |
| Queue Mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No |

Format Directives
--------------
** WARNING! Take care when modifying format-directives **
* Any change to metadata format settings is only applicable to proceeding data. Once ingested to PI, metadata of existing PI points will not be modified.
* Point names will change if inner variable value changes (e.g. Tag Description). This may result in new PI points being created. 
* The following characters will be removed from any format string:   \*?;{}[]\\'"|


| **Symbol** | **Definition** | **Context** |
| --- | --- | --- |
| $ | Special character indicate a variable character follows. A variable represents some dynamic string value. Supported variables defined as follows: | - |
| $S | Data Source Type | from Connector Settings |
| $V | Data Source Version | from Connector Settings |
| $D | Device Name | from DeviceHub Tag |
| $N | Tag Name | from DeviceHub Tag | 
| $T | Tag Type | from DeviceHub Tag (shown as OPCUA/PI type) | 
| $R | Raw Tag Type | from DeviceHub Tag | 
| $P | Tag Description | from DeviceHub Tag | 
| $H | Hostname | from OS |
| | | |
| % | Special character indicating a function character follows. A function represents some action to be taken on the next variable. Supported functions defined as follows: | - |
| %L | Lowercase() | apply to next variable |
| %U | Uppercase() | apply to next variable |

Format Directive Notes:
* To use a special character in its literal form, enter symbol twice ($$ -> $, %% -> %)  
Example "$$$D.%%$N" -> "$deviceABC.%tagXYZ"
* A special character must be followed by either itself, or one of the supported characters in the table above. Any other condition will result in an error  
Example1 "$D.$N$%" -> error  
Example2 "$D.$N$" -> error  
Example3 "$D.$N$#" -> error
* Functions only act on the next variable found in the string  
Example1 "%U$D.$N" -> "DEVICEABC.tagXYZ" (device name all uppercase)  
Example2 "$D%L.$N" -> "deviceABC.tagxyz" (tag name all lowercase)  
Example3 "$D.$N%L" -> "deviceABC.tagXYZ" (no effect)

<!-- | AFServer | Name of Asset Framework server | Yes | -->
<!-- | Database | Name of Asset Framework database | Yes | -->
<!-- | Throttling Limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No | -->

**Provider ID:** `osi-pi-web`
**Provider Name:** OSI PI Historian

**Required properties:**
- `publishDelayThreshold` _integer_ — Publish Delay Threshold (ms): Publish delay threshold in milliseconds (0 disables batching)
- `endpoint` _string_ — Endpoint: Resource Endpoint
- `name` _string_ — Name: Instance Name
- `subscribeInterval` _integer_ — Subscribe Interval (s): The subscription polling interval in seconds
- `maxSubscriptionEvents` _integer_ — Max Subscription Events: The maximum number of events processed per subscription poll (prioritised by most recent)
- `requestTimeout` _integer_ — Request Timeout (ms): HTTP Request Timeout in milliseconds
- `username` _string_ — Username
- `password` _string_ — Password
- `publishCountThreshold` _integer_ — Publish Count Threshold: Publish count threshold (1 disables batching)
- `tagNameFormat` _string_ — Point Name Format: Formatting directives for PI point name
- `tagTypeFormat` _string_ — Point Datatype Format: Formatting directives for PI point datatype (AF type name)

**Optional properties:**
- `checkTags` _boolean_ — Check Tags: Check if point name exists before attempting to create new when writing
- `compression` _boolean_ — Gzip Compression: Enable gzip compression for OMF requests
- `dataSourceVersion` _string_ — Data Source Version: Optional version suffix for root datasource, requires non-empty DataSourceType
- `insecureSkipVerify` _boolean_ — Insecure Skip Verify: Disable server certificate chain and host name verification
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `dataSourceType` _string_ — Data Source Type: Optional root name of datasource for PI points
- `description` _string_ — Description: Instance Description
- `timezone` _string_ — Data Timezone: UTC Timezone of Outbound data
  Options: `UTC`, `Africa/Abidjan`, `Africa/Accra`, `Africa/Addis_Ababa`, `Africa/Algiers`, `Africa/Asmara`, `Africa/Bamako`, `Africa/Bangui`, `Africa/Banjul`, `Africa/Bissau`, `Africa/Blantyre`, `Africa/Brazzaville`, `Africa/Bujumbura`, `Africa/Cairo`, `Africa/Casablanca`, `Africa/Ceuta`, `Africa/Conakry`, `Africa/Dakar`, `Africa/Dar_es_Salaam`, `Africa/Djibouti`, `Africa/Douala`, `Africa/El_Aaiun`, `Africa/Freetown`, `Africa/Gaborone`, `Africa/Harare`, `Africa/Johannesburg`, `Africa/Juba`, `Africa/Kampala`, `Africa/Khartoum`, `Africa/Kigali`, `Africa/Kinshasa`, `Africa/Lagos`, `Africa/Libreville`, `Africa/Lome`, `Africa/Luanda`, `Africa/Lubumbashi`, `Africa/Lusaka`, `Africa/Malabo`, `Africa/Maputo`, `Africa/Maseru`, `Africa/Mbabane`, `Africa/Mogadishu`, `Africa/Monrovia`, `Africa/Nairobi`, `Africa/Ndjamena`, `Africa/Niamey`, `Africa/Nouakchott`, `Africa/Ouagadougou`, `Africa/Porto-Novo`, `Africa/Sao_Tome`, `Africa/Tripoli`, `Africa/Tunis`, `Africa/Windhoek`, `America/Adak`, `America/Anchorage`, `America/Anguilla`, `America/Antigua`, `America/Araguaina`, `America/Argentina/Buenos_Aires`, `America/Argentina/Catamarca`, `America/Argentina/Cordoba`, `America/Argentina/Jujuy`, `America/Argentina/La_Rioja`, `America/Argentina/Mendoza`, `America/Argentina/Rio_Gallegos`, `America/Argentina/Salta`, `America/Argentina/San_Juan`, `America/Argentina/San_Luis`, `America/Argentina/Tucuman`, `America/Argentina/Ushuaia`, `America/Aruba`, `America/Asuncion`, `America/Atikokan`, `America/Bahia`, `America/Bahia_Banderas`, `America/Barbados`, `America/Belem`, `America/Belize`, `America/Blanc-Sablon`, `America/Boa_Vista`, `America/Bogota`, `America/Boise`, `America/Cambridge_Bay`, `America/Campo_Grande`, `America/Cancun`, `America/Caracas`, `America/Cayenne`, `America/Cayman`, `America/Chicago`, `America/Chihuahua`, `America/Ciudad_Juarez`, `America/Costa_Rica`, `America/Creston`, `America/Cuiaba`, `America/Curacao`, `America/Danmarkshavn`, `America/Dawson`, `America/Dawson_Creek`, `America/Denver`, `America/Detroit`, `America/Dominica`, `America/Edmonton`, `America/Eirunepe`, `America/El_Salvador`, `America/Fort_Nelson`, `America/Fortaleza`, `America/Glace_Bay`, `America/Goose_Bay`, `America/Grand_Turk`, `America/Grenada`, `America/Guadeloupe`, `America/Guatemala`, `America/Guayaquil`, `America/Guyana`, `America/Halifax`, `America/Havana`, `America/Hermosillo`, `America/Indiana/Indianapolis`, `America/Indiana/Knox`, `America/Indiana/Marengo`, `America/Indiana/Petersburg`, `America/Indiana/Tell_City`, `America/Indiana/Vevay`, `America/Indiana/Vincennes`, `America/Indiana/Winamac`, `America/Inuvik`, `America/Iqaluit`, `America/Jamaica`, `America/Juneau`, `America/Kentucky/Louisville`, `America/Kentucky/Monticello`, `America/Kralendijk`, `America/La_Paz`, `America/Lima`, `America/Los_Angeles`, `America/Lower_Princes`, `America/Maceio`, `America/Managua`, `America/Manaus`, `America/Marigot`, `America/Martinique`, `America/Matamoros`, `America/Mazatlan`, `America/Menominee`, `America/Merida`, `America/Metlakatla`, `America/Mexico_City`, `America/Miquelon`, `America/Moncton`, `America/Monterrey`, `America/Montevideo`, `America/Montserrat`, `America/Nassau`, `America/New_York`, `America/Nome`, `America/Noronha`, `America/North_Dakota/Beulah`, `America/North_Dakota/Center`, `America/North_Dakota/New_Salem`, `America/Nuuk`, `America/Ojinaga`, `America/Panama`, `America/Paramaribo`, `America/Phoenix`, `America/Port-au-Prince`, `America/Port_of_Spain`, `America/Porto_Velho`, `America/Puerto_Rico`, `America/Punta_Arenas`, `America/Rankin_Inlet`, `America/Recife`, `America/Regina`, `America/Resolute`, `America/Rio_Branco`, `America/Santarem`, `America/Santiago`, `America/Santo_Domingo`, `America/Sao_Paulo`, `America/Scoresbysund`, `America/Sitka`, `America/St_Barthelemy`, `America/St_Johns`, `America/St_Kitts`, `America/St_Lucia`, `America/St_Thomas`, `America/St_Vincent`, `America/Swift_Current`, `America/Tegucigalpa`, `America/Thule`, `America/Tijuana`, `America/Toronto`, `America/Tortola`, `America/Vancouver`, `America/Whitehorse`, `America/Winnipeg`, `America/Yakutat`, `Antarctica/Casey`, `Antarctica/Davis`, `Antarctica/DumontDUrville`, `Antarctica/Macquarie`, `Antarctica/Mawson`, `Antarctica/McMurdo`, `Antarctica/Palmer`, `Antarctica/Rothera`, `Antarctica/Syowa`, `Antarctica/Troll`, `Antarctica/Vostok`, `Arctic/Longyearbyen`, `Asia/Aden`, `Asia/Almaty`, `Asia/Amman`, `Asia/Anadyr`, `Asia/Aqtau`, `Asia/Aqtobe`, `Asia/Ashgabat`, `Asia/Atyrau`, `Asia/Baghdad`, `Asia/Bahrain`, `Asia/Baku`, `Asia/Bangkok`, `Asia/Barnaul`, `Asia/Beirut`, `Asia/Bishkek`, `Asia/Brunei`, `Asia/Chita`, `Asia/Choibalsan`, `Asia/Colombo`, `Asia/Damascus`, `Asia/Dhaka`, `Asia/Dili`, `Asia/Dubai`, `Asia/Dushanbe`, `Asia/Famagusta`, `Asia/Gaza`, `Asia/Hebron`, `Asia/Ho_Chi_Minh`, `Asia/Hong_Kong`, `Asia/Hovd`, `Asia/Irkutsk`, `Asia/Jakarta`, `Asia/Jayapura`, `Asia/Jerusalem`, `Asia/Kabul`, `Asia/Kamchatka`, `Asia/Karachi`, `Asia/Kathmandu`, `Asia/Khandyga`, `Asia/Kolkata`, `Asia/Krasnoyarsk`, `Asia/Kuala_Lumpur`, `Asia/Kuching`, `Asia/Kuwait`, `Asia/Macau`, `Asia/Magadan`, `Asia/Makassar`, `Asia/Manila`, `Asia/Muscat`, `Asia/Nicosia`, `Asia/Novokuznetsk`, `Asia/Novosibirsk`, `Asia/Omsk`, `Asia/Oral`, `Asia/Phnom_Penh`, `Asia/Pontianak`, `Asia/Pyongyang`, `Asia/Qatar`, `Asia/Qostanay`, `Asia/Qyzylorda`, `Asia/Riyadh`, `Asia/Sakhalin`, `Asia/Samarkand`, `Asia/Seoul`, `Asia/Shanghai`, `Asia/Singapore`, `Asia/Srednekolymsk`, `Asia/Taipei`, `Asia/Tashkent`, `Asia/Tbilisi`, `Asia/Tehran`, `Asia/Thimphu`, `Asia/Tokyo`, `Asia/Tomsk`, `Asia/Ulaanbaatar`, `Asia/Urumqi`, `Asia/Ust-Nera`, `Asia/Vientiane`, `Asia/Vladivostok`, `Asia/Yakutsk`, `Asia/Yangon`, `Asia/Yekaterinburg`, `Asia/Yerevan`, `Atlantic/Azores`, `Atlantic/Bermuda`, `Atlantic/Canary`, `Atlantic/Cape_Verde`, `Atlantic/Faroe`, `Atlantic/Madeira`, `Atlantic/Reykjavik`, `Atlantic/South_Georgia`, `Atlantic/St_Helena`, `Atlantic/Stanley`, `Australia/Adelaide`, `Australia/Brisbane`, `Australia/Broken_Hill`, `Australia/Darwin`, `Australia/Eucla`, `Australia/Hobart`, `Australia/Lindeman`, `Australia/Lord_Howe`, `Australia/Melbourne`, `Australia/Perth`, `Australia/Sydney`, `Europe/Amsterdam`, `Europe/Andorra`, `Europe/Astrakhan`, `Europe/Athens`, `Europe/Belgrade`, `Europe/Berlin`, `Europe/Bratislava`, `Europe/Brussels`, `Europe/Bucharest`, `Europe/Budapest`, `Europe/Busingen`, `Europe/Chisinau`, `Europe/Copenhagen`, `Europe/Dublin`, `Europe/Gibraltar`, `Europe/Guernsey`, `Europe/Helsinki`, `Europe/Isle_of_Man`, `Europe/Istanbul`, `Europe/Jersey`, `Europe/Kaliningrad`, `Europe/Kirov`, `Europe/Kyiv`, `Europe/Lisbon`, `Europe/Ljubljana`, `Europe/London`, `Europe/Luxembourg`, `Europe/Madrid`, `Europe/Malta`, `Europe/Mariehamn`, `Europe/Minsk`, `Europe/Monaco`, `Europe/Moscow`, `Europe/Oslo`, `Europe/Paris`, `Europe/Podgorica`, `Europe/Prague`, `Europe/Riga`, `Europe/Rome`, `Europe/Samara`, `Europe/San_Marino`, `Europe/Sarajevo`, `Europe/Saratov`, `Europe/Simferopol`, `Europe/Skopje`, `Europe/Sofia`, `Europe/Stockholm`, `Europe/Tallinn`, `Europe/Tirane`, `Europe/Ulyanovsk`, `Europe/Vaduz`, `Europe/Vatican`, `Europe/Vienna`, `Europe/Vilnius`, `Europe/Volgograd`, `Europe/Warsaw`, `Europe/Zagreb`, `Europe/Zurich`, `Indian/Antananarivo`, `Indian/Chagos`, `Indian/Christmas`, `Indian/Cocos`, `Indian/Comoro`, `Indian/Kerguelen`, `Indian/Mahe`, `Indian/Maldives`, `Indian/Mauritius`, `Indian/Mayotte`, `Indian/Reunion`, `Pacific/Apia`, `Pacific/Auckland`, `Pacific/Bougainville`, `Pacific/Chatham`, `Pacific/Chuuk`, `Pacific/Easter`, `Pacific/Efate`, `Pacific/Fakaofo`, `Pacific/Fiji`, `Pacific/Funafuti`, `Pacific/Galapagos`, `Pacific/Gambier`, `Pacific/Guadalcanal`, `Pacific/Guam`, `Pacific/Honolulu`, `Pacific/Kanton`, `Pacific/Kiritimati`, `Pacific/Kosrae`, `Pacific/Kwajalein`, `Pacific/Majuro`, `Pacific/Marquesas`, `Pacific/Midway`, `Pacific/Nauru`, `Pacific/Niue`, `Pacific/Norfolk`, `Pacific/Noumea`, `Pacific/Pago_Pago`, `Pacific/Palau`, `Pacific/Pitcairn`, `Pacific/Pohnpei`, `Pacific/Port_Moresby`, `Pacific/Rarotonga`, `Pacific/Saipan`, `Pacific/Tahiti`, `Pacific/Tarawa`, `Pacific/Tongatapu`, `Pacific/Wake`, `Pacific/Wallis`
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `piServer` _string_ — PI Data Server Name: Optional name of PI Data Archive server
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `tagDescriptionFormat` _string_ — Point Description Format: Optional formatting directives for PI point description
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "osi-pi-web",
    "Config": "{\"name\": \"My OSI PI Historian Integration\", \"description\": \"placeholder_description\", \"endpoint\": \"/example/path\", \"username\": \"admin\", \"password\": \"password\", \"insecureSkipVerify\": false, \"caCert\": \"<certificate>\", \"timezone\": \"UTC\", \"dataSourceType\": \"DH\", \"dataSourceVersion\": \"1\", \"tagNameFormat\": \"$S$V.$D.$N\", \"tagTypeFormat\": \"TimeIndexed.$T.$S\", \"tagDescriptionFormat\": \"$P\", \"compression\": true, \"checkTags\": true, \"piServer\": \"192.168.1.100\", \"requestTimeout\": 1000, \"publishDelayThreshold\": 1000, \"publishCountThreshold\": 50, \"subscribeInterval\": 1, \"maxSubscriptionEvents\": 100, \"workersCount\": 1, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1, \"database\": \"\", \"afServer\": \"\", \"throttlingLimit\": 0}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "osi-pi-web",
            "Config": "{\"name\": \"My OSI PI Historian Integration\", \"description\": \"placeholder_description\", \"endpoint\": \"/example/path\", \"username\": \"admin\", \"password\": \"password\", \"insecureSkipVerify\": false, \"caCert\": \"<certificate>\", \"timezone\": \"UTC\", \"dataSourceType\": \"DH\", \"dataSourceVersion\": \"1\", \"tagNameFormat\": \"$S$V.$D.$N\", \"tagTypeFormat\": \"TimeIndexed.$T.$S\", \"tagDescriptionFormat\": \"$P\", \"compression\": true, \"checkTags\": true, \"piServer\": \"192.168.1.100\", \"requestTimeout\": 1000, \"publishDelayThreshold\": 1000, \"publishCountThreshold\": 50, \"subscribeInterval\": 1, \"maxSubscriptionEvents\": 100, \"workersCount\": 1, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1, \"database\": \"\", \"afServer\": \"\", \"throttlingLimit\": 0}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - AWS IoT SiteWise

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

AWS IoT SiteWise integration enables Edge System to connect with Amazon AWS IoT SiteWise service.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to AWS IoT SiteWise) - Yes
    
* Inbound (Subscribe data from AWS IoT SiteWise to Edge) - Yes
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Region | Region is a geographic area where Amazon Web Services resources are hosted | Yes |
| Access key id | Access key id is a unique identifier in AWS IoT SiteWise used for authentication, enabling secure and authorized access to the SiteWise service for applications and entities | Yes |
| Secret access key | Secret access key in AWS IoT SiteWise is a confidential authentication credential used to securely access and interact with the SiteWise service. | Yes |
| Subscribe interval | Subscribe interval defines the time in seconds between consecutive data update notifications for a subscribed asset property, specifying the frequency at which the system checks and receives updates on the specified property within the IoT SiteWise platform. | No  |
| Number of batch messages | Number of batch messages refers to the quantity of grouped data transmissions | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

**Provider ID:** `aws-sitewise`
**Provider Name:** AWS IoT SiteWise

**Required properties:**
- `region` _string_ — Region: Region Name
- `secretAccessKey` _string_ — Secret access key: The secret access key
- `accessKey` _string_ — Access key: The access key
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `subscribeIntervalSeconds` _integer_ — Subscribe interval: The subscription polling interval in seconds
- `throttlingLimit` _integer_ — Throttling limit
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `numberOfBatchMessagesToPublish` _integer_ — Number of batch messages: The number of batch messages to publish
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "aws-sitewise",
    "Config": "{\"name\": \"My AWS IoT SiteWise Integration\", \"region\": \"us-west-2\", \"accessKey\": \"<certificate>\", \"secretAccessKey\": \"<certificate>\", \"subscribeIntervalSeconds\": 1, \"numberOfBatchMessagesToPublish\": 1, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "aws-sitewise",
            "Config": "{\"name\": \"My AWS IoT SiteWise Integration\", \"region\": \"us-west-2\", \"accessKey\": \"<certificate>\", \"secretAccessKey\": \"<certificate>\", \"subscribeIntervalSeconds\": 1, \"numberOfBatchMessagesToPublish\": 1, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - AWS IoT SiteWise Edge Gen 2

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The AWS IoT SiteWise Edge Integration enables Edge system to connect to the MQTT broker in AWS IoT SiteWise Edge Gateway. Seamlessly allow the AWS IoT SiteWise Edge Data Processor & AWS IoT SiteWise Edge Publisher to publish the data into AWS IoT SiteWise

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes

Configurations
--------------

| **Variable** | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | **Required** |
| --- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|
| Name | Connector Name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Yes          |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Yes          |
| Port | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Yes          |
| Client id | Unique client identity                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Yes          |
| Username | User name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | No           |
| Password | User password                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | No           |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration.                                                                                                                 | Yes          |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time. As an example, in Mosquitto, you have the following settings:<ul><li>max_queued_messages (default 100)</li><li>max_queued_bytes (default 0)</li></ul>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes          |
| PropertyAlias | AWS IoT SiteWise Asset Property Alias | Yes          |
| Integration topic | Default topic for Publishing | Yes          |
| Additional Alias definition | Optional string to further define dynamic propertyAlias and Integration Topic | No           |
| LWT topic | It refers to the specific topic where the last will message will be published. | No           |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No           |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No           |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No           |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No           |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No           |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No           |

Format Directives
-----------------

| **Symbol** | **Definition** | **Context**             |
|------------|----------------|-------------------------|
| $ | Special character indicate a variable character follows. A variable represents some dynamic string value. Supported variables defined as follows: | -                       |
| $S | Additional Alias definition | from Connector Settings |
| $D | Device Name | from DeviceHub Tag      |
| $N | Tag Name | from DeviceHub Tag |
| $R | Raw Tag Type | from DeviceHub Tag |
| $P | Tag Description | from DeviceHub Tag |
| $H | Hostname | from OS |
| % | Special character indicating a function character follows. A function represents some action to be taken on the next variable. Supported functions defined as follows: | - |
| %L | Lowercase() | apply to next variable |
| %U | Uppercase() | apply to next variable |

Format Directives Notes
-----------------------

To use a special character in its literal form, enter symbol twice (`$$` -> `$`, `%%` -> `%`) <br/> Example `"$$$D.%%$N" -> "$deviceABC.%tagXYZ"`

**Provider ID:** `aws-iot-sitewise-edge-gen-2`
**Provider Name:** MQTT - AWS IoT SiteWise Edge Gen 2

**Required properties:**
- `clientId` _string_ — Client ID: Client ID is required by MQTT server.
- `topic` _string_ — Integration Topic: MQTT topic
- `port` _integer_ — Port: Port of MQTT host.
- `name` _string_ — Instance Name
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `propertyAlias` _string_ — Property Alias: AWS IoT Sitewise Asset Property Alias

**Optional properties:**
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `additionalAliasDefinition` _string_ — Additional Alias Definition: Optional string to further define dynamic propertyAlias and Integration Topic
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `throttlingLimit` _integer_ — Throttling limit

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "aws-iot-sitewise-edge-gen-2",
    "Config": "{\"name\": \"My MQTT - AWS IoT SiteWise Edge Gen 2 Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8883, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"propertyAlias\": \"placeholder_propertyAlias\", \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"additionalAliasDefinition\": \"placeholder_additionalAliasDefinition\", \"qos\": 1, \"workersCount\": 100, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "aws-iot-sitewise-edge-gen-2",
            "Config": "{\"name\": \"My MQTT - AWS IoT SiteWise Edge Gen 2 Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8883, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"propertyAlias\": \"placeholder_propertyAlias\", \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"additionalAliasDefinition\": \"placeholder_additionalAliasDefinition\", \"qos\": 1, \"workersCount\": 100, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - Amazon AWS IoT Core over SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The AWS IoT Core MQTT SSL integration enables Edge System to connect with Amazon AWS IoT Core over SSL.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
    
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system) | Yes |
| Port | MQTT broker port | Yes |
| Certificate | SSL Certificate | Yes |
| Private key | SSL certificate private key | Yes |
| Client id | Unique client identity | No  |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration. | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publish or Subscribe | Yes |
| LWT topic | It refers to the specific topic where the last will message will be published. | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------
This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| Amazon AWS | N/A | N/A |

**Provider ID:** `aws-iotcore-mqtt-ssl`
**Provider Name:** MQTT - Amazon AWS IoT Core over SSL

**Required properties:**
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `name` _string_ — Name: Instance Name
- `privateKey` _string_ — Private key: Private key can be added here.
- `certificate` _string_ — Certificate: Certificate can be added here.
- `topic` _string_ — Integration Topic: MQTT topic
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.

**Optional properties:**
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `port` _integer_ — Port: Port of MQTT host.
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`
- `clientId` _string_ — Client ID: Client ID is required by MQTT server.
- `willPayload` _string_ — LWT payload: MQTT LWT payload

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "aws-iotcore-mqtt-ssl",
    "Config": "{\"name\": \"My MQTT - Amazon AWS IoT Core over SSL Integration\", \"hostname\": \"a1o8e9c82gegra.iot.us-east-2.amazonaws.com\", \"port\": 8883, \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"clientId\": \"my-client-id\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"/events\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "aws-iotcore-mqtt-ssl",
            "Config": "{\"name\": \"My MQTT - Amazon AWS IoT Core over SSL Integration\", \"hostname\": \"a1o8e9c82gegra.iot.us-east-2.amazonaws.com\", \"port\": 8883, \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"clientId\": \"my-client-id\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"/events\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Azure Event Hubs

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Azure Event Hubs integration enables Edge System to connect to the Azure Event Hubs.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Azure Event Hub) - Yes

* Inbound (Subscribe data from Azure Event Hub to Edge) - No


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Connection string | Configuration string | Yes |
| Maximum message size | Maximum message size for an individual event (message) in Azure Event Hubs is 256 KB | Yes |
| Parallel connections unit | Impose a strict limit on the maximum number of simultaneous connections or clients that can be established with an Event Hub. | Yes |
| Combine messages | Message or event combination refers to the procedure of consolidating several separate messages or events into one unified message or event. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

**Provider ID:** `azure-event-hubs`
**Provider Name:** Azure Event Hubs

**Required properties:**
- `combineMessages` _boolean_ — Combine messages: Decrease count of messages by combine them to a single message
- `connectionString` _string_ — Connection string
- `maxMessageSize` _integer_ — Maximum message size: Maximum message size in KB
- `name` _string_ — Name: Instance Name
- `connectionsCount` _integer_ — Parallel connections count: The count of parallel connections

**Optional properties:**
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "azure-event-hubs",
    "Config": "{\"name\": \"My Azure Event Hubs Integration\", \"connectionString\": \"password\", \"maxMessageSize\": 256, \"connectionsCount\": 50, \"combineMessages\": true, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "azure-event-hubs",
            "Config": "{\"name\": \"My Azure Event Hubs Integration\", \"connectionString\": \"password\", \"maxMessageSize\": 256, \"connectionsCount\": 50, \"combineMessages\": true, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - Azure IoT Hub using Device Certificates

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Azure IoT Hub MQTT Device certificate integration enables Edge System to connect with Azure IoT Hub over SSL using device certificates.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
    
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system) | Yes |
| Port | MQTT broker port | Yes |
| Device id | Device ID is a unique identifier assigned to an IoT device for secure and distinct identification within Azure IoT services | Yes |
| Certificate | A device certificate is a digital credential used for secure authentication and encryption in Azure services, providing trusted identity and data protection. | Yes |
| Private key | A device private key is a cryptographic key used for secure, authenticated communication between an IoT device and Azure services. | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publish or Subscribe<br><br>Default: _devices/{deviceId}/messages/events/_<br><br>where {deviceid} gets replaced with the value from the configuraiton entered | Yes |
| LWT topic | It refers to the specific topic where the last will message will be published. | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| Azure services | N/A | N/A |

**Provider ID:** `azure-iothub-mqtt-device-cert`
**Provider Name:** MQTT - Azure IoT Hub using Device Certificates

**Required properties:**
- `deviceId` _string_ — Device ID: ID of the device as shown in your Azure IoT hub.
- `name` _string_ — Name: Instance Name
- `privateKey` _string_ — Private key: Device key
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `certificate` _string_ — Certificate: Device certificate
- `hostname` _string_ — Hostname: DNS name of MQTT host. It can be found in "Overview" tab of your Azure IoT hub.

**Optional properties:**
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `port` _integer_ — Port: Port of MQTT host.
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `topic` _string_ — Integration Topic: MQTT topic
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "azure-iothub-mqtt-device-cert",
    "Config": "{\"name\": \"My MQTT - Azure IoT Hub using Device Certificates Integration\", \"hostname\": \"loopedge.azure-devices.net\", \"port\": 8883, \"deviceId\": \"loopedge-000c29dedd9e\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"workersCount\": 16, \"topic\": \"devices/loopedge-000c29dedd9e/messages/events/\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "azure-iothub-mqtt-device-cert",
            "Config": "{\"name\": \"My MQTT - Azure IoT Hub using Device Certificates Integration\", \"hostname\": \"loopedge.azure-devices.net\", \"port\": 8883, \"deviceId\": \"loopedge-000c29dedd9e\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"workersCount\": 16, \"topic\": \"devices/loopedge-000c29dedd9e/messages/events/\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - Azure IoT Hub using SAS Key

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Azure IoT Hub MQTT SAS key integration enables Edge System to connect to the MQTT broker.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes

* Inbound (Subscribe data from MQTT Broker to Edge) - Yes


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system) | Yes |
| Port | MQTT broker port | Yes |
| Client ID | Unique client identity | No  |
| Username | User name | No  |
| Password | User password | No  |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration. | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publish or Subscribe | No  |
| LWT topic | It refers to the specific topic where the last will message will be published. | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| Azure Services | N/A | N/A |

**Provider ID:** `azure-iothub-mqtt-sas-key`
**Provider Name:** MQTT - Azure IoT Hub using SAS Key

**Required properties:**
- `sasKey` _string_ — SAS Key: Primary or secondary shared access key.
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `deviceId` _string_ — Device ID: ID of the device as shown in your Azure IoT account.
- `hostname` _string_ — Hostname: DNS name of MQTT host. It can be found in "Overview" tab of your Azure IoT hub.
- `tokenTTL` _integer_ — Token TTL (minutes): The token expiry time in minutes
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `port` _integer_ — Port: Port of MQTT host.
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `throttlingLimit` _integer_ — Throttling limit
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `persistentStorage` _boolean_ — Persistent storage
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `topic` _string_ — Integration Topic: MQTT topic

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "azure-iothub-mqtt-sas-key",
    "Config": "{\"name\": \"My MQTT - Azure IoT Hub using SAS Key Integration\", \"hostname\": \"loopedge.azure-devices.net\", \"port\": 8883, \"deviceId\": \"loopedge-000c29dedd9e\", \"sasKey\": \"<certificate>\", \"workersCount\": 16, \"topic\": \"devices/loopedge-000c29dedd9e/messages/events/\", \"tokenTTL\": 1440, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "azure-iothub-mqtt-sas-key",
            "Config": "{\"name\": \"My MQTT - Azure IoT Hub using SAS Key Integration\", \"hostname\": \"loopedge.azure-devices.net\", \"port\": 8883, \"deviceId\": \"loopedge-000c29dedd9e\", \"sasKey\": \"<certificate>\", \"workersCount\": 16, \"topic\": \"devices/loopedge-000c29dedd9e/messages/events/\", \"tokenTTL\": 1440, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Cognite Connector

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

Cognite Integration enables Edge System to connect with the Cognite platform.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Cognite platform ) - Yes
* Inbound (Subscribe data from Cognite platform to Edge) - Yes

Configurations
--------------

| **Variable** | **Detail** | **Required**    |
| --- | --- |-----------------|
| Name | Connector Name | Yes             |
| Project ID | A unique identifier assigned to each project within the Cognite platform | Yes             |
| Tenant ID | A unique identifier associated with a specific customer or organization within the Cognite platform, obtained from Microsoft Azure. | Yes  |
| Client ID | A unique identifier used to authenticate Cognite clients, obtained from Microsoft Azure. | Yes             |
| Client Secret | A confidential key used for authentication of Cognite clients, obtained from Microsoft Azure. | Yes             |
| Cluster | A grouping of resources within the Cognite platform for managing and processing data efficiently. | Yes             |
| Scope | Specifies the level of access or permissions granted to an application within the Cognite platform. | Yes  |
| Subscribe interval | The time interval at which a client application receives updates or notifications from the Cognite platform | No |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No |

**Provider ID:** `cognite`
**Provider Name:** Cognite Connector

**Required properties:**
- `projectID` _string_ — Project ID
- `clientID` _string_ — Client ID
- `cluster` _string_ — Cluster: Cluster name
- `scope` _string_ — Scope: Scope name
- `tenantID` _string_ — Tenant ID: Microsoft Azure Tenant ID
- `clientSecret` _string_ — Client Secret: Client secret
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `subscribeIntervalSeconds` _integer_ — Subscribe interval: The subscription polling interval in seconds
- `throttlingLimit` _integer_ — Throttling limit
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "cognite",
    "Config": "{\"name\": \"My Cognite Connector Integration\", \"projectID\": \"my-client-id\", \"tenantID\": \"my-client-id\", \"clientID\": \"my-client-id\", \"clientSecret\": \"password\", \"cluster\": \"az-eastus-9\", \"scope\": \"https://az-eastus-9.cognitedata.com/.default\", \"subscribeIntervalSeconds\": 1, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "cognite",
            "Config": "{\"name\": \"My Cognite Connector Integration\", \"projectID\": \"my-client-id\", \"tenantID\": \"my-client-id\", \"clientID\": \"my-client-id\", \"clientSecret\": \"password\", \"cluster\": \"az-eastus-9\", \"scope\": \"https://az-eastus-9.cognitedata.com/.default\", \"subscribeIntervalSeconds\": 1, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - Databricks SQL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

Databricks integration enables Edge System to connect with Databricks.

Supported Communication
-----------------------

* Outbound (Write from Edge to Databricks) - Yes
    
* Inbound (Read from Databricks to Edge) - No
    

Configurations
--------------
| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Connection String | Connection string for the data source name.<br><br>For personal token authentication, utilize the format below:  <br>`token:personal-access-token@server-hostname:port-number/http-path?param1=value1&param2=value2`<br><br>For M2M OAuth authentication, use:  <br>`server-hostname:port-number/http-path?authType=OAuthM2M&clientID=client-id&clientSecret=client-secret` | Yes |
| Table | Table Name | Yes |
| Mapping | Data from a predefined table can be transformed and mapped into a custom one using a mapping configuration. For instance, the configuration might specify mappings in the format {"from": "to"}, where "from" represents a column from the predefined table, and "to" represents a column in the destination table. | No  |
| Create Table | Create the table if it's not present, ensuring the user possesses the necessary permissions. | No  |
| Bulk insert count | Accumulate messages in the buffer and execute the insertion once the count threshold is met. | No  |
| Commit Timeout | Timeout (in milliseconds) for committing bulk inserts. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

**Provider ID:** `databricks`
**Provider Name:** DB - Databricks SQL

**Required properties:**
- `createTable` _boolean_ — Create table: Create the table if it doesn't exist. To do this you need permissions.
- `name` _string_ — Name: Instance Name
- `table` _string_ — Table: The table name
- `connString` _string_ — DSN Connection string: Data source name connection string

**Optional properties:**
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `bulkSize` _integer_ — Bulk insert count: Buffer messages and perform bulk insert once the Bulk insert count is reached
- `commitTimeout` _integer_ — Commit timeout: Bulk insert commit timeout (ms)
- `mapping` _object_ — Mapping: The mapping list
- `persistentStorage` _boolean_ — Persistent storage

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "databricks",
    "Config": "{\"name\": \"My DB - Databricks SQL Integration\", \"connString\": \"password\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"bulkSize\": 0, \"commitTimeout\": 1000, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "databricks",
            "Config": "{\"name\": \"My DB - Databricks SQL Integration\", \"connString\": \"password\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"bulkSize\": 0, \"commitTimeout\": 1000, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Google Cloud Pub/Sub Connector

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Pub/Sub integration enables Edge System to connect with Google Cloud Pub/Sub.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Google Cloud Pub/Sub) - Yes
    
* Inbound (Subscribe to data from Google Cloud Pub/Sub to Edge ) - Yes
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Service account key | Service account key is a JSON or P12 file containing authentication credentials for programmatic access to Google services | Yes |
| Project id | Project id is a unique identifier for a specific project within the Google Cloud Platform ecosystem. | Yes |
| Private key | Private Key ID is a unique identifier associated with a service account's private key, used for authentication and access control in Google services. | No  |
| Client email | Client Email is an email address associated with a service account in a Google Cloud project, used for authentication and access to resources. | No  |
| Default topic | Default topic for publishing | Yes |
| Show custom attributes | If enabled, custom attributes are key-value pairs that allow you to attach additional metadata to messages in a Google Cloud Pub/Sub topic for custom processing and filtering. | No  |
| Parallel publish count | Parallel publish count refers to the number of concurrent message publishing operations that can be performed simultaneously using the Google Cloud Pub/Sub service, enhancing message throughput. | Yes |
| Parallel byte threshold | Parallel byte threshold is the configurable limit on the size of the data payload for a batch of messages that determines when parallel publishing of messages is triggered in Google Cloud Pub/Sub for optimized data transfer. | No  |
| Publish count threshold | Publish count threshold is the set limit on the number of messages in a batch that triggers publishing to Google Cloud Pub/Sub, optimizing message delivery. | No  |
| Publish delay threshold (Milliseconds) | Publish delay threshold (Milliseconds) is the specified time interval after which accumulated messages are automatically published to Google Cloud Pub/Sub to control message delivery latency. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

**Provider ID:** `gcloud-pubsub`
**Provider Name:** Google Cloud Pub/Sub Connector

**Required properties:**
- `projectId` _string_ — Project ID: The project ID of the cloud project
- `topic` _string_ — Integration Topic: Sub topic
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `key` _string_ — Credentials (.json)
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `privateKeyID` _string_ — Private Key ID: The private key ID of the cloud project
- `publishByteThreshold` _integer_ — Publish byte threshold: Publish byte threshold (0 is a default value, could be interpreted like - no limits)
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `clientEmail` _string_ — Client Email: The client email of the cloud project
- `publishDelayThreshold` _integer_ — Publish delay threshold (Milliseconds): Publish delay threshold (0 is a default value, could be interpreted like - no limits)
- `throttlingLimit` _integer_ — Throttling limit
- `meta` _object_ — Custom Attributes: The custom attributes
- `persistentStorage` _boolean_ — Persistent storage
- `publishCountThreshold` _integer_ — Publish count threshold: Publish count threshold (0 is a default value, could be interpreted like - no limits)

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "gcloud-pubsub",
    "Config": "{\"name\": \"My Google Cloud Pub/Sub Connector Integration\", \"key\": \"<certificate>\", \"projectId\": \"my-client-id\", \"privateKeyID\": \"password\", \"clientEmail\": \"placeholder_clientEmail\", \"topic\": \"projects/project-identifier/collection/relative-name\", \"meta\": {}, \"workersCount\": 100, \"publishByteThreshold\": 0, \"publishCountThreshold\": 0, \"publishDelayThreshold\": 0, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "gcloud-pubsub",
            "Config": "{\"name\": \"My Google Cloud Pub/Sub Connector Integration\", \"key\": \"<certificate>\", \"projectId\": \"my-client-id\", \"privateKeyID\": \"password\", \"clientEmail\": \"placeholder_clientEmail\", \"topic\": \"projects/project-identifier/collection/relative-name\", \"meta\": {}, \"workersCount\": 100, \"publishByteThreshold\": 0, \"publishCountThreshold\": 0, \"publishDelayThreshold\": 0, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - InfluxDB v1.7.x TCP

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

InfluxDB v1.7.x TCP Integration enables Edge System to connect with InfluxDB v1.7.x database via TCP

Supported Versions
------------------

* Compatible with InfluxDB 1.x
    

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes
    
* Inbound (Read from Database to Edge) - No
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Address | InfluxDB database url (e.g., [http://localhost:8086](http://localhost:8086/)) | Yes |
| Database | Database name | Yes |
| Username | User name (can be empty) | No  |
| Password | User password (can be empty) | No  |
| Batch Size | The number of messages to be collected as a batch before inserting into the database | No  |
| Batch Commit Time | The time, in seconds, before the next commit, regardless of batch size | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| docker: influxdb | 1.7 | N/A |
| docker: influxdb | 1.8 | N/A |

**Provider ID:** `influxdb-tcp`
**Provider Name:** DB - InfluxDB v1.7.x TCP

**Required properties:**
- `name` _string_ — Name: Instance Name
- `database` _string_ — InfluxDB database name
- `address` _string_ — InfluxDB address

**Optional properties:**
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `batchCommitTimeSec` _integer_ — Insert batch commit time: The time of batch messages to commit
- `password` _string_ — Password
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `username` _string_ — Username
- `batchSize` _integer_ — Insert batch size: The number of batch messages to insert

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "influxdb-tcp",
    "Config": "{\"name\": \"My DB - InfluxDB v1.7.x TCP Integration\", \"address\": \"http://localhost:8086\", \"database\": \"mydb\", \"username\": \"admin\", \"password\": \"password\", \"batchSize\": 500, \"batchCommitTimeSec\": 5, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "influxdb-tcp",
            "Config": "{\"name\": \"My DB - InfluxDB v1.7.x TCP Integration\", \"address\": \"http://localhost:8086\", \"database\": \"mydb\", \"username\": \"admin\", \"password\": \"password\", \"batchSize\": 500, \"batchCommitTimeSec\": 5, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - InfluxDB v2.x TCP

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

InfluxDB v2.x TCP Integration enables Edge System to connect with InfluxDB v2.x database via TCP

Supported Versions
------------------

* Compatible with InfluxDB 2.x
    

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes
    
* Inbound (Read from Database to Edge) - No
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- |--------------|
| Name | Connector Name | Yes          |
| Address | InfluxDB database url (e.g., [http://localhost:8086](http://localhost:8086/)) | Yes          |
| Bucket | Bucket name | Yes          |
| Organization | Organization name | Yes          |
| Auth Token | Authentication token | Yes          |
| Username | User name (can be empty) | No  |
| Password | User password (can be empty) | No  |
| Batch Size | The number of messages to be collected as a batch before inserting into the database | No           |
| Batch Commit Time | The time, in seconds, before the next commit, regardless of batch size | No           |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No           |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No           |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |

Warning: The Username and Password fields are deprecated, please use Auth Token instead

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| docker: influxdb | 2.x | N/A |

**Provider ID:** `influxdb-v2-tcp`
**Provider Name:** DB - InfluxDB v2.x TCP

**Required properties:**
- `address` _string_ — InfluxDB address
- `batchCommitTimeSec` _integer_ — Insert batch commit time: The time of batch messages to commit
- `database` _string_ — InfluxDB bucket name: Database name
- `name` _string_ — Name: Instance Name
- `authToken` _string_ — Auth token
- `batchSize` _integer_ — Insert batch size: The number of batch messages to insert
- `organization` _string_ — Organization: Organization name

**Optional properties:**
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `password` _string_ — Password
- `throttlingLimit` _integer_ — Throttling limit
- `persistentStorage` _boolean_ — Persistent storage
- `username` _string_ — Username

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "influxdb-v2-tcp",
    "Config": "{\"name\": \"My DB - InfluxDB v2.x TCP Integration\", \"address\": \"http://localhost:8086\", \"database\": \"mydb\", \"organization\": \"placeholder_organization\", \"authToken\": \"password\", \"username\": \"admin\", \"password\": \"password\", \"batchSize\": 500, \"batchCommitTimeSec\": 5, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "influxdb-v2-tcp",
            "Config": "{\"name\": \"My DB - InfluxDB v2.x TCP Integration\", \"address\": \"http://localhost:8086\", \"database\": \"mydb\", \"organization\": \"placeholder_organization\", \"authToken\": \"password\", \"username\": \"admin\", \"password\": \"password\", \"batchSize\": 500, \"batchCommitTimeSec\": 5, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - InfluxDB v2.x+ SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

InfluxDB v2.x SSL Integration enables Edge System to connect with InfluxDB v2.x database via SSL

Supported Versions
------------------

* Compatible with InfluxDB 2.x
    

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes
    
* Inbound (Read from Database to Edge) - No
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- |--------------|
| Name | Connector Name | Yes          |
| Address | InfluxDB database url (e.g., [http://localhost:8086](http://localhost:8086/)) | Yes          |
| Bucket | Bucket name | Yes          |
| Organization | Organization name | Yes          |
| Auth Token | Authentication token | Yes          |
| Username | User name (can be empty) | No  |
| Password | User password (can be empty) | No  |
| CA Certificate | SSL CA Certificate | No           |
| Certificate | SSL Certificate | No           |
| Private key | SSL Private key | No           |
| Batch Size | The number of messages to be collected as a batch before inserting into the database | No           |
| Batch Commit Time | The time, in seconds, before the next commit, regardless of batch size | No           |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No           |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No           |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No           |

Warning: The Username and Password fields are deprecated, please use Auth Token instead 

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| docker: influxdb | 2.x | N/A |

**Provider ID:** `influxdb-v2-ssl`
**Provider Name:** DB - InfluxDB v2.x+ SSL

**Required properties:**
- `database` _string_ — InfluxDB bucket name: Database name
- `batchCommitTimeSec` _integer_ — Insert batch commit time: The time of batch messages to commit
- `batchSize` _integer_ — Insert batch size: The number of batch messages to insert
- `organization` _string_ — Organization: Organization name
- `address` _string_ — InfluxDB address
- `authToken` _string_ — Auth token
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `certificate` _string_ — Certificate: Certificate can be added here.
- `username` _string_ — Username
- `password` _string_ — Password
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `privateKey` _string_ — Private key: Private key can be added here.
- `persistentStorage` _boolean_ — Persistent storage

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "influxdb-v2-ssl",
    "Config": "{\"name\": \"My DB - InfluxDB v2.x+ SSL Integration\", \"address\": \"http://localhost:8086\", \"database\": \"mydb\", \"organization\": \"placeholder_organization\", \"authToken\": \"password\", \"username\": \"admin\", \"password\": \"password\", \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"batchSize\": 500, \"batchCommitTimeSec\": 5, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "influxdb-v2-ssl",
            "Config": "{\"name\": \"My DB - InfluxDB v2.x+ SSL Integration\", \"address\": \"http://localhost:8086\", \"database\": \"mydb\", \"organization\": \"placeholder_organization\", \"authToken\": \"password\", \"username\": \"admin\", \"password\": \"password\", \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"batchSize\": 500, \"batchCommitTimeSec\": 5, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Kafka TCP

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Kafka TCP integration enables the Edge System to connect with the Kafka broker.

Supported Versions
------------------

Compatible with Kafka versions from 0.10.1.0 to 2.1.0.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Kafka broker) - Yes

* Inbound (Subscribe data from Kafka broker to Edge) - Yes


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Brokers | List of Kafka brokers separated by comma (Must be reachable from Edge system) | Yes |
| SASL mechanism | SASL mechanism values include: NONE, SASL_PLAINTEXT. SCRAM-SHA-256, and SCRAM-SHA-512. This field can only be used if username is not empty. | Yes |
| Username | User name | No  |
| Password | User password | No  |
| Topic | Default topic for Publish | Yes |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| CloudKarafka | 0.11.0.0 | N/A |

**Provider ID:** `kafka-tcp`
**Provider Name:** Kafka TCP

**Required properties:**
- `saslMechanism` _string_ — SASL mechanism
  Options: `NONE`, `SASL_PLAINTEXT`, `SCRAM-SHA-256`, `SCRAM-SHA-512`
- `topic` _string_ — Topic: The topic name
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `brokers` _string_ — Brokers list separated by comma
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `password` _string_ — Password: The password
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `throttlingLimit` _integer_ — Throttling limit
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `username` _string_ — Username: The username

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "kafka-tcp",
    "Config": "{\"name\": \"My Kafka TCP Integration\", \"brokers\": \"one.litmus.pro:9094,two.litmus.pro:9094,three.litmus.pro:9094\", \"saslMechanism\": \"SCRAM-SHA-256\", \"username\": \"admin\", \"password\": \"password\", \"topic\": \"integration/data\", \"workersCount\": 2000, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "kafka-tcp",
            "Config": "{\"name\": \"My Kafka TCP Integration\", \"brokers\": \"one.litmus.pro:9094,two.litmus.pro:9094,three.litmus.pro:9094\", \"saslMechanism\": \"SCRAM-SHA-256\", \"username\": \"admin\", \"password\": \"password\", \"topic\": \"integration/data\", \"workersCount\": 2000, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Kafka TCP Gen 2

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Kafka TCP Gen 2 integration enables the Edge System to connect with the Kafka broker.

Supported Versions
------------------

Compatible with Kafka versions from 0.10.1.0 to 2.1.0.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Kafka broker) - Yes

* Inbound (Subscribe data from Kafka broker to Edge) - Yes


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Brokers | List of Kafka brokers separated by comma (Must be reachable from Edge system) | Yes |
| SASL mechanism | SASL mechanism values include: NONE, SASL_PLAINTEXT. SCRAM-SHA-256, and SCRAM-SHA-512. This field can only be used if username is not empty. | Yes |
| Username | User name | No  |
| Password | User password | No  |
| Topic | Default topic for Publish | Yes |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| CloudKarafka | 0.11.0.0 | N/A |

**Provider ID:** `kafka-tcp-gen-2`
**Provider Name:** Kafka TCP Gen 2

**Required properties:**
- `brokers` _string_ — Brokers list separated by comma
- `name` _string_ — Name: Instance Name
- `saslMechanism` _string_ — SASL mechanism
  Options: `NONE`, `SASL_PLAINTEXT`, `SCRAM-SHA-256`, `SCRAM-SHA-512`
- `topic` _string_ — Topic: The topic name
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.

**Optional properties:**
- `rebalanceTimeoutMs` _integer_ — Rebalance Timeout (ms): Consumer group rebalance timeout
- `autoCreateTopic` _boolean_ — Auto create topic: Enable automatic topic creation when the topic is not found, this also requires to enable auto create topic config on the Kafka broker.
- `dialTimeoutMs` _integer_ — Dial Timeout (ms): Connection establishment timeout
- `fetchMinBytes` _integer_ — Fetch Min Bytes: Minimum bytes to fetch in each request
- `metadataMaxAgeMs` _integer_ — Metadata Max Age (ms): Maximum age of metadata before refresh
- `sessionTimeoutMs` _integer_ — Session Timeout (ms): Consumer group session timeout
- `writeTimeoutMs` _integer_ — Write Timeout (ms): Write operation timeout
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `requestTimeoutMs` _integer_ — Request Timeout (ms): Maximum time to wait for requests to complete
- `producerTimeoutMs` _integer_ — Producer Timeout (ms): Maximum time to wait for producer response
- `compressionType` _string_ — Compression Type: Compression algorithm for message payloads
  Options: `none`, `gzip`, `snappy`, `lz4`, `zstd`
- `maxMessageBytes` _integer_ — Max Message Bytes: Maximum message size in bytes
- `retryBackoffMs` _integer_ — Retry Backoff (ms): Backoff time between retry attempts
- `username` _string_ — Username: The username
- `fetchMaxBytes` _integer_ — Fetch Max Bytes: Maximum bytes to fetch in each request
- `producerBatchMaxBytes` _integer_ — Producer Batch Max Bytes: Maximum size of producer batches in bytes
- `readTimeoutMs` _integer_ — Read Timeout (ms): Read operation timeout
- `clientId` _string_ — Client ID: Client identifier sent to Kafka brokers
- `connIdleTimeoutMs` _integer_ — Connection Idle Timeout (ms): Maximum idle time before closing connections
- `disableIdempotentWrite` _boolean_ — Disable Idempotent Write: Disable idempotent producer writes. When disabled, duplicate messages may be produced during retries.
- `fetchMaxWaitMs` _integer_ — Fetch Max Wait (ms): Maximum time to wait for fetch requests
- `produceRetries` _integer_ — Produce Retries: Maximum number of retry attempts for failed requests
- `requiredAcks` _string_ — Required Acknowledgments: Level of acknowledgment reliability (none=0, leader=1, all=-1)
  Options: `none`, `leader`, `all`
- `heartbeatIntervalMs` _integer_ — Heartbeat Interval (ms): Consumer group heartbeat interval
- `maxPartitionBytes` _integer_ — Max Partition Bytes: Maximum bytes to fetch per partition
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `throttlingLimit` _integer_ — Throttling limit
- `metadataMinRefreshMs` _integer_ — Metadata Min Refresh (ms): Minimum time between metadata refreshes
- `persistentStorage` _boolean_ — Persistent storage
- `producerLingerMs` _integer_ — Producer Linger (ms): Time to wait for additional messages before sending batch
- `password` _string_ — Password: The password

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "kafka-tcp-gen-2",
    "Config": "{\"name\": \"My Kafka TCP Gen 2 Integration\", \"brokers\": \"one.litmus.pro:9094,two.litmus.pro:9094,three.litmus.pro:9094\", \"saslMechanism\": \"SCRAM-SHA-256\", \"username\": \"admin\", \"password\": \"password\", \"topic\": \"integration/data\", \"autoCreateTopic\": false, \"clientId\": \"my-client-id\", \"requestTimeoutMs\": 30000, \"connIdleTimeoutMs\": 540000, \"metadataMaxAgeMs\": 300000, \"metadataMinRefreshMs\": 100, \"requiredAcks\": \"all\", \"disableIdempotentWrite\": false, \"producerTimeoutMs\": 30000, \"producerBatchMaxBytes\": 1000000, \"producerLingerMs\": 5, \"compressionType\": \"none\", \"maxMessageBytes\": 1000000, \"fetchMinBytes\": 1, \"fetchMaxBytes\": 52428800, \"fetchMaxWaitMs\": 500, \"maxPartitionBytes\": 1048576, \"sessionTimeoutMs\": 10000, \"heartbeatIntervalMs\": 3000, \"rebalanceTimeoutMs\": 60000, \"retryBackoffMs\": 100, \"produceRetries\": 2147483647, \"dialTimeoutMs\": 10000, \"writeTimeoutMs\": 10000, \"readTimeoutMs\": 10000, \"workersCount\": 100, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "kafka-tcp-gen-2",
            "Config": "{\"name\": \"My Kafka TCP Gen 2 Integration\", \"brokers\": \"one.litmus.pro:9094,two.litmus.pro:9094,three.litmus.pro:9094\", \"saslMechanism\": \"SCRAM-SHA-256\", \"username\": \"admin\", \"password\": \"password\", \"topic\": \"integration/data\", \"autoCreateTopic\": false, \"clientId\": \"my-client-id\", \"requestTimeoutMs\": 30000, \"connIdleTimeoutMs\": 540000, \"metadataMaxAgeMs\": 300000, \"metadataMinRefreshMs\": 100, \"requiredAcks\": \"all\", \"disableIdempotentWrite\": false, \"producerTimeoutMs\": 30000, \"producerBatchMaxBytes\": 1000000, \"producerLingerMs\": 5, \"compressionType\": \"none\", \"maxMessageBytes\": 1000000, \"fetchMinBytes\": 1, \"fetchMaxBytes\": 52428800, \"fetchMaxWaitMs\": 500, \"maxPartitionBytes\": 1048576, \"sessionTimeoutMs\": 10000, \"heartbeatIntervalMs\": 3000, \"rebalanceTimeoutMs\": 60000, \"retryBackoffMs\": 100, \"produceRetries\": 2147483647, \"dialTimeoutMs\": 10000, \"writeTimeoutMs\": 10000, \"readTimeoutMs\": 10000, \"workersCount\": 100, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - Generic over SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The MQTT SSL integration enables Edge System to connect with the MQTT broker over SSL.

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0 and MQTT Protocol version 3.1.1

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
    
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system) | Yes |
| Port | MQTT broker port | Yes |
| CA certificate | It is a digital certificate issued by a trusted Certificate Authority and is used to authenticate the identity of servers or entities in an SSL/TLS connection. | No  |
| Certificate | SSL certificate | No  |
| Private key | SSL certificate private key | No  |
| Client id | Unique client identity | No  |
| Username | User name | No  |
| Password | User password | No  |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration. | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publish or Subscribe | No  |
| LWT topic | It refers to the specific topic where the last will message will be published. | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| Mosquitto Message Broker | 1.x | Nov 14, 2019 |
| HiveMQ | 2.x | Nov 14, 2019 |

**Provider ID:** `generic-mqtt-ssl`
**Provider Name:** MQTT - Generic over SSL

**Required properties:**
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `name` _string_ — Name: Instance Name
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.

**Optional properties:**
- `clientId` _string_ — Client ID: Client ID is required by MQTT server.
- `password` _string_ — Password: The password
- `port` _integer_ — Port: Port of MQTT host.
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `certificate` _string_ — Certificate: Certificate can be added here.
- `persistentStorage` _boolean_ — Persistent storage
- `privateKey` _string_ — Private key: Private key can be added here.
- `throttlingLimit` _integer_ — Throttling limit
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `topic` _string_ — Integration Topic: MQTT topic
- `username` _string_ — Username: The username
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "generic-mqtt-ssl",
    "Config": "{\"name\": \"My MQTT - Generic over SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8883, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "generic-mqtt-ssl",
            "Config": "{\"name\": \"My MQTT - Generic over SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8883, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - v5 Generic Gen 2

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The MQTT Generic Gen 2 integration enables Edge System to connect to the MQTT v5 broker

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0, 3.1.1, 5.0.0

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes


| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system) | Yes |
| Port | MQTT broker port | Yes |
| Client id | Unique client identity | Yes |
| Username | User name | No  |
| Password | User password | No  |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration. | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br><br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publishing (Support Dynamic Topic publishing, please refer to Format Directive section below). | No  |
| Response Topic | Response Topic for Request/Response messages in MQTT v5. | No  |
| Payload Format Indicator | Payload Format Indicator to indicate the format of the payload for CONNECT and PUBLISH MQTT packets. Allowing the server to understand packet without having to operate on the actual data | Yes |
| Content Type | Content Type is a UTF-8 encoded string that describes the content of the application message, which helps the receiver understand how to parse the application message payload. | No  |
| Topic Alias Maximum | Maximum number of Topic Alias allowed. Decrease the size of the MQTT packet overhead by allowing the topic name to be abbreviated to a small integer. | Yes |
| LWT topic | It refers to the specific topic where the last will message will be published. | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message. | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message. | No  |
| Will Delay Interval | Add the ability to specify a delay between the end of the connection and sending the will message. | No  |
| Session Expiry Interval | The number that specifies how long a broker keeps a client's session information. | No  |
| Message Expiry Interval | Allow an expiry interval to be set when a message is published | No  |
| User Properties | User-defined properties that allow users to add their metadata to MQTT messages and transmit additional user-defined information | No  |
| Request Response Info | Enable to receive Response Info on Request Topic | No  |
| Request Problem Info | Enable to receive Problem Info on Request Topic | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |
| Persistent Storage size Limit | Set the size limit for storing persisted data in MB | No  |
| Keep Alive | Enter the keep alive duration in seconds. It is a mechanism to ensure that an Litmus Edge MQTT Integration and MQTT broker connection remain active even if no data is transmitted. MQTT 5.0 protocol, for clients with Keep Alive enabled, if the server does not receive an MQTT Control Packet from the client within 1.5 times the Keep Alive duration, it must close the network connection with the client.                                                                                                                                                                          | No |
| Connection Timeout | Enter the duration to wait for a connection timeout in seconds                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | No |

Format Directives
-----------------

| **Symbol** | **Definition** | **Context** |
| --- | --- | --- |
| $   | Special character indicate a variable character follows. A variable represents some dynamic string value. Supported variables defined as follows: | -   |
| $S  | Additional Alias definition | from Connector Settings |
| $D  | Device Name | from DeviceHub Tag |
| $N  | Tag Name | from DeviceHub Tag |
| $R  | Raw Tag Type | from DeviceHub Tag |
| $P  | Tag Description | from DeviceHub Tag |
| $H  | Hostname | from OS |
| %   | Special character indicating a function character follows. A function represents some action to be taken on the next variable. Supported functions defined as follows: | -   |
| %L  | Lowercase() | apply to next variable |
| %U  | Uppercase() | apply to next variable |

Format Directives Notes
-----------------------

To use a special character in its literal form, enter symbol twice (`$$` -\> `$`, `%%` -\> `%`)  
Example `"$$$D.%%$N" -> "$deviceABC.%tagXYZ"`

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |

**Provider ID:** `generic-mqtt-v5-tcp-gen-2`
**Provider Name:** MQTT - v5 Generic Gen 2

**Required properties:**
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `topic` _string_ — Integration Topic: MQTT topic
- `port` _integer_ — Port: Port of MQTT host.
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `clientId` _string_ — Client ID: Client ID is required by MQTT server.
- `requestProblemInfo` _boolean_ — Request Problem Info
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`
- `willDelay` _integer_ — Will Delay Interval: Add the ability to specify a delay between the end of the connection and sending the will message
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `requestResponseInfo` _boolean_ — Request Response Info
- `topicAlias` _integer_ — Topic Alias Maximum: Decrease the size of the MQTT packet overhead by allowing the topic name to be abbreviated to a small integer
- `userProperties` _object_ — User Properties: The user properties to most packets
- `keepAlive` _integer_ — Keep Alive: Ensure that client remains connected to the broker and maintains an active session
- `payloadFormat` _string_ — Payload Format Indicator: Allowing the server to understand packet without having to operate on the actual data
  Options: `utf-8`, `byte`
- `sessionExpiryInterval` _integer_ — Session Expiry Interval (seconds): The number that specifies how long a broker keeps a client's session information
- `throttlingLimit` _integer_ — Throttling limit
- `messageExpiryInterval` _integer_ — Message Expiry Interval: Allow an expiry interval to be set when a message is published
- `username` _string_ — Username: The username
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `persistentStorage` _boolean_ — Persistent storage
- `responseTopic` _string_ — Response Topic: Default Response topic
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `contentType` _string_ — Content type: MQTT content type
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `connectionTimeout` _integer_ — Connection Timeout: How long to wait for the connection process to complete in seconds
- `password` _string_ — Password: The password

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "generic-mqtt-v5-tcp-gen-2",
    "Config": "{\"name\": \"My MQTT - v5 Generic Gen 2 Integration\", \"hostname\": \"192.168.1.100\", \"port\": 1883, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"responseTopic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"keepAlive\": 60, \"connectionTimeout\": 10, \"payloadFormat\": \"utf-8\", \"contentType\": \"placeholder_contentType\", \"topicAlias\": 7, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"willDelay\": 0, \"sessionExpiryInterval\": 0, \"messageExpiryInterval\": 0, \"userProperties\": {}, \"requestResponseInfo\": false, \"requestProblemInfo\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "generic-mqtt-v5-tcp-gen-2",
            "Config": "{\"name\": \"My MQTT - v5 Generic Gen 2 Integration\", \"hostname\": \"192.168.1.100\", \"port\": 1883, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"responseTopic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"keepAlive\": 60, \"connectionTimeout\": 10, \"payloadFormat\": \"utf-8\", \"contentType\": \"placeholder_contentType\", \"topicAlias\": 7, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"willDelay\": 0, \"sessionExpiryInterval\": 0, \"messageExpiryInterval\": 0, \"userProperties\": {}, \"requestResponseInfo\": false, \"requestProblemInfo\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - MQTT - v5 Generic over SSL Gen 2

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The MQTT SSL Gen 2 integration enables Edge System to connect to the MQTT v5 broker over SSL

Supported Versions
------------------

Compatible with MQTT Protocol version 3.1.0, 3.1.1, 5.0.0

Supported Communication
-----------------------

* Outbound (Publish data from Edge to MQTT Broker) - Yes
* Inbound (Subscribe data from MQTT Broker to Edge) - Yes


| **Variable** | **Detail**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | **Required** |
| --- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- |
| Name | Connector name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Yes |
| Hostname | IP Address or Server FQDN of MQTT broker (Must be reachable from Edge system)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Yes |
| Port | MQTT broker port                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Yes |
| CA certificate | It is a digital certificate issued by a trusted Certificate Authority and is used to authenticate the identity of servers or entities in an SSL/TLS connection.                                                                                                                                                                                                                                                                                                                                                                                                                            | No  |
| Certificate | SSL certificate                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | No  |
| Private key | SSL certificate private key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | No  |
| Client id | Unique client identity                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Yes |
| Username | User name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | No  |
| Password | User password                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | No  |
| QoS | The Quality of Service (QoS) level represents an understanding between the message sender and receiver, outlining the assurance of message delivery for a particular message. Simultaneously publishing multiple messages can enhance throughput, but opting for higher values may increase the risk of message loss, even when QoS is set to 1. Please note that the actual QoS options available may vary based on the server configuration.                                                                                                                                             | Yes |
| Parallel publish count | It refers to the number of messages that can be simultaneously published or sent in parallel. It is a measure of how many messages can be transmitted at the same time.<br><br>As an example, in Mosquitto, you have the following settings:<br><br>* `max_queued_messages` (default 100)<br>    <br><br>* `max_queued_bytes` (default 0)<br>    <br><br>As per the Mosquitto documentation, when this limit is reached, any additional messages are silently discarded. You have the option to either adjust the server configuration or specify this value based on the server settings. | Yes |
| Integration topic | Default topic for Publishing (Support Dynamic Topic publishing, please refer to Format Directive section below).                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | No  |
| Response Topic | Response Topic for Request/Response messages in MQTT v5.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | No  |
| Payload Format Indicator | Payload Format Indicator to indicate the format of the payload for CONNECT and PUBLISH MQTT packets. Allowing the server to understand packet without having to operate on the actual data                                                                                                                                                                                                                                                                                                                                                                                                 | Yes |
| Content Type | Content Type is a UTF-8 encoded string that describes the content of the application message, which helps the receiver understand how to parse the application message payload.                                                                                                                                                                                                                                                                                                                                                                                                            | No  |
| Topic Alias Maximum | Maximum number of Topic Alias allowed. Decrease the size of the MQTT packet overhead by allowing the topic name to be abbreviated to a small integer.                                                                                                                                                                                                                                                                                                                                                                                                                                      | Yes |
| LWT topic | It refers to the specific topic where the last will message will be published.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | No  |
| LWT payload | It is the information or message that will be sent to the specified topic when the client disconnects unexpectedly or goes offline without sending a proper "goodbye" message.                                                                                                                                                                                                                                                                                                                                                                                                             | No  |
| LWT payload type | A payload type (raw string or base64 encoded bytes) for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | No  |
| LWT QoS | A QoS value for Last Will and Testament feature of MQTT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | No  |
| LWT retained | If enabled, the broker will store the LWT message, and any new subscribers to the LWT topic will immediately receive this retained LWT message.                                                                                                                                                                                                                                                                                                                                                                                                                                            | No  |
| Will Delay Interval | Add the ability to specify a delay between the end of the connection and sending the will message.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | No  |
| Session Expiry Interval | The number that specifies how long a broker keeps a client's session information.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | No  |
| Message Expiry Interval | Allow an expiry interval to be set when a message is published                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | No  |
| User Properties | User-defined properties that allow users to add their metadata to MQTT messages and transmit additional user-defined information                                                                                                                                                                                                                                                                                                                                                                                                                                                           | No  |
| Request Response Info | Enable to receive Response Info on Request Topic                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | No  |
| Request Problem Info | Enable to receive Problem Info on Request Topic                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost.                                                                                                                                                                                                                                                                                                                                                                                                     | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored.                                                                                                                                                                                                                                                                                                                                                                                      | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first.                                                                                                                                                                                                                                                                                                                                                                                       | No  |
| Persistent Storage size Limit | Set the size limit for storing persisted data in MB                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | No  |
| Keep Alive | Enter the keep alive duration in seconds. It is a mechanism to ensure that an Litmus Edge MQTT Integration and MQTT broker connection remain active even if no data is transmitted. MQTT 5.0 protocol, for clients with Keep Alive enabled, if the server does not receive an MQTT Control Packet from the client within 1.5 times the Keep Alive duration, it must close the network connection with the client.                                                                                                                                                                          | No |
| Connection Timeout | Enter the duration to wait for a connection timeout in seconds                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | No |

Format Directives
-----------------

| **Symbol** | **Definition** | **Context** |
| --- | --- | --- |
| $   | Special character indicate a variable character follows. A variable represents some dynamic string value. Supported variables defined as follows: | -   |
| $S  | Additional Alias definition | from Connector Settings |
| $D  | Device Name | from DeviceHub Tag |
| $N  | Tag Name | from DeviceHub Tag |
| $R  | Raw Tag Type | from DeviceHub Tag |
| $P  | Tag Description | from DeviceHub Tag |
| $H  | Hostname | from OS |
| %   | Special character indicating a function character follows. A function represents some action to be taken on the next variable. Supported functions defined as follows: | -   |
| %L  | Lowercase() | apply to next variable |
| %U  | Uppercase() | apply to next variable |

Format Directives Notes
-----------------------

To use a special character in its literal form, enter symbol twice (`$$` -\> `$`, `%%` -\> `%`)  
Example `"$$$D.%%$N" -> "$deviceABC.%tagXYZ"`

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |

**Provider ID:** `generic-mqtt-v5-ssl-gen-2`
**Provider Name:** MQTT - v5 Generic over SSL Gen 2

**Required properties:**
- `hostname` _string_ — Hostname: DNS name of MQTT host.
- `name` _string_ — Name: Instance Name
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `port` _integer_ — Port: Port of MQTT host.
- `topic` _string_ — Integration Topic: MQTT topic

**Optional properties:**
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `qos` _integer_ — QoS: MQTT QoS attribute.
  Options: `0`, `1`, `2`
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `responseTopic` _string_ — Response Topic: Default Response topic
- `userProperties` _object_ — User Properties: The user properties to most packets
- `willRetained` _boolean_ — LWT retained: MQTT LWT retained
- `connectionTimeout` _integer_ — Connection Timeout: How long to wait for the connection process to complete in seconds
- `contentType` _string_ — Content type: MQTT content type
- `willDelay` _integer_ — Will Delay Interval: Add the ability to specify a delay between the end of the connection and sending the will message
- `willTopic` _string_ — LWT topic: MQTT LWT topic
- `persistentStorage` _boolean_ — Persistent storage
- `requestProblemInfo` _boolean_ — Request Problem Info
- `topicAlias` _integer_ — Topic Alias Maximum: Decrease the size of the MQTT packet overhead by allowing the topic name to be abbreviated to a small integer
- `willPayloadType` _string_ — LWT payload type: MQTT LWT payload type
  Options: `string`, `base64`
- `keepAlive` _integer_ — Keep Alive: Ensure that client remains connected to the broker and maintains an active session in seconds
- `privateKey` _string_ — Private key: Private key can be added here.
- `sessionExpiryInterval` _integer_ — Session Expiry Interval (seconds): The number that specifies how long a broker keeps a client's session information
- `payloadFormat` _string_ — Payload Format Indicator: Allowing the server to understand packet without having to operate on the actual data
  Options: `utf-8`, `byte`
- `throttlingLimit` _integer_ — Throttling limit
- `certificate` _string_ — Certificate: Certificate can be added here.
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `clientId` _string_ — Client ID: Client ID is required by MQTT server.
- `insecureVerify` _boolean_ — Insecure Skip Verify: InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name
- `messageExpiryInterval` _integer_ — Message Expiry Interval: Allow an expiry interval to be set when a message is published
- `password` _string_ — Password: The password
- `username` _string_ — Username: The username
- `requestResponseInfo` _boolean_ — Request Response Info
- `willPayload` _string_ — LWT payload: MQTT LWT payload
- `willQoS` _integer_ — LWT QoS: MQTT LWT QoS attribute.
  Options: `0`, `1`, `2`

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "generic-mqtt-v5-ssl-gen-2",
    "Config": "{\"name\": \"My MQTT - v5 Generic over SSL Gen 2 Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8883, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"insecureVerify\": false, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"responseTopic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"keepAlive\": 60, \"connectionTimeout\": 10, \"payloadFormat\": \"utf-8\", \"contentType\": \"placeholder_contentType\", \"topicAlias\": 7, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"willDelay\": 0, \"sessionExpiryInterval\": 0, \"messageExpiryInterval\": 0, \"userProperties\": {}, \"requestResponseInfo\": false, \"requestProblemInfo\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "generic-mqtt-v5-ssl-gen-2",
            "Config": "{\"name\": \"My MQTT - v5 Generic over SSL Gen 2 Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8883, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"insecureVerify\": false, \"clientId\": \"5dlvtw2sbbn4hqltaecpit115\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"responseTopic\": \"loop/data/5dlvtw2sbbn4hqltaecpit115/218zg9xqseuxr87zkkstoyaoz/json\", \"keepAlive\": 60, \"connectionTimeout\": 10, \"payloadFormat\": \"utf-8\", \"contentType\": \"placeholder_contentType\", \"topicAlias\": 7, \"willTopic\": \"integration/data\", \"willPayload\": \"placeholder_willPayload\", \"willPayloadType\": \"string\", \"willQoS\": 1, \"willRetained\": false, \"willDelay\": 0, \"sessionExpiryInterval\": 0, \"messageExpiryInterval\": 0, \"userProperties\": {}, \"requestResponseInfo\": false, \"requestProblemInfo\": false, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - MongoDB v4+

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

MongoDB Integration enables Edge System to connect with MongoDB database

Supported Versions
------------------

* MongoDB 3.6 or higher
    

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes
    
* Inbound (Read from Database to Edge) - No
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | IP Address or Hostname of MongoDB Server (Must be reachable from Edge system) | Yes |
| Port | MongoDB Server port | Yes |
| Username | User name (can be empty) | No  |
| Password | User password (can be empty) | No  |
| Auth database | Authentication database name (can be empty) | No  |
| Auth mechanism | Authentication mechanism (can be one of "SCRAM-SHA-1", "MONGODB-CR", "MONGO-CR", "PLAIN", "MONGODB-X509") | No  |
| Database | Database name. If database does not exist it is created | Yes |
| Collection | Collection name. If collection does not exist it is created | Yes |
| Mapping | Fields from a predefined message JSON structure can be mapped to a custom one. Example: {"sourceField": "targetField"} where 'sourceField' is a key in the predefined message, and 'targetField' is the key in the destination message. | No  |
| Commit timeout | Transaction commit timeout (ms) | No  |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| MongoDB | 4.2 | N/A |

**Provider ID:** `mongodb-v4`
**Provider Name:** DB - MongoDB v4+

**Required properties:**
- `database` _string_ — Database: The database name
- `hostname` _string_ — Hostname: DNS name or IP of the host.
- `port` _integer_ — Port: Port of MongoDB host.
- `name` _string_ — Name: Instance Name
- `collection` _string_ — Collection: The collection

**Optional properties:**
- `throttlingLimit` _integer_ — Throttling limit
- `authMechanism` _string_ — Auth mechanism: The mechanisms to confirm an identity and establish trust to ensure security in the driver and server before connecting
  Options: `SCRAM-SHA-1`, `MONGODB-CR`, `MONGO-CR`, `PLAIN`, `MONGODB-X509`
- `maxTransactionSize` _integer_ — Max transaction size: Maximum number of messages before a transaction is committed regardless of timeout
- `mapping` _object_ — Mapping: The mapping list
- `password` _string_ — Password: The password
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `username` _string_ — Username: The username
- `authDatabase` _string_ — Auth database: The authentication database name
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `commitTimeout` _integer_ — Commit timeout: Transaction commit timeout (ms)

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "mongodb-v4",
    "Config": "{\"name\": \"My DB - MongoDB v4+ Integration\", \"hostname\": \"192.168.1.100\", \"port\": 27017, \"username\": \"admin\", \"password\": \"password\", \"authDatabase\": \"mydb\", \"authMechanism\": \"SCRAM-SHA-1\", \"database\": \"mydb\", \"collection\": \"mytable\", \"mapping\": {}, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "mongodb-v4",
            "Config": "{\"name\": \"My DB - MongoDB v4+ Integration\", \"hostname\": \"192.168.1.100\", \"port\": 27017, \"username\": \"admin\", \"password\": \"password\", \"authDatabase\": \"mydb\", \"authMechanism\": \"SCRAM-SHA-1\", \"database\": \"mydb\", \"collection\": \"mytable\", \"mapping\": {}, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - NATS

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

NATS Integration enables Edge System to connect to NATS server.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to NATS server) - Yes

* Inbound (Subscribe data from NATS Server to Edge) - Yes


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | NATS server host name | Yes |
| Port | NATS server port | Yes |
| NATS username | NATS username, which is part of the client's authentication credentials. | No  |
| NATS password | NATS password, which is part of the client's authentication credentials. | No  |
| Default topic name | Default topic for publishing | Yes |
| Enable TLS secure connection | If enabled, message are transmitted securely. This certificate ensures that data transmitted between the server and clients is encrypted and secure, safeguarding it from unauthorized access and eavesdropping. | No  |
| Insecure skip verify | If enabled, the verification of the server's certificate and hostname is skipped. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| N/A | N/A | N/A |

**Provider ID:** `nats`
**Provider Name:** NATS

**Required properties:**
- `port` _integer_ — Port: Port of NATS host.
- `topic` _string_ — Default topic name
- `enableTLS` _boolean_ — Enable TLS secure connection
- `hostname` _string_ — Hostname
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `insecureSkipVerify` _boolean_ — Insecure skip verify: InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name.
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `password` _string_ — NATS Password: Password
- `persistentStorage` _boolean_ — Persistent storage
- `username` _string_ — NATS Username: Username
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "nats",
    "Config": "{\"name\": \"My NATS Integration\", \"hostname\": \"192.168.1.100\", \"port\": 4222, \"username\": \"admin\", \"password\": \"password\", \"topic\": \"integration/data\", \"enableTLS\": false, \"insecureSkipVerify\": false, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "nats",
            "Config": "{\"name\": \"My NATS Integration\", \"hostname\": \"192.168.1.100\", \"port\": 4222, \"username\": \"admin\", \"password\": \"password\", \"topic\": \"integration/data\", \"enableTLS\": false, \"insecureSkipVerify\": false, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - NATS Gen 2

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

NATS Gen 2 Integration enables Edge System to connect to NATS server.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to NATS server) - Yes

* Inbound (Subscribe data from NATS Server to Edge) - Yes


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | NATS server host name | Yes |
| Port | NATS server port | Yes |
| NATS username | NATS username, which is part of the client's authentication credentials. | No  |
| NATS password | NATS password, which is part of the client's authentication credentials. | No  |
| Default topic name | Default topic for publishing | Yes |
| Enable TLS secure connection | If enabled, message are transmitted securely. This certificate ensures that data transmitted between the server and clients is encrypted and secure, safeguarding it from unauthorized access and eavesdropping. | No  |
| Insecure skip verify | If enabled, the verification of the server's certificate and hostname is skipped. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| N/A | N/A | N/A |

**Provider ID:** `nats-gen-2`
**Provider Name:** NATS Gen 2

**Required properties:**
- `enableTLS` _boolean_ — Enable TLS secure connection
- `port` _integer_ — Port: Port of NATS host.
- `topic` _string_ — Default topic name
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `hostname` _string_ — Hostname
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `connectTimeoutSeconds` _integer_ — Connect timeout (second): Timeout sets the timeout for a Dial operation on a connection
- `flushTimeoutSeconds` _integer_ — Flush timeout (second): Timeout for flushing buffered messages to the server during publish operations
- `maxReconnect` _integer_ — Max Reconnect: MaxReconnect sets the number of reconnect attempts that will be tried before giving up. If negative, then it will never give up trying to reconnect, If zero, then will use default value (5)
- `password` _string_ — NATS Password: Password
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `reconnectWait` _integer_ — Reconnect wait (second): ReconnectWait sets the time to backoff after attempting a reconnect to a server that we were already connected to previously
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `username` _string_ — NATS Username: Username
- `insecureSkipVerify` _boolean_ — Insecure skip verify: InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name.
- `throttlingLimit` _integer_ — Throttling limit

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "nats-gen-2",
    "Config": "{\"name\": \"My NATS Gen 2 Integration\", \"hostname\": \"192.168.1.100\", \"port\": 4222, \"username\": \"admin\", \"password\": \"password\", \"topic\": \"integration/data\", \"workersCount\": 100, \"enableTLS\": false, \"insecureSkipVerify\": false, \"maxReconnect\": 5, \"reconnectWait\": 2, \"connectTimeoutSeconds\": 2, \"flushTimeoutSeconds\": 2, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "nats-gen-2",
            "Config": "{\"name\": \"My NATS Gen 2 Integration\", \"hostname\": \"192.168.1.100\", \"port\": 4222, \"username\": \"admin\", \"password\": \"password\", \"topic\": \"integration/data\", \"workersCount\": 100, \"enableTLS\": false, \"insecureSkipVerify\": false, \"maxReconnect\": 5, \"reconnectWait\": 2, \"connectTimeoutSeconds\": 2, \"flushTimeoutSeconds\": 2, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Oracle Smart Operations in Fusion Cloud SCM

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Oracle Fusion Cloud integration enables Edge System to connect with Oracle Fusion Cloud REST APIs using OAuth2 authentication.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Oracle Fusion Cloud) - Yes

* Inbound (Subscribe data from Oracle Fusion Cloud to Edge) - No


Configurations
--------------

| **Variable** | **Detail**                                                                                                                                                                                           | **Required** |
| --- |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- |
| Name | Connector Name                                                                                                                                                                                       | Yes |
| Method | HTTP method for Oracle Fusion Cloud (only supported POST)                                                                                                                                                | Yes |
| Endpoint | Oracle Fusion Cloud API endpoint URL                                                                                                                                                                 | Yes |
| OAuth2 Token Endpoint | OAuth2 token endpoint URL for authentication                                                                                                                                                         | Yes |
| OAuth2 Client ID | OAuth2 client ID for authentication                                                                                                                                                                  | Yes |
| OAuth2 Client Secret | OAuth2 client secret for authentication                                                                                                                                                              | Yes |
| OAuth2 Scope | OAuth2 scope(s) for authentication (comma-separated)                                                                                                                                                 | No |
| Headers | Custom HTTP headers to include in requests                                                                                                                                                           | No |
| Params | URL parameters (query strings) to append to requests                                                                                                                                                 | No |
| Mapping | Data from a payload could be mapped into a custom one. Example: {"targetField": "{{payload.sourceField}}"} where the source field from the payload is mapped to a target field                       | No |
| Parallel publish count | Number of parallel workers for publishing data (default: 100)                                                                                                                                        | No |
| Insecure skip verify | Controls whether the client verifies the server's certificate chain. Select to disable verification                                                                                                  | No |
| Request timeout | Timeout for HTTP requests in seconds (default: 30)                                                                                                                                                   | No |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost                | No |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored | No |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first  | No |

**Provider ID:** `rest-oracle-smart-operations-fusion`
**Provider Name:** Oracle Smart Operations in Fusion Cloud SCM

**Required properties:**
- `method` _string_ — Method: Method (Oracle Fusion Cloud supports POST only)
  Options: `POST`
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `endpoint` _string_ — Endpoint
- `oAuth2ClientID` _string_ — OAuth2 - Client ID
- `oAuth2TokenEndpoint` _string_ — OAuth2 - Token Endpoint: OAuth2 - Token Endpoint URL
- `name` _string_ — Name: Instance Name
- `oAuth2ClientSecret` _string_ — OAuth2 - Client Secret: OAuth2 - Client Secret Key

**Optional properties:**
- `persistentStorage` _boolean_ — Persistent storage
- `requestTimeout` _integer_ — Request timeout: Request timeout in seconds
- `headers` _object_ — Headers: The request headers
- `oAuth2Scope` _string_ — OAuth2 - Scope: OAuth2 - Scope (comma separated value)
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `params` _object_ — Params: The request params
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `responseTopic` _string_ — Response Topic: Nats response topic payload for All requests
- `throttlingLimit` _integer_ — Throttling limit
- `insecureSkipVerify` _boolean_ — Insecure skip verify: InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name.
- `mapping` _object_ — Mapping: The mapping

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "rest-oracle-smart-operations-fusion",
    "Config": "{\"name\": \"My Oracle Smart Operations in Fusion Cloud SCM Integration\", \"method\": \"POST\", \"endpoint\": \"/example/path\", \"oAuth2TokenEndpoint\": \"/example/path\", \"oAuth2ClientID\": \"my-client-id\", \"oAuth2ClientSecret\": \"password\", \"oAuth2Scope\": \"view,read\", \"headers\": {}, \"params\": {}, \"mapping\": {}, \"requestTimeout\": 10, \"insecureSkipVerify\": true, \"workersCount\": 100, \"responseTopic\": \"/response_topic\", \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "rest-oracle-smart-operations-fusion",
            "Config": "{\"name\": \"My Oracle Smart Operations in Fusion Cloud SCM Integration\", \"method\": \"POST\", \"endpoint\": \"/example/path\", \"oAuth2TokenEndpoint\": \"/example/path\", \"oAuth2ClientID\": \"my-client-id\", \"oAuth2ClientSecret\": \"password\", \"oAuth2Scope\": \"view,read\", \"headers\": {}, \"params\": {}, \"mapping\": {}, \"requestTimeout\": 10, \"insecureSkipVerify\": true, \"workersCount\": 100, \"responseTopic\": \"/response_topic\", \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - REST API

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The REST API integration enables Edge System to connect with RESTful API.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to REST Server ) - Yes

* Inbound (Subscribe data from REST Server to Edge) - No


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Method | HTTP methods in REST APIs, GET, POST, PUT, and DELETE available | Yes |
| Endpoint | Endpoints are the entry points to interact with the API | Yes |
| Headers | A request header is an HTTP header that can be used in an HTTP request to provide information about the request context | No  |
| Params | URL parameters (query strings) additional information for a given URL | No  |
| Mapping | Data from a payload could be mapped into a custom one. Example: {"from": "to"} where "from" is a key from predefined payload, and "to" is a key from destination payload | No  |
| Parallel publish count | Parallel publish count indicates how many data streams or data items are being sent from the edge system to a central system or cloud simultaneously. | Yes |
| Insecure skip verify | InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name. Select to disable verification | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

**Provider ID:** `rest`
**Provider Name:** REST API

**Required properties:**
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `endpoint` _string_ — Endpoint
- `method` _string_ — Method
  Options: `GET`, `POST`, `PUT`, `DELETE`
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `headers` _object_ — Headers: The request headers
- `insecureSkipVerify` _boolean_ — Insecure skip verify: InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name.
- `oAuth2Scope` _string_ — OAuth2 - Scope: OAuth2 - Scope (comma separated value)
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `oAuth2ClientSecret` _string_ — OAuth2 - Client Secret: OAuth2 - Client Secret Key
- `params` _object_ — Params: The request params
- `oAuth2ClientID` _string_ — OAuth2 - Client ID
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `mapping` _object_ — Mapping: The mapping
- `oAuth2TokenEndpoint` _string_ — OAuth2 - Token Endpoint: OAuth2 - Token Endpoint URL
- `persistentStorage` _boolean_ — Persistent storage
- `requestTimeout` _integer_ — Request timeout: Request timeout in seconds
- `throttlingLimit` _integer_ — Throttling limit

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "rest",
    "Config": "{\"name\": \"My REST API Integration\", \"method\": \"POST\", \"endpoint\": \"/example/path\", \"headers\": {}, \"params\": {}, \"mapping\": {}, \"requestTimeout\": 10, \"insecureSkipVerify\": true, \"workersCount\": 100, \"oAuth2TokenEndpoint\": \"/example/path\", \"oAuth2ClientSecret\": \"password\", \"oAuth2ClientID\": \"my-client-id\", \"oAuth2Scope\": \"view,read\", \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "rest",
            "Config": "{\"name\": \"My REST API Integration\", \"method\": \"POST\", \"endpoint\": \"/example/path\", \"headers\": {}, \"params\": {}, \"mapping\": {}, \"requestTimeout\": 10, \"insecureSkipVerify\": true, \"workersCount\": 100, \"oAuth2TokenEndpoint\": \"/example/path\", \"oAuth2ClientSecret\": \"password\", \"oAuth2ClientID\": \"my-client-id\", \"oAuth2Scope\": \"view,read\", \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - Microsoft SQL Server SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Microsoft SQL Server SSL integration enables Edge System to connect with MSSQL Database via SSL.

Supported Communication
-----------------------

* Outbound (Write from Edge to SQL Server) - Yes
    
* Inbound (Read from SQL Server to Edge) - No
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | IP Address or Hostname of MSSQL Server (Must be reachable from Edge system) | Yes |
| Port | MSSQL Server port | Yes |
| SSL mode | If disable is selected, data sent between client and server is not encrypted. If true is selected, data sent between client and server is encrypted. If false is selected, data sent between client and server is not encrypted beyond the login packet. (default is disable) | Yes   |
| CA certificate | SSL CA Certificate (default certificate will be used if this field is empty) | No  |
| Username | User name (can be empty) | No  |
| Password | User password (can be empty) | No  |
| Database | Database name | Yes |
| Table | Table name | Yes |
| Mapping | Data from a predefined table could be mapped into a custom one. Example: {"from": "to"} where "from" is a column from predefined table, and "to" is a column from destination table | No  |
| Create table | If selected and table doesn't exist, the table is created with the necessary format \[1\] | No  |
| Commit timeout | Transaction commit timeout (ms) | No  |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** |
| --- | --- |
| Microsoft SQL Server | v15 (2019) |
| Microsoft SQL Server | v14 (2017) |

**Provider ID:** `mssql-ssl`
**Provider Name:** DB - Microsoft SQL Server SSL

**Required properties:**
- `createTable` _boolean_ — Create table: Create the table if it doesn't exist. To do this you need permissions.
- `password` _string_ — Password: The password
- `port` _integer_ — Port: Port of MSSQL host.
- `table` _string_ — Table: The table name
- `hostname` _string_ — Hostname: DNS name or IP of the host.
- `sslMode` _string_ — SSL Mode: SSL mode
  Options: `disable`, `true`, `false`
- `username` _string_ — Username: The username
- `name` _string_ — Name: Instance Name
- `database` _string_ — Database: The database name

**Optional properties:**
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `bulkSize` _integer_ — Bulk insert count: Buffer messages and perform bulk insert once the Bulk insert count is reached
- `mapping` _object_ — Mapping: The mapping list
- `maxTransactionSize` _integer_ — Max transaction size: Maximum number of messages before a transaction is committed regardless of timeout
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `commitTimeout` _integer_ — Commit timeout: Transaction commit timeout (ms)

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "mssql-ssl",
    "Config": "{\"name\": \"My DB - Microsoft SQL Server SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 1433, \"sslMode\": \"true\", \"caCert\": \"<certificate>\", \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "mssql-ssl",
            "Config": "{\"name\": \"My DB - Microsoft SQL Server SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 1433, \"sslMode\": \"true\", \"caCert\": \"<certificate>\", \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - MySQL SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

MySQL SSL Integration enables Edge System to connect with MySQL Database via SSL

Supported Versions
------------------

MySQL (4.1+), MariaDB, Percona Server, Google CloudSQL or Sphinx (2.2.3+)

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes

* Inbound (Read from Database to Edge) - No


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | IP Address or Hostname of MSSQL Server (Must be reachable from Edge system) | Yes |
| CA Certificate | SSL CA Certificate | No  |
| Certificate | SSL Certificate | No  |
| Private key | SSL Private key | No  |
| Port | MSSQL Server port | Yes |
| Username | User name | Yes |
| Password | User password (can be empty) | No  |
| Database | Database name | Yes |
| Table | Table name | Yes |
| Create table | If selected and table doesn't exist, the table is created with the necessary format \[1\] | No  |
| Commit timeout | Transaction commit timeout (ms) | No  |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| MySQL | 8   | N/A |

**Provider ID:** `mysql-ssl`
**Provider Name:** DB - MySQL SSL

**Required properties:**
- `name` _string_ — Name: Instance Name
- `port` _integer_ — Port: Port of MySql host.
- `table` _string_ — Table: The table name
- `createTable` _boolean_ — Create table: Create the table if it doesn't exist. To do this you need permissions.
- `username` _string_ — Username: The username
- `database` _string_ — Database: The database name
- `hostname` _string_ — Hostname: DNS name or IP of the host.

**Optional properties:**
- `maxTransactionSize` _integer_ — Max transaction size: Maximum number of messages before a transaction is committed regardless of timeout
- `throttlingLimit` _integer_ — Throttling limit
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `password` _string_ — Password: The password
- `privateKey` _string_ — Private key: Private key can be added here.
- `sslMode` _string_ — SSL Mode: SSL mode
  Options: `require`
- `bulkSize` _integer_ — Bulk insert count: Buffer messages and perform bulk insert once the Bulk insert count is reached
- `certificate` _string_ — Certificate: Certificate can be added here.
- `mapping` _object_ — Mapping: The mapping list
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `commitTimeout` _integer_ — Commit timeout: Transaction commit timeout (ms)

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "mysql-ssl",
    "Config": "{\"name\": \"My DB - MySQL SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 3306, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1, \"sslMode\": \"require\"}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "mysql-ssl",
            "Config": "{\"name\": \"My DB - MySQL SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 3306, \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1, \"sslMode\": \"require\"}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - PostgreSQL SSL

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

PostgreSQL SSL Integration enables Edge System to connect with PostgreSQL Database via SSL

Supported Communication
-----------------------

* Outbound (Write from Edge to Database) - Yes
    
* Inbound (Read from Database to Edge) - No
    

Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | IP Address or Hostname of PostgreSQL Server (Must be reachable from Edge system) | Yes |
| Port | PostgreSQL Server port | Yes |
| SSL Mode | SSL Mode\[1\] - one of "require", "verify-ca", "verify-full" | Yes |
| CA Certificate | SSL CA Certificate | No  |
| Certificate | SSL Certificate | No  |
| Private key | SSL Private key | No  |
| Username | User name (can be empty) | No  |
| Password | User password (can be empty) | No  |
| Database | Database name | Yes |
| Table | Table name | Yes |
| Create table | If selected and table doesn't exist, the table is created with the necessary format \[1\] | No  |
| Commit timeout | Transaction commit timeout (ms) | No  |
| Max transaction size | Maximum number of messages before a transaction is committed regardless of timeout | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| PostgreSQL | 12  | N/A |

**Provider ID:** `postgresql-ssl`
**Provider Name:** DB - PostgreSQL SSL

**Required properties:**
- `hostname` _string_ — Hostname: DNS name or IP of the host.
- `port` _integer_ — Port: Port of PostgreSQL host.
- `sslMode` _string_ — SSL Mode: SSL mode
  Options: `require`, `verify-ca`, `verify-full`
- `createTable` _boolean_ — Create table: Create the table if it doesn't exist. To do this you need permissions.
- `database` _string_ — Database: The database name
- `name` _string_ — Name: Instance Name
- `table` _string_ — Table: The table name

**Optional properties:**
- `certificate` _string_ — Certificate: Certificate can be added here.
- `maxTransactionSize` _integer_ — Max transaction size: Maximum number of messages before a transaction is committed regardless of timeout
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `commitTimeout` _integer_ — Commit timeout: Transaction commit timeout (ms)
- `password` _string_ — Password: The password
- `persistentStorage` _boolean_ — Persistent storage
- `privateKey` _string_ — Private key: Private key can be added here.
- `throttlingLimit` _integer_ — Throttling limit
- `username` _string_ — Username: The username
- `mapping` _object_ — Mapping: The mapping list
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `bulkSize` _integer_ — Bulk insert count: Buffer messages and perform bulk insert once the Bulk insert count is reached
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "postgresql-ssl",
    "Config": "{\"name\": \"My DB - PostgreSQL SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 5432, \"sslMode\": \"require\", \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "postgresql-ssl",
            "Config": "{\"name\": \"My DB - PostgreSQL SSL Integration\", \"hostname\": \"192.168.1.100\", \"port\": 5432, \"sslMode\": \"require\", \"caCert\": \"<certificate>\", \"certificate\": \"<certificate>\", \"privateKey\": \"<certificate>\", \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"table\": \"mytable\", \"mapping\": {}, \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - DB - Snowflake

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

Snowflake Integration enables Edge System to connect with Snowflake’s data warehouse.

Supported Communication
-----------------------

* Outbound (Write from Edge to Snowflake) - Yes

* Inbound (Read from Snowflake to Edge) - No


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector instance name | Yes |
| Account | Snowflake account ID | Yes |
| Username | Username | Yes |
| Password | Password | Yes |
| Database | Database name | Yes |
| Schema | Schema name | Yes |
| Warehouse | Warehouse name | Yes |
| Table | Table name | Yes |
| Create table | Create the table if it doesn’t exist. User must have the permission. | No  |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

**Provider ID:** `snowflake`
**Provider Name:** DB - Snowflake

**Required properties:**
- `accountName` _string_ — Account: Account Name
- `warehouse` _string_ — Warehouse: The warehouse name
- `schema` _string_ — Schema: The schema name
- `username` _string_ — Username: The username
- `table` _string_ — Table: The table name
- `createTable` _boolean_ — Create table: Create the table if it doesn't exist. To do this you need permissions.
- `password` _string_ — Password: The password
- `database` _string_ — Database: The database name
- `name` _string_ — Name: Instance Name

**Optional properties:**
- `commitTimeout` _integer_ — Commit timeout: Transaction commit timeout (ms)
- `maxTransactionSize` _integer_ — Max transaction size: Maximum number of messages before a transaction is committed regardless of timeout
- `throttlingLimit` _integer_ — Throttling limit
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages
- `bulkSize` _integer_ — Bulk insert count: Buffer messages and perform bulk insert once the Bulk insert count is reached
- `persistentStorage` _boolean_ — Persistent storage
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "snowflake",
    "Config": "{\"name\": \"My DB - Snowflake Integration\", \"accountName\": \"placeholder_accountName\", \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"schema\": \"placeholder_schema\", \"warehouse\": \"placeholder_warehouse\", \"table\": \"mytable\", \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "snowflake",
            "Config": "{\"name\": \"My DB - Snowflake Integration\", \"accountName\": \"placeholder_accountName\", \"username\": \"admin\", \"password\": \"password\", \"database\": \"mydb\", \"schema\": \"placeholder_schema\", \"warehouse\": \"placeholder_warehouse\", \"table\": \"mytable\", \"createTable\": false, \"commitTimeout\": 1000, \"maxTransactionSize\": 100, \"bulkSize\": 0, \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Splunk

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

splunk-http Integration enables Edge System to connect with Splunk via HTTP

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Splunk) - Yes

* Inbound (Subscribe data from Splunk to Edge) - No


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector Name | Yes |
| Hostname | Splunk server host name | Yes |
| Port | Splunk server port | Yes |
| Use SSL | Use SSL HTTP connection | No  |
| Endpoint | The Splunk endpoint. The default is services/collector/event. | Yes |
| Token | Token for access to Splunk server | Yes |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported.

| **Product** | **Version** | **Date** |
| --- | --- | --- |
| N/A | N/A | N/A |

**Provider ID:** `splunk-http`
**Provider Name:** Splunk

**Required properties:**
- `port` _integer_ — Port: Port of splunk host.
- `useSSL` _boolean_ — Use SSL
- `hostname` _string_ — Hostname
- `name` _string_ — Name: Instance Name
- `token` _string_ — Token: Splunk token
- `topic` _string_ — Endpoint: Splunk endpoint

**Optional properties:**
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `throttlingLimit` _integer_ — Throttling limit
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "splunk-http",
    "Config": "{\"name\": \"My Splunk Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8088, \"useSSL\": true, \"topic\": \"integration/data\", \"token\": \"password\", \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "splunk-http",
            "Config": "{\"name\": \"My Splunk Integration\", \"hostname\": \"192.168.1.100\", \"port\": 8088, \"useSSL\": true, \"topic\": \"integration/data\", \"token\": \"password\", \"workersCount\": 1, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

## Create Instance - Kafka SSL Gen 2

**POST** `{{edgeUrl}}/cc/v2`

Overview
--------

The Kafka SSL Gen 2 integration enables Edge System to connect with the Kafka broker.

Supported Versions
------------------

Compatible with Kafka versions from 0.10.1.0 to 2.1.0.

Supported Communication
-----------------------

* Outbound (Publish data from Edge to Kafka broker) - Yes

* Inbound (Subscribe data from Kafka broker to Edge) - Yes


Configurations
--------------

| **Variable** | **Detail** | **Required** |
| --- | --- | --- |
| Name | Connector name | Yes |
| Brokers | List of Kafka brokers separated by comma (Must be reachable from Edge system) | Yes |
| SASL mechanism | SASL mechanism values include: NONE, SASL_PLAINTEXT. SCRAM-SHA-256, and SCRAM-SHA-512. This field can only be used if username is not empty | Yes |
| Username | User name | No  |
| Password | User password | No  |
| CA certificate | It is a digital certificate issued by a trusted Certificate Authority and is used to authenticate the identity of servers or entities in an SSL/TLS connection | No  |
| Certificate | SSL Certificate | No  |
| Private key | SSL certificate private key | No  |
| Insecure skip verify | Insecure Skip Verify controls whether a client verifies the server's certificate chain and host name | No  |
| Topic | Default topic for Publish | Yes |
| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |
| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |
| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |

Compatibility Validation
------------------------

This information is just for reference. More products and versions may be supported provided they are compatible with the supported version as mentioned above.

| Product | Version | Date |
| --- | --- | --- |
| CloudKarafka | 0.11.0.0 | N/A |
| Confluent | N/A | N/A |

**Provider ID:** `kafka-ssl-gen-2`
**Provider Name:** Kafka SSL Gen 2

**Required properties:**
- `name` _string_ — Name: Instance Name
- `insecureSkipVerify` _boolean_ — Insecure Skip Verify: Insecure Skip Verify controls whether a client verifies the server's certificate chain and host name
- `topic` _string_ — Topic: The topic name
- `workersCount` _integer_ — Parallel Publish Count: The number of simultaneously publishing messages. Check information above for details.
- `saslMechanism` _string_ — SASL mechanism
  Options: `NONE`, `SASL_PLAINTEXT`, `SCRAM-SHA-256`, `SCRAM-SHA-512`
- `brokers` _string_ — Brokers list separated by comma

**Optional properties:**
- `autoCreateTopic` _boolean_ — Auto create topic: Enable automatic topic creation when the topic is not found, this also requires to enable auto create topic config on the Kafka broker.
- `disableIdempotentWrite` _boolean_ — Disable Idempotent Write: Disable idempotent producer writes. When disabled, duplicate messages may be produced during retries.
- `connIdleTimeoutMs` _integer_ — Connection Idle Timeout (ms): Maximum idle time before closing connections
- `heartbeatIntervalMs` _integer_ — Heartbeat Interval (ms): Consumer group heartbeat interval
- `metadataMaxAgeMs` _integer_ — Metadata Max Age (ms): Maximum age of metadata before refresh
- `rebalanceTimeoutMs` _integer_ — Rebalance Timeout (ms): Consumer group rebalance timeout
- `requestTimeoutMs` _integer_ — Request Timeout (ms): Maximum time to wait for requests to complete
- `throttlingLimit` _integer_ — Throttling limit
- `certificate` _string_ — Certificate: Certificate can be added here.
- `fetchMinBytes` _integer_ — Fetch Min Bytes: Minimum bytes to fetch in each request
- `metadataMinRefreshMs` _integer_ — Metadata Min Refresh (ms): Minimum time between metadata refreshes
- `password` _string_ — Password: The password
- `privateKey` _string_ — Private key: Private key can be added here.
- `producerTimeoutMs` _integer_ — Producer Timeout (ms): Maximum time to wait for producer response
- `queueMode` _string_ — Queue Mode
  Options: `lifo`, `fifo`
- `requiredAcks` _string_ — Required Acknowledgments: Level of acknowledgment reliability (none=0, leader=1, all=-1)
  Options: `none`, `leader`, `all`
- `caCert` _string_ — CA Certificate: CA certificate can be added here. It can also be added to system wide certificate list.
- `clientId` _string_ — Client ID: Client identifier sent to Kafka brokers
- `retryBackoffMs` _integer_ — Retry Backoff (ms): Backoff time between retry attempts
- `writeTimeoutMs` _integer_ — Write Timeout (ms): Write operation timeout
- `dialTimeoutMs` _integer_ — Dial Timeout (ms): Connection establishment timeout
- `persistentStorage` _boolean_ — Persistent storage
- `plSizeLimitGB` _integer_ — Persistent storage size limit: Persistent storage size limit in GB
- `producerBatchMaxBytes` _integer_ — Producer Batch Max Bytes: Maximum size of producer batches in bytes
- `producerLingerMs` _integer_ — Producer Linger (ms): Time to wait for additional messages before sending batch
- `readTimeoutMs` _integer_ — Read Timeout (ms): Read operation timeout
- `compressionType` _string_ — Compression Type: Compression algorithm for message payloads
  Options: `none`, `gzip`, `snappy`, `lz4`, `zstd`
- `fetchMaxBytes` _integer_ — Fetch Max Bytes: Maximum bytes to fetch in each request
- `maxPartitionBytes` _integer_ — Max Partition Bytes: Maximum bytes to fetch per partition
- `produceRetries` _integer_ — Produce Retries: Maximum number of retry attempts for failed requests
- `sessionTimeoutMs` _integer_ — Session Timeout (ms): Consumer group session timeout
- `fetchMaxWaitMs` _integer_ — Fetch Max Wait (ms): Maximum time to wait for fetch requests
- `maxMessageBytes` _integer_ — Max Message Bytes: Maximum message size in bytes
- `username` _string_ — Username: The username

### Request Body

**GraphQL Query**

```graphql
mutation CreateInstance($input: CreateInstanceRequest!) {
    CreateInstance(input: $input) {
        InstanceID
        ProviderID
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}
```

**Variables**

```json
{
  "input": {
    "ProviderID": "kafka-ssl-gen-2",
    "Config": "{\"name\": \"My Kafka SSL Gen 2 Integration\", \"brokers\": \"one.litmus.pro:9094,two.litmus.pro:9094,three.litmus.pro:9094\", \"saslMechanism\": \"SCRAM-SHA-256\", \"username\": \"admin\", \"password\": \"password\", \"caCert\": \"\", \"certificate\": \"\", \"privateKey\": \"\", \"insecureSkipVerify\": false, \"topic\": \"integration/data\", \"autoCreateTopic\": false, \"clientId\": \"my-client-id\", \"requestTimeoutMs\": 30000, \"connIdleTimeoutMs\": 540000, \"metadataMaxAgeMs\": 300000, \"metadataMinRefreshMs\": 100, \"requiredAcks\": \"all\", \"disableIdempotentWrite\": false, \"producerTimeoutMs\": 30000, \"producerBatchMaxBytes\": 1000000, \"producerLingerMs\": 5, \"compressionType\": \"none\", \"maxMessageBytes\": 1000000, \"fetchMinBytes\": 1, \"fetchMaxBytes\": 52428800, \"fetchMaxWaitMs\": 500, \"maxPartitionBytes\": 1048576, \"sessionTimeoutMs\": 10000, \"heartbeatIntervalMs\": 3000, \"rebalanceTimeoutMs\": 60000, \"retryBackoffMs\": 100, \"produceRetries\": 2147483647, \"dialTimeoutMs\": 10000, \"writeTimeoutMs\": 10000, \"readTimeoutMs\": 10000, \"workersCount\": 100, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "Enabled": false,
    "ErrorLogging": false
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateInstance": {
            "InstanceID": "<generated-uuid>",
            "ProviderID": "kafka-ssl-gen-2",
            "Config": "{\"name\": \"My Kafka SSL Gen 2 Integration\", \"brokers\": \"one.litmus.pro:9094,two.litmus.pro:9094,three.litmus.pro:9094\", \"saslMechanism\": \"SCRAM-SHA-256\", \"username\": \"admin\", \"password\": \"password\", \"caCert\": \"\", \"certificate\": \"\", \"privateKey\": \"\", \"insecureSkipVerify\": false, \"topic\": \"integration/data\", \"autoCreateTopic\": false, \"clientId\": \"my-client-id\", \"requestTimeoutMs\": 30000, \"connIdleTimeoutMs\": 540000, \"metadataMaxAgeMs\": 300000, \"metadataMinRefreshMs\": 100, \"requiredAcks\": \"all\", \"disableIdempotentWrite\": false, \"producerTimeoutMs\": 30000, \"producerBatchMaxBytes\": 1000000, \"producerLingerMs\": 5, \"compressionType\": \"none\", \"maxMessageBytes\": 1000000, \"fetchMinBytes\": 1, \"fetchMaxBytes\": 52428800, \"fetchMaxWaitMs\": 500, \"maxPartitionBytes\": 1048576, \"sessionTimeoutMs\": 10000, \"heartbeatIntervalMs\": 3000, \"rebalanceTimeoutMs\": 60000, \"retryBackoffMs\": 100, \"produceRetries\": 2147483647, \"dialTimeoutMs\": 10000, \"writeTimeoutMs\": 10000, \"readTimeoutMs\": 10000, \"workersCount\": 100, \"throttlingLimit\": 0, \"persistentStorage\": true, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
            "Enabled": false,
            "ErrorLogging": false,
            "TagSyncEnabled": false,
            "System": false,
            "Online": false,
            "Status": "DISABLED",
            "SizeOnDisk": 0,
            "ErrCode": null,
            "ErrMsg": null
        }
    }
}
```

---

