Table of Contents

KNet for OPC (KNetOPC): Source connector configuration reference

Overview

The KNetOPC Source Connector is configured through two separate files:

  • The Kafka Connect properties file (.properties for standalone mode, .json for distributed mode) — controls the Kafka Connect runtime behavior. See Connectors for the full property reference.
  • The OPC-UA configuration file (KNetOPCSource.json or KNetOPCSourceBinary.json) — controls OPC-UA–specific behavior: session parameters, subscriptions, monitored nodes, encoding, and Kafka topic routing. This page documents the OPC-UA configuration file.

The OPC-UA configuration file is referenced from the Kafka Connect properties file via one of two mutually exclusive properties:

Kafka Connect property Description
knet.opc.config.filename Path to the Source connector OPC-UA configuration file on disk. If a bare filename is provided (no directory), the connector searches in the connector package's etc subfolder.
knet.opc.config.content The full Source connector OPC-UA configuration file encoded as a Base64 string. Use the MASES.KNet.OPC.Configuration.Converter tool included in the package to generate this value.

Exactly one of these two properties must be provided.


Configuration model and property inheritance

The OPC-UA configuration file follows a hierarchical model with three levels of scope. Most optional properties can be set at a higher (wider) scope and are then inherited by all narrower scopes that do not explicitly override them.

Root
 ├─ GlobalKafkaConnectParameters      ← applies to all subscriptions and monitored items
 ├─ GlobalMonitoredItemParameters     ← applies to all subscriptions and monitored items
 └─ Subscriptions[]
      ├─ DefaultConnectParameters     ← overrides GlobalKafkaConnectParameters for this subscription
      ├─ DefaultMonitoredItemParameters ← overrides GlobalMonitoredItemParameters for this subscription
      └─ MonitoredItems[]
           ├─ KafkaConnectParameters  ← overrides DefaultConnectParameters for this item
           └─ Parameters              ← overrides DefaultMonitoredItemParameters for this item

If a property is not set at a given level, the value is inherited from the enclosing scope. If no scope sets the property, the documented default applies.


Root properties

These properties are set at the top level of the configuration file.

Property Type Required Description
ApplicationName string Yes User-defined name for the application instance. May be included in the Kafka record key.
ApplicationVersion string Yes User-defined version for the application instance. May be included in the Kafka record key.
SessionConfiguration object Yes OPC-UA session parameters. See SessionConfiguration.
Subscriptions array Yes One or more OPC-UA subscriptions to create. See SubscriptionConfiguration.
GlobalKafkaConnectParameters object No Default Kafka routing parameters applied to all subscriptions and monitored items unless overridden. See KafkaConnectParameters.
GlobalMonitoredItemParameters object No Default OPC-UA monitored item parameters applied to all subscriptions and monitored items unless overridden. See MonitoredItemParameters.

SessionConfiguration

Describes how to connect to the OPC-UA server. This section is mandatory.

Property Type Required Default Description
EndPoint string Yes OPC-UA endpoint URL of the server (e.g. opc.tcp://host:port/path).
ConfigFilename string No Path to the OPC-UA stack XML configuration file. If the path is relative, it is resolved relative to the OPC-UA configuration file location.
SessionName string No internal identifier Name assigned to the OPC-UA session.
UserName string No Username for username/password authentication.
Password string No Password for username/password or certificate authentication.
Certificate string No Certificate for certificate-based authentication.
AutoAccept boolean No true When true, untrusted certificates are automatically accepted. When false, only certificates matching AutoAcceptStatusCodes are accepted.
AutoAcceptStatusCodes array of integer No all codes List of OPC-UA StatusCode values accepted when AutoAccept is true. See the JSON schema for the full list of valid status codes and their hex values.
UseSecurity boolean No false When true, encryption is enabled on the OPC-UA channel.
UpdateBeforeConnect boolean No false When true, the discovery endpoint is queried to refresh the endpoint description before connecting.
CheckDomain boolean No false When true, the domain in the server certificate must match the endpoint used to connect.
OperationTimeout integer (ms) No 60000 Timeout in milliseconds for all requests sent to the OPC-UA server.
KeepAliveInterval integer (ms) No 1000 Interval in milliseconds between keep-alive requests.
SessionTimeout integer (ms) No 60000 Session lifetime in milliseconds.
ReconnectPeriod integer (ms) No 60000 Interval in milliseconds between reconnection attempts after a disconnection. If the server is not reached within this period, the connector notifies the Kafka Connect infrastructure of the failure.
ReconnectPeriodExponentialBackoff integer (ms) No 15000 Exponential back-off increment applied to ReconnectPeriod between successive reconnection attempts.
ReverseConnectUrl string No null (disabled) URL used by the reverse connection manager. When null, reverse connect is disabled.
PreferredLocales array of string No ["en-US"] Preferred locales for the OPC-UA session, in order of preference.

SubscriptionConfiguration

Each entry in the Subscriptions array describes one OPC-UA subscription to be created on the server session.

Property Type Required Default Description
UseAsyncPush boolean No true When true, source records are pushed directly without waiting for a poll invocation from the Connect runtime. Set to false only for troubleshooting or high-latency scenarios.
MonitoredItems array No The list of nodes to monitor. See MonitoredItemConfiguration.
DefaultConnectParameters object No inherited from GlobalKafkaConnectParameters Kafka routing parameters for all monitored items in this subscription unless overridden at item level. See KafkaConnectParameters.
DefaultMonitoredItemParameters object No inherited from GlobalMonitoredItemParameters OPC-UA monitored item parameters for all items in this subscription unless overridden at item level. See MonitoredItemParameters.
PublishingInterval integer (ms) No 1000 OPC-UA publishing interval for this subscription.
KeepAliveCount integer No 10 Number of publish intervals without a notification before the server sends a keep-alive message.
LifetimeCount integer No 30 Subscription lifetime expressed as a multiple of the publishing interval. Must be at least 3 × KeepAliveCount.
MaxNotificationsPerPublish integer No 1000 Maximum number of notifications returned in a single publish response.
Priority integer No 100 Priority of this subscription relative to others on the same session.
SequentialPublishing boolean No false When true, incoming notifications are processed sequentially (single-threaded); callbacks are never invoked in parallel.

MonitoredItemConfiguration

Each entry in MonitoredItems describes a single OPC-UA node to subscribe to.

Property Type Required Default Description
NodeId string Yes OPC-UA NodeId in standard notation (e.g. ns=2;s=Realtimedata).
IsRoot boolean No false When true, the connector traverses the node tree below NodeId and subscribes to all child nodes. When false, only the specified node is subscribed.
KafkaConnectParameters object No inherited from DefaultConnectParameters Kafka routing parameters for this specific item. See KafkaConnectParameters.
Parameters object No inherited from DefaultMonitoredItemParameters OPC-UA monitored item parameters for this specific item. See MonitoredItemParameters.

KafkaConnectParameters

Controls how a change notification record is routed to Apache Kafka™. Can be set at three scopes: GlobalKafkaConnectParameters (root), DefaultConnectParameters (subscription), or KafkaConnectParameters (monitored item). The narrowest scope that sets a property wins.

Property Type Default Description
Topic string Kafka topic where the record is written.
Partition integer Target partition. When not set, the partition strategy configured at broker or connector level applies.
EncodingType integer 2 (JSON) Encoding used to serialize the OPC-UA notification. 0 = Binary, 1 = XML, 2 = JSON. Must match the value.converter set in the Kafka Connect properties file.
AbsoluteNodeIdInKey boolean false When true, the record key contains the ExpandedNodeId; when false, only the NodeId.
UseServerTimestamp boolean false When true, the record timestamp is taken from the OPC-UA ServerTimestamp; when false, from the ClientTimestamp.

MonitoredItemParameters

Controls OPC-UA–level behavior for monitored items. Can be set at three scopes: GlobalMonitoredItemParameters (root), DefaultMonitoredItemParameters (subscription), or Parameters (monitored item). The narrowest scope that sets a property wins.

Property Type Default Description
QueueSize integer 50 Depth of the OPC-UA change notification queue for this monitored item.
DiscardOldest boolean true When true and the queue is full, the oldest notification is discarded to make room for the new one.

Complete example

The following example shows a configuration with two subscriptions: one publishing JSON-encoded notifications to topic-json, and one publishing Binary-encoded notifications to topic-binary with per-item overrides.

{
  "ApplicationName": "MyApp",
  "ApplicationVersion": "1.0.0",
  "GlobalKafkaConnectParameters": {
    "UseServerTimestamp": true,
    "AbsoluteNodeIdInKey": false
  },
  "GlobalMonitoredItemParameters": {
    "QueueSize": 100,
    "DiscardOldest": true
  },
  "SessionConfigurationType": {
    "ConfigFilename": "KNetOPC.Config.xml",
    "EndPoint": "opc.tcp://172.31.48.1:62640/masesgroup/ServerSimulator",
    "SessionName": "MyApp",
    "ReconnectPeriod": 5000,
    "ReconnectPeriodExponentialBackoff": 1000,
    "OperationTimeout": 10000
  },
  "Subscriptions": [
    {
      "PublishingInterval": 500,
      "DefaultConnectParameters": {
        "Topic": "topic-json",
        "EncodingType": 2
      },
      "MonitoredItems": [
        {
          "NodeId": "ns=2;s=Realtimedata",
          "IsRoot": true
        },
        {
          "NodeId": "ns=2;s=Counter",
          "Parameters": {
            "QueueSize": 10
          }
        }
      ]
    },
    {
      "PublishingInterval": 1000,
      "DefaultConnectParameters": {
        "Topic": "topic-binary",
        "EncodingType": 0
      },
      "MonitoredItems": [
        {
          "NodeId": "ns=2;s=Status",
          "KafkaConnectParameters": {
            "Partition": 0
          }
        }
      ]
    }
  ]
}

JSON schema

The following JSON schema is the authoritative definition of the OPC-UA configuration file format. Each field carries an inline description that supplements the tables above.

{
  "title": "Root KNet for OPC Source Connector Configuration",
  "description": "The configuration used from Source Connector of KNet for OPC.",
  "definitions": {
    "KafkaConnectParametersType": {
      "title": "Default ConnectParameters",
      "description": "The KafkaConnectParameters parameters associated to this specific SubscriptionConfiguration. If not set the value is inherited from the GlobalConnectParameters",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "Topic": {
          "title": "Apache Kafka topic",
          "description": "The topic where the data will be written.",
          "type": [
            "string",
            "null"
          ]
        },
        "Partition": {
          "title": "Apache Kafka partition",
          "description": "The partition where the data will be written, if not set the connector will use the partition strategy set at higher level.",
          "type": [
            "integer",
            "null"
          ]
        },
        "AbsoluteNodeIdInKey": {
          "title": "Absolute NodeId In Key",
          "description": "If set to true then the key reports the ExpandedNodeId, otherwise the key reports only the NodeId.",
          "type": "boolean"
        },
        "UseServerTimestamp": {
          "title": "Use Server Timestamp",
          "description": "If set to true then the timestamp of the record uses the ServerTimestamp of the notified change, otherwise the record uses the ClientTimestamp of the notified change.",
          "type": "boolean"
        },
        "EncodingType": {
          "title": "Encoding Type",
          "description": "Can be set to 0 (\"Binary\"), 1 (\"Xml\") or 2 (\"Json\") and inform the connector how to convert the notification before send it to Apache Kafka Connect. Default value is Json.",
          "type": "integer",
          "enum": [
            0,
            1,
            2
          ]
        }
      }
    },
    "KafkaConnectParametersType-1": {
      "title": "Kafka Connect Parameters",
      "description": "The KafkaConnectParameters parameters associated to this specific MonitoredItemConfiguration. If not set the value is inherited from the SubscriptionConfiguration",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "Topic": {
          "title": "Apache Kafka topic",
          "description": "The topic where the data will be written.",
          "type": [
            "string",
            "null"
          ]
        },
        "Partition": {
          "title": "Apache Kafka partition",
          "description": "The partition where the data will be written, if not set the connector will use the partition strategy set at higher level.",
          "type": [
            "integer",
            "null"
          ]
        },
        "AbsoluteNodeIdInKey": {
          "title": "Absolute NodeId In Key",
          "description": "If set to true then the key reports the ExpandedNodeId, otherwise the key reports only the NodeId.",
          "type": "boolean"
        },
        "UseServerTimestamp": {
          "title": "Use Server Timestamp",
          "description": "If set to true then the timestamp of the record uses the ServerTimestamp of the notified change, otherwise the record uses the ClientTimestamp of the notified change.",
          "type": "boolean"
        },
        "EncodingType": {
          "title": "Encoding Type",
          "description": "Can be set to 0 (\"Binary\"), 1 (\"Xml\") or 2 (\"Json\") and inform the connector how to convert the notification before send it to Apache Kafka Connect. Default value is Json.",
          "type": "integer",
          "enum": [
            0,
            1,
            2
          ]
        }
      }
    },
    "KafkaConnectParametersType-2": {
      "title": "Global KafkaConnectParameters",
      "description": "A global value for KafkaConnectParameters can be set. Default is not set and inherits default values from KafkaConnectParameters.",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "Topic": {
          "title": "Apache Kafka topic",
          "description": "The topic where the data will be written.",
          "type": [
            "string",
            "null"
          ]
        },
        "Partition": {
          "title": "Apache Kafka partition",
          "description": "The partition where the data will be written, if not set the connector will use the partition strategy set at higher level.",
          "type": [
            "integer",
            "null"
          ]
        },
        "AbsoluteNodeIdInKey": {
          "title": "Absolute NodeId In Key",
          "description": "If set to true then the key reports the ExpandedNodeId, otherwise the key reports only the NodeId.",
          "type": "boolean"
        },
        "UseServerTimestamp": {
          "title": "Use Server Timestamp",
          "description": "If set to true then the timestamp of the record uses the ServerTimestamp of the notified change, otherwise the record uses the ClientTimestamp of the notified change.",
          "type": "boolean"
        },
        "EncodingType": {
          "title": "Encoding Type",
          "description": "Can be set to 0 (\"Binary\"), 1 (\"Xml\") or 2 (\"Json\") and inform the connector how to convert the notification before send it to Apache Kafka Connect. Default value is Json.",
          "type": "integer",
          "enum": [
            0,
            1,
            2
          ]
        }
      }
    },
    "MonitoredItemConfigurationType": {
      "title": "Monitored Item Configuration",
      "description": "The configuration used to describe each MonitoredItem to be added to the OPC-UA subscription.",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "NodeId": {
          "title": "NodeId",
          "description": "The NodeId representing the node to be added in the OPC-UA subscription (see https://opcfoundation.org/about/opc-technologies/opc-ua/).",
          "type": "string"
        },
        "IsRoot": {
          "title": "IsRoot",
          "description": "If set to true then all NodeIds in the tree below the NodeId are added to the OPC-UA subscription. Default is false which means that only the NodeId will be added to the OPC-UA subscription.",
          "type": "boolean"
        },
        "Parameters": {
          "$ref": "#/definitions/MonitoredItemParametersType-1"
        },
        "KafkaConnectParameters": {
          "$ref": "#/definitions/KafkaConnectParametersType-1"
        }
      },
      "required": [
        "NodeId"
      ]
    },
    "MonitoredItemParametersType": {
      "title": "Default MonitoredItemParameters",
      "description": "The MonitoredItemParameters parameters associated to this specific SubscriptionConfiguration. If not set the value is inherited from the GlobalMonitoredItemParameters",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "QueueSize": {
          "title": "Queue Size",
          "description": "The size (deep) of the changes queue (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is 50.",
          "type": "integer"
        },
        "DiscardOldest": {
          "title": "Discard Oldest",
          "description": "If set to true then discard oldest when queue is full (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is true.",
          "type": "boolean"
        }
      }
    },
    "MonitoredItemParametersType-1": {
      "title": "Parameters",
      "description": "The MonitoredItemParameters parameters associated to this specific MonitoredItemConfiguration. If not set the value is inherited from the SubscriptionConfiguration",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "QueueSize": {
          "title": "Queue Size",
          "description": "The size (deep) of the changes queue (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is 50.",
          "type": "integer"
        },
        "DiscardOldest": {
          "title": "Discard Oldest",
          "description": "If set to true then discard oldest when queue is full (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is true.",
          "type": "boolean"
        }
      }
    },
    "MonitoredItemParametersType-2": {
      "title": "Global MonitoredItemParameters",
      "description": "A global value for MonitoredItemParameters can be set. Default is not set and inherits default values from MonitoredItemParameters.",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "QueueSize": {
          "title": "Queue Size",
          "description": "The size (deep) of the changes queue (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is 50.",
          "type": "integer"
        },
        "DiscardOldest": {
          "title": "Discard Oldest",
          "description": "If set to true then discard oldest when queue is full (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is true.",
          "type": "boolean"
        }
      }
    },
    "SessionConfigurationType": {
      "title": "Session Configuration",
      "description": "It is a mandatory section which describes how to connect to the OPC-UA Server.",
      "type": "object",
      "properties": {
        "ConfigFilename": {
          "title": "OPC-UA Configuration file",
          "description": "The file containing the information used from the OPC-UA Stack for the connection to an OPC-UA server (see https://opcfoundation.org/about/opc-technologies/opc-ua/). If the file location is relative to this file location the connector automatically discover it, otherwise the location shall be an absolute path.",
          "type": [
            "string",
            "null"
          ]
        },
        "EndPoint": {
          "title": "Remote OPC-UA Endpoint",
          "description": "The URL where the remote OPC-UA server is exposing (see https://opcfoundation.org/about/opc-technologies/opc-ua/).",
          "type": "string"
        },
        "AutoAccept": {
          "title": "AutoAccept",
          "description": "If set to true automatically accepts certificates; otherwise AutoAcceptStatusCodes is checked.",
          "type": "boolean"
        },
        "AutoAcceptStatusCodes": {
          "title": "AutoAccept StatusCode",
          "description": "The list of StatusCode used to valid a certificate if AutoAccept is set to true; The values are BadCertificatePolicyCheckFailed (The certificate does not meet the requirements of the security policy.) = 0x81140000; BadCertificateTimeInvalid (The certificate has expired or is not yet valid.) = 0x80140000; BadCertificateIssuerTimeInvalid (An issuer certificate has expired or is not yet valid.) = 0x80150000; BadCertificateHostNameInvalid (The HostName used to connect to a server does not match a HostName in the certificate.) = 0x80160000; BadCertificateUriInvalid (The URI specified in the ApplicationDescription does not match the URI in the certificate.) = 0x80170000; BadCertificateUseNotAllowed (The certificate may not be used for the requested operation.) = 0x80180000; BadCertificateIssuerUseNotAllowed (The issuer certificate may not be used for the requested operation.) = 0x80190000; BadCertificateUntrusted (The certificate is not trusted.) = 0x801A0000; BadCertificateRevocationUnknown (It was not possible to determine if the certificate has been revoked.) = 0x801B0000; BadCertificateIssuerRevocationUnknown (It was not possible to determine if the issuer certificate has been revoked.) = 0x801C0000; BadCertificateRevoked (The certificate has been revoked.) = 0x801D0000; BadCertificateIssuerRevoked (The issuer certificate has been revoked.) = 0x801E0000; BadCertificateChainIncomplete (The certificate chain is incomplete.) = 0x810D0000. By default all values are added to the list.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "integer"
          }
        },
        "UseSecurity": {
          "title": "Use Security for OPC-UA Endpoint",
          "description": "Set the value to true to enable the usage of encryption on OPC-UA channels.",
          "type": "boolean"
        },
        "UpdateBeforeConnect": {
          "title": "Update configuration before connect to an OPC-UA channel",
          "description": "If set to true the discovery endpoint is used to update the endpoint description before connecting (see https://opcfoundation.org/about/opc-technologies/opc-ua/).",
          "type": "boolean"
        },
        "CheckDomain": {
          "title": "Check Domain on OPC-UA certificate",
          "description": "If set to true then the domain in the certificate must match the endpoint used (see https://opcfoundation.org/about/opc-technologies/opc-ua/).",
          "type": "boolean"
        },
        "SessionName": {
          "title": "Session Name assigned",
          "description": "The name to assign to the session.",
          "type": [
            "string",
            "null"
          ]
        },
        "UserName": {
          "title": "User Name",
          "description": "The username to be used when the connection authentication needs a username/password identity.",
          "type": [
            "string",
            "null"
          ]
        },
        "Certificate": {
          "title": "Certificate",
          "description": "The certificate to be used when the connection authentication needs a certificate identity.",
          "type": [
            "string",
            "null"
          ]
        },
        "Password": {
          "title": "Password",
          "description": "The password to be used when the connection authentication needs a username/password or certificate identity.",
          "type": [
            "string",
            "null"
          ]
        },
        "OperationTimeout": {
          "title": "Operation Timeout",
          "description": "The timeout in milliseconds associated to all requests made to the OPC-UA server (see https://opcfoundation.org/about/opc-technologies/opc-ua/).",
          "type": "integer"
        },
        "KeepAliveInterval": {
          "title": "KeepAlive Interval",
          "description": "The interval, in milliseconds, between each keepalive request made on the OPC-UA server (see https://opcfoundation.org/about/opc-technologies/opc-ua/).",
          "type": "integer"
        },
        "SessionTimeout": {
          "title": "Session Timeout",
          "description": "The timeout period, in milliseconds, for the session (see https://opcfoundation.org/about/opc-technologies/opc-ua/).",
          "type": "integer"
        },
        "ReverseConnectUrl": {
          "title": "Reverse Connect Url",
          "description": "The Url used from the reverse connection manager. Default is null which disables the feature.",
          "type": [
            "string",
            "null"
          ]
        },
        "ReconnectPeriod": {
          "title": "Reconnect Period",
          "description": "The interval, in milliseconds, the connector tries to reconnect after a disconnection before declares the OPC-UA server no more reachable and informs the Apache Kafka Connect infrastructure.",
          "type": "integer"
        },
        "ReconnectPeriodExponentialBackoff": {
          "title": "Reconnect Period Exponential Backoff",
          "description": "The reconnect period exponential backoff to be used in milliseconds.",
          "type": "integer"
        },
        "PreferredLocales": {
          "title": "Preferred Locales",
          "description": "The preferred locales (see https://opcfoundation.org/about/opc-technologies/opc-ua/).",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "required": [
        "EndPoint"
      ]
    },
    "SubscriptionConfigurationType": {
      "title": "OPC-UA Subscription Configuration",
      "description": "The configuration used to describe each Subscription to be added to the OPC-UA session.",
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "UseAsyncPush": {
          "title": "Use Async Push",
          "description": "Push SourceRecord directly without waiting for a poll invocation, default is true.",
          "type": "boolean"
        },
        "PublishingInterval": {
          "title": "Publishing Interval",
          "description": "The publishing interval (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is 1000.",
          "type": "integer"
        },
        "KeepAliveCount": {
          "title": "Keep Alive Count",
          "description": "The keep alive count (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is 10.",
          "type": "integer"
        },
        "LifetimeCount": {
          "title": "Lifetime Count",
          "description": "The life time of the subscription in counts of publish interval. LifetimeCount shall be at least 3*KeepAliveCount (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is 30.",
          "type": "integer"
        },
        "MaxNotificationsPerPublish": {
          "title": "Max Notifications Per Publish",
          "description": "The maximum number of notifications per publish request (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is 1000.",
          "type": "integer"
        },
        "Priority": {
          "title": "Priority",
          "description": "The priority assigned to the subscription (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is 100.",
          "type": "integer"
        },
        "SequentialPublishing": {
          "title": "Sequential Publishing",
          "description": "true if incoming messages are handled sequentially; false otherwise. Setting SequentialPublishing to true means incoming messages are processed in a \"single-threaded\" manner and callbacks will not be invoked in parallel. (see https://opcfoundation.org/about/opc-technologies/opc-ua/). Default is false.",
          "type": "boolean"
        },
        "DefaultMonitoredItemParameters": {
          "$ref": "#/definitions/MonitoredItemParametersType"
        },
        "DefaultConnectParameters": {
          "$ref": "#/definitions/KafkaConnectParametersType"
        },
        "MonitoredItems": {
          "title": "MonitoredItems",
          "description": "A set of MonitoredItemConfiguration describing the MonitoredItem(s) to be subscribed.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/definitions/MonitoredItemConfigurationType"
          }
        }
      }
    }
  },
  "type": "object",
  "properties": {
    "Subscriptions": {
      "title": "Subscriptions",
      "description": "A set of SubscriptionConfiguration describing the subscriptions to be created.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/SubscriptionConfigurationType"
      }
    },
    "GlobalMonitoredItemParameters": {
      "$ref": "#/definitions/MonitoredItemParametersType-2"
    },
    "GlobalKafkaConnectParameters": {
      "$ref": "#/definitions/KafkaConnectParametersType-2"
    },
    "ApplicationName": {
      "title": "Application Name",
      "description": "The user defined name associated to the application where the connector is in use; can be used to describe the published data and can be added to the record key.",
      "type": "string"
    },
    "ApplicationVersion": {
      "title": "Application Version",
      "description": "The user defined version associated to the application where the connector is in use; can be used to describe the published data and can be added to the record key.",
      "type": "string"
    },
    "SessionConfiguration": {
      "$ref": "#/definitions/SessionConfigurationType"
    }
  },
  "required": [
    "Subscriptions",
    "ApplicationName",
    "ApplicationVersion",
    "SessionConfiguration"
  ]
}