# LitmusEdge 4.0.x API Documentation/DeviceHub/Create Device - Driver Examples - LE, LEM, LUNS API Docs

## Create Device - ABB Totalflow DB2 (Gen1.3)

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

# ABB Totalflow DB2 (Gen1.3)

| <!-- -->                 | <!-- -->                                               |
| ------------------------ | ------------------------------------------------------ |
| Prerequisites            | None                                                   |
| Required fields          | Network address<br>Network Port                        |
| Browse devices supported | No                                                     |
| Browse tags supported    | No                                                     |
| Supported device models  | ABB Totalflow devices that support native DB2 protocol |

**Driver ID:** `EFE0CCA0-E2C0-4BAC-A535-766ECE45F66D`
**Group:** ABB

**Required properties:**
- `name` _String_ - Device Name that describes your asset.
- `networkAddress` _String_ - IP Address of the device.
- `networkPort` _SignedInteger_ - Network port of  the device.

**Optional properties:**
- `description` _String_ - Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My ABB Totalflow DB2 (Gen1.3) Device",
    "Description": "",
    "DriverID": "EFE0CCA0-E2C0-4BAC-A535-766ECE45F66D",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "ABB"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My ABB Totalflow DB2 (Gen1.3) Device",
            "DriverID": "EFE0CCA0-E2C0-4BAC-A535-766ECE45F66D",
            "Description": ""
        }
    }
}
```

---

## Create Device - ABB Totalflow DB2 Serial (Gen1.3)

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

# ABB Totalflow DB2 Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | --------------------------------------------------------------------------------- |
| Prerequisites            | No                                                                                |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | ABB Totalflow devices that support native DB2 protocol                            |

**Driver ID:** `15E3CB87-6179-4306-B68E-43038FE02127`
**Group:** ABB

**Required properties:**
- `name` _String_ - Device Name that describes your asset.
- `stationId` _SignedInteger_ - Station id/ slot number
- `baudRate` _SignedInteger_ - Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ - Serial communication databits parameter.
- `stopBits` _SignedInteger_ - Serial communication stopbits parameter.
- `parity` _SignedInteger_ - serial communication parity parameter.
  Options: `0`, `1`, `2`
- `deviceFile` _String_ - Local Serial connection file path.

**Optional properties:**
- `description` _String_ - Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My ABB Totalflow DB2 Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "15E3CB87-6179-4306-B68E-43038FE02127",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "ABB"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My ABB Totalflow DB2 Serial (Gen1.3) Device",
            "DriverID": "15E3CB87-6179-4306-B68E-43038FE02127",
            "Description": ""
        }
    }
}
```

---

## Create Device - AB CompactLogix Ethernet Advanced

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

# CompactLogix Ethernet Driver Advanced
This driver can be used for better performance. Multiple tags that belong to the same polling cycle can be read in a single request-response.     

> The driver implements two modes: ***Symbolic*** and ***CompactLogix***
 
> In ***Symbolic*** mode driver supports both CompactLogix and ControlLogix connections,
> but makes tag grouping more efficient compared to the standard driver, 
> trying to combine as many tags as possible but not exceeding MTU for both requests and responses.  

> In ***CompactLogix*** mode the driver uses numeric handles instead of symbolic names. 
> Usually this allows reading of more tags per single request vs ***Symbolic*** mode especially if symbolic names are quite long. 

> The driver does not detect PLC program changes. Structure templates are read once when connection is established. 
> If PLC program is changed a connection should be restarted

**Driver ID:** `86933B9C-37D5-4926-9C6B-EDF94E5F6DC5`
**Group:** Allen Bradley

**Required properties:**
- `networkAddress` _String_ - This is a IP Address of device
- `networkPort` _SignedInteger_ - This is a network port of device
- `slotNumber` _SignedInteger_ - This is a slot no of device
- `accessMode` _SignedInteger_
  Options: `0`, `1`
- `name` _String_ - This is a Device Name.

**Optional properties:**
- `description` _String_ - This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My AB CompactLogix Ethernet Advanced Device",
    "Description": "",
    "DriverID": "86933B9C-37D5-4926-9C6B-EDF94E5F6DC5",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "slotNumber",
        "Value": "0"
      },
      {
        "Key": "accessMode",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "rockwell-compact-logix-adv_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My AB CompactLogix Ethernet Advanced Device",
            "DriverID": "86933B9C-37D5-4926-9C6B-EDF94E5F6DC5",
            "Description": ""
        }
    }
}
```

---

## Create Device - AB CompactLogix Ethernet FreeTag

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

# AB CompactLogix Ethernet FreeTag
| <!-- -->                 | <!-- -->                                           |
|--------------------------|----------------------------------------------------|
| Prerequisites            | None                                               |
| Required fields          | Network address<br>Network Port<br>Slot Number     |
| Browse devices supported | No                                                 |
| Browse tags supported    | Yes                                                |
| Supported device models  | Allen-Bradley CompactLogix and ControlLogix Series |

**Driver ID:** `2FB8D1F6-5675-11EB-AE93-0242AC130002`
**Group:** Allen Bradley

**Required properties:**
- `networkAddress` _String_ - This is a IP Address of device.
- `networkPort` _SignedInteger_ - This is a network port of device.
- `slotNumber` _SignedInteger_ - This is a slot no of device.
- `name` _String_ - This is a Device Name.

**Optional properties:**
- `description` _String_ - This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My AB CompactLogix Ethernet FreeTag Device",
    "Description": "",
    "DriverID": "2FB8D1F6-5675-11EB-AE93-0242AC130002",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "slotNumber",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "rockwell-compact-logix_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My AB CompactLogix Ethernet FreeTag Device",
            "DriverID": "2FB8D1F6-5675-11EB-AE93-0242AC130002",
            "Description": ""
        }
    }
}
```

---

## Create Device - AB ControlLogix Unsolicited (Gen1.3)

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

# AB ControlLogix Unsolicited (Gen1.3)

| <!-- -->                 | <!-- -->                                                                                        |
| ------------------------ | ----------------------------------------------------------------------------------------------- |
| Prerequisites            | Tags should be configured in the PLC using CIP Data table Read/Write MSG instruction            |
| Required fields          | Network Port                                                                                    |
| Browse devices supported | No                                                                                              |
| Browse tags supported    | No                                                                                              |
| Supported device models  | All ControlLogix and Compactlogix series that support CIP Data table Read/Write MSG instruction |

**Driver ID:** `9479F114-86F0-4E77-8118-9A721340EC3C`
**Group:** Allen Bradley

**Required properties:**
- `networkPort` _SignedInteger_ - Network port of  the device.
- `name` _String_ - Device Name that describes your asset.

**Optional properties:**
- `description` _String_ - Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My AB ControlLogix Unsolicited (Gen1.3) Device",
    "Description": "",
    "DriverID": "9479F114-86F0-4E77-8118-9A721340EC3C",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "rockwell device"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My AB ControlLogix Unsolicited (Gen1.3) Device",
            "DriverID": "9479F114-86F0-4E77-8118-9A721340EC3C",
            "Description": ""
        }
    }
}
```

---

## Create Device - AB DF1 Ethernet

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

# Rockwell DF1 Ethernet Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Network Address
| | > Network Port
| | > Source ID
| | > Destination ID
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Supported device models:** | Allen-Bradley PLC5 Ethernet Devices
| **Miscellaneous:** | > Byte Order: Little-Endian
| | > Register Grouping Size: 103
| | > A strings: padding always added to "Length", up to next register
| | > ST strings: padded into 84 byte blocks, first 2 bytes contain # characters
| | > T/C/R bits: read-only flags
| | > uint == uint16 (unsigned 16bit register)
| | > int == int16
| | > float == float32
| | > bcd == 16-bit Binary Coded Decimal (0x99 -> 99, 0x1A -> error)
| | > Addresses are always decimal, "O" or "H" only indicate what format PLC may display
| | > Types O, I, S are bound to files 0, 1, 2 respectively
| | > Types B, T, C, R, N, F default to files 3, 4, 5, 6, 7, 8 respectively
| | > All other types default to file 9, and should be configured manually 
| | > Non-bound types can be addressed to any file 3-999
| | > Consult your plc configuration for addressing with non-default files

**Driver ID:** `2683ED51-D9E7-4A15-ABFB-C526B382E28B`
**Group:** Allen Bradley

**Required properties:**
- `SourceID` _SignedInteger_ — SRC Byte
- `DestinationID` _SignedInteger_ — DST Byte
- `networkAddress` _String_ — PLC IP
- `networkPort` _SignedInteger_ — PLC Port
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `PlcType` _SignedInteger_ — PLC Type
  Options: `0`, `1`
- `RetryCount` _SignedInteger_ — Read Retries (0 for no retry)
- `Advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `ReadTimeout` _SignedInteger_ — Read Timeout (ms)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My AB DF1 Ethernet Device",
    "Description": "",
    "DriverID": "2683ED51-D9E7-4A15-ABFB-C526B382E28B",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "KeepAlive",
        "Value": "60"
      },
      {
        "Key": "PlcType",
        "Value": "0"
      },
      {
        "Key": "SourceID",
        "Value": "0"
      },
      {
        "Key": "DestinationID",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "Advanced",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "1000"
      },
      {
        "Key": "name",
        "Value": "rockwell-df1-eth_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My AB DF1 Ethernet Device",
            "DriverID": "2683ED51-D9E7-4A15-ABFB-C526B382E28B",
            "Description": ""
        }
    }
}
```

---

## Create Device - AB DF1 Serial

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

# Rockwell DF1 Serial Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Device File
| | > Baud Rate
| | > Data Bits
| | > Stop Bits
| | > Parity
| | > Source ID
| | > Destination ID
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Supported device models:** | Allen-Bradley PLC5 Serial Devices
| **Miscellaneous:** | > Byte Order: Little-Endian
| | > Register Grouping Size: 42
| | > A strings: padding always added to "Length", up to next register
| | > ST strings: padded into 84 byte blocks, first 2 bytes contain # characters
| | > T/C/R bits: read-only flags
| | > uint == uint16 (unsigned 16bit register)
| | > int == int16
| | > float == float32
| | > bcd == 16-bit Binary Coded Decimal (0x99 -> 99, 0x1A -> error)
| | > Addresses are always decimal, "O" or "H" only indicate what format PLC may display
| | > Types O, I, S are bound to files 0, 1, 2 respectively
| | > Types B, T, C, R, N, F default to files 3, 4, 5, 6, 7, 8 respectively
| | > All other types default to file 9, and should be configured manually 
| | > Non-bound types can be addressed to any file 3-999
| | > Consult your plc configuration for addressing with non-default files

**Driver ID:** `E8D1F27A-924C-4B8E-9382-8B2B6ABB695F`
**Group:** Allen Bradley

**Required properties:**
- `DestinationID` _SignedInteger_ — DST Byte
- `deviceFile` _String_ — Path to Device
- `SourceID` _SignedInteger_ — SRC Byte
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `ReadTimeout` _SignedInteger_ — Read Timeout (ms)
- `RetryCount` _SignedInteger_ — Read Retries (0 for no retry)
- `PlcType` _SignedInteger_ — PLC Type
  Options: `0`, `1`
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `Advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My AB DF1 Serial Device",
    "Description": "",
    "DriverID": "E8D1F27A-924C-4B8E-9382-8B2B6ABB695F",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "ReadTimeout",
        "Value": "1000"
      },
      {
        "Key": "DestinationID",
        "Value": "1"
      },
      {
        "Key": "RetryCount",
        "Value": "2"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "PlcType",
        "Value": "0"
      },
      {
        "Key": "SourceID",
        "Value": "0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "Advanced",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "rockwell-df1-serial_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My AB DF1 Serial Device",
            "DriverID": "E8D1F27A-924C-4B8E-9382-8B2B6ABB695F",
            "Description": ""
        }
    }
}
```

---

## Create Device - AB EthernetIP Ethernet

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

# AB EthernetIP Ethernet
| <!-- -->                 | <!-- -->                                       |
|--------------------------|------------------------------------------------|
| Prerequisites            | None                                           |
| Required fields          | Network address<br>Network Port<br>Slot Number |
| Browse devices supported | No                                             |
| Browse tags supported    | No                                             |
| Supported device models  | Allen-Bradley MicroLogix and SLC 500 series    |

**Driver ID:** `2FB8D1F6-5675-11EB-AE93-0242AC130003`
**Group:** Allen Bradley

**Required properties:**
- `networkAddress` _String_ — This is a IP Address of device.
- `networkPort` _SignedInteger_ — This is a network port of device.
- `slotNumber` _SignedInteger_ — This is a slot no of device.
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My AB EthernetIP Ethernet Device",
    "Description": "",
    "DriverID": "2FB8D1F6-5675-11EB-AE93-0242AC130003",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "slotNumber",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "rockwell-micrologix_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My AB EthernetIP Ethernet Device",
            "DriverID": "2FB8D1F6-5675-11EB-AE93-0242AC130003",
            "Description": ""
        }
    }
}
```

---

## Create Device - AB Logix Ethernet

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

# AB Logix Ethernet Driver
TBD

**Driver ID:** `0170E3C7-3D54-4710-A8FA-F953AE626353`
**Group:** Allen Bradley

**Required properties:**
- `networkAddress` _String_ — This is a IP Address of device
- `networkPort` _SignedInteger_ — This is a network port of device
- `route` _String_ — The path describes the route the message takes to get to the destination. Use this format: port, next_address, port, next_address.
- `accessMode` _SignedInteger_
  Options: `0`, `1`
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My AB Logix Ethernet Device",
    "Description": "",
    "DriverID": "0170E3C7-3D54-4710-A8FA-F953AE626353",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "route",
        "Value": "1,0"
      },
      {
        "Key": "accessMode",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "ab-logix_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My AB Logix Ethernet Device",
            "DriverID": "0170E3C7-3D54-4710-A8FA-F953AE626353",
            "Description": ""
        }
    }
}
```

---

## Create Device - AB Logix Serial

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

# AB Logix Serial
| <!-- -->                 | <!-- -->                                                                                                      |
|--------------------------|---------------------------------------------------------------------------------------------------------------|
| Prerequisites            | No                                                                                                            |
| Required fields          | Device File<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>PLC Type                                      |
| Browse devices supported | No                                                                                                            |
| Browse tags supported    | Yes                                                                                                           |
| Supported device models  | Allen-Bradley CompactLogix<br>Allen-Bradley ControlLogix<br>Allen-Bradley FlexLogix<br>Allen-Bradley Micro800 |
| Miscellaneous            | Use PLC Type Compactlogix if connecting to ControlLogix series PLCs                                           |

**Driver ID:** `6F794B0D-C363-41E1-9828-5DDB2E1C587E`
**Group:** Allen Bradley

**Required properties:**
- `PLCType` _SignedInteger_
  Options: `0`, `1`, `2`
- `deviceFile` _String_ — Path to Device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My AB Logix Serial Device",
    "Description": "",
    "DriverID": "6F794B0D-C363-41E1-9828-5DDB2E1C587E",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "PLCType",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "ab-logix-serial_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My AB Logix Serial Device",
            "DriverID": "6F794B0D-C363-41E1-9828-5DDB2E1C587E",
            "Description": ""
        }
    }
}
```

---

## Create Device - EBC Ethernet

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

# AutomationDirect EBC

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | AutomationDirect Terminator I/O |

**Driver ID:** `386981A0-FB2A-447C-93A6-9373D82AA32A`
**Group:** AutomationDirect

**Required properties:**
- `networkAddress` _String_ — This is a IP Address of device
- `networkPort` _SignedInteger_ — This is a network port of device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `readTimeout` _SignedInteger_ — Read Timeout (ms)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My EBC Ethernet Device",
    "Description": "",
    "DriverID": "386981A0-FB2A-447C-93A6-9373D82AA32A",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "readTimeout",
        "Value": "1000"
      },
      {
        "Key": "name",
        "Value": "ebc-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My EBC Ethernet Device",
            "DriverID": "386981A0-FB2A-447C-93A6-9373D82AA32A",
            "Description": ""
        }
    }
}
```

---

## Create Device - B&R PVI Ethernet

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

# B&R PVI Ethernet Driver

| <!-- -->                      | <!-- -->                                                             |
| ----------------------------- | -------------------------------------------------------------------- |
| **Required fields:**          | > Network Address                                                    |
|                               | > Network Port                                                       |
| **Browse devices supported:** | No                                                                   |
| **Browse tags supported:**    | Yes                                                                  |

**Driver ID:** `AA0D80DF-21C0-4C57-9320-C74CD64FF0BA`
**Group:** B&R

**Required properties:**
- `networkAddress` _String_
- `networkPort` _SignedInteger_
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My B&R PVI Ethernet Device",
    "Description": "",
    "DriverID": "AA0D80DF-21C0-4C57-9320-C74CD64FF0BA",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "bnr_pvi_ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My B&R PVI Ethernet Device",
            "DriverID": "AA0D80DF-21C0-4C57-9320-C74CD64FF0BA",
            "Description": ""
        }
    }
}
```

---

## Create Device - BacnetMSTP

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

# BACnet MS/TP Driver

                The driver implements the Client for communications protocol for Building Automation and Control (BAC)
                networks that leverage the ASHRAE, ANSI, and ISO 16484-5 standard protocol. 
                The driver supports the MS/TP data link layer.

                ## Features:
                * Browsing the address space of the device
                * Reading and writing properties of the objects

**Driver ID:** `83935618-A9BB-11EB-BCBC-0242AC132222`
**Group:** BACnet

**Required properties:**
- `DeviceFile` _String_
- `ResponseTimeout` _SignedInteger_ — Response timeout, ms
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `BaudRate` _String_
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`
- `DataBits` _String_
  Options: `0`, `1`, `2`, `3`
- `Parity` _String_
  Options: `0`, `1`, `2`
- `StopBits` _String_
  Options: `0`, `1`, `2`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My BacnetMSTP Device",
    "Description": "",
    "DriverID": "83935618-A9BB-11EB-BCBC-0242AC132222",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "BaudRate",
        "Value": "0"
      },
      {
        "Key": "DataBits",
        "Value": "0"
      },
      {
        "Key": "DeviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "Parity",
        "Value": "0"
      },
      {
        "Key": "ResponseTimeout",
        "Value": "1000"
      },
      {
        "Key": "StopBits",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "bacnet_mstp_cpp_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My BacnetMSTP Device",
            "DriverID": "83935618-A9BB-11EB-BCBC-0242AC132222",
            "Description": ""
        }
    }
}
```

---

## Create Device - AB Micro800 Ethernet

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

# AB Micro800 Ethernet

| <!-- -->                 | <!-- -->                                                                                                                                   |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Prerequisites            | None                                                                                                                                       |
| Required fields          | Network address<br>Network Port                                                                                                            |
| Browse devices supported | No                                                                                                                                         |
| Browse tags supported    | Yes                                                                                                                                        |
| Supported device models  | Allen-Bradley Micro800 series                                                                                                              |
| Miscellaneous            | You may export tags from Connected Components Workbench and upload them to browse Program and UDT elements. FB elements are not supported. |

**Driver ID:** `D654F142-8343-4354-B2AA-A838B93AF988`
**Group:** Allen Bradley

**Required properties:**
- `networkAddress` _String_ — This is a IP Address of device
- `networkPort` _SignedInteger_ — This is a network port of device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `globalVariablesCSV` _String_ — FTP path for CSV file exported from CCW
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My AB Micro800 Ethernet Device",
    "Description": "",
    "DriverID": "D654F142-8343-4354-B2AA-A838B93AF988",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "globalVariablesCSV",
        "Value": ""
      },
      {
        "Key": "name",
        "Value": "ab-micro800_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My AB Micro800 Ethernet Device",
            "DriverID": "D654F142-8343-4354-B2AA-A838B93AF988",
            "Description": ""
        }
    }
}
```

---

## Create Device - BacnetIP

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

# BACnet IP Driver

The driver implements the Client for communications protocol for Building Automation and Control (BAC)
networks that leverage the ASHRAE, ANSI, and ISO 16484-5 standard protocol. 
The driver supports the IP data link layer.

## Features:
* Discovering devices in the network (make sure devices to discover can receive the broadcast IP packets)
* Browsing the address space of the device
* Reading and writing "Present Value" (Property Identifier 85, The current value of the object)
* Read uses the services ReadProperty & ReadPropertyMultiple
* Write uses the services WriteProperty & WritePropertyMultiple

**Driver ID:** `83935618-A9BB-11EB-BCBC-0242AC130002`
**Group:** BACnet

**Required properties:**
- `networkAddress` _String_ — Network address
- `networkPort` _SignedInteger_ — Network port
- `targetDeviceID` _SignedInteger_ — Target device ID
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `destinationAddress` _String_ — Destination address in hex string format.
- `destinationNetwork` _SignedInteger_ — Destination network.
- `instanceDeviceId` _SignedInteger_ — Instance device ID. If 0 will be random.
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My BacnetIP Device",
    "Description": "",
    "DriverID": "83935618-A9BB-11EB-BCBC-0242AC130002",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "destinationAddress",
        "Value": ""
      },
      {
        "Key": "destinationNetwork",
        "Value": "0"
      },
      {
        "Key": "instanceDeviceId",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "targetDeviceID",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "bacnet_ip_cpp_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My BacnetIP Device",
            "DriverID": "83935618-A9BB-11EB-BCBC-0242AC130002",
            "Description": ""
        }
    }
}
```

---

## Create Device - Beckhoff TwinCAT2 Ethernet Absolute (Gen1.3)

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

# Beckhoff TwinCAT2 Ethernet Absolute
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Network Address
| | > Network Port
| | > ADS Port
| | > AMS ID
| | > Local AMS ID
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | Beckhoff TwinCAT2
| **Access Mode:** | Absolute
| **Device settings:** | > Max Request Tags: Maximum number of tags included per reqest
| | > Max Array Browse Size: Maximum number of array elems displayed in browse results
| **Register settings:** | > CommunicationMode: 0 for Polling/Solicited, 1 for Subscription/Unsolicited
| | > Address: Index Offset
| | > Group: Index Group Override
| **Miscellaneous:** |
| | > DATE: format -> "2001-01-02"
| | > DATEANDTIME: format -> "2001-01-02 12:34:56.999"
| | > TIME: format -> "1h 23m 4s 567ms"
| | > LTIME: format -> "1h 23m 4s 567ms 8us 9ns"
| | > TIMEOFDAY: format -> "12:34:56"

**Driver ID:** `CBB394D8-42AB-42AC-84CD-480458835DAE`
**Group:** Beckhoff

**Required properties:**
- `networkAddress` _String_ — IP Address of the Twincat device.
- `adsPort` _SignedInteger_ — ADS Port for the Twincat device.
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of the Twincat device.
- `amsId` _String_ — AMS Net ID for the Twincat device.
- `localAmsId` _String_ — Local AMS NET ID for the Twincat device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.
- `maxRequestTags` _SignedInteger_ — Maximum Tags/Symbols per Request
- `maxArrayBrowseSize` _SignedInteger_ — Maximum Array Elements shown during Browse

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Beckhoff TwinCAT2 Ethernet Absolute (Gen1.3) Device",
    "Description": "",
    "DriverID": "CBB394D8-42AB-42AC-84CD-480458835DAE",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "adsPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "Device Name"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "amsId",
        "Value": "0.0.0.0.1.1"
      },
      {
        "Key": "localAmsId",
        "Value": "0.0.0.0.1.1"
      },
      {
        "Key": "maxRequestTags",
        "Value": "500"
      },
      {
        "Key": "maxArrayBrowseSize",
        "Value": "1000"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Beckhoff TwinCAT2 Ethernet Absolute (Gen1.3) Device",
            "DriverID": "CBB394D8-42AB-42AC-84CD-480458835DAE",
            "Description": ""
        }
    }
}
```

---

## Create Device - Beckhoff TwinCAT3 Ethernet Absolute (Gen1.3)

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

# Beckhoff TwinCAT3 Ethernet Absolute
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Network Address
| | > Network Port
| | > ADS Port
| | > AMS ID
| | > Local AMS ID
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | Beckhoff TwinCAT3
| **Access Mode:** | Absolute
| **Device settings:** | > Max Request Tags: Maximum number of tags included per reqest
| | > Max Array Browse Size: Maximum number of array elems displayed in browse results
| **Register settings:** | > CommunicationMode: 0 for Polling/Solicited, 1 for Subscription/Unsolicited
| | > Address: Index Offset
| | > Group: Index Group Override
| **Miscellaneous:** |
| | > DATE: format -> "2001-01-02"
| | > DATEANDTIME: format -> "2001-01-02 12:34:56.999"
| | > TIME: format -> "1h 23m 4s 567ms"
| | > LTIME: format -> "1h 23m 4s 567ms 8us 9ns"
| | > TIMEOFDAY: format -> "12:34:56"

**Driver ID:** `DABE4A08-6858-4A0C-B94E-A3BB45FE8147`
**Group:** Beckhoff

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of the Twincat device.
- `adsPort` _SignedInteger_ — ADS Port for the Twincat device.
- `amsId` _String_ — AMS Net ID for the Twincat device.
- `localAmsId` _String_ — Local AMS NET ID for the Twincat device.
- `networkAddress` _String_ — IP Address of the Twincat device.

**Optional properties:**
- `maxRequestTags` _SignedInteger_ — Maximum Tags/Symbols per Request
- `maxArrayBrowseSize` _SignedInteger_ — Maximum Array Elements shown during Browse
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Beckhoff TwinCAT3 Ethernet Absolute (Gen1.3) Device",
    "Description": "",
    "DriverID": "DABE4A08-6858-4A0C-B94E-A3BB45FE8147",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "maxRequestTags",
        "Value": "500"
      },
      {
        "Key": "maxArrayBrowseSize",
        "Value": "1000"
      },
      {
        "Key": "name",
        "Value": "Device Name"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "adsPort",
        "Value": "502"
      },
      {
        "Key": "amsId",
        "Value": "0.0.0.0.1.1"
      },
      {
        "Key": "localAmsId",
        "Value": "0.0.0.0.1.1"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Beckhoff TwinCAT3 Ethernet Absolute (Gen1.3) Device",
            "DriverID": "DABE4A08-6858-4A0C-B94E-A3BB45FE8147",
            "Description": ""
        }
    }
}
```

---

## Create Device - Beckhoff TwinCAT3 Ethernet Symbolic (Gen1.3)

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

# Beckhoff TwinCAT3 Ethernet Symbolic
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Network Address
| | > Network Port
| | > ADS Port
| | > AMS ID
| | > Local AMS ID
| **Browse devices supported:**| No
| **Browse tags supported:** | Yes
| **Supported device models:** | Beckhoff TwinCAT3
| **Access Mode:** | Symbolic
| | > Absolute address accepted in the form ("[\<index_group#\>\<index_offset#\>]"
| **Device settings:** | > Max Request Tags: Maximum number of tags included per reqest
| | > Max Array Browse Size: Maximum number of array elems displayed in browse results
| **Register settings:** | > CommunicationMode: 0 for Polling/Solicited, 1 for Subscription/Unsolicited
| **Miscellaneous:** |
| | > DATE: format -> "2001-01-02"
| | > DATEANDTIME: format -> "2001-01-02 12:34:56.999"
| | > TIME: format -> "1h 23m 4s 567ms"
| | > LTIME: format -> "1h 23m 4s 567ms 8us 9ns"
| | > TIMEOFDAY: format -> "12:34:56"

**Driver ID:** `9AA30E17-BE0A-4B7E-BFB8-CE09D4188021`
**Group:** Beckhoff

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of the Twincat device.
- `localAmsId` _String_ — Local AMS NET ID for the Twincat device.
- `networkAddress` _String_ — IP Address of the Twincat device.
- `adsPort` _SignedInteger_ — ADS Port for the Twincat device.
- `amsId` _String_ — AMS Net ID for the Twincat device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.
- `maxRequestTags` _SignedInteger_ — Maximum Tags/Symbols per Request
- `maxArrayBrowseSize` _SignedInteger_ — Maximum Array Elements shown during Browse

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Beckhoff TwinCAT3 Ethernet Symbolic (Gen1.3) Device",
    "Description": "",
    "DriverID": "9AA30E17-BE0A-4B7E-BFB8-CE09D4188021",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "localAmsId",
        "Value": "0.0.0.0.1.1"
      },
      {
        "Key": "maxRequestTags",
        "Value": "500"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "adsPort",
        "Value": "502"
      },
      {
        "Key": "amsId",
        "Value": "0.0.0.0.1.1"
      },
      {
        "Key": "maxArrayBrowseSize",
        "Value": "1000"
      },
      {
        "Key": "name",
        "Value": "Device Name"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Beckhoff TwinCAT3 Ethernet Symbolic (Gen1.3) Device",
            "DriverID": "9AA30E17-BE0A-4B7E-BFB8-CE09D4188021",
            "Description": ""
        }
    }
}
```

---

## Create Device - Brother Speedio Ethernet (Gen1.3)

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

Brother Speedio Ethernet

**Driver ID:** `99C745DC-4BB3-4408-B966-58805E56FECC`
**Group:** Brother Industries, Ltd

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Brother Speedio Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "99C745DC-4BB3-4408-B966-58805E56FECC",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Brother Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Brother Speedio Ethernet (Gen1.3) Device",
            "DriverID": "99C745DC-4BB3-4408-B966-58805E56FECC",
            "Description": ""
        }
    }
}
```

---

## Create Device - Brother TC Ethernet (Gen1.3)

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

# Brother TC Ethernet (Gen1.3)

## Experimental

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Brother TC Ethernet series      |

**Driver ID:** `5CAE67E3-C73D-4465-A515-AC65CFC91AAE`
**Group:** Brother Industries, Ltd

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Brother TC Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "5CAE67E3-C73D-4465-A515-AC65CFC91AAE",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "Brother Device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Brother TC Ethernet (Gen1.3) Device",
            "DriverID": "5CAE67E3-C73D-4465-A515-AC65CFC91AAE",
            "Description": ""
        }
    }
}
```

---

## Create Device - CAN Raw (Gen1.3)

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

# CAN Raw (Gen1.3)

| <!-- -->                 | <!-- -->                         |
| ------------------------ | -------------------------------- |
| Prerequisites            | Gateway must have CAN Bus port   |
| Required fields          | Interface<br>Channel<br>Bit Rate |
| Browse devices supported | No                               |
| Browse tags supported    | No                               |
| Supported device models  | CANopen publishing protocol only |

**Driver ID:** `6A849294-D48A-4CE7-977F-96B1B6499A19`
**Group:** CAN Bus

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `interface` _String_ — Local interface of the SocketCAN compatible device.
- `channel` _String_ — Local data channel of the CAN Bus device.
- `bitRate` _SignedInteger_ — CAN Bus bitrate parameter.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My CAN Raw (Gen1.3) Device",
    "Description": "",
    "DriverID": "6A849294-D48A-4CE7-977F-96B1B6499A19",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Can Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "interface",
        "Value": "socketcan"
      },
      {
        "Key": "channel",
        "Value": "can0"
      },
      {
        "Key": "bitRate",
        "Value": "1000000"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My CAN Raw (Gen1.3) Device",
            "DriverID": "6A849294-D48A-4CE7-977F-96B1B6499A19",
            "Description": ""
        }
    }
}
```

---

## Create Device - CODESYS V2 Ethernet Absolute (Gen1.3)

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

# CODESYS V2 Ethernet Absolute (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | CODESYS V2 absolute addressing  |

**Driver ID:** `05FA3FB9-7FB1-45FB-8160-B2606F5DABFC`
**Group:** CodeSys Devices

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of the Codesys system.
- `networkAddress` _String_ — IP Address of the Codesys system.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My CODESYS V2 Ethernet Absolute (Gen1.3) Device",
    "Description": "",
    "DriverID": "05FA3FB9-7FB1-45FB-8160-B2606F5DABFC",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Codesys Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My CODESYS V2 Ethernet Absolute (Gen1.3) Device",
            "DriverID": "05FA3FB9-7FB1-45FB-8160-B2606F5DABFC",
            "Description": ""
        }
    }
}
```

---

## Create Device - CODESYS V2 Ethernet Symbolic (Gen1.3)

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

# CODESYS V2 Ethernet Absolute (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | CODESYS V2 absolute addressing  |

**Driver ID:** `94B2C05D-8998-4755-A0B6-B3EFAC078A2D`
**Group:** CodeSys Devices

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `path` _String_ — Register file path of device.
- `networkPort` _SignedInteger_ — Network port of the Codesys system.
- `networkAddress` _String_ — IP Address of the Codesys system.

**Optional properties:**
- `Type` _SignedInteger_ — Offline/Online.
  Options: `0`, `1`
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My CODESYS V2 Ethernet Symbolic (Gen1.3) Device",
    "Description": "",
    "DriverID": "94B2C05D-8998-4755-A0B6-B3EFAC078A2D",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Type",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "Codesys V2 Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "path",
        "Value": "/example/path"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My CODESYS V2 Ethernet Symbolic (Gen1.3) Device",
            "DriverID": "94B2C05D-8998-4755-A0B6-B3EFAC078A2D",
            "Description": ""
        }
    }
}
```

---

## Create Device - Cutler-Hammer ELC Ethernet

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

# Cutler-Hammer ELC Ethernet Driver
| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| **Required fields:** | > Connection Settings (TCP)
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | ELC-PV28NNDR 
| **Register Settings:** |

**Driver ID:** `6BF05DB2-2BD5-4780-83BE-ACB878EFC042`
**Group:** Cutler-Hammer

**Required properties:**
- `networkPort` _SignedInteger_ — This is a network port of device.
- `networkAddress` _String_ — This is a IP Address of device.
- `stationId` _SignedInteger_ — This is a station no of device.
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `Zero-Based Addressing` _SignedInteger_
  Options: `0`, `1`
- `overrideStationID` _SignedInteger_
  Options: `0`, `1`
- `requestTimeoutMs` _SignedInteger_ — Response Timeout (ms)
- `maxRequestSize` _SignedInteger_ — Maximum block size retrieved per request (# bytes)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Cutler-Hammer ELC Ethernet Device",
    "Description": "",
    "DriverID": "6BF05DB2-2BD5-4780-83BE-ACB878EFC042",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Zero-Based Addressing",
        "Value": "0"
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "overrideStationID",
        "Value": "0"
      },
      {
        "Key": "requestTimeoutMs",
        "Value": "1000"
      },
      {
        "Key": "maxRequestSize",
        "Value": "512"
      },
      {
        "Key": "name",
        "Value": "cutler-hammer-elc-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Cutler-Hammer ELC Ethernet Device",
            "DriverID": "6BF05DB2-2BD5-4780-83BE-ACB878EFC042",
            "Description": ""
        }
    }
}
```

---

## Create Device - Cutler-Hammer ELC Serial

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

# Cutler-Hammer ELC Serial Driver
| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| **Required fields:** | > Connection Settings (Serial)
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | ELC-PV28NNDR 
| **Register Settings:** |

**Driver ID:** `77155198-9657-456C-99AB-D10F55322193`
**Group:** Cutler-Hammer

**Required properties:**
- `stationId` _SignedInteger_ — This is a station no of device.
- `stopBits` _SignedInteger_ — This is a stop bits.
- `deviceFile` _String_ — This is a path to device.
- `parity` _String_ — This is a parity.
  Options: `0`, `1`, `2`
- `dataBits` _SignedInteger_ — This is a data bits.
- `baudRate` _SignedInteger_ — This is a baud rate.
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `Zero-Based Addressing` _SignedInteger_
  Options: `0`, `1`
- `requestTimeoutMs` _SignedInteger_ — Response Timeout (ms)
- `maxRequestSize` _SignedInteger_ — Maximum block size retrieved per request (# bytes)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Cutler-Hammer ELC Serial Device",
    "Description": "",
    "DriverID": "77155198-9657-456C-99AB-D10F55322193",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "stationId",
        "Value": "0"
      },
      {
        "Key": "Zero-Based Addressing",
        "Value": "0"
      },
      {
        "Key": "requestTimeoutMs",
        "Value": "1000"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "maxRequestSize",
        "Value": "512"
      },
      {
        "Key": "dataBits",
        "Value": "7"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "cutler-hammer-elc-serial_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Cutler-Hammer ELC Serial Device",
            "DriverID": "77155198-9657-456C-99AB-D10F55322193",
            "Description": ""
        }
    }
}
```

---

## Create Device - ELC Serial (Gen1.3)

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

# ELC Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Cutler-Hammer ELC model PV28 Series

**Driver ID:** `E48B9CBE-DBBB-420C-BDF0-8BAED607DFE0`
**Group:** Cutler-Hammer

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter
  Options: `0`, `1`, `2`
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My ELC Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "E48B9CBE-DBBB-420C-BDF0-8BAED607DFE0",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "delta device"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "dataBits",
        "Value": "7"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My ELC Serial (Gen1.3) Device",
            "DriverID": "E48B9CBE-DBBB-420C-BDF0-8BAED607DFE0",
            "Description": ""
        }
    }
}
```

---

## Create Device - Danfoss FC/TSC

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

Danfoss FC/TSC

**Driver ID:** `28B130B3-530E-4644-99EF-4FDC06C758DF`
**Group:** Danfoss

**Required properties:**
- `networkAddress` _String_ — VFD's IP Address
- `networkPort` _SignedInteger_ — TCP/IP port
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Danfoss FC/TSC Device",
    "Description": "",
    "DriverID": "28B130B3-530E-4644-99EF-4FDC06C758DF",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "danfoss-fc-tsc_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Danfoss FC/TSC Device",
            "DriverID": "28B130B3-530E-4644-99EF-4FDC06C758DF",
            "Description": ""
        }
    }
}
```

---

## Create Device - Delta DVP Ethernet (Gen1.3)

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

# Delta DVP Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                |
| ------------------------ | ----------------------- |
| Prerequisites            | No                      |
| Required fields          | Network Address<br>Port |
| Browse devices supported | No                      |
| Browse tags supported    | No                      |
| Supported device models  | Delta DVP Series        |

**Driver ID:** `9F48C353-AEA4-4CE3-AE15-686A557CEFB5`
**Group:** Delta PLC

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Delta DVP Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "9F48C353-AEA4-4CE3-AE15-686A557CEFB5",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "delta device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Delta DVP Ethernet (Gen1.3) Device",
            "DriverID": "9F48C353-AEA4-4CE3-AE15-686A557CEFB5",
            "Description": ""
        }
    }
}
```

---

## Create Device - DNP3 Master

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

# DNP3 Master Driver

| <!-- -->                      | <!-- -->                                                             |
| ----------------------------- | -------------------------------------------------------------------- |
| **Required fields:**          | > Network Address                                                    |
|                               | > Network Port                                                       |
|                               | > Master Address                                                     |
|                               | > Outstation Address                                                 |
|                               | > Class 1/2/3 Poll Period                                            |
| **Browse devices supported:** | No                                                                   |
| **Browse tags supported:**    | Yes                                                                  |
| **Supported devices:**        | DNP3-compatible RTUs                                                 |
| **Miscellaneous:**            | > Does not yet support File Transfer or SAv5                         |
|                               | > Supports Emerson's DNP3 tunneling method for Emerson FBx RTUs only |

**Driver ID:** `12EC6276-32E0-41C1-812B-FA9746ECF42F`
**Group:** DNP3

**Required properties:**
- `masterAddress` _SignedInteger_ — Master Station Address
- `networkAddress` _String_
- `networkPort` _SignedInteger_
- `outstationAddress` _SignedInteger_ — DNP3 Outstation Address
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `class123PollPeriod` _SignedInteger_ — Class123 Polling period
- `enableTimeSync` _SignedInteger_ — Enable Time Sync
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My DNP3 Master Device",
    "Description": "",
    "DriverID": "12EC6276-32E0-41C1-812B-FA9746ECF42F",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "class123PollPeriod",
        "Value": "30"
      },
      {
        "Key": "enableTimeSync",
        "Value": "0"
      },
      {
        "Key": "masterAddress",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "outstationAddress",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "DNP3_Master_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My DNP3 Master Device",
            "DriverID": "12EC6276-32E0-41C1-812B-FA9746ECF42F",
            "Description": ""
        }
    }
}
```

---

## Create Device - DNP3 Ethernet

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

# DNP3 Ethernet
| <!-- -->                 | <!-- -->                                                                                           |
|--------------------------|----------------------------------------------------------------------------------------------------|
| Prerequisites            | None                                                                                               |
| Required fields          | Network address<br>Network Port<br>Master Address<br>Outstation Address<br>Class 1/2/3 Poll Period |
| Browse devices supported | No                                                                                                 |
| Browse tags supported    | Yes                                                                                                |
| Supported device models  | Emerson FB3000/1200                                                                                |
| Miscellaneous            | Validated with Emerson devices only                                                                |

**Driver ID:** `96B7A2BE-1EA8-4DC0-8809-EBF867ADFFFF`
**Group:** Emerson

**Required properties:**
- `networkAddress` _String_ — Device IP Address
- `networkPort` _SignedInteger_ — TCP/IP Port
- `masterAddress` _SignedInteger_ — Master Station Address
- `outstationAddress` _SignedInteger_ — DNP3 Outstation Address
- `class1PollPeriod` _SignedInteger_
- `class2PollPeriod` _SignedInteger_
- `class3PollPeriod` _SignedInteger_
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `enableTimeSync` _SignedInteger_
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My DNP3 Ethernet Device",
    "Description": "",
    "DriverID": "96B7A2BE-1EA8-4DC0-8809-EBF867ADFFFF",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "masterAddress",
        "Value": "0"
      },
      {
        "Key": "outstationAddress",
        "Value": "1"
      },
      {
        "Key": "class1PollPeriod",
        "Value": "5"
      },
      {
        "Key": "class2PollPeriod",
        "Value": "5"
      },
      {
        "Key": "class3PollPeriod",
        "Value": "5"
      },
      {
        "Key": "enableTimeSync",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "dnp3-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My DNP3 Ethernet Device",
            "DriverID": "96B7A2BE-1EA8-4DC0-8809-EBF867ADFFFF",
            "Description": ""
        }
    }
}
```

---

## Create Device - DNP3 Ethernet with FB Extensions

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

# DNP3 Ethernet with FB Extensions

| <!-- -->                      | <!-- -->                                                             |
| ----------------------------- | -------------------------------------------------------------------- |
| **Required fields:**          | > Network Address                                                    |
|                               | > Network Port                                                       |
|                               | > Master Address                                                     |
|                               | > Outstation Address                                                 |
|                               | > Class 1/2/3 Poll Period                                            |
| **Browse devices supported:** | No                                                                   |
| **Browse tags supported:**    | Yes                                                                  |
| **Supported devices:**        | DNP3-compatible RTUs                                                 |
| **Miscellaneous:**            | > Does not yet support File Transfer or SAv5                         |
|                               | > Supports Emerson's DNP3 tunneling method for Emerson FBx RTUs only |

**Driver ID:** `2FBB1709-E94F-4244-BFC8-779C4D504ADA`
**Group:** Emerson

**Required properties:**
- `masterAddress` _SignedInteger_ — Master Station Address
- `networkAddress` _String_
- `networkPort` _SignedInteger_
- `outstationAddress` _SignedInteger_ — DNP3 Outstation Address
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `class123PollPeriod` _SignedInteger_ — Class123 Polling period
- `enableTimeSync` _SignedInteger_ — Enable Time Sync
  Options: `0`, `1`
- `password` _String_ — Password
- `user` _String_
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My DNP3 Ethernet with FB Extensions Device",
    "Description": "",
    "DriverID": "2FBB1709-E94F-4244-BFC8-779C4D504ADA",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "class123PollPeriod",
        "Value": "30"
      },
      {
        "Key": "enableTimeSync",
        "Value": "0"
      },
      {
        "Key": "masterAddress",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "outstationAddress",
        "Value": "1"
      },
      {
        "Key": "password",
        "Value": ""
      },
      {
        "Key": "user",
        "Value": ""
      },
      {
        "Key": "name",
        "Value": "DNP3 Ethernet with FB Extensions_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My DNP3 Ethernet with FB Extensions Device",
            "DriverID": "2FBB1709-E94F-4244-BFC8-779C4D504ADA",
            "Description": ""
        }
    }
}
```

---

## Create Device - FB107 Ethernet

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

# FB107
| <!-- -->                 | <!-- -->                          |
|--------------------------|-----------------------------------|
| Prerequisites            | None                              |
| Required fields          | Network address<br>Port<br>       |
| Browse devices supported | No                                |
| Browse tags supported    | Supported Opcodes and Point Types |
| Miscellaneous            |                                   |

**Driver ID:** `41D18BCA-6BB1-450F-88C9-35B27E6210D0`
**Group:** Emerson

**Required properties:**
- `networkPort` _SignedInteger_ — TCP/IP Port
- `password` _SignedInteger_ — Password
- `deviceAddress` _SignedInteger_ — FB107 Station Address
- `hostAddress` _SignedInteger_ — Host Station Address
- `networkAddress` _String_ — Device IP Address
- `operatorID` _String_ — Operator ID
- `deviceGroup` _SignedInteger_ — FB107 Station Group
- `hostGroup` _SignedInteger_ — Host Station Group
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `optimizations` _SignedInteger_
  Options: `0`, `1`
- `responseTimeout` _SignedInteger_ — Response timeout (ms)
- `nextRequestDelay` _SignedInteger_ — Delay before next Request (ms)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My FB107 Ethernet Device",
    "Description": "",
    "DriverID": "41D18BCA-6BB1-450F-88C9-35B27E6210D0",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "optimizations",
        "Value": "0"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "password",
        "Value": "1000"
      },
      {
        "Key": "deviceAddress",
        "Value": "240"
      },
      {
        "Key": "hostAddress",
        "Value": "239"
      },
      {
        "Key": "responseTimeout",
        "Value": "3000"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "operatorID",
        "Value": "LOI"
      },
      {
        "Key": "deviceGroup",
        "Value": "240"
      },
      {
        "Key": "hostGroup",
        "Value": "1"
      },
      {
        "Key": "nextRequestDelay",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "fb107-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My FB107 Ethernet Device",
            "DriverID": "41D18BCA-6BB1-450F-88C9-35B27E6210D0",
            "Description": ""
        }
    }
}
```

---

## Create Device - ROC800 Ethernet

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

# ROC800 Ethernet
| <!-- -->                 | <!-- -->                                                                                                 |
|--------------------------|----------------------------------------------------------------------------------------------------------|
| Prerequisites            | None                                                                                                     |
| Required fields          | Network address<br>Network Port<br>Operator ID<br>Password<br>Device Group/Address<br>Host Group/Address |
| Browse devices supported | No                                                                                                       |
| Browse tags supported    | Yes                                                                                                      |
| Supported device models  | Emerson ROC800 Series                                                                                    |

**Driver ID:** `96B7A2BE-1EA8-4DC0-8809-EBF867ADFB60`
**Group:** Emerson

**Required properties:**
- `Password` _SignedInteger_ — Password
- `deviceAddress` _SignedInteger_ — ROC800 Station Address
- `deviceGroup` _SignedInteger_ — ROC800 Station Group
- `hostGroup` _SignedInteger_ — Host Station Group
- `hostAddress` _SignedInteger_ — Host Station Address
- `networkAddress` _String_ — Device IP Address
- `networkPort` _SignedInteger_ — TCP/IP Port
- `OperatorID` _String_ — Operator ID
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `NextRequestDelay` _SignedInteger_ — Delay before next Request (ms)
- `optimizations` _SignedInteger_
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My ROC800 Ethernet Device",
    "Description": "",
    "DriverID": "96B7A2BE-1EA8-4DC0-8809-EBF867ADFB60",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Password",
        "Value": "1000"
      },
      {
        "Key": "deviceAddress",
        "Value": "240"
      },
      {
        "Key": "NextRequestDelay",
        "Value": "0"
      },
      {
        "Key": "optimizations",
        "Value": "0"
      },
      {
        "Key": "deviceGroup",
        "Value": "240"
      },
      {
        "Key": "hostGroup",
        "Value": "1"
      },
      {
        "Key": "hostAddress",
        "Value": "239"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "OperatorID",
        "Value": "LOI"
      },
      {
        "Key": "name",
        "Value": "roc800-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My ROC800 Ethernet Device",
            "DriverID": "96B7A2BE-1EA8-4DC0-8809-EBF867ADFB60",
            "Description": ""
        }
    }
}
```

---

## Create Device - Excel (Gen1.3)

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

# Excel (Gen1.3)

| <!-- -->                 | <!-- -->                                                                 |
| ------------------------ | ------------------------------------------------------------------------ |
| Prerequisites            | Enable the FTP server and upload your Excel file to /ftp-data/devicehub/ |
| Required fields          | Path                                                                     |
| Browse devices supported | No                                                                       |
| Browse tags supported    | No                                                                       |
| Miscellaneous            | This is a read-only driver                                               |

**Driver ID:** `7AC52EDC-EBA9-4669-82CF-8EA99323E697`
**Group:** Excel

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `path` _String_ — Path to Excel file.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.
- `cellPublishingOption` _SignedInteger_ — Cell Publishing Option parameter.
  Options: `0`, `1`

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Excel (Gen1.3) Device",
    "Description": "",
    "DriverID": "7AC52EDC-EBA9-4669-82CF-8EA99323E697",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Excel"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "path",
        "Value": "/example/path"
      },
      {
        "Key": "cellPublishingOption",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Excel (Gen1.3) Device",
            "DriverID": "7AC52EDC-EBA9-4669-82CF-8EA99323E697",
            "Description": ""
        }
    }
}
```

---

## Create Device - Fanuc CNC Ethernet (Gen1.3)

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

Fanuc CNC Ethernet

**Driver ID:** `588C8307-33D1-4526-85BD-FECC82C82C2E`
**Group:** Fanuc Corporation

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Fanuc CNC Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "588C8307-33D1-4526-85BD-FECC82C82C2E",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Fanuc CNC Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Fanuc CNC Ethernet (Gen1.3) Device",
            "DriverID": "588C8307-33D1-4526-85BD-FECC82C82C2E",
            "Description": ""
        }
    }
}
```

---

## Create Device - Fuji NB serial (Gen1.3)

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

# Fuji NB Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rare<br>Data Bits<br>Parity<br>Stop Bits<br>Station ID |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Fuji Flex PC(NB Series PLC)                                                     |
| miscellaneous            | Supported Register address range will be varied from models. Disconnection comes from invalid address, please restart device to reset connection|

**Driver ID:** `E9DA2966-C794-4282-854C-F624F84DCB75`
**Group:** Fuji Devices

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Fuji NB serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "E9DA2966-C794-4282-854C-F624F84DCB75",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "fuji device"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Fuji NB serial (Gen1.3) Device",
            "DriverID": "E9DA2966-C794-4282-854C-F624F84DCB75",
            "Description": ""
        }
    }
}
```

---

## Create Device - Fuji SPH2000 Ethernet (Gen1.3)

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

# Fuji SPH2000 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Fuji SPH2000 series             |

**Driver ID:** `2BB297DF-B51E-4E0B-ABE9-52267DFBDAFB`
**Group:** Fuji Devices

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Fuji SPH2000 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "2BB297DF-B51E-4E0B-ABE9-52267DFBDAFB",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "Fuji device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Fuji SPH2000 Ethernet (Gen1.3) Device",
            "DriverID": "2BB297DF-B51E-4E0B-ABE9-52267DFBDAFB",
            "Description": ""
        }
    }
}
```

---

## Create Device - GE Ethernet Absolute

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

# GE Ethernet Absolute
| <!-- -->                 | <!-- -->                                       |
|--------------------------|------------------------------------------------|
| Prerequisites            | None                                           |
| Required fields          | Network address<br>Network Port<br>Slot Number |
| Browse devices supported | No                                             |
| Browse tags supported    | No                                             |
| Miscellaneous            | PACSystems RX3i and RX7i                       |

**Driver ID:** `4561ACD1-343B-40A1-9DD6-51F0EB4FBF28`
**Group:** GE Fanuc

**Required properties:**
- `networkPort` _SignedInteger_ — This is a network port of device
- `slotNumber` _SignedInteger_ — Slot# in Rack0
- `networkAddress` _String_ — This is a IP Address of device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `readTimeout` _SignedInteger_ — Read Timeout (ms)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My GE Ethernet Absolute Device",
    "Description": "",
    "DriverID": "4561ACD1-343B-40A1-9DD6-51F0EB4FBF28",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "slotNumber",
        "Value": "0"
      },
      {
        "Key": "readTimeout",
        "Value": "3000"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "ge-abs-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My GE Ethernet Absolute Device",
            "DriverID": "4561ACD1-343B-40A1-9DD6-51F0EB4FBF28",
            "Description": ""
        }
    }
}
```

---

## Create Device - GE Ethernet Symbolic

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

# GE Ethernet Symbolic

| <!-- -->                 | <!-- -->                                                                                |
| ------------------------ | --------------------------------------------------------------------------------------- |
| Prerequisites            | None   |
| Required fields          | Network address<br>Network Port<br>   |
| Browse devices supported | No                                                                                   |
| Browse tags supported    | No,  sng file might needed for browse function supported   |
| Miscellaneous            | PACSystems RX3i and RX7i|

**Driver ID:** `85F8517C-0453-4B78-8B0C-74ED738A9EC4`
**Group:** GE Fanuc

**Required properties:**
- `networkPort` _SignedInteger_ — This is a network port of device
- `slotNumber` _SignedInteger_ — Slot# in Rack0
- `networkAddress` _String_ — This is a IP Address of device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `readTimeout` _SignedInteger_ — Read Timeout (ms)
- `globalVariablesCSV` _String_ — FTP path to .SNF file
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My GE Ethernet Symbolic Device",
    "Description": "",
    "DriverID": "85F8517C-0453-4B78-8B0C-74ED738A9EC4",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "slotNumber",
        "Value": "0"
      },
      {
        "Key": "readTimeout",
        "Value": "3000"
      },
      {
        "Key": "globalVariablesCSV",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "ge-sym-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My GE Ethernet Symbolic Device",
            "DriverID": "85F8517C-0453-4B78-8B0C-74ED738A9EC4",
            "Description": ""
        }
    }
}
```

---

## Create Device - GE Fanuc 90-30 Ethernet (Gen1.3)

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

# GE Fanuc 90-30 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | GE Fanuc 90-30 series           |

**Driver ID:** `4C9B19DF-60AA-4667-A1A3-62CBA2F1B2CF`
**Group:** GE Fanuc

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My GE Fanuc 90-30 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "4C9B19DF-60AA-4667-A1A3-62CBA2F1B2CF",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "Fanuc Device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My GE Fanuc 90-30 Ethernet (Gen1.3) Device",
            "DriverID": "4C9B19DF-60AA-4667-A1A3-62CBA2F1B2CF",
            "Description": ""
        }
    }
}
```

---

## Create Device - GE Fanuc CMM Serial (Gen1.3)

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

# GE Fanuc CMM Serial (Gen1.3) Serial

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | ----------------------------------------------------------------------------------|
| Prerequisites            | No                                                                                |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | GE Fanuc Series 90-30                                                             |

**Driver ID:** `5F7ED114-AFBE-45DE-B86A-035DE603A82B`
**Group:** GE Fanuc

**Required properties:**
- `deviceFile` _String_ — Local Serial connection file path.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter
  Options: `0`, `1`, `2`
- `name` _String_ — Device Name that describes your asset.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My GE Fanuc CMM Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "5F7ED114-AFBE-45DE-B86A-035DE603A82B",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "GE Fanuc Device"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My GE Fanuc CMM Serial (Gen1.3) Device",
            "DriverID": "5F7ED114-AFBE-45DE-B86A-035DE603A82B",
            "Description": ""
        }
    }
}
```

---

## Create Device - GE Fanuc RX3i Serial (Gen1.3)

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

# GE Fanuc RX3i Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | --------------------------------------------------------------------------------- |
| Prerequisites            | No                                                                                |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | PACSystems RX3i                                                                   |

**Driver ID:** `F2AEC18F-3D63-4661-9E84-83E6FCB087AE`
**Group:** GE Fanuc

**Required properties:**
- `stationId` _SignedInteger_ — Station no./ slot no. of PLC
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My GE Fanuc RX3i Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "F2AEC18F-3D63-4661-9E84-83E6FCB087AE",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "GE Fanuc Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My GE Fanuc RX3i Serial (Gen1.3) Device",
            "DriverID": "F2AEC18F-3D63-4661-9E84-83E6FCB087AE",
            "Description": ""
        }
    }
}
```

---

## Create Device - GE Fanuc SNP Serial (Gen1.3)

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

# GE Fanuc SNP Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | --------------------------------------------------------------------------------- |
| Prerequisites            | No                                                                                |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | GE micro and VersaMax series PLC                                                  |

**Driver ID:** `A72B91B9-6666-41E8-9C3F-8B3B96A76ECE`
**Group:** GE Fanuc

**Required properties:**
- `stationId` _SignedInteger_ — Station Id/Slot number of PLC
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My GE Fanuc SNP Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "A72B91B9-6666-41E8-9C3F-8B3B96A76ECE",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "GE Fanuc Device"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My GE Fanuc SNP Serial (Gen1.3) Device",
            "DriverID": "A72B91B9-6666-41E8-9C3F-8B3B96A76ECE",
            "Description": ""
        }
    }
}
```

---

## Create Device - HID Device (Gen1.3)

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

# HID Device (Gen1.3)

| <!-- -->                 | <!-- -->              |
| ------------------------ | --------------------- |
| Prerequisites            | No                    |
| Required fields          | Communication Port    |
| Browse devices supported | No                    |
| Browse tags supported    | No                    |
| Supported device models  | USB HID class devices |

This driver will publish the value of a string of ASCII characters only after a carriage return (\n) is sent.

**Driver ID:** `A06BEA40-76CD-4EFE-9E52-E56A6F2AE434`
**Group:** HID Devices

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My HID Device (Gen1.3) Device",
    "Description": "",
    "DriverID": "A06BEA40-76CD-4EFE-9E52-E56A6F2AE434",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "hid device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/hidraw0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My HID Device (Gen1.3) Device",
            "DriverID": "A06BEA40-76CD-4EFE-9E52-E56A6F2AE434",
            "Description": ""
        }
    }
}
```

---

## Create Device - Heidenhain 530 Ethernet (Gen1.3)

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

# Heidenhain 530 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Heidenhain iTNC 530 Controllers |

**Driver ID:** `BC328283-3630-479E-A503-0EC999898B3E`
**Group:** Heidenhain

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Heidenhain 530 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "BC328283-3630-479E-A503-0EC999898B3E",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Heidenhain Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Heidenhain 530 Ethernet (Gen1.3) Device",
            "DriverID": "BC328283-3630-479E-A503-0EC999898B3E",
            "Description": ""
        }
    }
}
```

---

## Create Device - Heidenhain 640 Ethernet (Gen1.3)

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

#  Heidenhain 640 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Heidenhain TNC 640 controllers  |

**Driver ID:** `479A3869-9394-4F8B-869D-EB19454146AD`
**Group:** Heidenhain

**Required properties:**
- `networkAddress` _String_ — IP Address of the device.
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of  the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Heidenhain 640 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "479A3869-9394-4F8B-869D-EB19454146AD",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "Heidenhain Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Heidenhain 640 Ethernet (Gen1.3) Device",
            "DriverID": "479A3869-9394-4F8B-869D-EB19454146AD",
            "Description": ""
        }
    }
}
```

---

## Create Device - Microsoft SQL Server Client

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

# Microsoft SQL Client Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Driver Settings:** | > Address: IP, Hostname or Endpoint (Port setting is ignored if port is included here)
| | > Instance, Database: Specify query target within server
| | > Username, Password: Client authentication
| | > Encryption: "Optional" -> Don't require certificate, "Mandatory" -> Verify certficate, "Strict" -> Verify certicate & use TDS8
| | > ValidateQuery: Preemptive query parsing (MySQL compatibility mode)
| | > ReadOnlyMode: Enforce read-only commands (SELECT,UNION,STREAM,SHOW,USE)
| | > AppName: Client Application ID (optional)
| | > HostName: Client Workstation ID (optional - defaults to <hostname>)
| **Important:** | > Ensure minimal permissions are set for the provided user account
| | > For T-SQL specific statements to work as expected, "ValidateQuery" may need to be disabled
| **Miscellaneous:** | > Driver does not support writing to tags
| | > For multi-row output, use "Table" register
| | > For single-row or single-field output, use "Record" register
| | > When reading single rows, enable timestamp/value parsing by setting a positive index value for the respective fields
| | > When reading multiple rows, it is recommended to keep output table sizes under 1MB
| | > When using "Only Publish on Change of Value", it may be necessary to define a CDC query (see below)
| | > All SQL queries (multi-statement in particular) should be tested independently of driver to ensure correctness

CDC (Change Data Capture)
-------------------------
* In order to detect data changes for Table queries, CDC must be enabled on the DB and configured within the Tag settings
* CDC queries will likely require "ValidateQuery" to be disabled, in order to use T-SQL specific syntax

* Init Query: one-shot query to initialize a "state", which will be compared before polling
  * (e.g. SELECT sys.fn_cdc_get_max_lsn() AS __$start_lsn)
  * determine which column in the last row of output represents the state, and configure "ParseState" accordingly
  * if the DB permits, the state may be stored as session/global variable on the server
    * in this case, state parsing is not required

* Change Query: compare previous "state", and if changes detected, re-issue "Data Query"
  * (e.g. SELECT * FROM cdc.dbo_tablexyz_CT WHERE __$start_lsn > @lastState)
  * "@lastState" is a special string reserved for injecting the previous state value
  * state parsing (either by column idx or column name) must be the same as "Init Query"
  * any result from "Change Query" will indicate that changes have occurred

* Data Query: regardless of CDC, this should retrieve the entire data set of interest
  * (e.g. SELECT * FROM tablexyz)
  * on initial poll, the "Data Query" is executed regardless of the results of "Change Query"
  * after initial publish, subsequent payloads will include an additional "Changes" field
    * this will include the results of the "Change Query"

**Driver ID:** `EAE46646-63D5-4C94-970B-A046B4D6DE85`
**Group:** Historian

**Required properties:**
- `Port` _SignedInteger_ — SQL Server Port
- `Address` _String_ — SQL Server Address
- `Username` _String_
- `Password` _String_
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `Database` _String_ — Server Database Name
- `Encryption` _SignedInteger_ — Encryption Mode
  Options: `0`, `1`, `2`, `3`
- `ReadOnlyMode` _SignedInteger_ — ReadOnly Protections
  Options: `0`, `1`
- `RequestTimeout` _SignedInteger_ — Request Timeout (S)
- `ConnectionTimeout` _SignedInteger_ — Connection Timeout (S)
- `Instance` _String_ — Server Instance Path
- `ValidateQuery` _SignedInteger_ — Parse Queries and Validate Syntax (MySQL Syntax Only)
  Options: `0`, `1`
- `PacketSize` _SignedInteger_ — Maximum Packet Size
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `AppName` _String_ — Client Application ID
- `HostName` _String_ — Client Workstation ID
- `MinTLSVersion` _SignedInteger_ — Minimum TLS Version
  Options: `0`, `1`, `2`, `3`
- `ServerCertificate` _String_ — CA Chain (PEM)
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (S) (0 to disable)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Microsoft SQL Server Client Device",
    "Description": "",
    "DriverID": "EAE46646-63D5-4C94-970B-A046B4D6DE85",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Database",
        "Value": "master"
      },
      {
        "Key": "Encryption",
        "Value": "0"
      },
      {
        "Key": "ReadOnlyMode",
        "Value": "0"
      },
      {
        "Key": "RequestTimeout",
        "Value": "10"
      },
      {
        "Key": "ConnectionTimeout",
        "Value": "5"
      },
      {
        "Key": "Port",
        "Value": "502"
      },
      {
        "Key": "Instance",
        "Value": ""
      },
      {
        "Key": "ValidateQuery",
        "Value": "0"
      },
      {
        "Key": "PacketSize",
        "Value": "4096"
      },
      {
        "Key": "advanced",
        "Value": "0"
      },
      {
        "Key": "AppName",
        "Value": "devicehub"
      },
      {
        "Key": "HostName",
        "Value": ""
      },
      {
        "Key": "MinTLSVersion",
        "Value": "0"
      },
      {
        "Key": "Address",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Username",
        "Value": "admin"
      },
      {
        "Key": "Password",
        "Value": "password"
      },
      {
        "Key": "ServerCertificate",
        "Value": ""
      },
      {
        "Key": "KeepAlive",
        "Value": "30"
      },
      {
        "Key": "name",
        "Value": "mssql-client_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Microsoft SQL Server Client Device",
            "DriverID": "EAE46646-63D5-4C94-970B-A046B4D6DE85",
            "Description": ""
        }
    }
}
```

---

## Create Device - Hitachi serial (Gen1.3)

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

# Hitachi Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Hitachi EH Series                                                   |

**Driver ID:** `FAE5C1D8-A774-4D9A-A186-5ADAEDA0B31D`
**Group:** Hitachi Devices

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Hitachi serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "FAE5C1D8-A774-4D9A-A186-5ADAEDA0B31D",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "hitachi device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "dataBits",
        "Value": "7"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Hitachi serial (Gen1.3) Device",
            "DriverID": "FAE5C1D8-A774-4D9A-A186-5ADAEDA0B31D",
            "Description": ""
        }
    }
}
```

---

## Create Device - IEC60870-5-102 Ethernet (Gen1.3)

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

# IEC60870-5-102 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                                                          |
| ------------------------ | ----------------------------------------------------------------- |
| Prerequisites            | None                                                              |
| Required fields          | Network address<br>Network Port<br>Link Address<br>Asdu Addr Size |
| Browse devices supported | No                                                                |
| Browse tags supported    | No                                                                |
| Supported device models  | Devices that support IEC60870-5-102 protocol                      |

**Driver ID:** `94290D6F-4197-4DBF-9847-1848F9840F63`
**Group:** IEC

**Required properties:**
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `linkAddress` _SignedInteger_ — Link Address.
- `asduAddrSize` _SignedInteger_ — Size of ASDU Address.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My IEC60870-5-102 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "94290D6F-4197-4DBF-9847-1848F9840F63",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "linkAddress",
        "Value": "3"
      },
      {
        "Key": "asduAddrSize",
        "Value": "2"
      },
      {
        "Key": "name",
        "Value": "IEC Device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My IEC60870-5-102 Ethernet (Gen1.3) Device",
            "DriverID": "94290D6F-4197-4DBF-9847-1848F9840F63",
            "Description": ""
        }
    }
}
```

---

## Create Device - IEC60870-5-104 Ethernet (Gen1.3)

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

# IEC60870-5-104 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                                      |
| ------------------------ | --------------------------------------------- |
| Prerequisites            | None                                          |
| Required fields          | Network address<br>Network Port<br>Station ID |
| Browse devices supported | No                                            |
| Browse tags supported    | No                                            |
| Supported device models  | Devices that support IEC60870-5-104 protocol  |

**Driver ID:** `EFD8528C-5C90-4454-81F9-6DC851F63936`
**Group:** IEC

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `stationId` _SignedInteger_ — Station id/ slot number

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My IEC60870-5-104 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "EFD8528C-5C90-4454-81F9-6DC851F63936",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "IEC Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "stationId",
        "Value": "1"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My IEC60870-5-104 Ethernet (Gen1.3) Device",
            "DriverID": "EFD8528C-5C90-4454-81F9-6DC851F63936",
            "Description": ""
        }
    }
}
```

---

## Create Device - Keyence KV10 Serial (Gen1.3)

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

# Keyence KV10 Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Keyence KV Series (KV10~80)                                         |

**Driver ID:** `29530297-998F-4E0A-9137-ABEDA478AF2D`
**Group:** Keyence

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Keyence KV10 Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "29530297-998F-4E0A-9137-ABEDA478AF2D",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "keyence"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Keyence KV10 Serial (Gen1.3) Device",
            "DriverID": "29530297-998F-4E0A-9137-ABEDA478AF2D",
            "Description": ""
        }
    }
}
```

---

## Create Device - Keyence Nano Ethernet (Gen1.3)

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

# Keyence Nano Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Keyence KV and Nano series      |

**Driver ID:** `F43FC385-C0CC-4E0D-AABF-C1686F3AA6E3`
**Group:** Keyence

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Keyence Nano Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "F43FC385-C0CC-4E0D-AABF-C1686F3AA6E3",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "keyence"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Keyence Nano Ethernet (Gen1.3) Device",
            "DriverID": "F43FC385-C0CC-4E0D-AABF-C1686F3AA6E3",
            "Description": ""
        }
    }
}
```

---

## Create Device - Keyence Serial (Gen1.3)

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

# Keyence Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | None                                                                |
| Required fields          | Communication Port<br>Parity<br>Baud Rate<br>Data Bits<br>Stop Bits |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Keyence KV and Nano series                                          |

**Driver ID:** `E2875F18-40FA-408A-8CE2-F40E022E3DED`
**Group:** Keyence

**Required properties:**
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `deviceFile` _String_ — Local Serial connection file path.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Keyence Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "E2875F18-40FA-408A-8CE2-F40E022E3DED",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "keyence"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Keyence Serial (Gen1.3) Device",
            "DriverID": "E2875F18-40FA-408A-8CE2-F40E022E3DED",
            "Description": ""
        }
    }
}
```

---

## Create Device - Koyo Click Serial (Gen1.3)

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

# Koyo Click Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | --------------------------------------------------------------------------------- |
| Prerequisites            | No                                                                                |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | Koyo Click PLC Series                                                             |

**Driver ID:** `27522C78-CBE8-4BF0-BD26-43DAD7E02F0C`
**Group:** Koyo

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `stationId` _SignedInteger_ — Station id/slot number
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Koyo Click Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "27522C78-CBE8-4BF0-BD26-43DAD7E02F0C",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Koyo Device"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Koyo Click Serial (Gen1.3) Device",
            "DriverID": "27522C78-CBE8-4BF0-BD26-43DAD7E02F0C",
            "Description": ""
        }
    }
}
```

---

## Create Device - Koyo Direct Serial (Gen1.3)

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

Koyo Direct Serial

**Driver ID:** `DEABEBA3-7E58-4774-A475-39F81ECF486B`
**Group:** Koyo

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `deviceFile` _String_ — Local Serial connection file path.
- `stationId` _SignedInteger_ — Station id/slot number
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Koyo Direct Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "DEABEBA3-7E58-4774-A475-39F81ECF486B",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Koyo Device"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Koyo Direct Serial (Gen1.3) Device",
            "DriverID": "DEABEBA3-7E58-4774-A475-39F81ECF486B",
            "Description": ""
        }
    }
}
```

---

## Create Device - Koyo Ethernet (Gen1.3)

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

# Koyo Ethernet (Gen 1.3)

| <!-- -->                 | <!-- -->                                      |
| ------------------------ | --------------------------------------------- |
| Prerequisites            | None                                          |
| Required fields          | Network address<br>Network Port<br>Station ID |
| Browse devices supported | No                                            |
| Browse tags supported    | No                                            |
| Supported device models  | Koyo DirectLogic Series                       |

**Driver ID:** `1A483B03-463F-4218-B464-F796343C6D5F`
**Group:** Koyo

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Koyo Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "1A483B03-463F-4218-B464-F796343C6D5F",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "koyo device"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Koyo Ethernet (Gen1.3) Device",
            "DriverID": "1A483B03-463F-4218-B464-F796343C6D5F",
            "Description": ""
        }
    }
}
```

---

## Create Device - LS Master-K CPU Direct Serial (Gen1.3)

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

# LS Master-K CPU Direct Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | LS MASTER-K series: K7M, K80S, K120S, K200S, K300S, K1000S          |

**Driver ID:** `CAC8E388-0230-4EA3-99D0-9B4FE42F9328`
**Group:** LS Industrial System

**Required properties:**
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `deviceFile` _String_ — Local Serial connection file path.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `name` _String_ — Device Name that describes your asset.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My LS Master-K CPU Direct Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "CAC8E388-0230-4EA3-99D0-9B4FE42F9328",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "name",
        "Value": "LS Master Device"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My LS Master-K CPU Direct Serial (Gen1.3) Device",
            "DriverID": "CAC8E388-0230-4EA3-99D0-9B4FE42F9328",
            "Description": ""
        }
    }
}
```

---

## Create Device - LS XBM Cnet Serial (Gen1.3)

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

# LS XBM Cnet Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | LS XBM/XBC CPU series with XGL-CH2A module                          |

**Driver ID:** `9F2C6E7B-363A-4933-8B14-3FDBE3348276`
**Group:** LS Industrial System

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `stationId` _SignedInteger_ — Station Id/ Slot number
- `deviceFile` _String_ — Local Serial connection file path.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My LS XBM Cnet Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "9F2C6E7B-363A-4933-8B14-3FDBE3348276",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "LS Master Device"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My LS XBM Cnet Serial (Gen1.3) Device",
            "DriverID": "9F2C6E7B-363A-4933-8B14-3FDBE3348276",
            "Description": ""
        }
    }
}
```

---

## Create Device - LS XBM Serial (Gen1.3)

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

# LS XBM Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | LS XBM/XBC series (RS232 port)                                      |

**Driver ID:** `111BCF84-25D5-4C53-9588-D22CFF50F6C5`
**Group:** LS Industrial System

**Required properties:**
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `name` _String_ — Device Name that describes your asset.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `deviceFile` _String_ — Local Serial connection file path.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My LS XBM Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "111BCF84-25D5-4C53-9588-D22CFF50F6C5",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "name",
        "Value": "LS Master Device"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My LS XBM Serial (Gen1.3) Device",
            "DriverID": "111BCF84-25D5-4C53-9588-D22CFF50F6C5",
            "Description": ""
        }
    }
}
```

---

## Create Device - LioN-X

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

# LioN-X OPC UA Client Driver

The driver implements the Client according to OPC UA Specification version 1.04 (IEC62541 standard).

## Features:
* Discovering Servers and Endpoint (make sure the DNS name of the discovered server can be 
resolved by LE or replace it with the IP address)
* Browsing the address space of the server
* Reading, subscribing, and writing "Value" (Attribute ID 13, The value of a variable)

**Driver ID:** `D5E201DC-35DE-44AD-B9DB-EB6AD70432C0`
**Group:** Lumberg Automation

**Required properties:**
- `AdvancedSettingsShowHide` _String_ — Advanced settings
  Options: `0`, `1`
- `AuthMode` _String_ — Auth Mode
  Options: `0`, `1`, `2`
- `DefaultRoot` _String_ — Start node to browse the server
- `DisableApplicationUriCheck` _String_ — Flag used to disable the certificate ApplicationUri match check.
  Options: `0`, `1`
- `DisableEncryptedPasswordCheck` _String_ — Flag used to disable the check if the password of a UserPassword identity token is encrypted properly.
  Options: `0`, `1`
- `DisableErrorCertificateChainIncomplete` _String_ — Flag used to disable the certificate validation error BadCertificateChainIncomplete.
  Options: `0`, `1`
- `DisableErrorCertificateHostNameInvalid` _String_ — Flag used to disable the check if the hostname the client connected to matches one of the hostnames or IP addresses in the server certificate.
  Options: `0`, `1`
- `DisableErrorCertificateRevocationUnknown` _String_ — Flag used to disable the client certificate validation error BadCertificateRevocationUnknown.
  Options: `0`, `1`
- `DisableErrorCertificateTimeInvalid` _String_ — Flag used to disable the certificate validation error CertificateTimeInvalid.
  Options: `0`, `1`
- `DisableErrorCertificateUntrusted` _String_ — Flag used to disable the certificate validation error BadCertificateUntrusted.
  Options: `0`, `1`
- `DriverMode` _String_ — Driver Mode
  Options: `0`, `1`
- `SecurityMode` _String_ — Security Mode
  Options: `0`, `1`, `2`
- `SecurityPolicy` _String_ — Security Policy
  Options: `0`, `1`, `2`, `3`, `4`, `5`
- `ServerURL` _String_ — Server URL
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `LifetimeCount` _SignedInteger_ — The subscription lifetime count (SubscriptionLifetime = LifetimeCount * PublishingInterval)
- `MaxKeepAliveCount` _SignedInteger_ — If the server has no notifications pending for the period of time defined by * (MaxKeepAliveCount * PublishingInterval), the server will send a keep alive message to the client
- `MaxNotificationsPerPublish` _SignedInteger_ — The maximum number of notifications that the client wishes to receive in a single publish response
- `Password` _String_ — Password
- `Priority` _SignedInteger_ — The relative priority of this subscription within the session
- `PublishingInterval` _SignedInteger_ — The cyclic rate in milliseconds at which the subscription is being requested to return notifications to the client
- `SessionCertificate` _String_ — Session Certificate
- `SessionPrivateKey` _String_ — Session Private Key
- `UserCertificate` _String_ — User Auth Certificate (PEM format)
- `UserName` _String_ — User Name
- `UserPrivateKey` _String_ — User Auth Private Key (PEM format)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My LioN-X Device",
    "Description": "",
    "DriverID": "D5E201DC-35DE-44AD-B9DB-EB6AD70432C0",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "AdvancedSettingsShowHide",
        "Value": "0"
      },
      {
        "Key": "AuthMode",
        "Value": "0"
      },
      {
        "Key": "DefaultRoot",
        "Value": "ns=0;i=84"
      },
      {
        "Key": "DisableApplicationUriCheck",
        "Value": "0"
      },
      {
        "Key": "DisableEncryptedPasswordCheck",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateChainIncomplete",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateHostNameInvalid",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateRevocationUnknown",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateTimeInvalid",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateUntrusted",
        "Value": "0"
      },
      {
        "Key": "DriverMode",
        "Value": "0"
      },
      {
        "Key": "LifetimeCount",
        "Value": "2400"
      },
      {
        "Key": "MaxKeepAliveCount",
        "Value": "10"
      },
      {
        "Key": "MaxNotificationsPerPublish",
        "Value": "0"
      },
      {
        "Key": "Password",
        "Value": ""
      },
      {
        "Key": "Priority",
        "Value": "0"
      },
      {
        "Key": "PublishingInterval",
        "Value": "500"
      },
      {
        "Key": "SecurityMode",
        "Value": "0"
      },
      {
        "Key": "SecurityPolicy",
        "Value": "0"
      },
      {
        "Key": "ServerURL",
        "Value": "192.168.1.100"
      },
      {
        "Key": "SessionCertificate",
        "Value": "<certificate>"
      },
      {
        "Key": "SessionPrivateKey",
        "Value": "<certificate>"
      },
      {
        "Key": "UserCertificate",
        "Value": ""
      },
      {
        "Key": "UserName",
        "Value": ""
      },
      {
        "Key": "UserPrivateKey",
        "Value": ""
      },
      {
        "Key": "name",
        "Value": "LioN-X_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My LioN-X Device",
            "DriverID": "D5E201DC-35DE-44AD-B9DB-EB6AD70432C0",
            "Description": ""
        }
    }
}
```

---

## Create Device - MTConnect Ethernet (Gen1.3)

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

# MTConnect Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                                       |
| ------------------------ | ---------------------------------------------- |
| Prerequisites            | None                                           |
| Required fields          | Network address<br>Network Port<br>Device Name |
| Browse devices supported | No                                             |
| Browse tags supported    | Yes                                            |
| Miscellaneous            | This is a read-only driver                     |

**Driver ID:** `A1203823-578D-48C4-832A-34670D6F0DF7`
**Group:** MTConnect

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of the device.
- `deviceName` _String_ — Device Name of the device.
- `name` _String_ — Name that describes your asset.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My MTConnect Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "A1203823-578D-48C4-832A-34670D6F0DF7",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "deviceName",
        "Value": "device"
      },
      {
        "Key": "name",
        "Value": "MTConnect Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My MTConnect Ethernet (Gen1.3) Device",
            "DriverID": "A1203823-578D-48C4-832A-34670D6F0DF7",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi A Series Serial

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

# Mitsubishi A Series Serial Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Required fields:** | > Device File
| | > Baud Rate
| | > Data Bits
| | > Stop Bits 
| | > Parity
| | > PLC Type
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Supported device models:** | Mitsubishi A Series Serial Devices (A2SH/A2USH/A2N)
| **Miscellaneous:** | > Byte Order: Little-Endian
| | > Register Grouping Size: 32
| | > word == uint16

**Driver ID:** `EDB59BDF-3459-48C2-9E8E-6F5CAAA3E343`
**Group:** Mitsubishi

**Required properties:**
- `PlcType` _SignedInteger_ — PLC Type
  Options: `0`, `1`, `2`
- `deviceFile` _String_ — Path to Device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `ReadTimeout` _SignedInteger_ — Serial Read Timeout (ms)
- `RetryCount` _SignedInteger_ — Read Retries (0 for no retry)
- `WriteDelay` _SignedInteger_ — Wait time before resetting RTS during serial write (ms)
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `Advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi A Series Serial Device",
    "Description": "",
    "DriverID": "EDB59BDF-3459-48C2-9E8E-6F5CAAA3E343",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "PlcType",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "200"
      },
      {
        "Key": "RetryCount",
        "Value": "2"
      },
      {
        "Key": "WriteDelay",
        "Value": "3"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "Advanced",
        "Value": "0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "mitsubishi-a-ser_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi A Series Serial Device",
            "DriverID": "EDB59BDF-3459-48C2-9E8E-6F5CAAA3E343",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi FX2N serial (Gen1.3)

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

# Mitsubishi FX2N serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Mitsubishi FX2N series                                              |

**Driver ID:** `1AED6791-3AE4-4642-BF16-47AE5C71EEC6`
**Group:** Mitsubishi

**Required properties:**
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `name` _String_ — Device Name that describes your asset.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `deviceFile` _String_ — Local Serial connection file path.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi FX2N serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "1AED6791-3AE4-4642-BF16-47AE5C71EEC6",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "dataBits",
        "Value": "7"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "mitsubishi device"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi FX2N serial (Gen1.3) Device",
            "DriverID": "1AED6791-3AE4-4642-BF16-47AE5C71EEC6",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi FX2N-10GM/20GM Serial (Gen1.3)

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

# Mitsubishi FX2N-10GM/20GM Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Mitsubishi FX2N-10GM/20GM Series                                    |

**Driver ID:** `547F2D33-0081-424A-978D-0CE3C6676410`
**Group:** Mitsubishi

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi FX2N-10GM/20GM Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "547F2D33-0081-424A-978D-0CE3C6676410",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "mitsubishi device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi FX2N-10GM/20GM Serial (Gen1.3) Device",
            "DriverID": "547F2D33-0081-424A-978D-0CE3C6676410",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi FX3G ASCII Ethernet (Gen1.3)

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

# Mitsubishi FX3G ASCII Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Mitsubishi FX3G Series          |

**Driver ID:** `0D25A6F3-55DE-41CF-89CE-7BBA69A5A34D`
**Group:** Mitsubishi

**Required properties:**
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi FX3G ASCII Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "0D25A6F3-55DE-41CF-89CE-7BBA69A5A34D",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "mitsubish device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi FX3G ASCII Ethernet (Gen1.3) Device",
            "DriverID": "0D25A6F3-55DE-41CF-89CE-7BBA69A5A34D",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi FX3G Binary Ethernet (Gen1.3)

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

# Mitsubishi FX3G Binary Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                                      |
| ------------------------ |-----------------------------------------------|
| Prerequisites            | None                                          |
| Required fields          | Network address<br>Network Port<br>           |
| Browse devices supported | No                                            |
| Browse tags supported    | No                                            |
| Supported device models  | Mitsubishi FX3G Series                        |

**Driver ID:** `793F3159-4523-4DCB-80A2-24B0F9432D0C`
**Group:** Mitsubishi

**Required properties:**
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi FX3G Binary Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "793F3159-4523-4DCB-80A2-24B0F9432D0C",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "mitsubishi device"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi FX3G Binary Ethernet (Gen1.3) Device",
            "DriverID": "793F3159-4523-4DCB-80A2-24B0F9432D0C",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi FX3U Serial (Gen1.3)

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

# Mitsubishi FX3U Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Parity<br>Stop Bits |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Mitsubishi FX3 Series                                               |

**Driver ID:** `AB084A0D-92A7-47C7-B4BC-825863223ABD`
**Group:** Mitsubishi

**Required properties:**
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `name` _String_ — Device Name that describes your asset.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `deviceFile` _String_ — Local Serial connection file path.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi FX3U Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "AB084A0D-92A7-47C7-B4BC-825863223ABD",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "dataBits",
        "Value": "7"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "mitsubishi device"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi FX3U Serial (Gen1.3) Device",
            "DriverID": "AB084A0D-92A7-47C7-B4BC-825863223ABD",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi FX5U Serial (Gen1.3)

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

# Mitsubishi FX5U Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Parity<br>Stop Bits |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Mitsubishi iQ-F Series, 4-wire RS485                                |

**Driver ID:** `7DA81F7B-CAF9-4E23-BE23-4D8B78B94E5F`
**Group:** Mitsubishi

**Required properties:**
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `stationId` _SignedInteger_ — Station no of device.
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi FX5U Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "7DA81F7B-CAF9-4E23-BE23-4D8B78B94E5F",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "stationId",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "name",
        "Value": "mitsubishi device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi FX5U Serial (Gen1.3) Device",
            "DriverID": "7DA81F7B-CAF9-4E23-BE23-4D8B78B94E5F",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi Q/L Ethernet

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

# Mitsubishi Q/L Ethernet Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Required fields:** | > Network Address
| | > Network Port
| | > Network ID
| | > Station ID
| | > Encoding
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Supported device models:** | Mitsubishi Q/L Ethernet Devices (incl. QJ71E71 modules) Ascii/Binary
| **Miscellaneous:** | > Byte Order: (Binary -> Little-Endian, Ascii -> Big-Endian)
| | > Register Grouping Size: 960
| | > Network ID default: (QJ71E71 -> 1, Other -> 0)
| | > strings: padding always added to "Length", up to next register
| | > timers: TN/SN (dint -> raw value, string -> T#-12d23h34m45s567ms format)
| | > word/dword/lword == uint16/uint32/uint64
| | > real/dreal == float32/float64
| | > Address Formats prefixed with '*' may not match PLC. Ensure all addresses are converted to Decimal correctly.

**Driver ID:** `341C7310-967F-4BAC-9C80-2C93BB9B068B`
**Group:** Mitsubishi

**Required properties:**
- `networkAddress` _String_ — PLC IP
- `stationId` _SignedInteger_ — Station No. of PLC
- `networkId` _SignedInteger_ — Network No. of PLC
- `networkPort` _SignedInteger_ — PLC Port
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `encoding` _SignedInteger_ — Encoding Format
  Options: `0`, `1`
- `Advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `ReadTimeout` _SignedInteger_ — Read Timeout (ms)
- `RetryCount` _SignedInteger_ — Read Retries (0 for no retry)
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi Q/L Ethernet Device",
    "Description": "",
    "DriverID": "341C7310-967F-4BAC-9C80-2C93BB9B068B",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "encoding",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Advanced",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "KeepAlive",
        "Value": "60"
      },
      {
        "Key": "stationId",
        "Value": "255"
      },
      {
        "Key": "networkId",
        "Value": "0"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "mitsubishi-ql-eth_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi Q/L Ethernet Device",
            "DriverID": "341C7310-967F-4BAC-9C80-2C93BB9B068B",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi Q06 Serial (Gen1.3)

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

# Mitsubishi Q06 Serial (Gen1.3)
| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Mitsubishi Q06H CPU Series                                          |

**Driver ID:** `66042B77-7B8F-486C-B8A6-E045A94D8D49`
**Group:** Mitsubishi

**Required properties:**
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi Q06 Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "66042B77-7B8F-486C-B8A6-E045A94D8D49",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "mitsubishi device"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi Q06 Serial (Gen1.3) Device",
            "DriverID": "66042B77-7B8F-486C-B8A6-E045A94D8D49",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi QJ71E71

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

Mitsubishi QJ71E71 Ethernet Driver

**Driver ID:** `C35CD544-F1D7-4911-B38A-AD21AABE9744`
**Group:** Mitsubishi

**Required properties:**
- `networkAddress` _String_ — IP Address of device
- `networkPort` _SignedInteger_ — TCP/IP port of device
- `networkId` _SignedInteger_ — Network No. of device
- `stationId` _SignedInteger_ — Station No. of device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi QJ71E71 Device",
    "Description": "",
    "DriverID": "C35CD544-F1D7-4911-B38A-AD21AABE9744",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkId",
        "Value": "1"
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "mitsubishi-qj71e71_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi QJ71E71 Device",
            "DriverID": "C35CD544-F1D7-4911-B38A-AD21AABE9744",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi iQ-F Ethernet

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

# Mitsubishi iQ-F Ethernet Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Required fields:** | > Network Address
| | > Network Port
| | > Network ID
| | > Station ID
| | > Encoding
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Supported device models:** | Mitsubishi iQ-F Series Ethernet Devices (Ascii/Binary)
| | > FX5U Ethernet Devices (exluding V, LT-, LS-, ZR)
| **Miscellaneous:** | > Byte Order: (Binary -> Little-Endian, Ascii -> Big-Endian)
| | > Register Grouping Size: 64
| | > strings: padding always added to "Length", up to next register
| | > timers: TN/SN (dint -> raw value, string -> T#-12d23h34m45s567ms format)
| | > word/dword/lword == uint16/uint32/uint64
| | > real/dreal == float32/float64
| | > LZ/LTN/LCN/LSN do not support count > 1 
| | > LTN/LCN/LSN are not supported in ascii mode
| | > Address Formats prefixed with '*' may not match PLC. Ensure all addresses are converted to Decimal correctly.

**Driver ID:** `A6BBE2F9-39D1-49D0-A05A-947B5D837911`
**Group:** Mitsubishi

**Required properties:**
- `stationId` _SignedInteger_ — Station No. of PLC
- `networkPort` _SignedInteger_ — PLC Port
- `networkAddress` _String_ — PLC IP
- `networkId` _SignedInteger_ — Network No. of PLC
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `encoding` _SignedInteger_ — Encoding Format
  Options: `0`, `1`
- `Advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `RetryCount` _SignedInteger_ — Read Retries (0 for no retry)
- `ReadTimeout` _SignedInteger_ — Read Timeout (ms)
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi iQ-F Ethernet Device",
    "Description": "",
    "DriverID": "A6BBE2F9-39D1-49D0-A05A-947B5D837911",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "stationId",
        "Value": "255"
      },
      {
        "Key": "encoding",
        "Value": "0"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "Advanced",
        "Value": "0"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkId",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "KeepAlive",
        "Value": "60"
      },
      {
        "Key": "name",
        "Value": "mitsubishi-iqf-eth_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi iQ-F Ethernet Device",
            "DriverID": "A6BBE2F9-39D1-49D0-A05A-947B5D837911",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi iQ-R Ethernet

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

# Mitsubishi iQ-R Ethernet Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Required fields:** | > Network Address
| | > Network Port
| | > Network ID
| | > Station ID
| | > Encoding
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Supported device models:** | Mitsubishi iQ-R Series Ethernet Devices (Ascii/Binary)
| | > FX5U Ethernet Devices (exluding V, LT-, LS-, ZR)
| **Miscellaneous:** | > Byte Order: (Binary -> Little-Endian, Ascii -> Big-Endian)
| | > Register Grouping Size: 64
| | > strings: padding always added to "Length", up to next register
| | > timers: TN/SN (dint -> raw value, string -> T#-12d23h34m45s567ms format)
| | > word/dword/lword == uint16/uint32/uint64
| | > real/dreal == float32/float64
| | > LZ/LTN/LCN/LSN do not support count > 1 
| | > LTN/LCN/LSN are not supported in ascii mode
| | > Address Formats prefixed with '*' may not match PLC. Ensure all addresses are converted to Decimal correctly.

**Driver ID:** `8A7DDEFC-94E5-46D2-BE41-68318B641856`
**Group:** Mitsubishi

**Required properties:**
- `networkAddress` _String_ — PLC IP
- `networkPort` _SignedInteger_ — PLC Port
- `networkId` _SignedInteger_ — Network No. of PLC
- `stationId` _SignedInteger_ — Station No. of PLC
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `RetryCount` _SignedInteger_ — Read Retries (0 for no retry)
- `ReadTimeout` _SignedInteger_ — Read Timeout (ms)
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `encoding` _SignedInteger_ — Encoding Format
  Options: `0`, `1`
- `Advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi iQ-R Ethernet Device",
    "Description": "",
    "DriverID": "8A7DDEFC-94E5-46D2-BE41-68318B641856",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "KeepAlive",
        "Value": "60"
      },
      {
        "Key": "networkId",
        "Value": "0"
      },
      {
        "Key": "stationId",
        "Value": "255"
      },
      {
        "Key": "encoding",
        "Value": "0"
      },
      {
        "Key": "Advanced",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "mitsubishi-iqr-eth_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi iQ-R Ethernet Device",
            "DriverID": "8A7DDEFC-94E5-46D2-BE41-68318B641856",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi_Q00_01H_serial (Gen1.3)

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

# Mitsubishi_Q00_01H_serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                   |
| ------------------------ | -------------------------------------------------------------------------- |
| Prerequisites            | No                                                                         |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity        |
| Browse devices supported | No                                                                         |
| Browse tags supported    | No                                                                         |
| Supported device models  | Mitsubishi Q series with Q00, Q01H CPU port, QJ71C24N communication module |

**Driver ID:** `5E339CD5-2C29-4E7E-AF1A-6A022B97211D`
**Group:** Mitsubishi

**Required properties:**
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi_Q00_01H_serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "5E339CD5-2C29-4E7E-AF1A-6A022B97211D",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "mitsubishi device"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi_Q00_01H_serial (Gen1.3) Device",
            "DriverID": "5E339CD5-2C29-4E7E-AF1A-6A022B97211D",
            "Description": ""
        }
    }
}
```

---

## Create Device - Mitsubishi_Q02_02H_serial (Gen1.3)

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

# Mitsubishi_Q02_02H_serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Mitsubishi Q02/Q02H CPU port series                                 |

**Driver ID:** `EAA09420-76AB-41E9-B8D4-00778BE65B8D`
**Group:** Mitsubishi

**Required properties:**
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `name` _String_ — Device Name that describes your asset.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Mitsubishi_Q02_02H_serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "EAA09420-76AB-41E9-B8D4-00778BE65B8D",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "mitsubishi device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "stopBits",
        "Value": "1"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Mitsubishi_Q02_02H_serial (Gen1.3) Device",
            "DriverID": "EAA09420-76AB-41E9-B8D4-00778BE65B8D",
            "Description": ""
        }
    }
}
```

---

## Create Device - Enron Modbus

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

# Enron Modbus
| <!-- -->                 | <!-- -->                                                                                |
|--------------------------|-----------------------------------------------------------------------------------------|
| Required fields (Serial transport) | Device File<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Required fields (TCP/IP transport) | Network Address<br>Network Port<br>Connection timeout |
| Browse devices supported | No |
| Browse tags supported    | No |

**Driver ID:** `410EFF34-68C9-4630-AB8D-A8E438995FD3`
**Group:** Modbus

**Required properties:**
- `overrideBWOrder` _SignedInteger_ — Override registers' "Bytes And Words Order" setting
  Options: `0`, `1`
- `deviceFile` _String_ — Path to Device
- `overrideStationID` _SignedInteger_ — Override registers' Station ID setting
  Options: `0`, `1`
- `bytesAndWordsOrder` _SignedInteger_ — Bytes And Words Order
  Options: `0`, `1`, `2`, `3`
- `transportType` _SignedInteger_ — Transport Type
  Options: `0`, `1`
- `requestTimeoutMs` _SignedInteger_ — Request timeout, msec
- `stationID` _SignedInteger_ — Station ID
- `protocolBaseYear` _UnsignedInteger_ — Base year for date convertion
- `networkAddress` _String_ — PLC IP
- `networkPort` _SignedInteger_ — PLC Port
- `connectionTimeoutSec` _SignedInteger_ — Connection timeout, sec
- `protocolMode` _SignedInteger_ — Protocol Mode
  Options: `0`, `1`
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `pauseBetweenRetriesMs` _SignedInteger_ — Pause between retries, msec
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `retryRequestCount` _SignedInteger_ — Retry request count
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Enron Modbus Device",
    "Description": "",
    "DriverID": "410EFF34-68C9-4630-AB8D-A8E438995FD3",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "overrideBWOrder",
        "Value": "0"
      },
      {
        "Key": "pauseBetweenRetriesMs",
        "Value": "0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "overrideStationID",
        "Value": "0"
      },
      {
        "Key": "bytesAndWordsOrder",
        "Value": "0"
      },
      {
        "Key": "transportType",
        "Value": "0"
      },
      {
        "Key": "requestTimeoutMs",
        "Value": "2000"
      },
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "stationID",
        "Value": "1"
      },
      {
        "Key": "protocolBaseYear",
        "Value": "2000"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "retryRequestCount",
        "Value": "0"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "connectionTimeoutSec",
        "Value": "5"
      },
      {
        "Key": "protocolMode",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "Enron-Modbus_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Enron Modbus Device",
            "DriverID": "410EFF34-68C9-4630-AB8D-A8E438995FD3",
            "Description": ""
        }
    }
}
```

---

## Create Device - Modbus ASCII

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

# Modbus ASCII
| <!-- -->                 | <!-- -->                                                                                |
|--------------------------|-----------------------------------------------------------------------------------------|
| Required fields          | Device File<br>Baud Rate<br>Data Bits<br>Parity<br>Stop Bits<br>Station ID              |
| Browse devices supported | No                                                                                      |
| Browse tags supported    | No                                                                                      |
| Miscellaneous            | **Zero-Based Addressing** specifies if Modbus Protocol addresses are 0-based or 1-based |

**Driver ID:** `7E0EB9A6-D638-11E9-BB65-2A2AE2DBCCE4`
**Group:** Modbus

**Required properties:**
- `deviceFile` _String_ — This is a path to device.
- `baudRate` _SignedInteger_ — This is a baud rate.
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `parity` _String_ — This is a parity.
  Options: `0`, `1`, `2`
- `stationId` _SignedInteger_ — This is a station no of device.
- `dataBits` _SignedInteger_ — This is a data bits.
- `stopBits` _SignedInteger_ — This is a stop bits.
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `Zero-Based Addressing` _SignedInteger_
  Options: `0`, `1`
- `requestTimeoutMs` _SignedInteger_ — Response Timeout (ms)
- `maxDiscrete` _SignedInteger_ — Maximum number of Coil and Contact Registers allowed in a single request. Must be greater than Coil and Contact Allowable Gap Size
- `maxAnalog` _SignedInteger_ — Maximum number of Input and Holding Registers allowed in a single request. Must be greater than Input and Holding Allowable Gap Size.
- `discreteGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `analogGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Modbus ASCII Device",
    "Description": "",
    "DriverID": "7E0EB9A6-D638-11E9-BB65-2A2AE2DBCCE4",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "stationId",
        "Value": "0"
      },
      {
        "Key": "Zero-Based Addressing",
        "Value": "0"
      },
      {
        "Key": "requestTimeoutMs",
        "Value": "2000"
      },
      {
        "Key": "maxDiscrete",
        "Value": "2000"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "maxAnalog",
        "Value": "125"
      },
      {
        "Key": "discreteGap",
        "Value": "0"
      },
      {
        "Key": "analogGap",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "modbus-ascii_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Modbus ASCII Device",
            "DriverID": "7E0EB9A6-D638-11E9-BB65-2A2AE2DBCCE4",
            "Description": ""
        }
    }
}
```

---

## Create Device - Modbus ASCII Advanced

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

# Modbus ASCII Advanced
| <!-- -->                 | <!-- -->                                                                                |
| ------------------------ | --------------------------------------------------------------------------------------- |
| Prerequisites            | None                                                                                    |
| Required fields          | Device File<br>Baud Rate<br>Data Bits<br>Parity<br>Stop Bits                            |
| Browse devices supported | No                                                                                      |
| Browse tags supported    | No                                                                                      |
| Miscellaneous            | **Zero-Based Addressing** specifies if Modbus Protocol addresses are 0-based or 1-based |

Use this driver instead of the **Modbus ASCII** driver when multiple stations are connected to the RS-485 bus. The **Station ID** setting can be customized at the tag level with this driver. The device connection status is defined by the last received response.

**Driver ID:** `5E0CFCEA-9AF0-4BE5-A8C2-C811A254D452`
**Group:** Modbus

**Required properties:**
- `dataBits` _SignedInteger_ — This is a data bits.
- `deviceFile` _String_ — This is a path to device.
- `baudRate` _SignedInteger_ — This is a baud rate.
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `stopBits` _SignedInteger_ — This is a stop bits.
- `parity` _String_ — This is a parity.
  Options: `0`, `1`, `2`
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `requestTimeoutMs` _SignedInteger_ — Response Timeout (ms)
- `discreteGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `Delay Between Polls` _SignedInteger_ — Delay between Poll requests (ms)
- `Zero-Based Addressing` _SignedInteger_
  Options: `0`, `1`
- `maxDiscrete` _SignedInteger_ — Maximum number of Coil and Contact Registers allowed in a single request. Must be greater than Coil and Contact Allowable Gap Size
- `maxAnalog` _SignedInteger_ — Maximum number of Input and Holding Registers allowed in a single request. Must be greater than Input and Holding Allowable Gap Size.
- `analogGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Modbus ASCII Advanced Device",
    "Description": "",
    "DriverID": "5E0CFCEA-9AF0-4BE5-A8C2-C811A254D452",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "requestTimeoutMs",
        "Value": "2000"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "discreteGap",
        "Value": "0"
      },
      {
        "Key": "Delay Between Polls",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "Zero-Based Addressing",
        "Value": "0"
      },
      {
        "Key": "maxDiscrete",
        "Value": "2000"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "maxAnalog",
        "Value": "125"
      },
      {
        "Key": "analogGap",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "modbus-ascii-adv_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Modbus ASCII Advanced Device",
            "DriverID": "5E0CFCEA-9AF0-4BE5-A8C2-C811A254D452",
            "Description": ""
        }
    }
}
```

---

## Create Device - Modbus Multi-Station RTU to TCP Converter

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

# Modbus Multi-Station RTU to TCP Converter
| <!-- -->                    | <!-- --> |
| --------------------------- | -------- |
| Modbus RTU over TCP support | Yes      |
| Modbus TCP support          | Yes      |
| Browse devices supported    | No       |
| Browse tags supported       | No       |
| Registers supported         | No       |

Use this driver to connect to Modbus RS-485 multi-station architectures in conjunction with multiple instances of the Modbus RTU over TCP driver. This driver will handle all serial communication with the Modbus stations and expose them using a TCP server. You cannot add tags to this driver. Instead, all tags should be added to the Modbus RTU over TCP driver instances. This allows you to reuse tag names across different station IDs.
In the Modbus RTU over TCP driver instances, set the device parameters as follows:

| <!-- -->                    | <!-- --> |
| --------------------------- | -------- |
| IP address             | 127.0.0.1 |
| Retry Request Count    | 0 |
| Pause Between Requests | 0 |
| Response Timeout       | Number of stations \* (Converter Response Timeout \* (Converter Retry Request Count + 1) \* Converter Pause Between Requests) |

**Driver ID:** `4F0F523B-293C-4704-8282-6C2073C76C10`
**Group:** Modbus

**Required properties:**
- `deviceFile` _String_ — Path to Device
- `networkInterface` _String_ — Bind network interface for TCP server
- `maxTCPConnections` _SignedInteger_ — Maximum number of simultaneous TCP connections
- `responseTimeout` _SignedInteger_ — Response timeout (ms)
- `port` _SignedInteger_ — Bind Port for TCP server
- `retryRequestCount` _SignedInteger_ — Maximum number of request retries
- `pauseBetweenRequests` _SignedInteger_ — Pause between requests (ms)
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Modbus Multi-Station RTU to TCP Converter Device",
    "Description": "",
    "DriverID": "4F0F523B-293C-4704-8282-6C2073C76C10",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "networkInterface",
        "Value": "0.0.0.0"
      },
      {
        "Key": "maxTCPConnections",
        "Value": "32"
      },
      {
        "Key": "responseTimeout",
        "Value": "5000"
      },
      {
        "Key": "port",
        "Value": "502"
      },
      {
        "Key": "retryRequestCount",
        "Value": "3"
      },
      {
        "Key": "pauseBetweenRequests",
        "Value": "10"
      },
      {
        "Key": "name",
        "Value": "modbus-converter_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Modbus Multi-Station RTU to TCP Converter Device",
            "DriverID": "4F0F523B-293C-4704-8282-6C2073C76C10",
            "Description": ""
        }
    }
}
```

---

## Create Device - Modbus RTU

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

# Modbus RTU
| <!-- -->                 | <!-- -->                                                                                |
| ------------------------ | --------------------------------------------------------------------------------------- |
| Prerequisites            | None                                                                                    |
| Required fields          | Device File<br>Baud Rate<br>Data Bits<br>Parity<br>Stop Bits<br>Station ID              |
| Browse devices supported | No                                                                                      |
| Browse tags supported    | No                                                                                      |
| Miscellaneous            | **Zero-Based Addressing** specifies if Modbus Protocol addresses are 0-based or 1-based |

**Driver ID:** `546457FA-D638-11E9-BB65-2A2AE2DBCCE4`
**Group:** Modbus

**Required properties:**
- `dataBits` _SignedInteger_ — This is a data bits.
- `stopBits` _SignedInteger_ — This is a stop bits.
- `deviceFile` _String_ — This is a path to device.
- `baudRate` _SignedInteger_ — This is a baud rate.
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `parity` _String_ — This is a parity.
  Options: `0`, `1`, `2`
- `stationId` _SignedInteger_ — This is a station no of device.
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `Zero-Based Addressing` _SignedInteger_
  Options: `0`, `1`
- `requestTimeoutMs` _SignedInteger_ — Response Timeout (ms)
- `maxDiscrete` _SignedInteger_ — Maximum number of Coil and Contact Registers allowed in a single request. Must be greater than Coil and Contact Allowable Gap Size
- `maxAnalog` _SignedInteger_ — Maximum number of Input and Holding Registers allowed in a single request. Must be greater than Input and Holding Allowable Gap Size.
- `discreteGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `analogGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Modbus RTU Device",
    "Description": "",
    "DriverID": "546457FA-D638-11E9-BB65-2A2AE2DBCCE4",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Zero-Based Addressing",
        "Value": "0"
      },
      {
        "Key": "requestTimeoutMs",
        "Value": "2000"
      },
      {
        "Key": "maxDiscrete",
        "Value": "2000"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "maxAnalog",
        "Value": "125"
      },
      {
        "Key": "discreteGap",
        "Value": "0"
      },
      {
        "Key": "analogGap",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "stationId",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "modbus-rtu_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Modbus RTU Device",
            "DriverID": "546457FA-D638-11E9-BB65-2A2AE2DBCCE4",
            "Description": ""
        }
    }
}
```

---

## Create Device - Modbus RTU Advanced

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

# Modbus RTU Advanced
| <!-- -->                 | <!-- -->                                                                                |
| ------------------------ | --------------------------------------------------------------------------------------- |
| Prerequisites            | None                                                                                    |
| Required fields          | Device File<br>Baud Rate<br>Data Bits<br>Parity<br>Stop Bits                            |
| Browse devices supported | No                                                                                      |
| Browse tags supported    | No                                                                                      |
| Miscellaneous            | **Zero-Based Addressing** specifies if Modbus Protocol addresses are 0-based or 1-based |

Use this driver instead of the **Modbus RTU** driver when multiple stations are connected to the RS-485 bus. The **Station ID** setting can be customized at the tag level with this driver. The device connection status is defined by the last received response.

**Driver ID:** `49D60576-FC85-43F7-A7F0-CAE4ECE7B854`
**Group:** Modbus

**Required properties:**
- `dataBits` _SignedInteger_ — This is a data bits.
- `deviceFile` _String_ — This is a path to device.
- `baudRate` _SignedInteger_ — This is a baud rate.
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `stopBits` _SignedInteger_ — This is a stop bits.
- `parity` _String_ — This is a parity.
  Options: `0`, `1`, `2`
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `discreteGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `Delay Between Polls` _SignedInteger_ — Delay between Poll requests (ms)
- `Zero-Based Addressing` _SignedInteger_
  Options: `0`, `1`
- `maxDiscrete` _SignedInteger_ — Maximum number of Coil and Contact Registers allowed in a single request. Must be greater than Coil and Contact Allowable Gap Size
- `maxAnalog` _SignedInteger_ — Maximum number of Input and Holding Registers allowed in a single request. Must be greater than Input and Holding Allowable Gap Size.
- `analogGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `requestTimeoutMs` _SignedInteger_ — Response Timeout (ms)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Modbus RTU Advanced Device",
    "Description": "",
    "DriverID": "49D60576-FC85-43F7-A7F0-CAE4ECE7B854",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "discreteGap",
        "Value": "0"
      },
      {
        "Key": "Delay Between Polls",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "Zero-Based Addressing",
        "Value": "0"
      },
      {
        "Key": "maxDiscrete",
        "Value": "2000"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "maxAnalog",
        "Value": "125"
      },
      {
        "Key": "analogGap",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "requestTimeoutMs",
        "Value": "2000"
      },
      {
        "Key": "name",
        "Value": "modbus-rtu-adv_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Modbus RTU Advanced Device",
            "DriverID": "49D60576-FC85-43F7-A7F0-CAE4ECE7B854",
            "Description": ""
        }
    }
}
```

---

## Create Device - Modbus RTU over TCP

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

# Modbus RTU over TCP
| <!-- -->                 | <!-- -->                                                                                |
| ------------------------ |-----------------------------------------------------------------------------------------|
| Prerequisites            | None                                                                                    |
| Required fields          | Network address<br>Network Port<br>Station ID                                           |
| Browse devices supported | No                                                                                      |
| Browse tags supported    | No                                                                                      |
| Miscellaneous            | **Zero-Based Addressing** specifies if Modbus Protocol addresses are 0-based or 1-based |

Use this driver to connect to a Modbus RTU server or gateway which is polling from Modbus RTU clients.

**Driver ID:** `FAB8D777-BBD3-43FC-90E2-C69C41062660`
**Group:** Modbus

**Required properties:**
- `stationId` _SignedInteger_ — This is a station no of device.
- `networkAddress` _String_ — This is a IP Address of device.
- `networkPort` _SignedInteger_ — This is a network port of device.
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `pauseBetweenRetriesMs` _SignedInteger_ — Pause between Retries (ms)
- `overrideStationID` _SignedInteger_
  Options: `0`, `1`
- `analogGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `retryRequestCount` _SignedInteger_ — Retry request count
- `requestTimeoutMs` _SignedInteger_ — Response Timeout (ms)
- `discreteGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `maxAnalog` _SignedInteger_ — Maximum number of Input and Holding Registers allowed in a single request. Must be greater than Input and Holding Allowable Gap Size.
- `Zero-Based Addressing` _SignedInteger_
  Options: `0`, `1`
- `maxDiscrete` _SignedInteger_ — Maximum number of Coil and Contact Registers allowed in a single request. Must be greater than Coil and Contact Allowable Gap Size
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Modbus RTU over TCP Device",
    "Description": "",
    "DriverID": "FAB8D777-BBD3-43FC-90E2-C69C41062660",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "pauseBetweenRetriesMs",
        "Value": "0"
      },
      {
        "Key": "overrideStationID",
        "Value": "0"
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "analogGap",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "retryRequestCount",
        "Value": "0"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "requestTimeoutMs",
        "Value": "2000"
      },
      {
        "Key": "discreteGap",
        "Value": "0"
      },
      {
        "Key": "maxAnalog",
        "Value": "125"
      },
      {
        "Key": "Zero-Based Addressing",
        "Value": "0"
      },
      {
        "Key": "maxDiscrete",
        "Value": "2000"
      },
      {
        "Key": "name",
        "Value": "modbus-rtu-over-tcp_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Modbus RTU over TCP Device",
            "DriverID": "FAB8D777-BBD3-43FC-90E2-C69C41062660",
            "Description": ""
        }
    }
}
```

---

## Create Device - Modbus TCP

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

# Modbus TCP
| <!-- -->                 | <!-- -->                                                                                |
|--------------------------|-----------------------------------------------------------------------------------------|
| Prerequisites            | None                                                                                    |
| Required fields          | Network address<br>Network Port<br>Station ID                                           |
| Browse devices supported | No                                                                                      |
| Browse tags supported    | No                                                                                      |
| Miscellaneous            | **Zero-Based Addressing** specifies if Modbus Protocol addresses are 0-based or 1-based |

**Driver ID:** `2AF1FA08-D638-11E9-BB65-2A2AE2DBCCE4`
**Group:** Modbus

**Required properties:**
- `networkAddress` _String_ — This is a IP Address of device.
- `stationId` _SignedInteger_ — This is a station no of device.
- `networkPort` _SignedInteger_ — This is a network port of device.
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `analogGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `Zero-Based Addressing` _SignedInteger_
  Options: `0`, `1`
- `maxDiscrete` _SignedInteger_ — Maximum number of Coil and Contact Registers allowed in a single request. Must be greater than Coil and Contact Allowable Gap Size
- `discreteGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `maxAnalog` _SignedInteger_ — Maximum number of Input and Holding Registers allowed in a single request. Must be greater than Input and Holding Allowable Gap Size.
- `overrideStationID` _SignedInteger_
  Options: `0`, `1`
- `requestTimeoutMs` _SignedInteger_ — Response Timeout (ms)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Modbus TCP Device",
    "Description": "",
    "DriverID": "2AF1FA08-D638-11E9-BB65-2A2AE2DBCCE4",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "analogGap",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Zero-Based Addressing",
        "Value": "0"
      },
      {
        "Key": "maxDiscrete",
        "Value": "2000"
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "discreteGap",
        "Value": "0"
      },
      {
        "Key": "maxAnalog",
        "Value": "125"
      },
      {
        "Key": "overrideStationID",
        "Value": "0"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "requestTimeoutMs",
        "Value": "2000"
      },
      {
        "Key": "name",
        "Value": "modbus-tcp_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Modbus TCP Device",
            "DriverID": "2AF1FA08-D638-11E9-BB65-2A2AE2DBCCE4",
            "Description": ""
        }
    }
}
```

---

## Create Device - Modbus UDP

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

# Modbus UDP
| <!-- -->                 | <!-- -->                                                                                |
|--------------------------|-----------------------------------------------------------------------------------------|
| Prerequisites            | None                                                                                    |
| Required fields          | Network address<br>Network Port<br>Station ID                                           |
| Browse devices supported | No                                                                                      |
| Browse tags supported    | No                                                                                      |
| Miscellaneous            | **Zero-Based Addressing** specifies if Modbus Protocol addresses are 0-based or 1-based |

**Driver ID:** `F3FD7C20-D637-11E9-BB65-2A2AE2DBCCE4`
**Group:** Modbus

**Required properties:**
- `networkPort` _SignedInteger_ — This is a network port of device.
- `stationId` _SignedInteger_ — This is a station no of device.
- `networkAddress` _String_ — This is a IP Address of device.
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `requestTimeoutMs` _SignedInteger_ — Response Timeout (ms)
- `maxAnalog` _SignedInteger_ — Maximum number of Input and Holding Registers allowed in a single request. Must be greater than Input and Holding Allowable Gap Size.
- `analogGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `Zero-Based Addressing` _SignedInteger_
  Options: `0`, `1`
- `maxDiscrete` _SignedInteger_ — Maximum number of Coil and Contact Registers allowed in a single request. Must be greater than Coil and Contact Allowable Gap Size
- `discreteGap` _SignedInteger_ — If this setting is > 0 for performance optimization it spans over address gaps when grouping tags
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Modbus UDP Device",
    "Description": "",
    "DriverID": "F3FD7C20-D637-11E9-BB65-2A2AE2DBCCE4",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "requestTimeoutMs",
        "Value": "2000"
      },
      {
        "Key": "maxAnalog",
        "Value": "125"
      },
      {
        "Key": "analogGap",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Zero-Based Addressing",
        "Value": "0"
      },
      {
        "Key": "maxDiscrete",
        "Value": "2000"
      },
      {
        "Key": "discreteGap",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "modbus-udp_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Modbus UDP Device",
            "DriverID": "F3FD7C20-D637-11E9-BB65-2A2AE2DBCCE4",
            "Description": ""
        }
    }
}
```

---

## Create Device - Ping (Gen1.3)

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

# Ping (Gen1.3)

Use the ping-type tag to check if an IP address is accessible.<br>
Use the port-type tag to check is a port is open on an IP address.

**Driver ID:** `F1710513-3E9B-455C-A41F-E54A6F376B39`
**Group:** Network Utility

**Required properties:**
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Ping (Gen1.3) Device",
    "Description": "",
    "DriverID": "F1710513-3E9B-455C-A41F-E54A6F376B39",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "ping"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Ping (Gen1.3) Device",
            "DriverID": "F1710513-3E9B-455C-A41F-E54A6F376B39",
            "Description": ""
        }
    }
}
```

---

## Create Device - CIP Ethernet

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

# CIP Ethernet
| <!-- -->                 | <!-- -->                                                                                   |
| ------------------------ | ------------------------------------------------------------------------------------------ |
| Prerequisites            | None                |
| Required fields          | Network address<br>Port                                                                    |
| Browse devices supported | No. Use DeviceHub > Asset Discovery                                                                                        |
| Browse tags supported    | Yes                                                                                        |
| Miscellaneous            | Use this driver to read CIP objects that are addressable by Class, Instance, and Attribute |
<br>
Different vendors may use different names for the unsigned and signed integer types. Make sure to select the correct data type based on the size of the type.<br>
<br>
To get array values within an Attribute, use the "Attribute" register name and select one of the array value types.<br>
The bit[] type publishes in order of low bit to high bit, low byte to high byte.<br>
To get an array of values of over multiple Attributes, use the "Attribute Range" register name and enter Start Attribute and Number of Attriutes to read. You can read a string or an array of one data type.

**Driver ID:** `60B722BA-4539-4D5D-9D2F-7C63F7FADBFB`
**Group:** ODVA

**Required properties:**
- `networkAddress` _String_ — This is a IP Address of device
- `networkPort` _SignedInteger_ — This is a network port of device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `readTimeout` _SignedInteger_ — Read Timeout (ms)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My CIP Ethernet Device",
    "Description": "",
    "DriverID": "60B722BA-4539-4D5D-9D2F-7C63F7FADBFB",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "readTimeout",
        "Value": "3000"
      },
      {
        "Key": "name",
        "Value": "cip-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My CIP Ethernet Device",
            "DriverID": "60B722BA-4539-4D5D-9D2F-7C63F7FADBFB",
            "Description": ""
        }
    }
}
```

---

## Create Device - OSI Agent

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

OSI Agent Driver

**Driver ID:** `41EFEEDE-E2C6-4D34-AD6C-2442A8D9B2B1`
**Group:** OSI

**Required properties:**
- `password` _String_ — Password
- `networkPort` _String_ — Port
- `user` _String_ — User
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `interface` _String_ — Interface
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My OSI Agent Device",
    "Description": "",
    "DriverID": "41EFEEDE-E2C6-4D34-AD6C-2442A8D9B2B1",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "password",
        "Value": "password"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "interface",
        "Value": "0.0.0.0"
      },
      {
        "Key": "user",
        "Value": "admin"
      },
      {
        "Key": "name",
        "Value": "OSI-agent_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My OSI Agent Device",
            "DriverID": "41EFEEDE-E2C6-4D34-AD6C-2442A8D9B2B1",
            "Description": ""
        }
    }
}
```

---

## Create Device - Omron Fins Ethernet

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

# Omron FINS Ethernet Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Network Address
| | > Network Port
| | > Transport
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | Omron CS/CJ FINS Ethernet Devices
| **Miscellaneous:** | > Byte Order: Big-Endian
| | > Register Grouping Size: 256
| | > strings: padding always added to "Length", up to next register
| | > word/dword/lword == uint16/uint32/uint64
| | > real/lreal == float32/float64
| | > bcd == Binary Coded Decimal (0x99 -> 99, 0x1A -> error)
| | > flag == Counter/Timer "Done" status
| | > UDP operation requires use of local port 9600

**Driver ID:** `90C9F160-69CD-11ED-B37D-032E0F6C0B5E`
**Group:** Omron

**Required properties:**
- `networkPort` _SignedInteger_ — PLC Port
- `networkAddress` _String_ — PLC IP
- `deviceFile` _String_ — Path to Device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `DestinationAddress` _SignedInteger_
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `ReadTimeout` _SignedInteger_ — Request timeout, msec
- `RetryCount` _SignedInteger_ — Retry request count
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `DestinationNodeID` _SignedInteger_
- `SourceAddress` _SignedInteger_
- `SourceNodeID` _SignedInteger_
- `Transport` _SignedInteger_ — Transport Type
  Options: `0`, `1`
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `DestinationUnitID` _SignedInteger_
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Omron Fins Ethernet Device",
    "Description": "",
    "DriverID": "90C9F160-69CD-11ED-B37D-032E0F6C0B5E",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "advanced",
        "Value": "0"
      },
      {
        "Key": "KeepAlive",
        "Value": "60"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "DestinationAddress",
        "Value": "0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "DestinationNodeID",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "SourceAddress",
        "Value": "0"
      },
      {
        "Key": "SourceNodeID",
        "Value": "0"
      },
      {
        "Key": "Transport",
        "Value": "0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "DestinationUnitID",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "omron-fins_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Omron Fins Ethernet Device",
            "DriverID": "90C9F160-69CD-11ED-B37D-032E0F6C0B5E",
            "Description": ""
        }
    }
}
```

---

## Create Device - Omron Fins Serial

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

# Omron FINS Serial Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Device File
| | > Baud Rate
| | > Data Bits
| | > Stop Bits
| | > Parity
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | Omron CS/CJ FINS Host-Link Devices
| **Miscellaneous:** | > Byte Order: Big-Endian
| | > Register Grouping Size: 256
| | > strings: padding always added to "Length", up to next register
| | > word/dword/lword == uint16/uint32/uint64
| | > real/lreal == float32/float64
| | > bcd == Binary Coded Decimal (0x99 -> 99, 0x1A -> error)
| | > flag == Counter/Timer "Done" status

**Driver ID:** `44234053-0202-442D-9FD6-50FAADABBC63`
**Group:** Omron

**Required properties:**
- `deviceFile` _String_ — Path to Device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `SourceAddress` _SignedInteger_
- `SourceNodeID` _SignedInteger_
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `RetryCount` _SignedInteger_ — Retry request count
- `DestinationAddress` _SignedInteger_
- `DestinationNodeID` _SignedInteger_
- `DestinationUnitID` _SignedInteger_
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `ReadTimeout` _SignedInteger_ — Request timeout, msec
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Omron Fins Serial Device",
    "Description": "",
    "DriverID": "44234053-0202-442D-9FD6-50FAADABBC63",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "SourceAddress",
        "Value": "0"
      },
      {
        "Key": "SourceNodeID",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "DestinationAddress",
        "Value": "0"
      },
      {
        "Key": "DestinationNodeID",
        "Value": "0"
      },
      {
        "Key": "DestinationUnitID",
        "Value": "0"
      },
      {
        "Key": "advanced",
        "Value": "0"
      },
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "omron-fins-serial_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Omron Fins Serial Device",
            "DriverID": "44234053-0202-442D-9FD6-50FAADABBC63",
            "Description": ""
        }
    }
}
```

---

## Create Device - Omron HostLink

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

# Omron Host-Link Serial Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Device File
| | > Baud Rate
| | > Data Bits
| | > Stop Bits
| | > Parity
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | Omron (C, CPM, CPL, CQM) Host-Link Devices
| **Miscellaneous:** | > Byte Order: Big-Endian
| | > Register Grouping Size: 256
| | > strings: padding always added to "Length", up to next register
| | > word/dword/lword == uint16/uint32/uint64
| | > real/lreal == float32/float64
| | > bcd == Binary Coded Decimal (0x99 -> 99, 0x1A -> error)
| | > flag == Counter/Timer "Done" status

**Driver ID:** `E4017A52-BCAE-4AB5-8F84-C30AF40F9B21`
**Group:** Omron

**Required properties:**
- `deviceFile` _String_ — Path to Device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `DestinationNodeID` _SignedInteger_
- `RetryCount` _SignedInteger_ — Retry request count
- `ReadTimeout` _SignedInteger_ — Request timeout, msec
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Omron HostLink Device",
    "Description": "",
    "DriverID": "E4017A52-BCAE-4AB5-8F84-C30AF40F9B21",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "DestinationNodeID",
        "Value": "0"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "advanced",
        "Value": "0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "name",
        "Value": "omron-hostlink_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Omron HostLink Device",
            "DriverID": "E4017A52-BCAE-4AB5-8F84-C30AF40F9B21",
            "Description": ""
        }
    }
}
```

---

## Create Device - Omron NJ Ethernet

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

# Omron NJ Ethernet Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Network Address
| | > Network Port
| **Browse devices supported:**| No
| **Browse tags supported:** | Yes
| **Supported device models:** | Omron NJ Ethernet Devices
| **Access Mode:** | Symbolic
| **Miscellaneous:** |
| | > DATE: int64, format -> "2001-01-02"
| | > DATE_AND_TIME: int64, format -> "2001-01-02-12:34:56.999"
| | > TIME: int64, format -> "1h23m4.567s" or "123ms"
| | > TIME_OF_DAY: int64, format -> "12:34:56.999"

**Driver ID:** `5E20791D-2DED-4B3B-8A66-ABA4D0F53C4C`
**Group:** Omron

**Required properties:**
- `networkAddress` _String_ — PLC IP Address
- `networkPort` _SignedInteger_ — PLC Port Number
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `RequestTimeout` _SignedInteger_ — Request Timeout (ms)
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `MaxPDU` _SignedInteger_ — Connection Size (bytes)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Omron NJ Ethernet Device",
    "Description": "",
    "DriverID": "5E20791D-2DED-4B3B-8A66-ABA4D0F53C4C",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "RequestTimeout",
        "Value": "2000"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "advanced",
        "Value": "0"
      },
      {
        "Key": "MaxPDU",
        "Value": "1996"
      },
      {
        "Key": "name",
        "Value": "omron-nj_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Omron NJ Ethernet Device",
            "DriverID": "5E20791D-2DED-4B3B-8A66-ABA4D0F53C4C",
            "Description": ""
        }
    }
}
```

---

## Create Device - Opto22 MMIO Protocol Ethernet (Gen1.3)

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

# Opto22 MMIO Protocol Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | OPTO22 SNAP PAC System Series   |

**Driver ID:** `9293C0E5-8EB9-45BF-A022-73E6F8BE0DE8`
**Group:** Opto Devices

**Required properties:**
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Opto22 MMIO Protocol Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "9293C0E5-8EB9-45BF-A022-73E6F8BE0DE8",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "Opto22 device"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Opto22 MMIO Protocol Ethernet (Gen1.3) Device",
            "DriverID": "9293C0E5-8EB9-45BF-A022-73E6F8BE0DE8",
            "Description": ""
        }
    }
}
```

---

## Create Device - Panasonic FP Ethernet (Gen1.3)

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

# Panasonic FP Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Panasonic FP Series             |

**Driver ID:** `0FCEB17A-2176-40DD-ACB7-EF5E5C6BDA2D`
**Group:** Panasonic

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of  the device.
- `name` _String_ — Device Name that describes your asset.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Panasonic FP Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "0FCEB17A-2176-40DD-ACB7-EF5E5C6BDA2D",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "Panasonic Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Panasonic FP Ethernet (Gen1.3) Device",
            "DriverID": "0FCEB17A-2176-40DD-ACB7-EF5E5C6BDA2D",
            "Description": ""
        }
    }
}
```

---

## Create Device - Panasonic FP Serial (Gen1.3)

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

# Panasonic FP Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | --------------------------------------------------------------------------------- |
| Prerequisites            | None                                                                              |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | Panasonic FP Series                                                               |

**Driver ID:** `4982A1BF-B08E-40C9-BC93-809855DC6986`
**Group:** Panasonic

**Required properties:**
- `stationId` _SignedInteger_ — Station id/ slot number
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Panasonic FP Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "4982A1BF-B08E-40C9-BC93-809855DC6986",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "Panasonic Device"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Panasonic FP Serial (Gen1.3) Device",
            "DriverID": "4982A1BF-B08E-40C9-BC93-809855DC6986",
            "Description": ""
        }
    }
}
```

---

## Create Device - Panasonic FP7 Ethernet (Gen1.3)

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

# Panasonic FP7 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Panasonic FP7                   |

**Driver ID:** `C86A893E-4AA8-4635-A4DC-AED922AA80BC`
**Group:** Panasonic

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Panasonic FP7 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "C86A893E-4AA8-4635-A4DC-AED922AA80BC",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Panasonic Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Panasonic FP7 Ethernet (Gen1.3) Device",
            "DriverID": "C86A893E-4AA8-4635-A4DC-AED922AA80BC",
            "Description": ""
        }
    }
}
```

---

## Create Device - Panasonic Mewtocol Ethernet (Gen1.3)

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

# Panasonic Mewtocol Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                                      |
| ------------------------ | --------------------------------------------- |
| Prerequisites            | None                                          |
| Required fields          | Network address<br>Network Port<br>Station ID |
| Browse devices supported | No                                            |
| Browse tags supported    | No                                            |
| Supported device models  | Panasonic FP7 Series                          |

**Driver ID:** `B70AE188-67B0-4EAF-8116-69573AC45756`
**Group:** Panasonic

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of  the device.
- `stationId` _SignedInteger_ — Station no of device.
- `name` _String_ — Device Name that describes your asset.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Panasonic Mewtocol Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "B70AE188-67B0-4EAF-8116-69573AC45756",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "Panasonic Device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Panasonic Mewtocol Ethernet (Gen1.3) Device",
            "DriverID": "B70AE188-67B0-4EAF-8116-69573AC45756",
            "Description": ""
        }
    }
}
```

---

## Create Device - Parker ACR9000 Ethernet (Gen1.3)

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

# Parker ACR9000 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                |
| ------------------------ | ----------------------- |
| Prerequisites            | No                      |
| Required fields          | Network Address<br>Port |
| Browse devices supported | No                      |
| Browse tags supported    | No                      |
| Supported device models  | Parker ACR9000          |

**Driver ID:** `1D7CBE1A-1C53-41E4-B5BF-C4515C965880`
**Group:** Parker

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Parker ACR9000 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "1D7CBE1A-1C53-41E4-B5BF-C4515C965880",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "parker"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Parker ACR9000 Ethernet (Gen1.3) Device",
            "DriverID": "1D7CBE1A-1C53-41E4-B5BF-C4515C965880",
            "Description": ""
        }
    }
}
```

---

## Create Device - Profinet Acyclic

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

# Profinet Acyclic
| <!-- -->                 | <!-- -->                                                                     |
| ------------------------ |------------------------------------------------------------------------------|
| Prerequisites            | None                                                                         |
| Required fields          | Network address<br>Network Port<br>Slot Number<br>Subslot Number             |
| Browse devices supported | No                                                                           |
| Browse tags supported    | Only for devices which support the PROFIenergy function _Query\_Measurement_ |
| Miscellaneous            | This is a read-only driver                                                   |

The driver supports following tag types:

- **Records**: Generic data access
- **I&M**: Identification and Maintenance data records
- **PROFIdrive** profile: Read parameters by parameter number (PNU) index and subindex
- **PROFIenergy** profile: Read measurements

**Driver ID:** `28B130B3-530E-4644-99EF-4FDC06C758DE`
**Group:** Profinet

**Required properties:**
- `networkAddress` _String_ — IP Address of Profinet IO Device
- `networkPort` _SignedInteger_ — UDP port of device
- `slotNumber` _SignedInteger_ — Slot
- `subslot` _SignedInteger_ — Subslot
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Profinet Acyclic Device",
    "Description": "",
    "DriverID": "28B130B3-530E-4644-99EF-4FDC06C758DE",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "slotNumber",
        "Value": "0"
      },
      {
        "Key": "subslot",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "profinet-acyclic_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Profinet Acyclic Device",
            "DriverID": "28B130B3-530E-4644-99EF-4FDC06C758DE",
            "Description": ""
        }
    }
}
```

---

## Create Device - Profinet Acyclic Turck

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

# Profinet Acyclic (Turck)
| <!-- -->                 | <!-- -->                                                                             |
| ------------------------ |--------------------------------------------------------------------------------------|
| Prerequisites            | None                                                                                 |
| Required fields          | Network address<br>Network Port<br>Slot Number<br>Subslot Number                     |
| Browse devices supported | No                                                                                   |
| Browse tags supported    | Only for devices which support the PROFIenergy function _Query\_Measurement_         |
| Miscellaneous            | This is a read-only driver<br/>Slot and Subslot settings can be specified for a Tag. |

The driver supports following tag types:
- **Records**: Generic data access
- **I&M**: Identification and Maintenance data records
- **PROFIdrive** profile: Read parameters by parameter number (PNU) index and subindex
- **PROFIenergy** profile: Read measurements

**Driver ID:** `66A6A52D-F27E-454F-8BFC-C41B3419CCAC`
**Group:** Profinet

**Required properties:**
- `networkPort` _SignedInteger_ — UDP port of device
- `networkAddress` _String_ — IP Address of Profinet IO Device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Profinet Acyclic Turck Device",
    "Description": "",
    "DriverID": "66A6A52D-F27E-454F-8BFC-C41B3419CCAC",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "profinet-acyclic-turck_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Profinet Acyclic Turck Device",
            "DriverID": "66A6A52D-F27E-454F-8BFC-C41B3419CCAC",
            "Description": ""
        }
    }
}
```

---

## Create Device - Oemax Serial (Gen1.3)

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

# Oemax Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | --------------------------------------------------------------------------------- |
| Prerequisites            | No                                                                                |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | OEMax NX7 Controller series                                                       |

**Driver ID:** `1F64A3F7-8AB4-4030-A773-4D7F428F2354`
**Group:** RS Automation

**Required properties:**
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `stationId` _SignedInteger_ — Station no of device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Oemax Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "1F64A3F7-8AB4-4030-A773-4D7F428F2354",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "stationId",
        "Value": "255"
      },
      {
        "Key": "name",
        "Value": "oemax device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Oemax Serial (Gen1.3) Device",
            "DriverID": "1F64A3F7-8AB4-4030-A773-4D7F428F2354",
            "Description": ""
        }
    }
}
```

---

## Create Device - Saia Ethernet (Gen1.3)

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

# Saia Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                              |
| ------------------------ | ------------------------------------- |
| Prerequisites            | No                                    |
| Required fields          | Network Address<br>Port<br>Station ID |
| Browse devices supported | No                                    |
| Browse tags supported    | No                                    |
| Supported device models  | SAIA PCD Series                       |

**Driver ID:** `CF709836-53C7-4F49-9179-5DFC294C47A8`
**Group:** SAIA

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.
- `stationId` _SignedInteger_ — Station Id/ Slot Number
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Saia Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "CF709836-53C7-4F49-9179-5DFC294C47A8",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "stationId",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "saia device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Saia Ethernet (Gen1.3) Device",
            "DriverID": "CF709836-53C7-4F49-9179-5DFC294C47A8",
            "Description": ""
        }
    }
}
```

---

## Create Device - Sick Flexi Serial (Gen1.3)

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

# Sick Flexi Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | --------------------------------------------------------------------------------- |
| Prerequisites            | No                                                                                |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | Sick flexi soft series                                                            |

**Driver ID:** `27C6423C-B925-460F-9915-82CCDB79CC36`
**Group:** Sick Flexi

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `stationId` _SignedInteger_ — Station no of device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Sick Flexi Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "27C6423C-B925-460F-9915-82CCDB79CC36",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "sick device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "stationId",
        "Value": "1"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Sick Flexi Serial (Gen1.3) Device",
            "DriverID": "27C6423C-B925-460F-9915-82CCDB79CC36",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens ISO-on-TCP

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

# Siemens ISO-on-TCP
| <!-- -->                 | <!-- -->                                                                                                                                                           |
|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Prerequisites            | Download the LE_ISO_on_TCP library for TIA Portal V16 from [Litmus Central Portal](https://central.litmus.io/), then program your PLC for ISO-on-TCP communication |
| Required fields          | Network address<br>Network Port<br>Slot Number<br>Local TSAP<br>Remote TSAP                                                                                        |
| Browse devices supported | No                                                                                                                                                                 |
| Browse tags supported    | No                                                                                                                                                                 |
| Supported device models  | Siemens S7-1500 Series                                                                                                                                             |
| Miscellaneous            | Follow instructions in the library package to program the PLC before using this driver                                                                             |

**Driver ID:** `8A3B12FC-8F69-4126-8556-1F9B66CA0D7A`
**Group:** Siemens

**Required properties:**
- `networkAddress` _String_ — IP Address of S7-300/400/1200/1500 device
- `networkPort` _SignedInteger_ — TCP/IP port of device
- `Local TSAP` _String_ — Transport Services Access Point
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `Remote TSAP` _String_ — Transport Services Access Point
(keep blank for S7-300/400)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens ISO-on-TCP Device",
    "Description": "",
    "DriverID": "8A3B12FC-8F69-4126-8556-1F9B66CA0D7A",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "Local TSAP",
        "Value": "TCP-2"
      },
      {
        "Key": "Remote TSAP",
        "Value": ""
      },
      {
        "Key": "name",
        "Value": "siemens-iso-on-tcp_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens ISO-on-TCP Device",
            "DriverID": "8A3B12FC-8F69-4126-8556-1F9B66CA0D7A",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens Logo Ethernet (Gen1.3)

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

# Siemens Logo Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                                                               |
| ------------------------ | ---------------------------------------------------------------------- |
| Prerequisites            | None                                                                   |
| Required fields          | Network address<br>Network Port<br><br>Local TSAP<br>Remote TSAP<br>   |
| Browse devices supported | No                                                                     |
| Browse tags supported    | No                                                                     |
| Supported device models  | Siemens Logo                                                           |

**Driver ID:** `C76084F2-9CFC-4FF8-B588-D8217E9C88F4`
**Group:** Siemens

**Required properties:**
- `localTsap` _String_ — Local tsap of device.
- `remoteTsap` _String_ — Remote tasp of device.
- `name` _String_ — Device Name that describes your asset.
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens Logo Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "C76084F2-9CFC-4FF8-B588-D8217E9C88F4",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "localTsap",
        "Value": "1000"
      },
      {
        "Key": "remoteTsap",
        "Value": "200"
      },
      {
        "Key": "name",
        "Value": "Logo PLC"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens Logo Ethernet (Gen1.3) Device",
            "DriverID": "C76084F2-9CFC-4FF8-B588-D8217E9C88F4",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens S5 Ethernet

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

# Siemens S5 Ethernet
| <!-- -->                 | <!-- -->                        |
|--------------------------|---------------------------------|
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Siemens S5 Series               |

**Driver ID:** `BB4624F5-42C3-4439-B8C2-94DB75DEEAE0`
**Group:** Siemens

**Required properties:**
- `networkAddress` _String_ — IP Address of S5 device
- `networkPort` _SignedInteger_ — TCP/IP port of device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `readTimeout` _SignedInteger_
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens S5 Ethernet Device",
    "Description": "",
    "DriverID": "BB4624F5-42C3-4439-B8C2-94DB75DEEAE0",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "readTimeout",
        "Value": "6000"
      },
      {
        "Key": "name",
        "Value": "siemens-s5_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens S5 Ethernet Device",
            "DriverID": "BB4624F5-42C3-4439-B8C2-94DB75DEEAE0",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens S5 Ethernet (Gen1.3)

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

# Siemens S5 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Siemens S5 Series               |

**Driver ID:** `96D9600E-985A-4C88-8F16-D33EABBB53DF`
**Group:** Siemens

**Required properties:**
- `name` _String_ — This is a Device Name.
- `networkAddress` _String_ — This is a IP Address of device.
- `networkPort` _SignedInteger_ — This is a network port of device.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens S5 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "96D9600E-985A-4C88-8F16-D33EABBB53DF",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "S5 PLC"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens S5 Ethernet (Gen1.3) Device",
            "DriverID": "96D9600E-985A-4C88-8F16-D33EABBB53DF",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens S7

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

# Siemens S7
| <!-- -->                 | <!-- -->                                       |
|--------------------------|------------------------------------------------|
| Prerequisites            | None                                           |
| Required fields          | Network address<br>Network Port<br>Slot Number |
| Browse devices supported | No                                             |
| Browse tags supported    | No                                             |
| Supported device models  | Siemens S7-300/400/1200/1500 Series            |

**Driver ID:** `01E8B6CE-1D26-4215-8E4A-B5807F389E71`
**Group:** Siemens

**Required properties:**
- `networkAddress` _String_ — IP Address of S7-300/400/1200/1500 device
- `networkPort` _SignedInteger_ — TCP/IP port of device
- `slotNumber` _SignedInteger_ — Slot
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `maxPDUSize` _SignedInteger_ — If the parameter is 0 (default), then the value determined during connection handshake is used.
If the parameter > 0, then the smaller value of this parameter value and a value determined during connection handshake is used.
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens S7 Device",
    "Description": "",
    "DriverID": "01E8B6CE-1D26-4215-8E4A-B5807F389E71",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "slotNumber",
        "Value": "1"
      },
      {
        "Key": "maxPDUSize",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "siemens-s7comm_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens S7 Device",
            "DriverID": "01E8B6CE-1D26-4215-8E4A-B5807F389E71",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens S7-200 Ethernet

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

# Siemens S7-200 Ethernet
| <!-- -->                 | <!-- -->                                                     |
|--------------------------|--------------------------------------------------------------|
| Prerequisites            | None                                                         |
| Required fields          | Network address<br>Network Port<br>Local & Remote TSAP (hex) |
| Browse devices supported | No                                                           |
| Browse tags supported    | No                                                           |
| Supported device models  | Siemens S7-200 Series                                        |

**Driver ID:** `778F29F1-02EF-4209-81A7-48242076E62E`
**Group:** Siemens

**Required properties:**
- `networkAddress` _String_ — IP Address of S7-200 device
- `networkPort` _SignedInteger_ — TCP/IP port of device
- `localTSAP` _String_
- `remoteTSAP` _String_
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `readTimeout` _SignedInteger_
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens S7-200 Ethernet Device",
    "Description": "",
    "DriverID": "778F29F1-02EF-4209-81A7-48242076E62E",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "readTimeout",
        "Value": "6000"
      },
      {
        "Key": "localTSAP",
        "Value": "4D57"
      },
      {
        "Key": "remoteTSAP",
        "Value": "4D57"
      },
      {
        "Key": "name",
        "Value": "siemens-s7-200_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens S7-200 Ethernet Device",
            "DriverID": "778F29F1-02EF-4209-81A7-48242076E62E",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens S7-200 Serial

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

# Siemens S7-200 Serial
| <!-- -->                 | <!-- -->                                                            |
|--------------------------|---------------------------------------------------------------------|
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Siemens S7-200                                                      |

**Driver ID:** `7D8D63FA-1FFB-4C63-9C42-6E9385A949AC`
**Group:** Siemens

**Required properties:**
- `deviceFile` _String_ — Path to Device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `delayBeforeConfirm` _SignedInteger_
- `readTimeout` _SignedInteger_
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens S7-200 Serial Device",
    "Description": "",
    "DriverID": "7D8D63FA-1FFB-4C63-9C42-6E9385A949AC",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "delayBeforeConfirm",
        "Value": "5"
      },
      {
        "Key": "readTimeout",
        "Value": "1000"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "siemens-s7-200-serial_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens S7-200 Serial Device",
            "DriverID": "7D8D63FA-1FFB-4C63-9C42-6E9385A949AC",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens S7-300 Serial (Gen1.3)

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

# Siemens S7-300 Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | --------------------------------------------------------------------------------- |
| Prerequisites            | No                                                                                |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | Siemens S7-300                                                                    |

**Driver ID:** `073494B0-B7BD-489F-A40F-2858BFEE6249`
**Group:** Siemens

**Required properties:**
- `deviceFile` _String_ — Local Serial connection file path.
- `name` _String_ — Device Name that describes your asset.
- `stationId` _SignedInteger_ — Station id/ slot number of PLC
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens S7-300 Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "073494B0-B7BD-489F-A40F-2858BFEE6249",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "name",
        "Value": "S7-300 PLC"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "stationId",
        "Value": "2"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens S7-300 Serial (Gen1.3) Device",
            "DriverID": "073494B0-B7BD-489F-A40F-2858BFEE6249",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens S7CommPlus

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

# Siemens S7 CommPlus Symbolic Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Network Address
| | > Network Port
| **Browse devices supported:** | No
| **Browse tags supported:** | Yes
| **Supported device models:** | Siemes S7 1200 & 1500 Devices (fw >= 2.x)
| **Type Information:** | > Byte Order: Big-Endian
| | > sint/int/dint/lint == signed 8/16/32/64 bit integers
| | > word == uint == unsigned 16 bit integer 
| **Driver Settings:** | > Overrides (CPU/FW/TLS): Enable to skip auto-detection
| | > IQMCT Folders: Enable to organize root tags. Warning "(I/Q/M/C/T)Area" could conflict with DB names
| | > MTU Load Factor: Decrease to fix "MTU Error". Increase to support more tags per request.
| **Miscellaneous:** | > Register Grouping Size: Dynamic by device
| | > Browse required to aquire tag ids
| | > Symbolic addressing is required for "optimized" blocks
| | > Nested tags are delimited by .
| | > Individual tag fields containing . are wrapped by "

**Driver ID:** `4EE806F4-EE86-4EFB-B06B-E63908C736A2`
**Group:** Siemens

**Required properties:**
- `networkAddress` _String_ — PLC IP Address
- `networkPort` _SignedInteger_ — PLC Port Number
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `readTimeout` _SignedInteger_ — Read Timeout (ms)
- `retryCount` _SignedInteger_ — Read Retries (0 for no retry)
- `OverridePlcCpuType` _SignedInteger_ — Cpu Model
  Options: `0`, `1`, `2`
- `OverrideTLS` _SignedInteger_ — Force TLS
  Options: `0`, `1`
- `instanceDatablockSupport` _SignedInteger_ — Enable Instance DBs
  Options: `0`, `1`
- `MTU Load Factor` _SignedInteger_ — Percent limit of max request payload size
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `OverridePlcFirmwareVersion` _SignedInteger_ — Firmware Version
  Options: `0`, `1`, `2`, `3`
- `IQMCT Display Folders` _SignedInteger_ — Organize IQMCT tags into ".Area" folders
  Options: `0`, `1`
- `keepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens S7CommPlus Device",
    "Description": "",
    "DriverID": "4EE806F4-EE86-4EFB-B06B-E63908C736A2",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "readTimeout",
        "Value": "3000"
      },
      {
        "Key": "retryCount",
        "Value": "0"
      },
      {
        "Key": "OverridePlcCpuType",
        "Value": "0"
      },
      {
        "Key": "OverrideTLS",
        "Value": "0"
      },
      {
        "Key": "instanceDatablockSupport",
        "Value": "0"
      },
      {
        "Key": "MTU Load Factor",
        "Value": "80"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "advanced",
        "Value": "0"
      },
      {
        "Key": "OverridePlcFirmwareVersion",
        "Value": "0"
      },
      {
        "Key": "IQMCT Display Folders",
        "Value": "0"
      },
      {
        "Key": "keepAlive",
        "Value": "60"
      },
      {
        "Key": "name",
        "Value": "siemens-s7commplus_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens S7CommPlus Device",
            "DriverID": "4EE806F4-EE86-4EFB-B06B-E63908C736A2",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens Sinumerik 808D Ethernet

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

# Siemens Sinumerik 808D Ethernet
| <!-- -->                 | <!-- -->                                                     |
|--------------------------|--------------------------------------------------------------|
| Prerequisites            | None                                                         |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                                                           |
| Browse tags supported    | No                                                           |
| Supported device models  | Siemens Sinumerik                                            |

**Driver ID:** `1FB80C39-A46B-4FC7-B1A2-EF3CFC146E94`
**Group:** Siemens

**Required properties:**
- `networkPort` _SignedInteger_ — TCP/IP port of device
- `localTSAP` _String_
- `remoteTSAP` _String_
- `networkAddress` _String_ — IP Address of S7-200 device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `readTimeout` _SignedInteger_
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens Sinumerik 808D Ethernet Device",
    "Description": "",
    "DriverID": "1FB80C39-A46B-4FC7-B1A2-EF3CFC146E94",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "readTimeout",
        "Value": "2000"
      },
      {
        "Key": "localTSAP",
        "Value": "0200"
      },
      {
        "Key": "remoteTSAP",
        "Value": "0102"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "siemens-sinumerik-808d_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens Sinumerik 808D Ethernet Device",
            "DriverID": "1FB80C39-A46B-4FC7-B1A2-EF3CFC146E94",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens TI505 Ethernet (Gen1.3)

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

# Siemens TI505 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Siemens Simatic TI505 Series    |

**Driver ID:** `994B2F23-5B0A-4AD0-BD8D-F5999A92F491`
**Group:** Siemens

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens TI505 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "994B2F23-5B0A-4AD0-BD8D-F5999A92F491",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "TI505"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens TI505 Ethernet (Gen1.3) Device",
            "DriverID": "994B2F23-5B0A-4AD0-BD8D-F5999A92F491",
            "Description": ""
        }
    }
}
```

---

## Create Device - Siemens TI505 Serial (Gen1.3)

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

# Siemens TI505 Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                            |
| ------------------------ | ------------------------------------------------------------------- |
| Prerequisites            | No                                                                  |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity |
| Browse devices supported | No                                                                  |
| Browse tags supported    | No                                                                  |
| Supported device models  | Siemens Simatic TI505 Series                                        |

**Driver ID:** `3966466E-68F6-4227-BCAD-49E6433AA4EE`
**Group:** Siemens

**Required properties:**
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `parity` _SignedInteger_ — Serial communication parity parameter.
  Options: `0`, `1`, `2`
- `name` _String_ — Device Name that describes your asset.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `deviceFile` _String_ — Local Serial connection file path.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Siemens TI505 Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "3966466E-68F6-4227-BCAD-49E6433AA4EE",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "dataBits",
        "Value": "7"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "TI505"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Siemens TI505 Serial (Gen1.3) Device",
            "DriverID": "3966466E-68F6-4227-BCAD-49E6433AA4EE",
            "Description": ""
        }
    }
}
```

---

## Create Device - Sinumerik 808D Serial (Gen1.3)

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

# Sinumerik 808D Serial (Gen1.3)

| <!-- -->                 | <!-- -->                                                                          |
| ------------------------ | --------------------------------------------------------------------------------- |
| Prerequisites            | No                                                                                |
| Required fields          | Communication Port<br>Baud Rate<br>Data Bits<br>Stop Bits<br>Parity<br>Station ID |
| Browse devices supported | No                                                                                |
| Browse tags supported    | No                                                                                |
| Supported device models  | Siemens Sinumerik 808D series                                                     |

**Driver ID:** `C85F9F51-7FFD-40F7-92AE-991E0FE172CE`
**Group:** Siemens

**Required properties:**
- `stationId` _SignedInteger_ — Station id/ slot number
- `dataBits` _SignedInteger_ — Serial communication databits parameter.
- `stopBits` _SignedInteger_ — Serial communication stopbits parameter.
- `name` _String_ — Device Name that describes your asset.
- `deviceFile` _String_ — Local Serial connection file path.
- `baudRate` _SignedInteger_ — Serial communication baudrate parameter.
- `parity` _SignedInteger_ — serial communication parity parameter.
  Options: `0`, `1`, `2`

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Sinumerik 808D Serial (Gen1.3) Device",
    "Description": "",
    "DriverID": "C85F9F51-7FFD-40F7-92AE-991E0FE172CE",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "stationId",
        "Value": "2"
      },
      {
        "Key": "dataBits",
        "Value": "8"
      },
      {
        "Key": "stopBits",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "Sinumerik PLC"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyS0"
      },
      {
        "Key": "baudRate",
        "Value": "9600"
      },
      {
        "Key": "parity",
        "Value": "0"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Sinumerik 808D Serial (Gen1.3) Device",
            "DriverID": "C85F9F51-7FFD-40F7-92AE-991E0FE172CE",
            "Description": ""
        }
    }
}
```

---

## Create Device - Generator

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

Generator driver

**Driver ID:** `5BC98836-CFD4-11E9-BB65-2A2AE2DBCCE4`
**Group:** Simulator

**Required properties:**
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Generator Device",
    "Description": "",
    "DriverID": "5BC98836-CFD4-11E9-BB65-2A2AE2DBCCE4",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "generator_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Generator Device",
            "DriverID": "5BC98836-CFD4-11E9-BB65-2A2AE2DBCCE4",
            "Description": ""
        }
    }
}
```

---

## Create Device - Simulator (Gen1.3)

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

Simulator Driver

**Driver ID:** `50E3EDA1-11F9-41D6-9232-778A28665580`
**Group:** Simulator

**Required properties:**
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Simulator (Gen1.3) Device",
    "Description": "",
    "DriverID": "50E3EDA1-11F9-41D6-9232-778A28665580",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "simulator"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Simulator (Gen1.3) Device",
            "DriverID": "50E3EDA1-11F9-41D6-9232-778A28665580",
            "Description": ""
        }
    }
}
```

---

## Create Device - Open Protocol Ethernet

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

# Torque Tool Open Protocol Ethernet

| <!-- -->                 | <!-- -->                            |
|--------------------------|-------------------------------------|
| Prerequisites            | No                                  |
| Required fields          | Network address<br>Port             |
| Browse devices supported | No                                  |
| Browse tags supported    | Yes                                 |
| Supported device models  | Atlas Copco PF6000<br>Cleco mPro300 |

**Driver ID:** `FA222359-D583-443F-A661-BF048AD409BC`
**Group:** Torque Tool

**Required properties:**
- `networkAddress` _String_ — This is a IP Address of device
- `networkPort` _SignedInteger_ — This is a network port of device
- `mid0015rev` _UnsignedInteger_
  Options: `0`, `1`
- `mid0035rev` _UnsignedInteger_
  Options: `0`, `1`, `2`, `3`, `4`
- `mid0042rev` _UnsignedInteger_
  Options: `0`, `1`
- `mid0051rev` _UnsignedInteger_
  Options: `0`, `1`
- `mid0064rev` _UnsignedInteger_
  Options: `0`, `1`
- `mid0100rev` _UnsignedInteger_
  Options: `0`, `1`, `2`, `3`, `4`
- `mid0010rev` _UnsignedInteger_
  Options: `0`, `1`, `2`, `3`
- `mid0060rev` _UnsignedInteger_
  Options: `0`, `1`
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `keepAlive` _UnsignedInteger_
- `readTimeout` _UnsignedInteger_
- `retryCount` _UnsignedInteger_ — Number of times to retry message
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Open Protocol Ethernet Device",
    "Description": "",
    "DriverID": "FA222359-D583-443F-A661-BF048AD409BC",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "mid0015rev",
        "Value": "0"
      },
      {
        "Key": "mid0035rev",
        "Value": "0"
      },
      {
        "Key": "mid0042rev",
        "Value": "0"
      },
      {
        "Key": "mid0051rev",
        "Value": "0"
      },
      {
        "Key": "mid0064rev",
        "Value": "0"
      },
      {
        "Key": "mid0100rev",
        "Value": "0"
      },
      {
        "Key": "mid0010rev",
        "Value": "0"
      },
      {
        "Key": "mid0060rev",
        "Value": "0"
      },
      {
        "Key": "keepAlive",
        "Value": "10000"
      },
      {
        "Key": "readTimeout",
        "Value": "2000"
      },
      {
        "Key": "retryCount",
        "Value": "3"
      },
      {
        "Key": "name",
        "Value": "open-protocol-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Open Protocol Ethernet Device",
            "DriverID": "FA222359-D583-443F-A661-BF048AD409BC",
            "Description": ""
        }
    }
}
```

---

## Create Device - Toshiba Computer Link Ethernet (Gen1.3)

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

# Toshiba Computer Link Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | Toshiba Ethernet devices        |

**Driver ID:** `1437F841-FF5A-462D-AABC-D8C13BB3FBC0`
**Group:** Toshiba

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Toshiba Computer Link Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "1437F841-FF5A-462D-AABC-D8C13BB3FBC0",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "toshiba device"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Toshiba Computer Link Ethernet (Gen1.3) Device",
            "DriverID": "1437F841-FF5A-462D-AABC-D8C13BB3FBC0",
            "Description": ""
        }
    }
}
```

---

## Create Device - JTEKT Toyopuc CMP-Link Ethernet (Gen1.3)

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

# JTEKT Toyopuc CMP-Link Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| Prerequisites            | None                            |
| Required fields          | Network address<br>Network Port |
| Browse devices supported | No                              |
| Browse tags supported    | No                              |
| Supported device models  | JTEKT Toyopuc PC10              |

**Driver ID:** `5C8E41C3-6DF1-47B5-AD2E-9C5FD0FF803C`
**Group:** Toyopuc

**Required properties:**
- `networkPort` _String_ — Network port of  the device.
- `networkAddress` _String_ — IP Address of the device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My JTEKT Toyopuc CMP-Link Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "5C8E41C3-6DF1-47B5-AD2E-9C5FD0FF803C",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "name",
        "Value": "toyopuc device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My JTEKT Toyopuc CMP-Link Ethernet (Gen1.3) Device",
            "DriverID": "5C8E41C3-6DF1-47B5-AD2E-9C5FD0FF803C",
            "Description": ""
        }
    }
}
```

---

## Create Device - Toyopuc CMP-Link Serial

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

# Toyopuc CMP-Link Serial Driver
| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| **Required fields:** | > Connection Settings (Serial)
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | JTEKT Toyopuc PC10             
| **Register Settings:** |

**Driver ID:** `E21C9A5D-576D-4396-8764-07CD25D3494D`
**Group:** Toyopuc

**Required properties:**
- `deviceFile` _String_ — Path to Device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `ReadTimeout` _SignedInteger_ — Request timeout, msec
- `RetryCount` _SignedInteger_ — Retry request count
- `Transport` _SignedInteger_ — Transport Type
  Options: `0`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `PauseBetweenRetries` _SignedInteger_ — Pause between retries, msec
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `MaxRequestSize` _SignedInteger_ — Maximum block size retrieved per request (# bytes)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Toyopuc CMP-Link Serial Device",
    "Description": "",
    "DriverID": "E21C9A5D-576D-4396-8764-07CD25D3494D",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "baudRate",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "Transport",
        "Value": "0"
      },
      {
        "Key": "stopBits",
        "Value": "0"
      },
      {
        "Key": "PauseBetweenRetries",
        "Value": "0"
      },
      {
        "Key": "dataBits",
        "Value": "0"
      },
      {
        "Key": "parity",
        "Value": "0"
      },
      {
        "Key": "deviceFile",
        "Value": "/dev/ttyUSB0"
      },
      {
        "Key": "MaxRequestSize",
        "Value": "512"
      },
      {
        "Key": "name",
        "Value": "toyopuc-cmplink-serial_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Toyopuc CMP-Link Serial Device",
            "DriverID": "E21C9A5D-576D-4396-8764-07CD25D3494D",
            "Description": ""
        }
    }
}
```

---

## Create Device - Vipa 300s Ethernet (Gen1.3)

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

# Vipa 300s Ethernet (Gen1.3)
| <!-- -->                 | <!-- -->                                       |
| ------------------------ | ---------------------------------------------- |
| Prerequisites            | None                                           |
| Required fields          | Network address<br>Network Port<br>Slot Number |
| Browse devices supported | No                                             |
| Browse tags supported    | No                                             |
| Supported device models  | VIPA 300S                                      |

**Driver ID:** `3F8D577D-3FB0-4DB3-8FED-85694903E27A`
**Group:** Vipa

**Required properties:**
- `name` _String_ — Device Name that describes your asset.
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `slotNumber` _SignedInteger_ — Slot number of device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Vipa 300s Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "3F8D577D-3FB0-4DB3-8FED-85694903E27A",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "name",
        "Value": "Vipa PLC"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "slotNumber",
        "Value": "1"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Vipa 300s Ethernet (Gen1.3) Device",
            "DriverID": "3F8D577D-3FB0-4DB3-8FED-85694903E27A",
            "Description": ""
        }
    }
}
```

---

## Create Device - Yaskawa MP2300 Ethernet (Gen1.3)

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

# Yaskawa MP2300 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                                           |
| ------------------------ | -------------------------------------------------- |
| Prerequisites            | None                                               |
| Required fields          | Network address<br>Network Port<br>Output<br>Input |
| Browse devices supported | No                                                 |
| Browse tags supported    | No                                                 |
| Supported device models  | Yaskawa MP2300S iec controllers                    |

**Driver ID:** `AD2863B5-85F6-4E4B-885B-57AD37328F60`
**Group:** Yaskawa

**Required properties:**
- `input` _SignedInteger_ — Assembly number of communication module.
- `output` _SignedInteger_ — Output assembly number of communication module.
- `networkAddress` _String_ — IP Address of the device.
- `networkPort` _SignedInteger_ — Network port of  the device.
- `name` _String_ — Device Name that describes your asset.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Yaskawa MP2300 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "AD2863B5-85F6-4E4B-885B-57AD37328F60",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "input",
        "Value": "101"
      },
      {
        "Key": "output",
        "Value": "111"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "name",
        "Value": "Yaskawa Device"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Yaskawa MP2300 Ethernet (Gen1.3) Device",
            "DriverID": "AD2863B5-85F6-4E4B-885B-57AD37328F60",
            "Description": ""
        }
    }
}
```

---

## Create Device - Yokogawa FA-M3 Ethernet (Gen1.3)

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

# Yokogawa FA-M3 Ethernet (Gen1.3)

| <!-- -->                 | <!-- -->                              |
| ------------------------ | ------------------------------------- |
| Prerequisites            | No                                    |
| Required fields          | Network Address<br>Port<br>Station ID |
| Browse devices supported | No                                    |
| Browse tags supported    | No                                    |
| Supported device models  | Yokogawa FA-M3 Series                 |

**Driver ID:** `9D130EEC-9EFC-4FA0-A64B-D6DD6E76547B`
**Group:** Yokogawa

**Required properties:**
- `networkPort` _SignedInteger_ — Network port of  the device.
- `stationId` _SignedInteger_ — Station id/ slot number
- `name` _String_ — Device Name that describes your asset.
- `networkAddress` _String_ — IP Address of the device.

**Optional properties:**
- `description` _String_ — Description of the device or an asset.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Yokogawa FA-M3 Ethernet (Gen1.3) Device",
    "Description": "",
    "DriverID": "9D130EEC-9EFC-4FA0-A64B-D6DD6E76547B",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "502"
      },
      {
        "Key": "stationId",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "FA-M3"
      },
      {
        "Key": "description",
        "Value": ""
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Yokogawa FA-M3 Ethernet (Gen1.3) Device",
            "DriverID": "9D130EEC-9EFC-4FA0-A64B-D6DD6E76547B",
            "Description": ""
        }
    }
}
```

---

## Create Device - OPC UA Client Advanced

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

# OPC UA Client Advanced Driver

The driver implements the Client according to OPC UA Specification version 1.04 (IEC62541 standard).

## Features:
* Discovering Servers and Endpoint (make sure the DNS name of the discovered server can be 
resolved by LE or replace it with the IP address)
* Browsing the address space of the server
* Reading, subscribing, and writing "Value" (Attribute ID 13, The value of a variable)

**Driver ID:** `2372E68F-BA1B-46E9-BC07-E92CA006B377`
**Group:** OPCUA

**Required properties:**
- `AdvancedSettingsShowHide` _String_ — Advanced settings
  Options: `0`, `1`
- `AuthMode` _String_ — Auth Mode
  Options: `0`, `1`, `2`
- `DisableApplicationUriCheck` _String_ — Flag used to disable the certificate ApplicationUri match check.
  Options: `0`, `1`
- `DisableEncryptedPasswordCheck` _String_ — Flag used to disable the check if the password of a UserPassword identity token is encrypted properly.
  Options: `0`, `1`
- `DisableErrorCertificateChainIncomplete` _String_ — Flag used to disable the certificate validation error BadCertificateChainIncomplete.
  Options: `0`, `1`
- `DisableErrorCertificateHostNameInvalid` _String_ — Flag used to disable the check if the hostname the client connected to matches one of the hostnames or IP addresses in the server certificate.
  Options: `0`, `1`
- `DisableErrorCertificateRevocationUnknown` _String_ — Flag used to disable the client certificate validation error BadCertificateRevocationUnknown.
  Options: `0`, `1`
- `DisableErrorCertificateTimeInvalid` _String_ — Flag used to disable the certificate validation error CertificateTimeInvalid.
  Options: `0`, `1`
- `DisableErrorCertificateUntrusted` _String_ — Flag used to disable the certificate validation error BadCertificateUntrusted.
  Options: `0`, `1`
- `DriverMode` _String_ — Driver Mode
  Options: `0`, `1`
- `SecurityMode` _String_ — Security Mode
  Options: `0`, `1`, `2`
- `SecurityPolicy` _String_ — Security Policy
  Options: `0`, `1`, `2`, `3`, `4`, `5`
- `ServerURL` _String_ — Server URL
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `LifetimeCount` _SignedInteger_ — The subscription lifetime count (SubscriptionLifetime = LifetimeCount * PublishingInterval)
- `LocaleId` _String_ — The locale ID requested for the session
  Options: `0`, `1`, `2`, `3`, `4`
- `MaxKeepAliveCount` _SignedInteger_ — If the server has no notifications pending for the period of time defined by * (MaxKeepAliveCount * PublishingInterval), the server will send a keep alive message to the client
- `MaxNotificationsPerPublish` _SignedInteger_ — The maximum number of notifications that the client wishes to receive in a single publish response
- `Password` _String_ — Password
- `Priority` _SignedInteger_ — The relative priority of this subscription within the session
- `PublishingInterval` _SignedInteger_ — The cyclic rate in milliseconds at which the subscription is being requested to return notifications to the client
- `SessionCertificate` _String_ — Session Certificate
- `SessionPrivateKey` _String_ — Session Private Key
- `UserCertificate` _String_ — User Auth Certificate (PEM format)
- `UserName` _String_ — User Name
- `UserPrivateKey` _String_ — User Auth Private Key (PEM format)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My OPC UA Client Advanced Device",
    "Description": "",
    "DriverID": "2372E68F-BA1B-46E9-BC07-E92CA006B377",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "AdvancedSettingsShowHide",
        "Value": "0"
      },
      {
        "Key": "AuthMode",
        "Value": "0"
      },
      {
        "Key": "DisableApplicationUriCheck",
        "Value": "0"
      },
      {
        "Key": "DisableEncryptedPasswordCheck",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateChainIncomplete",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateHostNameInvalid",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateRevocationUnknown",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateTimeInvalid",
        "Value": "0"
      },
      {
        "Key": "DisableErrorCertificateUntrusted",
        "Value": "0"
      },
      {
        "Key": "DriverMode",
        "Value": "0"
      },
      {
        "Key": "LifetimeCount",
        "Value": "2400"
      },
      {
        "Key": "LocaleId",
        "Value": "0"
      },
      {
        "Key": "MaxKeepAliveCount",
        "Value": "10"
      },
      {
        "Key": "MaxNotificationsPerPublish",
        "Value": "0"
      },
      {
        "Key": "Password",
        "Value": ""
      },
      {
        "Key": "Priority",
        "Value": "0"
      },
      {
        "Key": "PublishingInterval",
        "Value": "500"
      },
      {
        "Key": "SecurityMode",
        "Value": "0"
      },
      {
        "Key": "SecurityPolicy",
        "Value": "0"
      },
      {
        "Key": "ServerURL",
        "Value": "opc.tcp://192.168.1.100:4840"
      },
      {
        "Key": "SessionCertificate",
        "Value": "<certificate>"
      },
      {
        "Key": "SessionPrivateKey",
        "Value": "<certificate>"
      },
      {
        "Key": "UserCertificate",
        "Value": ""
      },
      {
        "Key": "UserName",
        "Value": ""
      },
      {
        "Key": "UserPrivateKey",
        "Value": ""
      },
      {
        "Key": "name",
        "Value": "OPC_UA_Client_Advanced_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My OPC UA Client Advanced Device",
            "DriverID": "2372E68F-BA1B-46E9-BC07-E92CA006B377",
            "Description": ""
        }
    }
}
```

---

## Create Device - OPCUA client

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

OPCUA client driver (Subscription)

**Driver ID:** `3FCB9EF2-D638-11E9-BB65-2A2AE2DBCCE4`
**Group:** OPCUA

**Required properties:**
- `networkAddress` _String_ — This is a IP Address of device.
- `Auth` _String_ — Authentication settings
  Options: `0`, `1`, `2`
- `Policy` _String_ — Policy
  Options: `0`, `1`, `2`, `3`, `4`, `5`
- `networkPort` _SignedInteger_ — This is a network port of device.
- `securityMode` _String_ — Security mode
  Options: `0`, `1`, `2`
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `UrlPath` _String_ — Concat this to discovery
- `subscribeUpdateMS` _SignedInteger_ — how often OPCUA server will send update of monitored values
- `Password` _String_ — Password for credentials mode
- `Show advanced config` _String_ — some additional advanced config, for specific cases
  Options: `0`, `1`
- `DefaultRoot` _String_ — From what node start browse
- `TimeoutSeconds` _SignedInteger_ — Timeout for requests
- `batchPublishTimeoutMS` _SignedInteger_ — how often it will check input queue on low through put of messages
- `maxNotificationsPerPublish` _SignedInteger_ — Max keep alive count
- `priority` _SignedInteger_ — Max keep alive count
- `Certificate` _String_ — This is autogenerated certificate. Replace if needed.
- `PrivateKey` _String_ — This is autogenerated certificate key. Replace if needed.
- `StatusHandling` _String_ — Status handling
  Options: `0`, `1`, `2`
- `lifetimeCount` _SignedInteger_ — Lifetime count
- `maxKeepAliveCount` _SignedInteger_ — Max keep alive count
- `TakeDiscoveryURL` _String_ — If true - ignore endpoints and try discovery host
  Options: `0`, `1`
- `Username` _String_ — Username for credentials mode
- `WorkerName` _String_ — Opcua worker name. If empty - will take first found
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My OPCUA client Device",
    "Description": "",
    "DriverID": "3FCB9EF2-D638-11E9-BB65-2A2AE2DBCCE4",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "UrlPath",
        "Value": ""
      },
      {
        "Key": "subscribeUpdateMS",
        "Value": "1000"
      },
      {
        "Key": "Password",
        "Value": ""
      },
      {
        "Key": "Show advanced config",
        "Value": "0"
      },
      {
        "Key": "DefaultRoot",
        "Value": "ns=0;i=84"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Auth",
        "Value": "0"
      },
      {
        "Key": "TimeoutSeconds",
        "Value": "10"
      },
      {
        "Key": "batchPublishTimeoutMS",
        "Value": "50"
      },
      {
        "Key": "maxNotificationsPerPublish",
        "Value": "10000"
      },
      {
        "Key": "priority",
        "Value": "0"
      },
      {
        "Key": "Policy",
        "Value": "0"
      },
      {
        "Key": "Certificate",
        "Value": "<certificate>"
      },
      {
        "Key": "PrivateKey",
        "Value": "<certificate>"
      },
      {
        "Key": "StatusHandling",
        "Value": "0"
      },
      {
        "Key": "lifetimeCount",
        "Value": "10000"
      },
      {
        "Key": "maxKeepAliveCount",
        "Value": "3000"
      },
      {
        "Key": "networkPort",
        "Value": "4840"
      },
      {
        "Key": "TakeDiscoveryURL",
        "Value": "0"
      },
      {
        "Key": "securityMode",
        "Value": "0"
      },
      {
        "Key": "Username",
        "Value": ""
      },
      {
        "Key": "WorkerName",
        "Value": ""
      },
      {
        "Key": "name",
        "Value": "opcua_client_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My OPCUA client Device",
            "DriverID": "3FCB9EF2-D638-11E9-BB65-2A2AE2DBCCE4",
            "Description": ""
        }
    }
}
```

---

## Create Device - OPCUA client Poll

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

OPCUA client driver (Polling)

**Driver ID:** `914FBF10-616F-11EB-AE93-0242AC130002`
**Group:** OPCUA

**Required properties:**
- `networkPort` _SignedInteger_ — This is a network port of device.
- `Auth` _String_ — Authentication settings
  Options: `0`, `1`, `2`
- `securityMode` _String_ — Security mode
  Options: `0`, `1`, `2`
- `networkAddress` _String_ — This is a IP Address of device.
- `Policy` _String_ — Policy
  Options: `0`, `1`, `2`, `3`, `4`, `5`
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `Certificate` _String_ — This is autogenerated certificate. Replace if needed.
- `UrlPath` _String_ — Concat this to discovery
- `TakeDiscoveryURL` _String_ — If true - ignore endpoints and try discovery host
  Options: `0`, `1`
- `Username` _String_ — Username for credentials mode
- `WorkerName` _String_ — Opcua worker name. If empty - will take first found
- `DefaultRoot` _String_ — From what node start browse
- `Password` _String_ — Password for credentials mode
- `PrivateKey` _String_ — This is autogenerated certificate key. Replace if needed.
- `TimeoutSeconds` _SignedInteger_ — Timeout for requests
- `Show advanced config` _String_ — some additional advanced config, for specific cases
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My OPCUA client Poll Device",
    "Description": "",
    "DriverID": "914FBF10-616F-11EB-AE93-0242AC130002",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "4840"
      },
      {
        "Key": "Auth",
        "Value": "0"
      },
      {
        "Key": "securityMode",
        "Value": "0"
      },
      {
        "Key": "Certificate",
        "Value": "<certificate>"
      },
      {
        "Key": "UrlPath",
        "Value": ""
      },
      {
        "Key": "TakeDiscoveryURL",
        "Value": "0"
      },
      {
        "Key": "Username",
        "Value": ""
      },
      {
        "Key": "WorkerName",
        "Value": ""
      },
      {
        "Key": "DefaultRoot",
        "Value": "ns=0;i=84"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Password",
        "Value": ""
      },
      {
        "Key": "PrivateKey",
        "Value": "<certificate>"
      },
      {
        "Key": "TimeoutSeconds",
        "Value": "10"
      },
      {
        "Key": "Policy",
        "Value": "0"
      },
      {
        "Key": "Show advanced config",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "opcua_client_poll_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My OPCUA client Poll Device",
            "DriverID": "914FBF10-616F-11EB-AE93-0242AC130002",
            "Description": ""
        }
    }
}
```

---

## Create Device - MQTT Client

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

# MQTT Client Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Required fields:** | > Broker Address
| | > Broker Port
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Supported device models:** | Compatible with Brokers >= MQTTv3 (only MQTTv4 features supported)
| **Miscellaneous:** | > Generated certificates are self-signed
| | > All payloads are escapable strings:  \\\\ , \\"  -> \ , "
| | > Message receive order is not guaranteed
| | > If Client ID is left blank, a random ID will be generated
| | > Client ID cannot be >23 chars for MQTTv3

**Driver ID:** `236E3A53-E133-48D6-96F4-D95E61C7592A`
**Group:** MQTT

**Required properties:**
- `CertificateAuthority` _String_ — CA Chain (PEM)
- `Password` _String_
- `WillTopic` _String_ — LWT Topic
- `WillPayload` _String_ — LWT String Payload
- `Port` _SignedInteger_ — Broker Port
- `ClientCertificate` _String_ — Client Certificate (PEM)
- `BrokerAddress` _String_ — Broker IP or Hostname
- `SecurePort` _SignedInteger_ — Broker SSL Port
- `Username` _String_
- `ClientPrivateKey` _String_ — Client Private Key (PEM)
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `WillRetained` _SignedInteger_ — Retain LWT Message
  Options: `0`, `1`
- `Advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `SecurityMode` _SignedInteger_ — SSL Mode
  Options: `0`, `1`
- `PersistentSession` _SignedInteger_ — Persistent Session with Broker
  Options: `0`, `1`
- `CertificateVerification` _SignedInteger_ — Broker Certificate & Hostname Verification
  Options: `0`, `1`
- `MinTLSVersion` _SignedInteger_ — Minimum TLS Version
  Options: `0`, `1`, `2`, `3`
- `KeepAlivePeriod` _SignedInteger_ — Keep-Alive Period (s)
- `WillEnabled` _SignedInteger_ — Enable LWT Message
  Options: `0`, `1`
- `ProtocolVersion` _SignedInteger_ — MQTT Protocol Version
  Options: `0`, `1`, `2`
- `ClientID` _String_ — MQTT Client ID
- `WriteTimeout` _SignedInteger_ — Write Timeout (s)
- `ConnectTimeout` _SignedInteger_ — Connect Timeout (s)
- `ClientAuthentication` _SignedInteger_ — Authentication Mode
  Options: `0`, `1`, `2`, `3`
- `WillQos` _SignedInteger_ — LWT Qos
  Options: `0`, `1`, `2`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "__doc_MQTT_Client_200931899283",
    "Description": "Documentation placeholder for MQTT Client \u2014 safe to delete",
    "DriverID": "236E3A53-E133-48D6-96F4-D95E61C7592A",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "WillRetained",
        "Value": "0"
      },
      {
        "Key": "Advanced",
        "Value": "0"
      },
      {
        "Key": "SecurityMode",
        "Value": "0"
      },
      {
        "Key": "CertificateAuthority",
        "Value": ""
      },
      {
        "Key": "Password",
        "Value": "password"
      },
      {
        "Key": "WillTopic",
        "Value": "/example/path"
      },
      {
        "Key": "PersistentSession",
        "Value": "0"
      },
      {
        "Key": "CertificateVerification",
        "Value": ""
      },
      {
        "Key": "MinTLSVersion",
        "Value": "0"
      },
      {
        "Key": "KeepAlivePeriod",
        "Value": "30"
      },
      {
        "Key": "WillEnabled",
        "Value": "0"
      },
      {
        "Key": "WillPayload",
        "Value": "placeholder_willpayload"
      },
      {
        "Key": "ProtocolVersion",
        "Value": "0"
      },
      {
        "Key": "ClientID",
        "Value": ""
      },
      {
        "Key": "Port",
        "Value": "1883"
      },
      {
        "Key": "ClientCertificate",
        "Value": "-----BEGIN CERTIFICATE-----\nMIIDezCCAmOgAwIBAgIRAJZ2WQXP86zhFetJu59ilSIwDQYJKoZIhvcNAQELBQAw\nOTEUMBIGA1UEChMLbXF0dC1jbGllbnQxITAfBgNVBAMTGGxpdG11cy1lZGdlLTAw\nNTA1NmI5YjY3ODAeFw0yNjAyMTkxOTQzMzJaFw0yNzAyMTkxOTQzMzJaMDkxFDAS\nBgNVBAoTC21xdHQtY2xpZW50MSEwHwYDVQQDExhsaXRtdXMtZWRnZS0wMDUwNTZi\nOWI2NzgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDS3vebm6+Dgn8C\nIh9/QF3hyklVZneRSFXC8T5+bNQ8KajcBHLMqbS3lR3IOxStSmV0fHbOnp1sdwnX\n9sVxqQ/fR4chtC0YKAZKiXQBRrUw37tU5v6sbxy3+8nNx8VPNmd1NIrlR6Cete8k\nqoEaQi2HABveGYWewTaw73LuzqgX8wEKKWITbr0SaZ8ACQH2yTAVBevk2iaD6xDn\nyxwo+vL7aidW7+S/7OoqMv9+WcvoIEIrkZ5knBULBBqZmt+hLiRzlrSnXc2lTMf6\noY5KvA2GqTPqFrNfDCDNsygHmFvXwSNlq2U2ggPEwzOYHpqjsfhf5g+2UrgEmGsj\nEOSoX+QzAgMBAAGjfjB8MA4GA1UdDwEB/wQEAwIC9DAdBgNVHSUEFjAUBggrBgEF\nBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADA9BgNVHREENjA0ghhsaXRtdXMt\nZWRnZS0wMDUwNTZiOWI2NziGGGxpdG11cy1lZGdlLTAwNTA1NmI5YjY3ODANBgkq\nhkiG9w0BAQsFAAOCAQEAxSrPI9g7M4LBBxmplNstvJeyMMX/OA1cQ6qLUZMovaRU\njzStez+vkro+7SF7l3W7I/gvIDEp44kyYG1WeIQHrd/FDn8m74+GhKwH59eaGUaw\nG2oYFTMy9tVPA65ZpOdKdT50Qz8ZXWWzoDLCzjBYdkv4l6v42DF0Gm9ve+Jin09x\nIpj3s0tBeWeoP7L5Qh8ZXCM0DJ6dJcXHrMsuga1iZeOm4Y/2jIaJ8zjZlPU4BEIW\nM8FgkAXEmlta3S06TuY0sHFAcpXofiWxuKMsGrUzVzcp/EmJRRUCpR01PF62kAlW\nblqZzQw2CUp0jWPqNuuLtw0wIWSZ28lNy3RbB2eguA==\n-----END CERTIFICATE-----\n"
      },
      {
        "Key": "WriteTimeout",
        "Value": "10"
      },
      {
        "Key": "ConnectTimeout",
        "Value": "10"
      },
      {
        "Key": "BrokerAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "SecurePort",
        "Value": "8883"
      },
      {
        "Key": "ClientAuthentication",
        "Value": "0"
      },
      {
        "Key": "Username",
        "Value": "admin"
      },
      {
        "Key": "ClientPrivateKey",
        "Value": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEA0t73m5uvg4J/AiIff0Bd4cpJVWZ3kUhVwvE+fmzUPCmo3ARy\nzKm0t5UdyDsUrUpldHx2zp6dbHcJ1/bFcakP30eHIbQtGCgGSol0AUa1MN+7VOb+\nrG8ct/vJzcfFTzZndTSK5UegnrXvJKqBGkIthwAb3hmFnsE2sO9y7s6oF/MBCili\nE269EmmfAAkB9skwFQXr5Nomg+sQ58scKPry+2onVu/kv+zqKjL/flnL6CBCK5Ge\nZJwVCwQamZrfoS4kc5a0p13NpUzH+qGOSrwNhqkz6hazXwwgzbMoB5hb18EjZatl\nNoIDxMMzmB6ao7H4X+YPtlK4BJhrIxDkqF/kMwIDAQABAoIBADnPC2V68Epmx4ff\nr+/URwiDysfhP+0xveUj+sRw9FwL9bFffNNTwOnFNPV0EO6S4y5kgrORM0oNdkLg\n8W7/8Ix/EPIx8VzaeCMN/KHu7vRXmYUkkHPYQDDGE6RY3GQjX4h3n45MrSFlcgqE\nvcDjnJSSeJFSQNntUR9/fWwvdlCd+8g5FIG3c38MsguD/u5llYwW4/Iac5k63RKc\npHGkx9/EOEDxjRNAVTlElo7DgonHiPRptUi2WHc8THYVWPqn1dfIRTyEZ/mSvjYn\naquyP2DQ8n+zHpjCCg8ivC6H1LaquP1w2nKwQc4WFgdNDUxf420k83+MJ34/66Ij\n8Jj/nXkCgYEA8y9L2R6YfvMTnKG2QDzp+snPXxLoWAELwZ7U3xh85SNjRe2fQcT8\nXe4dDOIzyqAqEsPm+82prxnaCYS6Cdlm+CYax6M9A/+z5rVPawGLoSySIV5lxfg/\nky0Eucs6QhzVJ0FCXuMKEzfBBHk64zK07QEInOwR6GWwSGHEKXyjrosCgYEA3fu9\nOtVcrS8oDkNdM6rq6hCqeF+MzTZFiHG1z+Lxbtk+ailOKDdFJmlp5Ynx2a4Cldqo\nn4x1PBejp9IXCyRRsTTEnZNGqTPpFtVRGaUfiZURcmNCNd2CrukEneE7ghorHm3z\nQq0N9vjb2nL6MUpfKC5ZjYrF2dakV4gTZAw8PfkCgYBrESm9wAC38+FwlqodAjSp\n2+xXGYX+KQe6CWoDh06Fu9zbTtFNLaNG360enQDcd0PO2z15I4VPuHwMsMkPyQ3S\nt0QXHUGh3xSfwLfkjtug7HSyCFOao7+p1qo7+sP9k6AtFkhYanFnIKb0h0NsAEk0\nB755CF6iCRNh6tlowp12HQKBgCZoJt5mCgngzdJh719AJDLpPUVkas0apb8sxWM5\nhcJDDhx6Fw64OVujA3J2goTCKapZ0bEBMUt7X5JqtBf2abf6REZrM9+UnrCXqdeB\nDUrVotYivFLrh2/R2z2huZUSCAHUzjDsFi1z8z4BhK5AiuQ92Lq3lvHQxFBst8Yo\no8epAoGAZnUITf5k1kycfVO6g1dHKVsDRpLGKfxAt9VQCXu+1aE9kPcifeVd/LEw\nJeqIrZa/uycCtADsb9J/vGC4fOSHkIvhAVaHighNs7qV1area/OrGQdDhEonLPuX\neEBYXaedy1FBhjYP3HzEdOmDC0hwg0c99FmIhPYqjqdEF6+Gzls=\n-----END RSA PRIVATE KEY-----\n"
      },
      {
        "Key": "WillQos",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "MQTT-client_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{"errors": [{"message": "Core.AddDevice:validation error", "path": ["CreateDevice"]}], "data": null}
```

---

## Create Device - Generic Device (No TLS)

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

# Generic Device Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Connection Settings (TCP, UDP or Serial)
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | 
| **Requests:** | > Poll: Execute at interval, or when triggered
| | > Write: Execute when triggered
| | > Stream: Initiate connection, execute request, parse responses on receipt
| | > Response: Parse additional value from existing Poll/Stream requests
| **Payload:** | > Request payload formatted as "Hex-String"
| | > Hex-String: string of valid hexadecimal characters: 0123456789ABCDEF
| | > example: ABCD1234 -> encoded in binary exactly as seen
| | > with Params: ABCD\<address\> -> "address" param injected, binary encoding
| | > with ASCII: ABCD"PROTO"123 -> quoted segments, ascii encoding
| | > all ASCII: "HEADER-$%*-123-TAIL" -> entire payload, ascii encoding
| **Parameters:** | > Session or Request params formatted as JSON (string values only)
| | > Request params take precedence over Session params, if duplicate
| | > Keys like "address" or "areaCode", can be used in request: ...\<areaCode\>\<address\>...
| | > Numeric params can be decimal/hexadecimal/octal, but must be in "string" form with appropriate prefix
| | > Bit length inferred from padded length: "0x0012" or "0018" -> encoded as uint16(18)
| | > Bit lengths supported: 4/8/16/24/32/64
| | > Params wrapped with \\\"\\\", encoded as ascii: { "areaType": "\"MEM_AREA\"" }
| | > Params injected within ascii segment of payload, converted to ascii: ..."\<addr\>"... -> ..."1234"...
| **Parsing:** | > Start Index: 0-Indexed start of values, within response. Combined with value count, defines minimum response length (-1 to skip read)
| | > Value Count: Count of typed values to parse from response. If response is too short, reads will fail.
| | > Value Length: (Strings-Only) Defines length of single value in bytes (0 for entire response)
| | > Request Tag: Datahub Tag name for target request tag
| | > Regex: Run 'FindAllSubmatch' on the response (RE2 semantics)
| | > Regex Match Num: Index of 'FindAll' match
| | > Regex Group Num: Index of 'Submatch' group
| **Register Settings:** | 
| | > Request Tag: For "Response" registers, link to DH tag of target request
| | > Override Transport: Define alternate endpoint for single request, connection is not persistent

**Driver ID:** `2ED8A8E1-1DF4-481A-9033-03F6E8E9456E`
**Group:** Generic

**Required properties:**
- `clientCertificate` _String_ — Client Certificate (PEM)
- `clientPrivateKey` _String_ — Client Private Key (PEM)
- `connectionPayload` _String_ — Connection Request (Hex String)
- `networkPort` _SignedInteger_ — Port
- `networkAddress` _String_ — IP Address
- `deviceFile` _String_ — Path to Device
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `RetryCount` _SignedInteger_ — Retry request count
- `ReadTimeout` _SignedInteger_ — Request timeout, msec
- `MultipleConnections` _SignedInteger_ — Enable if using multiple streams
  Options: `0`, `1`
- `certificateVerification` _SignedInteger_ — Verify server certificate
  Options: `0`, `1`
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `PauseBetweenRetries` _SignedInteger_ — Pause between retries, msec
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `Transport` _SignedInteger_ — Transport Type
  Options: `0`, `1`, `2`
- `certificateAuthority` _String_ — CA Chain (PEM)
- `enableTLS` _SignedInteger_ — Enable TLS
  Options: `0`, `1`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `enableMutualTLS` _SignedInteger_ — Enable mTLS / Client Certificate
  Options: `0`, `1`
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `responseIndex` _SignedInteger_ — Response Parsing - Start Index
- `protocolByteOrder` _SignedInteger_ — Protocol Endianness
  Options: `0`, `1`, `2`, `3`
- `dataByteOrder` _SignedInteger_ — Default Data Endianness
  Options: `0`, `1`, `2`, `3`
- `sessionParams` _Text_ — Session Parameters (JSON)
- `connectionRequest` _SignedInteger_ — Enable Connection Request
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Generic Device Device (No TLS)",
    "Description": "",
    "DriverID": "2ED8A8E1-1DF4-481A-9033-03F6E8E9456E",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "MultipleConnections",
        "Value": "1"
      },
      {
        "Key": "PauseBetweenRetries",
        "Value": "0"
      },
      {
        "Key": "Transport",
        "Value": "0"
      },
      {
        "Key": "protocolByteOrder",
        "Value": "0"
      },
      {
        "Key": "dataByteOrder",
        "Value": "0"
      },
      {
        "Key": "sessionParams",
        "Value": ""
      },
      {
        "Key": "connectionRequest",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "generic-device_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Generic Device Device (No TLS)",
            "DriverID": "2ED8A8E1-1DF4-481A-9033-03F6E8E9456E",
            "Description": ""
        }
    }
}
```

---

## Create Device - REST Client (No TLS)

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

# REST Client Driver
| <!-- -->                 | <!-- -->                                                                                |
|--------------------------|-----------------------------------------------------------------------------------------|
| **Browse devices supported** | No |
| **Browse tags supported**    | No |
| **Driver Settings** | > Server Connection Settings: Address, Port, Authentication, TLS
| | **Common Request Settings:** |
| | > Path: Root URL Path for all requests |
| | > Headers: Common HTTP Headers (JSON-encoded) |
| | > Path Params: Common HTTP Path Parameters (JSON-encoded) |
| | > Query Params: Common HTTP Query Parameters (Parameter-string or JSON-encoded) e.g. p1=xyz&p2=2 or {"p1":"xyz","p2":"2"} |
| **Tag Settings** | **Request Settings:** |
| | > Type: (GET, POST) |
| | > Path: Request URL Path, follows common path |
| | > Parameters Settings: Appends/Overwrites common parameters |
| | > Payload: HTTP request body, usually for POST-only requests |
| | > Response Parse Pattern: Target path within JSON response body (JSONPath encoded) e.g. $.fieldA.fieldB\[0\].xyz or $\['field-a'\]\['field-b'\]\[0\]\['xyz'\] |
| | > Allow Multiple Matches: When using wildcards in parse pattern, yield all matches (default: disabled, first-only) |
| | > Allow Empty Matches: When using wildcards in parse pattern, don't yield error when no matches are found (default: disabled, yield-error) |

**Driver ID:** `8FE812E2-C026-4CC8-9C9F-4D3C59CC31E9`
**Group:** Generic

**Required properties:**
- `username` _String_ — Username
- `password` _String_ — Password
- `oauth2TokenEndpoint` _String_ — Authorization Server URL
- `clientCertificate` _String_ — Client Certificate (PEM)
- `clientPrivateKey` _String_ — Client Private Key (PEM)
- `bearerToken` _String_ — Client Token
- `oauth2ClientID` _String_ — Client Identifier registered to the application
- `networkAddress` _String_ — Server Hostname or IP
- `networkPort` _SignedInteger_ — Server Port
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `urlPath` _String_ — Common URL Path
- `oauth2ClientSecret` _String_ — Client Secret registered to the application
- `certificateAuthority` _String_ — CA Chain (PEM)
- `authSchemeOverride` _String_ — Authorization header scheme/prefix override
- `enableTLS` _SignedInteger_ — Enable TLS / HTTPS
  Options: `0`, `1`
- `certificateVerification` _SignedInteger_ — Verify server certificate
  Options: `0`, `1`
- `headers` _String_ — Common HTTP Headers (JSON)
- `pathParams` _String_ — Common HTTP Path Parameters (JSON)
- `requestRetryCount` _SignedInteger_ — Retry request count
- `authenticationType` _SignedInteger_ — Authentication Type
  Options: `0`, `1`, `2`, `3`, `4`
- `oauth2TokenParams` _String_ — Additional token endpoint parameters (JSON or Parameter string)
- `enableMutualTLS` _SignedInteger_ — Enable mTLS / Client Certificate
  Options: `0`, `1`
- `queryParams` _String_ — Common HTTP Query Parameters (JSON or Parameter string)
- `requestTimeout` _SignedInteger_ — Request timeout, msec
- `requestRetryWaitMS` _SignedInteger_ — Pause between retries, msec
- `oauth2Scopes` _String_ — Access request scope(s) (space separated values)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My REST Client Device (No TLS)",
    "Description": "",
    "DriverID": "8FE812E2-C026-4CC8-9C9F-4D3C59CC31E9",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "urlPath",
        "Value": "/example/path"
      },
      {
        "Key": "enableTLS",
        "Value": "0"
      },
      {
        "Key": "headers",
        "Value": ""
      },
      {
        "Key": "pathParams",
        "Value": ""
      },
      {
        "Key": "requestRetryCount",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "authenticationType",
        "Value": "0"
      },
      {
        "Key": "queryParams",
        "Value": ""
      },
      {
        "Key": "requestTimeout",
        "Value": "2000"
      },
      {
        "Key": "requestRetryWaitMS",
        "Value": "100"
      },
      {
        "Key": "networkPort",
        "Value": "80"
      },
      {
        "Key": "name",
        "Value": "rest-client_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My REST Client Device (No TLS)",
            "DriverID": "8FE812E2-C026-4CC8-9C9F-4D3C59CC31E9",
            "Description": ""
        }
    }
}
```

---

## Create Device - Scale (No TLS)

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

# Mettler Scale Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Required fields:** | > Connection Settings (TCP, UDP or Serial)
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | 
| **Requests:** | > Poll: Execute at interval, or when triggered
| | > Write: Execute when triggered
| | > Stream: Initiate connection, execute request, parse responses on receipt
| | > Response: Parse additional value from existing Poll/Stream requests
| **Payload:** | > Request payload formatted as "Hex-String"
| | > Hex-String: string of valid hexadecimal characters: 0123456789ABCDEF
| | > example: ABCD1234 -> encoded in binary exactly as seen
| | > with Params: ABCD\<address\> -> "address" param injected, binary encoding
| | > with ASCII: ABCD"PROTO"123 -> quoted segments, ascii encoding
| | > all ASCII: "HEADER-$%*-123-TAIL" -> entire payload, ascii encoding
| **Parameters:** | > Session or Request params formatted as JSON (string values only)
| | > Request params take precedence over Session params, if duplicate
| | > Keys like "address" or "areaCode", can be used in request: ...\<areaCode\>\<address\>...
| | > Numeric params can be decimal/hexadecimal/octal, but must be in "string" form with appropriate prefix
| | > Bit length inferred from padded length: "0x0012" or "0018" -> encoded as uint16(18)
| | > Bit lengths supported: 4/8/16/24/32/64
| | > Params wrapped with \\\"\\\", encoded as ascii: { "areaType": "\"MEM_AREA\"" }
| | > Params injected within ascii segment of payload, converted to ascii: ..."\<addr\>"... -> ..."1234"...
| **Parsing:** | > Start Index: 0-Indexed start of values, within response. Combined with value count, defines minimum response length (-1 to skip read)
| | > Value Count: Count of typed values to parse from response. If response is too short, reads will fail.
| | > Value Length: (Strings-Only) Defines length of single value in bytes (0 for entire response)
| | > Request Tag: Datahub Tag name for target request tag
| | > Regex: Run 'FindAllSubmatch' on the response (RE2 semantics)
| | > Regex Match Num: Index of 'FindAll' match
| | > Regex Group Num: Index of 'Submatch' group
| **Register Settings:** | 
| | > Request Tag: For "Response" registers, link to DH tag of target request
| | > Override Transport: Define alternate endpoint for single request, connection is not persistent
| | > Decimal Regex: Parsing decimal position, for float values

**Driver ID:** `F88D5FAE-A0C2-4B83-94FE-8F23915A390E`
**Group:** Generic

**Required properties:**
- `clientCertificate` _String_ — Client Certificate (PEM)
- `connectionPayload` _String_ — Connection Request (Hex String)
- `networkAddress` _String_ — IP Address
- `deviceFile` _String_ — Path to Device
- `networkPort` _SignedInteger_ — Port
- `clientPrivateKey` _String_ — Client Private Key (PEM)
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `enableTLS` _SignedInteger_ — Enable TLS
  Options: `0`, `1`
- `PauseBetweenRetries` _SignedInteger_ — Pause between retries, msec
- `connectionRequest` _SignedInteger_ — Enable Connection Request
  Options: `0`, `1`
- `responseIndex` _SignedInteger_ — Response Parsing - Start Index
- `dataByteOrder` _SignedInteger_ — Default Data Endianness
  Options: `0`, `1`, `2`, `3`
- `stopBits` _SignedInteger_ — Stop Bits
  Options: `0`, `1`, `2`
- `certificateVerification` _SignedInteger_ — Verify server certificate
  Options: `0`, `1`
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `parity` _SignedInteger_ — Parity
  Options: `0`, `1`, `2`, `3`, `4`
- `ReadTimeout` _SignedInteger_ — Request timeout, msec
- `sessionParams` _Text_ — Session Parameters (JSON)
- `protocolByteOrder` _SignedInteger_ — Protocol Endianness
  Options: `0`, `1`, `2`, `3`
- `enableMutualTLS` _SignedInteger_ — Enable mTLS / Client Certificate
  Options: `0`, `1`
- `dataBits` _SignedInteger_ — Data Bits
  Options: `0`, `1`, `2`, `3`
- `RetryCount` _SignedInteger_ — Retry request count
- `baudRate` _SignedInteger_ — Baud Rate
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`
- `certificateAuthority` _String_ — CA Chain (PEM)
- `Transport` _SignedInteger_ — Transport Type
  Options: `0`, `1`, `2`
- `MultipleConnections` _SignedInteger_ — Enable if using multiple streams
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Scale Device (No TLS)",
    "Description": "",
    "DriverID": "F88D5FAE-A0C2-4B83-94FE-8F23915A390E",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "PauseBetweenRetries",
        "Value": "0"
      },
      {
        "Key": "connectionRequest",
        "Value": "1"
      },
      {
        "Key": "dataByteOrder",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "sessionParams",
        "Value": ""
      },
      {
        "Key": "protocolByteOrder",
        "Value": "0"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "Transport",
        "Value": "0"
      },
      {
        "Key": "MultipleConnections",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "mettler-scale_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Scale Device (No TLS)",
            "DriverID": "F88D5FAE-A0C2-4B83-94FE-8F23915A390E",
            "Description": ""
        }
    }
}
```

---

## Create Device - Keyence Nano (No TLS)

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

# Keyence Nano Driver
| <!-- -->                 | <!-- -->                                                       |
|--------------------------|----------------------------------------------------------------|
| Prerequisites            | None                                                           |
| Required fields          | Network address<br>Network Port                                |
| Browse devices supported | No                                                             |
| Browse tags supported    | No                                                             |

**Driver ID:** `CC3EDEED-0DBD-47B5-A057-7CD2F04668EA`
**Group:** Keyence

**Required properties:**
- `networkPort` _SignedInteger_ — Port
- `clientPrivateKey` _String_ — Client Private Key (PEM)
- `networkAddress` _String_ — IP Address
- `clientCertificate` _String_ — Client Certificate (PEM)
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `Transport` _SignedInteger_ — Transport Type
  Options: `0`
- `ReadTimeout` _SignedInteger_ — Request timeout, msec
- `RetryCount` _SignedInteger_ — Retry request count
- `enableTLS` _SignedInteger_ — Enable TLS
  Options: `0`, `1`
- `enableMutualTLS` _SignedInteger_ — Enable mTLS / Client Certificate
  Options: `0`, `1`
- `certificateVerification` _SignedInteger_ — Verify server certificate
  Options: `0`, `1`
- `certificateAuthority` _String_ — CA Chain (PEM)
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `PauseBetweenRetries` _SignedInteger_ — Pause between retries, msec
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Keyence Nano Device (No TLS)",
    "Description": "",
    "DriverID": "CC3EDEED-0DBD-47B5-A057-7CD2F04668EA",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Transport",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "networkPort",
        "Value": "8501"
      },
      {
        "Key": "enableTLS",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "KeepAlive",
        "Value": "60"
      },
      {
        "Key": "PauseBetweenRetries",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "keyence-nano_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Keyence Nano Device (No TLS)",
            "DriverID": "CC3EDEED-0DBD-47B5-A057-7CD2F04668EA",
            "Description": ""
        }
    }
}
```

---

## Create Device - Industrial OT Server (No TLS)

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

Industrial OT Server Driver

**Driver ID:** `A206D802-2E0B-4C14-A38A-353F666FCF0C`
**Group:** MQTT

**Required properties:**
- `User` _String_ — User
- `Password` _String_ — Password
- `MqttInterface` _String_ — MQTT Interface
- `MqttSSLInterface` _String_ — MQTT SSL Interface
- `ServerCertificate` _String_ — Broker Certificate (PEM)
- `MqttPort` _SignedInteger_ — MQTT Port
- `MqttSSLPort` _SignedInteger_ — MQTT SSL Port
- `ServerPrivateKey` _String_ — Broker Private Key (PEM)
- `CertificateAuthority` _String_ — CA Chain (PEM)
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `RequireClientCertificate` _SignedInteger_ — Require Client CA
  Options: `0`, `1`
- `Advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `MinTLSVersion` _SignedInteger_ — Minimum TLS Version
  Options: `0`, `1`, `2`, `3`
- `EnableUserPassword` _SignedInteger_ — Enable Authentification (User/Password)
  Options: `0`, `1`
- `EnableMqtt` _SignedInteger_ — Enable MQTT at Port
  Options: `0`, `1`
- `EnableMqttSSL` _SignedInteger_ — Enable MQTT SSL at Port
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Industrial OT Server Device (No TLS)",
    "Description": "",
    "DriverID": "A206D802-2E0B-4C14-A38A-353F666FCF0C",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Advanced",
        "Value": "1"
      },
      {
        "Key": "MqttInterface",
        "Value": "0.0.0.0"
      },
      {
        "Key": "MqttSSLInterface",
        "Value": "0.0.0.0"
      },
      {
        "Key": "EnableUserPassword",
        "Value": "1"
      },
      {
        "Key": "EnableMqtt",
        "Value": "0"
      },
      {
        "Key": "MqttPort",
        "Value": "1883"
      },
      {
        "Key": "EnableMqttSSL",
        "Value": "0"
      },
      {
        "Key": "MqttSSLPort",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "Industrial-OT-server_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Industrial OT Server Device (No TLS)",
            "DriverID": "A206D802-2E0B-4C14-A38A-353F666FCF0C",
            "Description": ""
        }
    }
}
```

---

## Create Device - MQTT Client (No TLS)

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

# MQTT Client Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Required fields:** | > Broker Address
| | > Broker Port
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Supported device models:** | Compatible with Brokers >= MQTTv3 (only MQTTv4 features supported)
| **Miscellaneous:** | > Generated certificates are self-signed
| | > All payloads are escapable strings:  \\\\ , \\"  -> \ , "
| | > Message receive order is not guaranteed
| | > If Client ID is left blank, a random ID will be generated
| | > Client ID cannot be >23 chars for MQTTv3

**Driver ID:** `236E3A53-E133-48D6-96F4-D95E61C7592A`
**Group:** MQTT

**Required properties:**
- `CertificateAuthority` _String_ — CA Chain (PEM)
- `Password` _String_
- `WillTopic` _String_ — LWT Topic
- `WillPayload` _String_ — LWT String Payload
- `Port` _SignedInteger_ — Broker Port
- `ClientCertificate` _String_ — Client Certificate (PEM)
- `BrokerAddress` _String_ — Broker IP or Hostname
- `SecurePort` _SignedInteger_ — Broker SSL Port
- `Username` _String_
- `ClientPrivateKey` _String_ — Client Private Key (PEM)
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `WillRetained` _SignedInteger_ — Retain LWT Message
  Options: `0`, `1`
- `Advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `SecurityMode` _SignedInteger_ — SSL Mode
  Options: `0`, `1`
- `PersistentSession` _SignedInteger_ — Persistent Session with Broker
  Options: `0`, `1`
- `CertificateVerification` _SignedInteger_ — Broker Certificate & Hostname Verification
  Options: `0`, `1`
- `MinTLSVersion` _SignedInteger_ — Minimum TLS Version
  Options: `0`, `1`, `2`, `3`
- `KeepAlivePeriod` _SignedInteger_ — Keep-Alive Period (s)
- `WillEnabled` _SignedInteger_ — Enable LWT Message
  Options: `0`, `1`
- `ProtocolVersion` _SignedInteger_ — MQTT Protocol Version
  Options: `0`, `1`, `2`
- `ClientID` _String_ — MQTT Client ID
- `WriteTimeout` _SignedInteger_ — Write Timeout (s)
- `ConnectTimeout` _SignedInteger_ — Connect Timeout (s)
- `ClientAuthentication` _SignedInteger_ — Authentication Mode
  Options: `0`, `1`, `2`, `3`
- `WillQos` _SignedInteger_ — LWT Qos
  Options: `0`, `1`, `2`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My MQTT Client Device (No TLS)",
    "Description": "",
    "DriverID": "236E3A53-E133-48D6-96F4-D95E61C7592A",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Advanced",
        "Value": "1"
      },
      {
        "Key": "SecurityMode",
        "Value": "1"
      },
      {
        "Key": "WillEnabled",
        "Value": "1"
      },
      {
        "Key": "ClientID",
        "Value": ""
      },
      {
        "Key": "Port",
        "Value": "1883"
      },
      {
        "Key": "BrokerAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "ClientAuthentication",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "MQTT-client_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My MQTT Client Device (No TLS)",
            "DriverID": "236E3A53-E133-48D6-96F4-D95E61C7592A",
            "Description": ""
        }
    }
}
```

---

## Create Device - Opto22 CONT Protocol Ethernet (No TLS)

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

# Opto22 CONT Protocol Ethernet Driver
| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| **Required fields:** | > Connection Settings (TCP)
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | OPTO 22 SNAP PAC S1 
| **Register Settings:** | > Register Name: e.g. "PLC_Tag" or "PLC_ArrayTag\[1\]" or "PLC_ArrayTag\[0-4\]"
| | > String arrays not supported
| | > Pointer register names must be prepended with "PTR_"
| | > Pointer tables are not supported

**Driver ID:** `43F4ED55-823C-48DC-AB3A-F64E8139BB07`
**Group:** Opto Devices

**Required properties:**
- `networkAddress` _String_ — IP Address
- `clientPrivateKey` _String_ — Client Private Key (PEM)
- `clientCertificate` _String_ — Client Certificate (PEM)
- `networkPort` _SignedInteger_ — Port
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `enableMutualTLS` _SignedInteger_ — Enable mTLS / Client Certificate
  Options: `0`, `1`
- `Transport` _SignedInteger_ — Transport Type
  Options: `0`
- `certificateAuthority` _String_ — CA Chain (PEM)
- `RetryCount` _SignedInteger_ — Retry request count
- `PauseBetweenRetries` _SignedInteger_ — Pause between retries, msec
- `ReadTimeout` _SignedInteger_ — Request timeout, msec
- `enableTLS` _SignedInteger_ — Enable TLS
  Options: `0`, `1`
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `certificateVerification` _SignedInteger_ — Verify server certificate
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Opto22 CONT Protocol Ethernet Device (No TLS)",
    "Description": "",
    "DriverID": "43F4ED55-823C-48DC-AB3A-F64E8139BB07",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Transport",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "PauseBetweenRetries",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "enableTLS",
        "Value": "0"
      },
      {
        "Key": "KeepAlive",
        "Value": "60"
      },
      {
        "Key": "networkPort",
        "Value": "22001"
      },
      {
        "Key": "name",
        "Value": "opto22-cont_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Opto22 CONT Protocol Ethernet Device (No TLS)",
            "DriverID": "43F4ED55-823C-48DC-AB3A-F64E8139BB07",
            "Description": ""
        }
    }
}
```

---

## Create Device - ABB Robot Web Services (No TLS)

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

# ABB Robot Web Services Controller
| <!-- -->                 | <!-- -->                                                                                |
|--------------------------|-----------------------------------------------------------------------------------------|
| **Browse devices supported** | No |
| **Browse tags supported**    | No |
| **Driver Settings** | > Server Connection Settings: Address, Port, Authentication, TLS
| | **Common Request Settings:** |
| | > Path: Root URL Path for all requests |
| | > Headers: Common HTTP Headers (JSON-encoded) |
| | > Path Params: Common HTTP Path Parameters (JSON-encoded) |
| | > Query Params: Common HTTP Query Parameters (Parameter-string or JSON-encoded) e.g. p1=xyz&p2=2 or {"p1":"xyz","p2":"2"} |
| | > WebSocket Timeout: Keepalive interval for websocket connections |
| **Tag Settings** | **Request Settings:** |
| | > Type: (GET, POST) |
| | > Path: Request URL Path, follows common path |
| | > Parameters Settings: Appends/Overwrites common parameters |
| | > Payload: HTTP request body, usually for POST-only requests |
| | > Response Parse Pattern: Target path within JSON response body (JSONPath encoded) e.g. $.fieldA.fieldB\[0\].xyz or $\['field-a'\]\['field-b'\]\[0\]\['xyz'\] |
| | > Allow Multiple Matches: When using wildcards in parse pattern, yield all matches (default: disabled, first-only) |
| | > Allow Empty Matches: When using wildcards in parse pattern, don't yield error when no matches are found (default: disabled, yield-error) |
| | **Subscription Settings:** |
| | > Resource: Target path, with optional field specification (e.g. "/rw/rapid/tasks/T_ROB1;excstate")
| | > Message Parse Pattern: Default will attempt to unpack the most important information from the subscription payload
| | > Parse Result Index: Index within parse pattern results
| | > RobotStudio subscription payloads are always converted from XML to JSON
| | > Each subscription creates a new session with the server. This may be limited.

**Driver ID:** `97A7485B-816E-4F89-8155-48617608CC28`
**Group:** Robot

**Required properties:**
- `bearerToken` _String_ — Client Token
- `password` _String_ — Password
- `username` _String_ — Username
- `clientCertificate` _String_ — Client Certificate (PEM)
- `networkAddress` _String_ — Server Hostname or IP
- `networkPort` _SignedInteger_ — Server Port
- `oauth2ClientID` _String_ — Client Identifier registered to the application
- `clientPrivateKey` _String_ — Client Private Key (PEM)
- `oauth2TokenEndpoint` _String_ — Authorization Server URL
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `requestRetryWaitMS` _SignedInteger_ — Pause between retries, msec
- `oauth2TokenParams` _String_ — Additional token endpoint parameters (JSON or Parameter string)
- `enableTLS` _SignedInteger_ — Enable TLS / HTTPS
  Options: `0`, `1`
- `certificateVerification` _SignedInteger_ — Verify server certificate
  Options: `0`, `1`
- `requestTimeout` _SignedInteger_ — Request timeout, msec
- `requestRetryCount` _SignedInteger_ — Retry request count
- `urlPath` _String_ — Common URL Path
- `enableMutualTLS` _SignedInteger_ — Enable mTLS / Client Certificate
  Options: `0`, `1`
- `headers` _String_ — Common HTTP Headers (JSON)
- `websocketTimeout` _SignedInteger_ — WebSocket Subscription Timeout, S
- `authSchemeOverride` _String_ — Authorization header scheme/prefix override
- `authenticationType` _SignedInteger_ — Authentication Type
  Options: `0`, `1`, `2`, `3`, `4`
- `oauth2ClientSecret` _String_ — Client Secret registered to the application
- `certificateAuthority` _String_ — CA Chain (PEM)
- `pathParams` _String_ — Common HTTP Path Parameters (JSON)
- `oauth2Scopes` _String_ — Access request scope(s) (space separated values)
- `queryParams` _String_ — Common HTTP Query Parameters (JSON or Parameter string)
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My ABB Robot Web Services Device (No TLS)",
    "Description": "",
    "DriverID": "97A7485B-816E-4F89-8155-48617608CC28",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "requestRetryWaitMS",
        "Value": "100"
      },
      {
        "Key": "enableTLS",
        "Value": "0"
      },
      {
        "Key": "requestTimeout",
        "Value": "2000"
      },
      {
        "Key": "requestRetryCount",
        "Value": "0"
      },
      {
        "Key": "urlPath",
        "Value": "/example/path"
      },
      {
        "Key": "headers",
        "Value": ""
      },
      {
        "Key": "websocketTimeout",
        "Value": "30"
      },
      {
        "Key": "authenticationType",
        "Value": "0"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "networkPort",
        "Value": "80"
      },
      {
        "Key": "pathParams",
        "Value": ""
      },
      {
        "Key": "queryParams",
        "Value": "json=1"
      },
      {
        "Key": "name",
        "Value": "abb-robot-web_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My ABB Robot Web Services Device (No TLS)",
            "DriverID": "97A7485B-816E-4F89-8155-48617608CC28",
            "Description": ""
        }
    }
}
```

---

## Create Device - Toyopuc Ethernet (No TLS)

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

# Toyopuc Ethernet Driver
| <!-- -->                 | <!-- -->                        |
| ------------------------ | ------------------------------- |
| **Required fields:** | > Connection Settings (TCP)
| **Browse devices supported:**| No
| **Browse tags supported:** | No
| **Supported device models:** | JTEKT Toyopuc PC10             
| **Register Settings:** | > File Number: Data file/program number
| | > Access Type: Block access will request contiguous registers, Random access can request registers of different areas/types (within the same file)

**Driver ID:** `9C027337-2D53-452D-9F9A-9932A39B5B16`
**Group:** Toyopuc

**Required properties:**
- `networkPort` _SignedInteger_ — Port
- `networkAddress` _String_ — IP Address
- `clientCertificate` _String_ — Client Certificate (PEM)
- `clientPrivateKey` _String_ — Client Private Key (PEM)
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `certificateVerification` _SignedInteger_ — Verify server certificate
  Options: `0`, `1`
- `KeepAlive` _SignedInteger_ — TCP Keep-Alive (s) (0 to disable)
- `enableMutualTLS` _SignedInteger_ — Enable mTLS / Client Certificate
  Options: `0`, `1`
- `LinkNodes` _String_ — Multi-layer link nodes
- `enableTLS` _SignedInteger_ — Enable TLS
  Options: `0`, `1`
- `MaxRequestSize` _SignedInteger_ — Maximum block size retrieved per request (# bytes)
- `Transport` _SignedInteger_ — Transport Type
  Options: `0`
- `ReadTimeout` _SignedInteger_ — Request timeout, msec
- `RetryCount` _SignedInteger_ — Retry request count
- `certificateAuthority` _String_ — CA Chain (PEM)
- `PauseBetweenRetries` _SignedInteger_ — Pause between retries, msec
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Toyopuc Ethernet Device (No TLS)",
    "Description": "",
    "DriverID": "9C027337-2D53-452D-9F9A-9932A39B5B16",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "1025"
      },
      {
        "Key": "KeepAlive",
        "Value": "60"
      },
      {
        "Key": "LinkNodes",
        "Value": "[]"
      },
      {
        "Key": "networkAddress",
        "Value": "192.168.1.100"
      },
      {
        "Key": "enableTLS",
        "Value": "0"
      },
      {
        "Key": "MaxRequestSize",
        "Value": "512"
      },
      {
        "Key": "Transport",
        "Value": "0"
      },
      {
        "Key": "ReadTimeout",
        "Value": "2000"
      },
      {
        "Key": "RetryCount",
        "Value": "0"
      },
      {
        "Key": "PauseBetweenRetries",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "toyopuc-ethernet_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Toyopuc Ethernet Device (No TLS)",
            "DriverID": "9C027337-2D53-452D-9F9A-9932A39B5B16",
            "Description": ""
        }
    }
}
```

---

## Create Device - MySQL Server Client (No TLS)

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

# MySQL Server Client Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Driver Settings:** | > Address: IP, Hostname or Endpoint (Port setting is ignored if port is included here)
| | > Database: Specify query target within server
| | > Username, Password: Client authentication
| | > AppName: Client Application ID (optional connection identifier)
| **Important:** | > Ensure minimal permissions are set for the provided user account
| **Miscellaneous:** | > Driver is Read-Only
| | > For multi-row output, use "Table" register
| | > For single-row or single-field output, use "Record" register
| | > When reading single rows, enable timestamp/value parsing by setting a positive index value for the respective fields
| | > When reading multiple rows, it is recommended to keep output table sizes under 1MB
| | > When using "Publish on Change", it may be necessary to define a "Change Query" on which any output will indicate that the data has been updated
| | > To persist a change "state", configure state value parsing and implement "Change Query", the first argument must represet the "state"
| | > All SQL queries (multi-statement in particular) should be tested independently of driver to ensure correctness
| **Miscellaneous:** | > Driver does not support writing to tags
| | > For multi-row output, use "Table" register
| | > For single-row or single-field output, use "Record" register
| | > When reading single rows, enable timestamp/value parsing by setting a positive index value for the respective fields
| | > When reading multiple rows, it is recommended to keep output table sizes under 1MB
| | > When using "Only Publish on Change of Value", it may be necessary to define a CDC query
| | > All SQL queries (multi-statement in particular) should be tested independently of driver to ensure correctness

**Driver ID:** `9F29E6F9-A195-4393-B1F1-8DDA3E8B3982`
**Group:** Historian

**Required properties:**
- `Password` _String_
- `Address` _String_ — SQL Server Address
- `Port` _SignedInteger_ — SQL Server Port
- `Username` _String_
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `EnableTLS` _SignedInteger_ — Enable TLS
  Options: `0`, `1`
- `PrivateKey` _String_ — Client Private Key (PEM)
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `Database` _String_ — Server Database Name
- `ClientAuth` _SignedInteger_ — Client Authentication (mTLS)
  Options: `0`, `1`
- `Certificate` _String_ — Client Certificate (PEM)
- `AppName` _String_ — Client Application Name
- `RequestTimeout` _SignedInteger_ — Request Timeout (S)
- `ConnectionTimeout` _SignedInteger_ — Connection Timeout (S)
- `CAChain` _String_ — Server CA Chain (PEM)
- `CertificateVerification` _SignedInteger_ — Server Certificate & Hostname Verification
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My MySQL Server Client Device (No TLS)",
    "Description": "",
    "DriverID": "9F29E6F9-A195-4393-B1F1-8DDA3E8B3982",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Password",
        "Value": "password"
      },
      {
        "Key": "EnableTLS",
        "Value": "1"
      },
      {
        "Key": "advanced",
        "Value": "1"
      },
      {
        "Key": "Address",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Port",
        "Value": "3306"
      },
      {
        "Key": "Database",
        "Value": "master"
      },
      {
        "Key": "Username",
        "Value": "admin"
      },
      {
        "Key": "name",
        "Value": "mysql-client_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My MySQL Server Client Device (No TLS)",
            "DriverID": "9F29E6F9-A195-4393-B1F1-8DDA3E8B3982",
            "Description": ""
        }
    }
}
```

---

## Create Device - PostgreSQL Client (No TLS)

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

# PostgreSQL Client Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Driver Settings:** | > Address: IP, Hostname or Endpoint (Port setting is ignored if port is included here)
| | > Database: Specify query target within server
| | > Username, Password: Client authentication
| | > AppName: Client Application ID (optional connection identifier)
| **Important:** | > Ensure minimal permissions are set for the provided user account
| **Miscellaneous:** | > Driver is Read-Only
| | > For multi-row output, use "Table" register
| | > For single-row or single-field output, use "Record" register
| | > When reading single rows, enable timestamp/value parsing by setting a positive index value for the respective fields
| | > When reading multiple rows, it is recommended to keep output table sizes under 1MB
| | > When using "Publish on Change", it may be necessary to define a "Change Query" on which any output will indicate that the data has been updated
| | > To persist a change "state", configure state value parsing and implement "Change Query", the first argument must represet the "state"
| | > All SQL queries (multi-statement in particular) should be tested independently of driver to ensure correctness
| **Miscellaneous:** | > Driver does not support writing to tags
| | > For multi-row output, use "Table" register
| | > For single-row or single-field output, use "Record" register
| | > When reading single rows, enable timestamp/value parsing by setting a positive index value for the respective fields
| | > When reading multiple rows, it is recommended to keep output table sizes under 1MB
| | > When using "Only Publish on Change of Value", it may be necessary to define a CDC query
| | > All SQL queries (multi-statement in particular) should be tested independently of driver to ensure correctness

**Driver ID:** `C373F016-4683-47DD-B633-E154AFCC2D06`
**Group:** Historian

**Required properties:**
- `Username` _String_
- `Password` _String_
- `Address` _String_ — SQL Server Address
- `Port` _SignedInteger_ — SQL Server Port
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `CAChain` _String_ — Server CA Chain (PEM)
- `AppName` _String_ — Client Application Name
- `RequestTimeout` _SignedInteger_ — Request Timeout (S)
- `EnableTLS` _SignedInteger_ — Enable TLS
  Options: `0`, `1`
- `Certificate` _String_ — Client Certificate (PEM)
- `CertificateVerification` _SignedInteger_ — Server Certificate & Hostname Verification
  Options: `0`, `1`
- `ConnectionTimeout` _SignedInteger_ — Connection Timeout (S)
- `ClientAuth` _SignedInteger_ — Client Authentication (mTLS)
  Options: `0`, `1`
- `Database` _String_ — Server Database Name
- `PrivateKey` _String_ — Client Private Key (PEM)
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My PostgreSQL Client Device (No TLS)",
    "Description": "",
    "DriverID": "C373F016-4683-47DD-B633-E154AFCC2D06",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Username",
        "Value": "admin"
      },
      {
        "Key": "Password",
        "Value": "password"
      },
      {
        "Key": "EnableTLS",
        "Value": "1"
      },
      {
        "Key": "Address",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Port",
        "Value": "5432"
      },
      {
        "Key": "Database",
        "Value": "master"
      },
      {
        "Key": "advanced",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "postgresql-client_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My PostgreSQL Client Device (No TLS)",
            "DriverID": "C373F016-4683-47DD-B633-E154AFCC2D06",
            "Description": ""
        }
    }
}
```

---

## Create Device - CSV Stream (No TLS)

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

# CSV Stream Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Driver Settings:** | > 
| **Tag Settings:** | 
| **Tag Types:** | 
| | > STRING: Published payload is string type

**Driver ID:** `17B16A98-C42B-4C46-80F7-8BA06A1F6B3C`
**Group:** Generic

**Required properties:**
- `Address` _String_ — Server Address
- `Certificate` _String_ — Certificate (PEM)
- `PrivateKey` _String_ — Private Key (PEM)
- `Interface` _String_ — Server Interface
- `Port` _SignedInteger_ — Server Port
- `CAChain` _String_ — Certificate Authority (PEM)
- `Terminator` _String_ — Line Terminator
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `Role` _SignedInteger_ — Transport Role
  Options: `0`
- `ClientAuth` _SignedInteger_ — Enable Client Authentication (mTLS)
  Options: `0`, `1`
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `EnableTLS` _SignedInteger_ — Enable TLS
  Options: `0`, `1`
- `Timeout` _SignedInteger_ — Connection Timeout (ms)
- `MinTLS` _SignedInteger_ — Minimum TLS Version
  Options: `0`, `1`, `2`, `3`
- `Transport` _SignedInteger_ — Transport Type
  Options: `0`
- `MaxPDU` _SignedInteger_ — Maximum Message Size
- `Delimiter` _String_ — Field Delimiter
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My CSV Stream Device (No TLS)",
    "Description": "",
    "DriverID": "17B16A98-C42B-4C46-80F7-8BA06A1F6B3C",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Role",
        "Value": "0"
      },
      {
        "Key": "Address",
        "Value": "192.168.1.100"
      },
      {
        "Key": "advanced",
        "Value": "1"
      },
      {
        "Key": "EnableTLS",
        "Value": "1"
      },
      {
        "Key": "Port",
        "Value": "1234"
      },
      {
        "Key": "Terminator",
        "Value": "\\n"
      },
      {
        "Key": "Transport",
        "Value": "0"
      },
      {
        "Key": "Delimiter",
        "Value": ","
      },
      {
        "Key": "name",
        "Value": "csv-stream_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My CSV Stream Device (No TLS)",
            "DriverID": "17B16A98-C42B-4C46-80F7-8BA06A1F6B3C",
            "Description": ""
        }
    }
}
```

---

## Create Device - Ignition Module (No TLS)

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

Ignition Module

**Driver ID:** `C7B2183F-2BB8-415E-83A3-AA3FF8A20BF5`
**Group:** Ignition

**Required properties:**
- `user` _String_ — User
- `password` _String_ — Password
- `TLScert` _String_ — Certificate (PEM)
- `TLSpkey` _String_ — Private Key (PEM)
- `natsConnectionName` _String_ — NATS connection name
- `browseRequestItemsCount` _SignedInteger_ — Browse request max items count
- `enableTLS` _SignedInteger_ — Enable TLS Authentication
  Options: `0`, `1`
- `networkPort` _SignedInteger_ — Port
- `natsRequestTimeout` _SignedInteger_ — Request timeout, ms
- `writeRequestItemsCount` _SignedInteger_ — Write request max items count
- `interface` _String_ — Interface
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Ignition Module Device (No TLS)",
    "Description": "",
    "DriverID": "C7B2183F-2BB8-415E-83A3-AA3FF8A20BF5",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "user",
        "Value": "admin"
      },
      {
        "Key": "password",
        "Value": "password"
      },
      {
        "Key": "natsConnectionName",
        "Value": "IgnitionAgent"
      },
      {
        "Key": "browseRequestItemsCount",
        "Value": "500"
      },
      {
        "Key": "enableTLS",
        "Value": "1"
      },
      {
        "Key": "networkPort",
        "Value": "4778"
      },
      {
        "Key": "natsRequestTimeout",
        "Value": "5000"
      },
      {
        "Key": "writeRequestItemsCount",
        "Value": "50"
      },
      {
        "Key": "interface",
        "Value": "0.0.0.0"
      },
      {
        "Key": "name",
        "Value": "Ignition-module_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Ignition Module Device (No TLS)",
            "DriverID": "C7B2183F-2BB8-415E-83A3-AA3FF8A20BF5",
            "Description": ""
        }
    }
}
```

---

## Create Device - Sparkplug B Client (No TLS)

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

# Sparkplug B Client Driver
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Browse devices supported:** | No
| **Browse tags supported:** | Yes
| **Driver Settings:** | > See
| | > Namespace: Sparkplug namespace (can't be blank, or contain forward-slash)
| | > Trigger Rebirth: If Broker and PHA allow it, issue NCMDs after connecting to retrieve client BIRTHs
| **Browse Settings:** | > [Group,Node,Device,Metric] Match: String Match (see below)
| | > ID Property: Optional comma-separated list of metric names which, if present, will replace the parent [Node,Device] ID in DeviceHub tag
| | > Subscribe Wildcard: Subscribe to all NDATA/DDATA topics to collect active messages
| | > Data Window: Subscription timespan to collect all DATA topics
| | > Trigger Rebirth: Issue NCMDs on browse (see driver setting)
| | > Birth Window: Subscription timespan to collect all BIRTH topics, after issuing NCMDs
| | > JSON Types: Enable to include metric metadata in published value (name, alias, datatype, timestamp, payload.seq)
| **Supported device models:** | Compatible with Brokers >= MQTTv3 
| | > Tested with SparkplugB compliant nodes
| **Miscellaneous:** > Metric name must be appended to MQTT topic when creating register
| | > Generated certificates are self-signed
| | > Message receive order is not guaranteed, payload sequence is included in metric json value
| | > If Client ID is left blank, a random ID will be generated
| | > When browsing, if metric name is unknown, alias will shown. Theses names are temporary and will be replaced once BIRTHs are received.
| | > Birth/Death messages must be of type JSON, the entire message payload will be published

String Matching
--------------
Pattern matching string fields

String Match Types:
* IsExact ("value")
* BeginsWith ("prefix#")
* EndsWith ("#suffix")
* Contains ("#middle#")
* IsAny ("#")

Special Case ("", when used on Group|Node|Device):
If an empty string is passed into the str match parameter, it will match any value
It will also indicate that the string should be removed when creating DeviceHub tag

**Driver ID:** `B4D6175C-029B-4D27-8D61-84DFACD43461`
**Group:** MQTT

**Required properties:**
- `Address` _String_ — Broker IP or Hostname
- `Password` _String_
- `SecurePort` _SignedInteger_ — Broker TLS Port
- `CertificateAuthority` _String_ — CA Chain (PEM)
- `ClientCertificate` _String_ — Client Certificate (PEM)
- `ClientPrivateKey` _String_ — Client Private Key (PEM)
- `Port` _SignedInteger_ — Broker Port
- `Username` _String_
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `ClientID` _String_ — MQTT Client ID
- `Namespace` _String_ — Sparkplug topic namespace
- `TriggerRebirth` _SignedInteger_ — Issue 'Node Rebirth' NCMD when connecting to retrieve all client metrics
  Options: `0`, `1`
- `WriteTimeout` _SignedInteger_ — Pub/Sub Message Timeout (s)
- `EnableTLS` _SignedInteger_
  Options: `0`, `1`
- `ClientAuthentication` _SignedInteger_ — Authentication Mode
  Options: `0`, `1`, `2`, `3`
- `CertificateVerification` _SignedInteger_ — Broker Certificate & Hostname Verification
  Options: `0`, `1`
- `MinTLSVersion` _SignedInteger_ — Minimum TLS Version
  Options: `0`, `1`, `2`, `3`
- `KeepAlivePeriod` _SignedInteger_ — Keep-Alive Period (s)
- `ProtocolVersion` _SignedInteger_ — MQTT Protocol Version
  Options: `0`, `1`, `2`
- `ConnectTimeout` _SignedInteger_ — Connect Timeout (s)
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Sparkplug B Client Device (No TLS)",
    "Description": "",
    "DriverID": "B4D6175C-029B-4D27-8D61-84DFACD43461",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "ClientID",
        "Value": ""
      },
      {
        "Key": "Address",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Namespace",
        "Value": "spBv1.0"
      },
      {
        "Key": "TriggerRebirth",
        "Value": "0"
      },
      {
        "Key": "EnableTLS",
        "Value": "1"
      },
      {
        "Key": "ClientAuthentication",
        "Value": "0"
      },
      {
        "Key": "Port",
        "Value": "1883"
      },
      {
        "Key": "advanced",
        "Value": "1"
      },
      {
        "Key": "name",
        "Value": "sparkplug_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Sparkplug B Client Device (No TLS)",
            "DriverID": "B4D6175C-029B-4D27-8D61-84DFACD43461",
            "Description": ""
        }
    }
}
```

---

## Create Device - OSI Agent Advanced (No TLS)

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

OSI Agent Advanced Driver

**Driver ID:** `41EFEEDE-E2C6-4D34-AD6C-2442A8D9B2B2`
**Group:** OSI

**Required properties:**
- `TLSpkey` _String_ — Private Key (PEM)
- `networkPort` _SignedInteger_ — Port
- `interface` _String_ — Interface
- `natsConnectionName` _String_ — NATS connection name (should be equal to Windows-based OSI Agent setting)
- `natsRequestTimeout` _SignedInteger_ — Request timeout, ms
- `browseRequestItemsCount` _SignedInteger_ — Browse request items count
- `enableTLS` _SignedInteger_ — Enable TLS Authentication
  Options: `0`, `1`
- `TLScert` _String_ — Certificate (PEM)
- `user` _String_ — User
- `password` _String_ — Password
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `bulkEventsItemsCount` _SignedInteger_ — Bulk events items count
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My OSI Agent Advanced Device (No TLS)",
    "Description": "",
    "DriverID": "41EFEEDE-E2C6-4D34-AD6C-2442A8D9B2B2",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkPort",
        "Value": "4777"
      },
      {
        "Key": "interface",
        "Value": "0.0.0.0"
      },
      {
        "Key": "natsConnectionName",
        "Value": "OSIAgent"
      },
      {
        "Key": "natsRequestTimeout",
        "Value": "5000"
      },
      {
        "Key": "browseRequestItemsCount",
        "Value": "500"
      },
      {
        "Key": "enableTLS",
        "Value": "1"
      },
      {
        "Key": "bulkEventsItemsCount",
        "Value": "5000"
      },
      {
        "Key": "user",
        "Value": "admin"
      },
      {
        "Key": "password",
        "Value": "password"
      },
      {
        "Key": "name",
        "Value": "OSI-agent-adv_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My OSI Agent Advanced Device (No TLS)",
            "DriverID": "41EFEEDE-E2C6-4D34-AD6C-2442A8D9B2B2",
            "Description": ""
        }
    }
}
```

---

## Create Device - Syslog Server

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

# Syslog Server Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Browse devices supported:** | No
| **Browse tags supported:** | No
| **Driver Settings:** | > LogProtocol: RFC5424-> Current Syslog Protocol, RFC3164 -> Original BSD Syslog Protocol
| | > UDP, TCP, TLS Enpoint configuration (must enable atleast 1)
| | > UDP Max PDU: Must be larger than the largest message to be received
| | > UDP Timeout: Client connection duration/timeout
| | > Allow Multi Match: Keep scanning and processing log matches, even after one is found
| | > Stringify Int Fields: Publish keywords for Facility (0 -> "kern") & Severity (0 -> "emerg")
| | > Replace Empty Fields: Replaces any empty values within published payload
| | > Minimum Clients: Controls connection status
| | > Max Workers: Increases throughput and CPU usage
| **Tag Settings:** | 
| | > Severity: Inclusive Limit (atleast as severe)
| | > Facility: Exact match, or "ANY"
| | > Wildcard: character used to indicate string matching pattern
| | > Hostname, Appname, MsgID, Message: String matching, described below
| | > Structured Data: Field matching, described below (rfc5424 only)
| | > Client Address: Address matching, described below
| | > Order: Logs processed in specified order (low->high)
| | > Format: Format derictives to define the published payload, described below
| **Tag Types:** | 
| | > STRING: Published payload is string type, using format directives
| | > JSON: Published payload is json type, using format directives (NOTE: only pre-defined variable characters accepted)
| | > IGNORE: No publish payload. Always scanned before non-IGNORE tags. Overrides "AllowMultiMatch" setting. Severity limit setting is reversed (atmost as severe). Should only be used to improve performance when most logs can easily be ignored (i.e ignoring all debug level logs)

String Matching
--------------
Pattern matching string fields

* If this wildcard is change from default "\*", all string match settings must be updated to reflect active wildcard
* The wildcard cannot be escaped, it must not appear anywhere in the string as a literal character

String Match Types:
* IsExact ("value")
* BeginsWith ("prefix\*")
* EndsWith ("\*suffix")
* Contains ("\*middle\*")
* IsEmpty ("")
* IsAny ("\*")

Field Matching
--------------
Structured Data Matching (2 exact key matches, delimited by Wildcard, followed by a String Match):
* IsAny ("\*")
* IsEmpty ("")
* HasField ("key")
* HasParam ("key1\*key2")
* FieldIsEmpty ("key\*")
* ParamIsEmpty ("key1\*key2\*")

String Matching applies to the value of a data match ("key1\*key2\*<StringMatch>") 
* ValueIsExact ("key1\*key2\*value") 
* ValueBeginsWith ("key1\*key2\*prefix\*") 
* ValueEndsWith ("key1\*key2\*\*suffix") 
* ValueContains ("key1\*key2\*\*middle\*") 
* ValueIsEmpty ("key1\*key2\*") 
* ValueIsAny ("key1\*key2\*\*") <- equivalent to HasParam

Address Matching
--------------
Address matching requires a valid CIDR block
* 172.22.0.1/16 -> matches client IPs starting with "172.22"

Address matches starting with a wildcard are negated
* \*172.22.0.1/16 -> matches client IPs which do not start with "172.22"

Note that any unmasked bits in the specified CIDR range have no effect
* 172.22.0.1/16 == 172.22.99.99/16

Format Directives
--------------
Custom publish payloads

| **Symbol** | **Definition** | **Type** |
| --- | --- | --- |
| $ | A special character which indicates that a variable character will follow. A variable represents some dynamic string value. Supported variables are defined as follows: | - |
| $L | Log (Full) | string (string payloads only) |
| $F | Facility | uint8 (<=23) OR keyword string |
| $S | Severity | uint8 (<=7) OR keyword string |
| $P | Priority (Facility * 8 + Severity) | uint8 (<=191) |
| $T | Timestamp | RFC3339 string |
| $H | Hostname | string |
| $A | Appname | string |
| $X | ProcessID | string |
| $I | MessageID | string |
| $D | Structured Data | string OR json object (string:string:string, rfc5424 only) |
| $M | Message | string |
| $V | Version | uint16 (>=1 && <=999, rfc5424 only)|
| $C | Client | string (IP from connection, not log) |

String Format Directive Notes:
* To use a special character in its literal form, enter symbol twice ($$ -> $)  
Example "$$$H.$A" -> "$hostABC.appXYZ"
* 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 "$H.$A$Z" -> error  
Example2 "$H.$A$" -> error  
Example3 "$H.$A$#" -> error

**Driver ID:** `E01C515A-4045-4209-A14B-614AF7061499`
**Group:** Network Utility

**Required properties:**
- `LogProtocol` _SignedInteger_ — Log Format Definition
  Options: `0`, `1`
- `UDPInterface` _String_ — UDP Interface
- `UDPTimeout` _SignedInteger_ — UDP Connection Timeout (s)
- `ServerPrivateKey` _String_ — Private Key (PEM)
- `UDPMaxPDU` _SignedInteger_ — Max UDP Message Size
- `TCPInterface` _String_ — TCP Interface
- `TCPPort` _SignedInteger_ — TCP Port
- `TLSInterface` _String_ — TLS Interface
- `TLSPort` _SignedInteger_ — TLS (TCP) Port
- `ServerCertificate` _String_ — Certificate (PEM)
- `UDPPort` _SignedInteger_ — UDP Port
- `CertificateAuthority` _String_ — CA Chain (PEM)
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `TCPParsing` _SignedInteger_ — TCP Stream Parser
  Options: `0`, `1`, `2`
- `TLSParsing` _SignedInteger_ — TLS Stream Parser
  Options: `0`, `1`
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `ReplaceEmptyFields` _String_ — Publish placeholder string for missing fields
- `MinTLSVersion` _SignedInteger_ — Minimum TLS Version
  Options: `0`, `1`, `2`, `3`
- `RequireClientCertificate` _SignedInteger_ — Require Client CA (mTLS)
  Options: `0`, `1`
- `EnableTCP` _SignedInteger_ — Enable TCP Listener
  Options: `0`, `1`
- `EnableTLS` _SignedInteger_ — Enable TLS (TCP) Listener
  Options: `0`, `1`
- `StringifyIntFields` _SignedInteger_ — Publish Facility & Severity as readable text in payload
  Options: `0`, `1`
- `MinimumClients` _SignedInteger_ — Number of expected clients, below which server will appear "Disconnected"
- `EnableUDP` _SignedInteger_ — Enable UDP Listener
  Options: `0`, `1`
- `AllowMultiMatch` _SignedInteger_ — Publish all matches on each received log
  Options: `0`, `1`
- `MaxWorkers` _SignedInteger_ — Maximum number of logs that can be processed simultaneously
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My Syslog Server Device",
    "Description": "",
    "DriverID": "E01C515A-4045-4209-A14B-614AF7061499",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "LogProtocol",
        "Value": "0"
      },
      {
        "Key": "UDPInterface",
        "Value": "0.0.0.0"
      },
      {
        "Key": "UDPTimeout",
        "Value": "30"
      },
      {
        "Key": "advanced",
        "Value": "1"
      },
      {
        "Key": "UDPMaxPDU",
        "Value": "4096"
      },
      {
        "Key": "UDPPort",
        "Value": "514"
      },
      {
        "Key": "EnableTCP",
        "Value": "1"
      },
      {
        "Key": "EnableTLS",
        "Value": "1"
      },
      {
        "Key": "EnableUDP",
        "Value": "0"
      },
      {
        "Key": "name",
        "Value": "syslog-server_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My Syslog Server Device",
            "DriverID": "E01C515A-4045-4209-A14B-614AF7061499",
            "Description": ""
        }
    }
}
```

---

## Create Device - SNMP Manager

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

# SNMP Manager Driver
| <!-- --> | <!-- -->|
| -------- | ------- |
| **Browse devices supported:** | No
| **Browse tags supported:** | Yes
| **Driver Settings:** | > Address: IP, Hostname or Endpoint (Port setting is ignored if port is included here)
| | > Mib Ftp Path: path of mib files, after /var/lib/customer/ftp-data/devicehub/...
| | > Request Retries: # retries after failed request, Oid count will be automatically halved for each retry
| | > Max Oid Count: Total # of Oids allowed per single request
| | > Browse Order: Sort browse results alphabeticaly (by Mib defined name) or numerically (by Oid)
| | > Browse Column Threshold: # of consecutive & uniform child oids after which parent is considered a column of the same type
| | > Browse Column Maximum: Max # of rows in a column which will be displayed in browse results, after which only the final row will be shown
| **Miscellaneous:** |
| | > Consult device documentation to find recommended value for "Max Oid Count" setting
| | > GetBulk is not used in this driver

**Driver ID:** `4E588810-8475-4668-860A-6DA4135E8FD4`
**Group:** Network Utility

**Required properties:**
- `Port` _SignedInteger_ — Server Port
- `EncryptionPassword` _String_ — SNMP V3 Encryption Password
- `TrapInterface` _String_ — Listener Interface
- `Username` _String_ — SNMP V3 Username
- `TrapPort` _SignedInteger_ — Listener Port
- `Address` _String_ — Server Address
- `Community` _String_ — SNMP V1/V2c Community
- `AuthenticationPassword` _String_ — SNMP V3 Authentication Password
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `RequestRetries` _SignedInteger_ — Request Retries
- `advanced` _SignedInteger_ — Show Advanced Config
  Options: `0`, `1`
- `SNMPVersion` _SignedInteger_
  Options: `0`, `1`, `2`
- `ContextName` _String_ — SNMP V3 Message Context
- `AuthenticationType` _SignedInteger_ — SNMP V3 Authentication Type
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`
- `EnableTrapListener` _SignedInteger_ — Enable SNMP Trap Listener
  Options: `0`, `1`
- `TrapTransport` _SignedInteger_ — Listener Transport Type
  Options: `0`, `1`
- `MIBPath` _String_ — FTP path for MIB files created within 'devicehub/...'
- `RequestTimeout` _SignedInteger_ — Request Timeout (ms)
- `MaxOIDCount` _SignedInteger_ — Max number of Oids in a single request
- `Transport` _SignedInteger_ — Transport Type
  Options: `0`, `1`
- `EncryptionType` _SignedInteger_ — SNMP V3 Encryption Type
  Options: `0`, `1`, `2`, `3`, `4`, `5`, `6`
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My SNMP Manager Device",
    "Description": "",
    "DriverID": "4E588810-8475-4668-860A-6DA4135E8FD4",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "Port",
        "Value": "161"
      },
      {
        "Key": "advanced",
        "Value": "1"
      },
      {
        "Key": "SNMPVersion",
        "Value": "1"
      },
      {
        "Key": "EnableTrapListener",
        "Value": "1"
      },
      {
        "Key": "MIBPath",
        "Value": ""
      },
      {
        "Key": "Transport",
        "Value": "1"
      },
      {
        "Key": "Address",
        "Value": "192.168.1.100"
      },
      {
        "Key": "Community",
        "Value": "private"
      },
      {
        "Key": "name",
        "Value": "snmp-manager_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My SNMP Manager Device",
            "DriverID": "4E588810-8475-4668-860A-6DA4135E8FD4",
            "Description": ""
        }
    }
}
```

---

## Create Device - DeviceHub Agent

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

# DeviceHub Agent
| <!-- --> | <!-- --> |
| -------- | -------- |
| **Prerequisites:** | Install DeviceHub Agent and connect to an OPC Classic Server |
| **Required fields:** | Network Address<br>Network Port<br>Data Validity Period |
| **Browse devices supported:** | No |
| **Browse tags supported:**    | Yes |

**Driver ID:** `6C3031AE-E667-4849-A302-6D074FE5DFD3`
**Group:** OPCUA

**Required properties:**
- `networkAddress` _String_ — Listen host (Caution! If unsure set it to 0.0.0.0)
- `networkPort` _SignedInteger_ — Listen port
- `dataValidityPeriod` _SignedInteger_ — The time period after which the data become invalid
- `name` _String_ — This is a Device Name.

**Optional properties:**
- `description` _String_ — This is a description of device.

### Request Body

**GraphQL Query**

```graphql
mutation CreateDevice($input: CreateDeviceRequest!) {
  CreateDevice(input: $input) {
    ID
    Name
    DriverID
    Description
  }
}
```

**Variables**

```json
{
  "input": {
    "Name": "My DeviceHub Agent Device",
    "Description": "",
    "DriverID": "6C3031AE-E667-4849-A302-6D074FE5DFD3",
    "AliasTopics": false,
    "Debug": false,
    "MetaData": [],
    "StoppedState": false,
    "StatusRegister": null,
    "Properties": [
      {
        "Key": "networkAddress",
        "Value": "0.0.0.0"
      },
      {
        "Key": "networkPort",
        "Value": "41250"
      },
      {
        "Key": "dataValidityPeriod",
        "Value": "60"
      },
      {
        "Key": "name",
        "Value": "devicehub-agent_device"
      },
      {
        "Key": "description",
        "Value": ""
      }
    ]
  }
}
```

### Response

**Status**: 200 OK

```json
{
    "data": {
        "CreateDevice": {
            "ID": "<generated-uuid>",
            "Name": "My DeviceHub Agent Device",
            "DriverID": "6C3031AE-E667-4849-A302-6D074FE5DFD3",
            "Description": ""
        }
    }
}
```

---

