alterOutput

JSON hub "alterOutput" action modifies a FairCom Edge output

The "alterOutput" action alters an existing output connector in FairCom Edge to deliver tags automatically to a device or software system. Before you can change an output, you must use "createOutput" to create it.

Note A tag is a piece of named data with an associated value. For example, the tag temperature 70 includes both the named data temperature and the value 70. In JSON, a tag is a JSON property, such as "temperature": 70. In a SQL table, a tag is a data field, such as a field named temperature with a value of 70.

A connector is a bridge between a device/software and an integration table. 

  • You can change the source field of the integration table that supplies the data for the plugin.
  • You can change the data format of the source field.
  • You can change the settings of an integration.
  • You can change metadata to make the integration easier to locate.
  • You cannot change the plugin or the integration table.
    • You will need to create a new integration.
  • An integration connects data in the server to a plugin that delivers data from the server to external systems, such as connecting the integration table populated by OPC UA to the ThingWorx connector.

Note Use"configureTopic" to connect MQTT to an existing integration table.

 

Request examples

Minimal

{
  "action": "alterOutput",
  "params": {
    "outputName": "writeEverythingToModbus",
"thingName": "PLC 74", "settings": { "modbusProtocol": "TCP", "modbusServer": "localhost", "propertyMapList": [ { "propertyPath": "source_payload.temperature", "modbusDataAddress": 1199, "modbusDataAccess": "holdingregister", "modbusUnitId": 5, "modbusDataLen": 1 } ] } }, "authToken": "replaceWithAuthTokenFromCreateSession" }
 
 

Maximal

{
  "api": "hub",
  "action": "alterOutput",
  "params": {
    "outputName": "writeTemperatureToModbus",
"serviceName": "modbus",
"thingName": "PLC 74", "databaseName": "faircom",
"tableName": "modbusTableTCPTemp",
"status": "userError",
"stopCode": 16384,
"stopReason": "Putting device in an uncertain error state while verifying data delivery.",
"purpose": "Track Celsius Temperatures from devices",
"description" : "My output connector's description",
"labels": ["temperature", "celsius"], "ownerName": "admin", "sourceFields": [ "source_payload" ], "settings": { "modbusProtocol": "TCP", "modbusServer": "localhost", "modbusServerPort": 502, "propertyMapList": [ { "propertyPath": "source_payload.temperature", //Deprecated "modbusDataAddress": 1199, "modbusDataAccess": "holdingregister", "modbusUnitId": 5, "modbusDataLen": 1 },
{
"tagName": "device1_modbus_stamper_temperature",
"modbusDataAddress": 2000,
"modbusDataAccess": "inputRegister",
"modbusUnitId": 5,
"modbusDataLen": 1
},
{
"tagId": 18,
"modbusDataAddress": 3000,
"modbusDataAccess": "inputRegister",
"modbusUnitId": 5,
"modbusDataLen": 2
} ], "sourceDataField": "source_payload", "sourceDataFormat": "JSON" }, "metadata": { "description": "This output copies the source_payload.temperature property to the Modbus listener at localhost.", "tags": [ "temperature" ] } }, "responseOptions": { "binaryFormat": "hex", "dataFormat": "objects", "numberFormat": "string" }, "authToken": "replaceWithAuthTokenFromCreateSession", "requestId": "2", "debug": "max" }
 
 

 

Response examples

Maximal

{
  "result": {
    "data": [
      {
        "id": 19,
        "outputName": "modbusTCPout",
        "serviceName": "modbus",
        "databaseName": "faircom",
        "ownerName": "admin",
        "tableName": "modbustabletcp",
        
        "status": "userError",
        "stopCode": 16384,
        "stopReason": "Putting device in an uncertain error state while verifying data delivery.",


        "purpose": "Track Celsius Temperatures from devices",
        "description": "My output connector's description",
        "labels": ["temperature", "celsius"],
        "metadata": { "myProperty": "myValue" },
        
        "createdTimestamp": "2025-08-28T10:47:13.041",
        "updatedTimestamp": "2025-08-28T10:47:13.041",
        "inactiveTimestamp": null,
        "lastDeliveredTimestamp": null,
        "lastConnectedTimestamp": null,
        "lastDisconnectedTimestamp": null,   
    
        "settings": {
          "modbusProtocol": "TCP",
          "modbusServer": "127.0.0.1",
          "modbusServerPort": 502,
          "propertyMapList": [
            {
              "propertyPath": "temperature",
              "modbusDataAccess": "holdingregister",
              "modbusDataAddress": 1199,
              "modbusUnitId": 5,
              "modbusDataLen": 1
            }
          ]
        },
        
        "fields": [],
        "retentionPolicy": "autoPurge",
        "retentionPeriod": 4,
        "retentionUnit": "week",
        "disableTransformSteps": false,
        "logTransformOverwrites": false
      }
    ]
  },
  "authToken": "replaceWithAuthTokenFromCreateSession",
  "errorCode": 0,
  "errorMessage": ""
}
 
 

 

Properties

Request properties ("params")

Property Description Default Type Limits (inclusive)

databaseName

The "databaseName" property specifies the database that contains an object, such as a table or code package. If it is set to null or is omitted, it defaults to the default database of the JSON Action session, see "createSession" and the "defaultDatabaseName" property. 

You specify this property when you want to use a different database instead of the default. Your session's account must have the appropriate privileges to access the code package.

This property is useful because objects, such as tables and code packages, can have the same name in multiple databases. This feature allows you to create multiple environments in the same server and reuse the same JSON actions in each environment. For example, you can create "dev", "test", "stage", and "prod" databases on the same server and use the "defaultDatabaseName" or "databaseName" properties to specify the desired environment.

It is an error to set "databaseName" to the empty string "".

If no default database is specified during "createSession", the server sets the "defaultDatabaseName" to the "defaultDatabaseName" value specified in the services.json file.

Defaults to the session's "defaultDatabaseName" property string 1 to 64 bytes

description

The "description" property assigns a description to a connector. Optional with default of "" string 1 to 512 bytes

enabled

The "enabled" property turns on or off an input or output connector. Thus, it pauses or starts data collection or delivery. Optional with default of true Boolean

true

false

labels

The "labels" property assigns zero or more labels to a connector. You can use it to do lookups and filtering. You can display a list of existing labels, add new ones, rename them, and deprecate them.
When you use the "alterInput" or "alterOutput" actions, omit the "labels" property to leave existing labels unchanged, or specify a complete set of new labels. These actions do not allow you to change one label at a time.
You can use the "labelsFilter" property to lookup and filter connectors. 
The input and output connector actions implement the "labels" property using the Label API. 
The API stores and manages labels in the label group, "faircom/edge/labels", which allows labels to be used through FairCom Edge's APIs.
An API client can retrieve a list of all lifecycle labels by using the "listLabels" action with "partialGroupFilter": "faircom/edge/labels".
An API client should use the connector API's "labels" property to manage the labels assigned to a connector. It should not use the Label API to rename, link, or unlink connectors.
Optional with default of [] string 1 to 64 bytes

metadata

The "metadata" property contains user-defined properties that add keywords and tags about the code package. The server indexes this field with a full-text index so you can search for any word or phrase to find code packages. Optional with default of {} object 0 or more key/value pairs

outputName

The "outputNames" property specifies the names of outputs to be used to filter the response. The response will include details about all outputs with an "outputName" that matches one of the strings in the array.

Optional with default of []

array

1 or more strings

ownerName

The "ownerName" property specifies the account that owns an object, such as a table or code package. See "createSession" and the "defaultOwnerName" property for more details. 

You specify this property when you want to use a different account instead of the default. Your session's account must have the appropriate privileges to access the code package. 

This property is useful because objects, such as tables and code packages, can have the same name in the same database as long as different accounts own each object. This feature allows you to create duplicate objects for different users on the same server and reuse the same JSON actions on those objects. For example, an administrator can copy objects from a production environment to her account so she can troubleshoot an issue using the same JSON actions, JavaScript, and SQL code.

It is an error to set "ownerName" to the empty string "".

If no default owner is specified during "createSession", the server sets the "defaultOwnerName" to the "defaultOwnerName" value specified in the services.json file.

Optional with default of the session's "defaultOwnerName" property string 1 to 64 bytes

purpose

The "purpose" property specifies the purpose of the thing. You can use it for fast partial lookups and filtering. This API uses the Label API to manage purposes.

  • An API client can use the "listLabels" action to retrieve the purpose list. 
  • An API client can use the "alterLabel" action to rename a purpose label.
  • An API client can use the "createLabel" action to create a purpose label.
  • An API client can use the "changeLabel" action to delete a purpose label, but the API client must first use the "listInputs" or "listOutputs" actions with the "purposeFilter" property to ensure the label is unused.
Optional with default of "unknown"  string

1 to 64 bytes

Values are managed in the Label API with the group "faircom/edge/purpose".

serviceName

The "serviceName" property contains the name of a FairCom input or output service. 

See the "params" topic of each specific service for the requirements of this property.

The following services are available as of the V5 release:
  • "MODBUS"
  • "SIEMENSUDT2JSON"
  • "OPCUA"

Note The SQL, JSON RPC, and REST services can automatically query any integration table in FairCom's servers without requiring configuration.

MQTT always represents both input and output services. This is because once a topic is created and assigned to an integration table, any MQTT client can publish messages to it and subscribe to those messages.

Required - No default value string 1 to 64 bytes

settings

The "settings" property contains properties that are specific for each connector type. Settings for Modbus are different than settings for OPC UA, and so forth. See the API reference "params" property of each connector for details of the "settings" property for that connector.

Optional with default of {} object

See these pages for connector specific properties:

Allen-Bradley "params"

Modbus "params"

OPC UA "settings"

Siemens S7 "params"

settings

.propertyMapList

The "propertyMapList" property specifies which data the connector requests and where to put it in the generated JSON. Required - No default value array of objects

See these pages for connector specific properties:

Allen-Bradley "params"

Modbus "params"

OPC UA "settings"

Siemens S7 "params"

settings

propertyMapList

.propertyPath

The "propertyPath" property specifies the JSON path in the JSON document where the connector puts the data it collects. It is mutually exclusive with the "tagName" and "tagId" properties. Required - No default value string JSON path

settings

propertyMapList

.tagId

The "tagId" property associates a tag with a value being collected by a connector. It is mutually exclusive with the "tagName" and "propertyPath" properties. See tagId for more details.
 
Conditional - No default value integer If present, it must contain the ID of an existing tag, which is an integer from 0 to 9223372036854770000.
Note FairCom recommends using this property instead of "propertyPath".

settings

propertyMapList

.tagName

The "tagName" property associates a tag with a value being collected by a connector. It is mutually exclusive with the "tagId" and "propertyPath" properties. See tagName for more details. 
 
Conditional - No default value string

If present, it must contain the name of an existing tag. 

Note FairCom recommends using this property instead of "propertyPath".

sourceFields

The "sourceFields" property specifies the fields the FairCom server makes available to the output connector. The server creates a JSON object from the fields you specify, and the output connector uses it as its source data. If "sourceFields" is omitted, set to null or [], the FairCom server defaults to creating a JSON document that contains all fields from the integration table. This default allows the output connector to send data to a device from any field in the table.

An integration table has many fields, such as fields populated by transforms and MQTT. Converting all fields into JSON is slower than converting only the fields needed by the output connector. For example, input connectors and MQTT messages store their data in the source_payload field. You can use "sourceFields": ["source_payload"] to make only the source_payload field available to the output connector.

When you configure an output connector, you add propertyMap objects to the "propertyMapList". Each propertyMap object extracts data from one field and writes that data to the connected device. The value of the "propertyPath" property is a string containing the path of the data. It always starts with a field name in the "sourceFields" property. For example, if "sourceFields" is set to ["pressure"], then you must set "propertyPath" to "pressure" to use the pressure field’s value in your output. If the value you want to extract is a JSON property nested inside a field, you must add its full path to the "propertyPath". For example, if "sourceFields" is set to ["source_payload"] and source payload contains a JSON object with a "temperature" property, then you must set "propertyPath" to "source_payload.temperature".

Optional with default of [] array One or more fields form the integration table.

status

The "status" property assigns an active or inactive status to a thing. An inactive status is like a soft delete. See "status" for more information.   Optional with default of "active" string enum

"active"

"connectorError"

"deviceError"

"userError"

"paused"

"inactive"

stopCode

The "stopCode" property contains the primary numeric code identifying why the connector is not collecting or delivering data. It is an integer number from 0 to 2147483647 inclusive. 0 means the connector is collecting or delivering data without error. The server sets this property when a connector encounters a problem that affects the quality of the data it collects or that prevents it from collecting or delivering data. The "createInput", "createOutput", "alterInput",  or "alterOutput" actions can also set this value when the "status" property is set to "userError".

  • It is non-zero when the connector is disconnected.
  • It is 14400 (PLUGIN_CONNECTOR_DISABLED) if "status" is "inactive".

Tip Users can use the API to set the state of a connector to "userError" and set the "stopCode" and "stopReason" properties to explain the cause of the user-specified error. 

FairCom uses the following list of OPC UA quality codes as the basis for stop codes between 0 and 65536. FairCom reserves stop codes from 1048576 to 16777215 for its own purposes. Users may use stop codes from 16777216 to 2147483647 for their own purposes.

Conditional - No default value integer 0 to 2147483647

stopReason

The "stopReason" property contains the primary reason why the connector is not collecting or delivering data. It is "" when there is no data collection or delivery issues. The server sets this property when a connector encounters an error that prevents it from collecting or delivering data. The "createInput", "createOutput", "alterInput",  or "alterOutput" actions can also set this value when the "status" property is set to "userError".


Tip Users can use the API to set the state of a connector to "userError" and set the "stopCode" and "stopReason" properties to explain the cause of the user-specified error. 

FairCom uses the following list of OPC UA quality codes as a guide for its stop reasons and stop codes between 0 and 65536. FairCom reserves stop codes from 1048576 to 16777215 for its own purposes. Users may use stop codes from 16777216 to 2147483647 for their own purposes.

Conditional - No default value string 0 to 64 bytes

tableName

The "tableName" property contains the unique, user-defined name of a table.

The table name must start with an upper or lowercase letter, must not contain special characters other than underscore "_", and can include a mix of upper-lower case characters, but are treated as case-insensitive.

 

"params": {
  "tableName": "ctreeTable"
}
Required - No default value string 1 to 64 bytes

thingId

The "thingId" property associates a connector with a device or software application. It is mutually exclusive with the "thingName" property. See thingId for more details.  Optional with default of null integer If present, it must contain the ID of an existing thing, which is an integer form 0 to 9223372036854770000.

thingName

The "thingName" property associates a connector with a device or software application. It is mutually exclusive with the "thingId" property. See thingName for more details. Optional with default of null string 1 to 64 bytes

 

Response properties ("result")

Property Description Type Limits (inclusive)

data

The "data" property contains a response message. Its contents are defined by the action. It is an empty array when no results are available. The following is an example of the data property from a code package action.

  "result": {
    "data": [
      {
        "codeId": 6,
        "databaseName": "faircom",
        "ownerName": "admin",
        "codeName": "convertAndCategorizeTemperature",
        "codeVersion": 1,
        "clonedCodeId": 1,
        "codeStatus": "active",
        "codeLanguage": "javascript",
        "serviceName": "javascript",
        "codeType": "module",
        "description": "optional new description",
        "metadata": {},
        "createdBy": "ADMIN",
        "createdOn": "2025-08-25T21:48:38.109",
        "updatedBy": "ADMIN",
        "updatedOn": "2025-08-25T21:48:38.109",
        "comment": "Cloned from convertTemperature",
        "codeFormat": "utf8"
      },
    ]
array of objects The action determines its contents.

data

.createdTimestamp

The "createdTimestamp" property is the date and time when the connector was originally created in ISO 8601 format, such as "2025-08-28T10:47:13.041". It is never null. timestamp An ISO 8601 timestamp

data

.databaseName

The "databaseName" property specifies the database that contains the tables. 

Note In the API Explorer, "defaultDatabaseName" is set to "ctreeSQL" in the "createSession" action that happens at login.

  • If the "databaseName" property is omitted or set to null, the server will use the default database name specified at login.
  • If no default database is specified during "createSession", "databaseName" will be set to the "defaultDatabaseName" value that is specified in the services.json file.
  • This property's value is case insensitive. 
string 1 to 64 bytes

data

.description

The "description" property assigns a description to a connector. string 1 to 512 bytes

data

.disableTransformSteps

The "disableTransformSteps" property determines if the transform steps are active without removing them from the integration table. When true, it prevents the server from running an integration table's transform steps on newly inserted records. When false, the transform steps run normally. It is useful to quickly stop a broken transform process.

Boolelan

true

false

data

.enabled


The "enabled" property is true when a connector is allowed to connect to a device. It is false when a connector will not attempt to connect to the device.

 

Boolean true
false

data

.fields

The "fields" property is an array of objects. Each object in the array defines a field by specifying its properties.

 

"fields": [
  {
    "autoValue": "none",
    "name": "name",
    "type": "varchar",
    "length": 50,
    "scale": null,
    "defaultValue": null,
    "nullable": false,
"primaryKey": 0,
"autoValue": "none" } ]
array

"autoTimestamp"

"autoValue"

"primaryKey"
"name"
"type"
"length"
"scale"
"defaultValue"
"nullable"

"primaryKey"

"autoValue"

data

.id

The "id" property is the unique identifier of an object such as a label or thing. In JSON, you may use an integer number or a string containing an integer number. The server automatically generates the "id" when you create a label and stores it in the label table as an integer. You cannot alter the "id" value. If your application needs to specify a specific numeric identifier for a label, use the "enum" property.

integer 0 to 2147483647

data

.inactiveTimestamp

The "inactiveTimestamp" property is the date and time when the connector was last made inactive. It is null when the connector is active. It is returned in ISO 8601 format, such as "2025-08-28T10:47:13.041". timestamp ISO 8601 timestamp

data

.labels

The "labels" property assigns zero or more labels to a connector. You can use it to do lookups and filtering. You can display a list of existing labels, add new ones, rename them, and deprecate them.
When you use the "alterInput" or "alterOutput" actions, omit the "labels" property to leave existing labels unchanged, or specify a complete set of new labels. These actions do not allow you to change one label at a time.
You can use the "labelsFilter" property to lookup and filter connectors. 
The input and output connector actions implement the "labels" property using the Label API. 
The API stores and manages labels in the label group, "faircom/edge/labels", which allows labels to be used through FairCom Edge's APIs.
An API client can retrieve a list of all lifecycle labels by using the "listLabels" action with "partialGroupFilter": "faircom/edge/labels".
An API client should use the connector API's "labels" property to manage the labels assigned to a connector. It should not use the Label API to rename, link, or unlink connectors.
string 1 to 64 bytes

data

.lastConnectedTimestamp

The "lastConnectedTimestamp" property is optionally returned from the "describeInputs", "alterInput", "describeOutputs", "alterOutput" actions. 
It returns the ISO 8601 date and time of the last time the connector was connected to its device. If it has never been connected, the value is null. The following string is an example of an ISO 8601 timestamp: "2025-08-28T10:47:13.041".
ISO 8601 timestamp The last ISO 8601 date and time the input connector was connected to its device.

data

.lastDeliveredTimestamp

The "lastDeliveredTimestamp" property is a dynamically calculated property that is optionally returned in the "outputConnectors" list from the "describeTags", and "alterTag" actions.

 

It returns the ISO 8601 date and time of the last data delivered by the output connector. If no data has been delivered, the value is null. The following string is an example of an ISO 8601 timestamp: "2025-08-28T10:47:13.041".

ISO 8601 timestamp The ISO 8601 date and time of the last data delivered by the output connector.

data

.lastDisconnectedTimestamp

The "lastDisconnectedTimestamp" property is optionally returned from the "describeInputs", "alterInput", "describeOutputs", "alterOutput" actions. 
It returns the ISO 8601 date and time of the last time the connector disconnected from a device or software. If it has never disconnected, the value is null. The following string is an example of an ISO 8601 timestamp: "2025-08-28T10:47:13.041".
ISO 8601 timestamp The last ISO 8601 date and time the input connector was disconnected from its device.

data

.logTransformOverwrites

The "logTransformOverwrites" property specifies whether or not the server will add a log entry to the log field when a transform step overwrites a field. When true and a record is inserted into the integration table, the server adds log entries to the log field when a transform step overwrites a field that already contains a value. When true, it protects fields, such as source_payload, from being overwritten accidentally. 

You typically set "logTransformOverwrites" to true when testing transform steps. Once they are working as expected, you can set it to false.

If multiple "recordPath" properties write to the same JSON properties in a "tableFieldsToJson" transform, the server will return an error because "recordPath" cannot overwrite. Multiple occurrences of the "recordPath" property may reference the same property as long as the property is in different fields/tables.

Additionally, non-JavaScript transform steps cannot overwrite protected fields or the source_payload field. The only exception is that a single "tableFieldsToJson" transform step may write to the source_payload field.

You may create transform steps to take the value of one JSON property and store it in multiple fields as long as no previous transform steps have already put values in these fields. Conversely, you may take the value of one field and store it in multiple JSON properties.

Tip Ensure JavaScript transform steps do not overwrite fields updated by other transform steps. 

Do not use the "tableFieldsToJson" transform method to overwrite the source_payload field; instead, use "tableFieldsToJson" to write to a different field and use the "configureTopic" action with the "outputPayloadField" property to configure the MQTT topic to deliver that field's value to subscribers. 

Ensure SQL, JSON DB, and other APIs set the value of the source_payload field and do not set field values that transform steps update.

Boolean

true

false

data

.metadata

The "metadata" field allows a customer to add a JSON value to an object such as a label or thing. It is typically a JSON object, but may be any JSON value. Its purpose is to provide additional metadata about the label, such as translations in multiple languages, historical value changes, etc. The "alterLabel" action can only replace this value with a new JSON value.

JSON 0 to 65,500 bytes

data

.outputName

The "outputName" property specifies a unique name for mapping an integration table to an output plugin to an external system. string 1 to 64 bytes

data

.ownerName

The "ownerName" property identifies the user who owns an object (see Object owner).  string 0 to 64 bytes

data

.purpose

The "purpose" property specifies the purpose of the thing. You can use it for fast partial lookups and filtering. This API uses the Label API to manage purposes.

  • An API client can use the "listLabels" action to retrieve the purpose list. 
  • An API client can use the "alterLabel" action to rename a purpose label.
  • An API client can use the "createLabel" action to create a purpose label.
  • An API client can use the "changeLabel" action to delete a purpose label, but the API client must first use the "listInputs" or "listOutputs" actions with the "purposeFilter" property to ensure the label is unused.
string

1 to 64 bytes

Values are managed in the Label API with the group "faircom/edge/purpose".

data

.retentionPeriod

The "retentionPeriod" property specifies how many units of data to retain. It refers to the unit of time specified by the "retentionUnit" property. For more details, see "retentionPeriod".

integer 1 to 100

data

.retentionPolicy

The "retentionPolicy" property controls how messages are persisted. 

If not specified, the default found in the services.json file is used. Initially, it is "autoPurge".

 

retentionPolicy values:
  • "autoPurge"
    • This is the default. It is automatically applied when a new topic is created. It is preferred because it allows FairCom's servers to automatically remove messages that are older than the retention time. This helps ensure message data does not consume all storage space. It also minimizes storage costs and speeds up data access. The server partitions a table into multiple files so it can efficiently delete expired files.
  • "neverPurge"
    • This stores messages on disk and never removes them. This is useful when you need the entire history of the message stream. If message velocity is high, this can consume all storage space and cause an outage. The server creates a non-partitioned table, which is slightly faster than a partitioned table because it stores all records in one file.
string

"autoPurge"

"neverPurge"

data

.retentionUnit

The "retentionUnit" property specifies a unit of time that the server will use to purge expired messages. For example, if you want a week's worth of messages to be purged once a week, set "retentionUnit" to "week". This property is optional.

If not specified, the default found in the services.json file is used. Initially, it is "week"

  • This property is used in concert with "retentionPeriod" to determine retention time.
  • "retentionUnit" values:
    • "minute"
    • "hour"
    • "day"
    • "week"
    • "month"
    • "year"
    • "forever"

Note 

  • For best performance, set the "retentionUnit" to a value that keeps "retentionPeriod" between 5 and 30
  • When you set "retentionUnit" property to "forever" the server will not purge messages. This setting is the same as setting "retentionPolicy" to "neverPurge".
  • The "retentionUnit" and "retentionPeriod" properties are used only when the "retentionPolicy" is set to "autoPurge".

string

"minute"

"hour"

"day"

"week"

"month"

"year"

data

.running

The "running" property is true when an input connector is collecting data or an output connector is delivering data; otherwise, it is false. A disabled connector will never be running. An enabled connector may or may not be running. Boolean

true

false

data

.serviceName

The "serviceName" property contains the name of a FairCom input or output service. 

See the "params" topic of each specific service for the requirements of this property.

The following services are available as of the V5 release:
  • "MODBUS"
  • "SIEMENSUDT2JSON"
  • "OPCUA"

Note The SQL, JSON RPC, and REST services can automatically query any integration table in FairCom's servers without requiring configuration.

Note MQTT always represents both input and output services. This is because once a topic is created and assigned to an integration table, any MQTT client can publish messages to it and subscribe to those messages.

string A service name between 1 and 64 bytes.

data

.settings

The "settings" property contains properties that are specific for each connector type. Settings for Modbus are different than settings for OPC UA, and so forth. See the API reference "params" property of each connector for details of the "settings" property for that connector.

object

See these pages for connector specific properties:

Allen-Bradley "params"

Modbus "params"

OPC UA "settings"

Siemens S7 "params"

data

settings

.propertyMapList

The "propertyMapList" property specifies which data the connector requests and where to put it in the generated JSON. array of objects

See these pages for connector specific properties:

Allen-Bradley "params"

Modbus "params"

OPC UA "settings"

Siemens S7 "params"

data

settings

propertyMapList

.propertyPath

The "propertyPath" property specifies the JSON path in the JSON document where the connector puts the data it collects. It is mutually exclusive with the "tagName" and "tagId" properties. string JSON path

data

settings

propertyMapList

.tagId

The "tagId" property associates a tag with a value being collected by a connector. It is mutually exclusive with the "tagName" and "propertyPath" properties. See tagId for more details.
 
integer If present, it must contain the ID of an existing tag, which is an integer from 0 to 9223372036854770000.
Note FairCom recommends using this property instead of "propertyPath".

data

settings

propertyMapList

.tagName

The "tagName" property associates a tag with a value being collected by a connector. It is mutually exclusive with the "tagId" and "propertyPath" properties. See tagName for more details. 
 
string

If present, it must contain the name of an existing tag. 

Note FairCom recommends using this property instead of "propertyPath".

data

.status

The "status" property assigns an active or inactive status to a thing. An inactive status is like a soft delete. See "status" for more information.   string enum

"active"

"connectorError"

"deviceError"

"userError"

"paused"

"inactive"

data

.stopCode

The "stopCode" property is 0 when the connector is successfully connected to its device or software; otherwise, it is non-zero. integer -2147483648 to 2147483647

data

.stopReason

The "stopReason" property is "" when the input connector is collecting data; otherwise, it is a non-empty string. string 0 to 256 bytes

data

.tableName

The "tableName" property is a string containing the name of a table.

The table name must start with an upper or lowercase letter, must not contain special characters other than underscore "_", and can include a mix of upper-lower case characters, but are treated as case-insensitive.

string 1 to 64 bytes

data

.thingId

The "thingId" property associates a connector with a device or software application. It is mutually exclusive with the "thingName" property. See thingId for more details.  integer If present, it must contain the ID of an existing thing, which is an integer form 0 to 9223372036854770000.

data

.thingName

The "thingName" property associates a connector with a device or software application. It is mutually exclusive with the "thingId" property. See thingName for more details. string 1 to 64 bytes

data

.updatedTimestamp

The "updatedTimestamp" property is the date and time when the connector was last updated. It is the same as the "createdTimestamp" property when the connector has never been updated. It is returned in ISO 8601 format, such as "2025-08-28T10:47:13.041". timestamp ISO 8601 timestamp