Response properties
Universal response properties list
| Property | Description | Type | Contents | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accounts |
The "accounts": [
{
"username": "admin",
"accountDescription": "",
"lockoutAfterNFailedAttempts": 0,
"maxDaysBeforePasswordMustChange": 0,
"maxMinutesBeforeNextLogin": 0,
"memoryLimit": 0,
"memoryRule": "default",
"roles": [
{
"roleName": "ADMIN"
}
]
}
|
array of objects | One object per matching account. | ||||||||||||
affectedRows |
The "affectedRows" property specifies the number of records that were affected by the SQL statement. |
integer | number of records affected by the statement. | ||||||||||||
allowedCipherSuites |
The "allowedCiperSuites" property is an optional string that specifies an array of ciphers that the server will accept for communications with clients. It defaults to an empty string.
|
string | No limits | ||||||||||||
applicationRoot |
The "applicationRoot" property is a string that specifies the location of web applications relative to <faircom>/server/. The default value of "./web/apps/" translates to the folder <faircom>/server/web/apps. There is rarely a reason to change the "applicationRoot". For information on how to add your own web applications, which can use any of FairCom's jsonAction APIs, contact FairCom. |
string | The filepath to the folder where FairCom's apps are located. | ||||||||||||
applications |
The "applications" property is an array of objects that describes and controls web applications that can run with the FairCom server. It defaults to an empty array which means no applications are configured to run. FairCom and other custom web applications are single-page, browser-based applications served from folders in the default <faircom>/server/web/apps/ folder. An app server is a backend service used by one or more web applications. It listens to HTTP and/or WebSocket requests and then returns results. Contact FairCom for information on how to build and add your own app servers using C or C++. The following "applications" properties should be considered for each web app:
|
array of objects | One object per application. | ||||||||||||
authToken |
The "authToken" property signifies that the client is authenticated and authorized. It is required. It is supplied by the server in response to the connect action. Clients must include it in all subsequent requests to validate that they are authenticated and authorized. If the client does not supply the correct values, the server returns an unauthorized error. |
string | 0 to 255 bytes | ||||||||||||
autoValue |
The optional Only one of these values is allowed per field.
Request "fields": [
{
"name": "signed_int32",
"type": "integer",
"autoValue": "incrementOnInsert"
}
]
Response {
"result": {
"dataFormat": "objects",
"data": [
{
"changeIdField": "changeId",
"createRecByteIndex": false,
"databaseName": "ctreeSQL",
"fieldDelimiterValue": 0,
"fields": [
{
"autoValue": "incrementOnInsert",
"defaultValue": null,
"length": null,
"name": "signed_int32",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "integer"
}
]
}
]
},
"errorCode": 0,
"errorMessage": "",
"authToken": "replaceWithAuthTokenFromCreateSession"
} |
string |
|
||||||||||||
averageMessagesPerDay |
The "averageMessagesPerDay" property describes how many messages the specified topic publishes per day on average. | integer | The average number of messages published per day | ||||||||||||
averageMessagesPerHour |
The "averageMessagesPerHour" property describes how many messages the specified topic publishes per hour on average. | integer | The average number of messages published per hour | ||||||||||||
averageMessagesPerMinute |
The "averageMessagesPerMinute" property describes how many messages the specified topic publishes per minute on average. | integer | The average number of messages published per minute | ||||||||||||
binaryFormat |
string | One of the following: "base64", "hex", or "byteArray". |
|||||||||||||
body |
The "body" property specifies information to send to a REST server by defining the "propertyPath" and "propertyValue" properties. | array of objects |
|
||||||||||||
brokerConnectionNames |
The "brokerConnectionNames" property is a required array that contains a list of "brokerConnectionName" strings. It defaults to an empty array.
|
array of objects |
1 object for each broker connection matching the request containing some or all of the following properties:
|
||||||||||||
brokerHostname |
The "brokerHostname" property is required. It must not be a zero-length string or contain only whitespace. It has a maximum length of 255 characters. When these rules are violated the following errors will be displayed:
|
string | the unique broker host name or TCP/IP address of the specified broker connection. | ||||||||||||
brokerPort |
The "brokerPort" property is optional. It defines the TCP/IP port. If it is not present, it defaults to 1883.
|
integer | the TCP/IP port of the specified broker connection. | ||||||||||||
brokerUserName |
The "brokerUsername" property is the login name to the external broker. This property is an optional string from 1 to 64 bytes. If omitted, it defaults to an empty string.
|
string | the login name to the external broker. | ||||||||||||
caCertificateFilename |
The "caCertificateFilename" property is an optional string that specifies the name and optional path of the CA certificate file (such as "ca.pem"). It defaults to an empty string.
"tls": {
"enabled": true,
"caCertificateFilename": "ca.crt",
"allowedCipherSuites": "",
"clientCertificateEnabled": true,
"clientCertificateFilename": "admin_client.crt",
"clientPrivateKeyFilename": "admin_client.key"
} |
string | No limits | ||||||||||||
certificateFilename |
The "certificateFilename" property is an optional string that specifies the name and optional path of a server certificate file. "tls": {
"allowedCipherSuites": "",
"certificateAuthoritiesFilename": "",
"certificateFilename": "",
"privateKeyFilename": ""
}, |
string | No limits | ||||||||||||
changedLabels |
The "changedLabels": [
{
"id": 4,
"group": "myLabelGroupName",
"name": "myLabelName",
"value": 99,
"enum": 0,
"sequence": 1.2,
"deprecated": false,
"description": "My label description.",
"metadata": {}
}
] |
array of objects | An object for each changed label. | ||||||||||||
changeIdField |
This property's value designates the name of the field used for change-tracking functionality if you are not using the "changeId" field for change tracking. "createTable" automatically creates the "changeId" field to hold the change tracking number used for optimistic locking. Using the "changeId" field for optimistic locking is a best practice. However, if you use the name "changeId" for another purpose, you can use the "changeIdField" property to designate a different field as the change tracking number field.
Request example "params": {
"changeIdField": "changetrackingid"
} |
string | 1 to 64 bytes | ||||||||||||
clientCertificateEnabled |
The "clientCertificateEnabled" property is an optional boolean that enables client certificate authentication if true. The target FairCom DB or RTG server must be configured to accept client certificates. | boolean |
|
||||||||||||
clientCertificateFilename |
string | The file name of a client certificate. | |||||||||||||
clientPrivateKeyFilename |
string | The file name of a client certificate private key file. | |||||||||||||
clientName |
uniquely identifies an MQ session. | string | |||||||||||||
clonedCodeId |
The "clonedCodeId" indicates which copy the specified code package is out of all existing code package clones. If the specified code package is the original one, its value will be 0. "result": {
"data": [
{
"codeId": 1,
"databaseName": "faircom",
"ownerName": "admin",
"codeName": "convertTemperature",
"codeVersion": 1,
"clonedCodeId": 0
]
}, |
integer | The cloned code ID. | ||||||||||||
codeServices |
The "codeServices" property is an optional array of objects that specifies which programming languages are available in the product. |
array of objects |
|
||||||||||||
codeVersion |
The "codeVersion" property indicates the version of the specified code package. "result": {
"data": [
{
"codeId": 1,
"databaseName": "faircom",
"ownerName": "admin",
"codeName": "convertTemperature",
"codeVersion": 1,
"clonedCodeId": 0
]
}, |
integer | The version of the specified code package. | ||||||||||||
collectStats |
identifies whether usage statistics are being collected and stored. | boolean |
|
||||||||||||
compression |
identifies whether the index is compressed. | string |
|
||||||||||||
conditionalExpression |
identifies an optional conditional expression that filters which records are included in the index. It is null when there is no conditional expression. | string |
null or a string containing a conditional expression. |
||||||||||||
connectionStatus |
The "connectionStatus" property is returned by the "describeMqSessions" action to indicate if and how a client is connected to an MQ session. It has the following values:
|
string |
|
||||||||||||
connectorName |
In the Tag actions, the
|
string | 1 to 64 bytes | ||||||||||||
connectorId |
The
|
integer |
0 to 9223372036854770000
|
||||||||||||
createdBy |
The "createdBy" property indicates the name of the account used to create the specified code package. "result": {
"data": [
{
"createdBy": "ADMIN",
"createdOn": "2025-08-25T21:48:38.109",
"updatedBy": "ADMIN",
"updatedOn": "2025-08-25T21:48:38.109"
},
] |
string | The name of the account used to create the code package. | ||||||||||||
createdOn |
The "createdOn" property indicates the date and time the code package was created. "result": {
"data": [
{
"createdBy": "ADMIN",
"createdOn": "2025-08-25T21:48:38.109",
"updatedBy": "ADMIN",
"updatedOn": "2025-08-25T21:48:38.109"
},
] |
timestamp | The date and time when the code package was created. | ||||||||||||
createdTimestamp |
The "createdTimestamp" property is the date and time when something, such as a thing or key, was originally created in ISO 8601 format, such as "2025-08-28T10:47:13.041". It is never null. |
timestamp | An ISO 8601 timestamp | ||||||||||||
creationTime |
The "creationTime" property details the date and time when the specified topic was created. This property stores the creation date in an ISO 8601 timestamp. | timestamp | An ISO 8601 timestamp | ||||||||||||
cursorid |
The "cursorId" property is a required string from 0 to 255 bytes. It is a unique identifier returned by the server.
|
string | 0 to 255 bytes | ||||||||||||
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. | ||||||||||||
databaseConnectionString |
The "databaseConnectionString" property specifies the connection string for the database that holds the persistence table. | string | No limits | ||||||||||||
databaseName |
The
"params": {
"databaseName": "mainDatabase"
} |
string | 1 to 64 bytes | ||||||||||||
databaseUserName |
The "databaseUserName" property specifies the user name of the account logged into the database that holds the persistence table. | string | 0 to 64 bytes | ||||||||||||
dataChangeStreamFirstStartTimestamp |
The "dataChangeStreamFirstStartTimestamp" property specifies the UTC date and time in ISO-8601 format when the stream first started.
|
string timestamp | "2025-06-07T12:23:19.275" | ||||||||||||
dataChangeStreamLastPausedTimestamp |
The "dataChangeStreamLastPausedTimestamp" property specifies the UTC date and time in ISO-8601 format when the stream last paused.
|
string timestamp | "2025-06-07T12:23:19.275" | ||||||||||||
dataChangeStreamLastStartTimestamp |
The "dataChangeStreamLastStartTimestamp" property specifies the UTC date and time in ISO-8601 format when the stream last restarted.
|
string timestamp | "2025-06-07T12:23:19.275" | ||||||||||||
dataChangeStreams |
lists the data change streams that match the filters in the request as separate objects. | array of objects |
0 or more objects including 1 or more of the following properties:
|
||||||||||||
dataChangeStreamStatus |
The "dataChangeStreamStatus" property specifies the status of the data change stream. It may specify any of the following states: | string enum |
|
||||||||||||
dataFormat |
The "dataFormat" property is a case-insensitive string enum that defines the format of the "data" property. The default format is an array of arrays. The alternative is an array of objects. The default for "dataFormat" can be changed during a "createSession" action by assigning a different value to the "dataFormat" property in "defaultResponseOptions". There are three different (but similar) versions of the "dataFormat" property:
Two of those versions occur in a request, and another occurs in a response. They all indicate how data is formatted.
|
string |
|
||||||||||||
defaultApi |
The "defaultApi" property specifies the default value of the "api" property when it is omitted from an action request. The default value for "defaultApi" is "admin", which is the API used by all session actions. "params": {
"username": "CHANGE",
"password": "CHANGE",
"description": "optional user description of session for troubleshooting",
"defaultApi": "db",
"defaultDebug": "max",
"defaultDatabaseName": "ctreeSQL",
"defaultOwnerName": "admin",
"defaultBinaryFormat": "hex"
}, |
string enum |
|
||||||||||||
defaultBinaryFormat |
|
string | One of the following: "base64", "hex", or "byteArray". |
||||||||||||
defaultDatabaseName |
The "defaultDatabaseName" property is an optional string that specifies which database name to use when the "databaseName" property is omitted. Its value is case insensitive. "params": {
"username": "CHANGE",
"password": "CHANGE",
"description": "optional user description of session for troubleshooting",
"defaultApi": "db",
"defaultDebug": "max",
"defaultDatabaseName": "ctreeSQL",
"defaultOwnerName": "admin",
"defaultBinaryFormat": "hex"
}, |
string | 1 to 64 bytes | ||||||||||||
defaultDebug |
The "defaultDebug" property is an optional string that defines the default value of the "debug" property for all requests in a session. It defaults to "max".
|
string enum |
|
||||||||||||
defaultOwnerName |
The optional "defaultOwnerName" property is is used by "createSession" and "alterSession" to specify the default owner of objects created by the session. Its value must be a valid username of an account. If it is omitted, null, or "", it defaults to the value of the session's "username" property.
|
string | 1 to 64 bytes | ||||||||||||
defaultValue |
The optional "defaultValue" property identifies the default value of the field. |
string | 0 to 65,500 bytes | ||||||||||||
defaultVariantFormat |
The "defaultVariantFormat" property sets the default value of the "variantFormat" property when a JSON Action request does not include it. |
string |
|
||||||||||||
defaultResponseOptions |
The "defaultResponseOptions" property is a "responseOptions" object. It defines a default value for "responseOptions" that is used by default in all other action calls. It defaults to an empty object. JSON NAV allows you to choose how your program detects errors. By default, all error properties are included in each response – unless you override this behavior as shown in the example. The example omits the error object in all responses which makes it easier for statically typed languages, such as C, C++, Java, C#, and VB, because they prefer properties to always be present. To help these languages, the "errorCode", "errorMessage", and "errorData" properties are always present whether there is an error or not. Example "defaultResponseOptions": {
"binaryFormat": "hex",
"dataFormat": "objects",
"numberFormat": "number",
"variantFormat": "json"
} |
object |
|
||||||||||||
defaultRetentionPeriod |
The "defaultRetentionPeriod" property specifies how many retention units will be retained if the "retentionPeriod" property is omitted. It is used in tandem with "defaultRetentionUnit", the retention period describing how many units, and the retention unit describing what kind of unit of measurement. For example, if the "defaultRetentionPeriod" is set to 4, and the "defaultRetentionUnit" is set to "week", the server will purge messages once 4 weeks have passed by default. "params": {
"defaultRetentionPolicy": "autoPurge",
"defaultRetentionUnit": "week",
"defaultRetentionPeriod": 4
}, |
integer |
1 to 100
|
||||||||||||
defaultRetentionPolicy |
The "defaultRetentionPolicy" property specifies the default way in which messages are persisted if the "retentionPolicy" property is omitted. Using this property, you can configure messages to persist indefinitely, be purged according to the retention unit and period, or be immediately purged by default. "params": {
"defaultRetentionPolicy": "autoPurge",
"defaultRetentionUnit": "week",
"defaultRetentionPeriod": 4
}, |
string enum |
|
||||||||||||
defaultRetentionUnit |
The "defaultRetentionUnit" property specifies the type of retention unit if the "retentionUnit" property is omitted. It is used in tandem with "defaultRetentionUnit", the retention period describing how many units, and the retention unit describing what kind of unit of measurement. For example, if the "defaultRetentionPeriod" is set to 4, and the "defaultRetentionUnit" is set to "week", the server will purge messages once 4 weeks have passed by default. "params": {
"defaultRetentionPolicy": "autoPurge",
"defaultRetentionUnit": "week",
"defaultRetentionPeriod": 4
}, |
string enum |
|
||||||||||||
defaultValue |
specifies the default value of a field. | string | 0 to 65,500 bytes | ||||||||||||
deferindexing |
identifies whether deferred indexing is enabled. A deferred index builds and updates asynchronously. This speeds up inserts, updates, and deletes, with a slight delay from including the changes in the index. | boolean |
|
||||||||||||
deletedLabels |
The "deletedLabels": [
{
"id": 4,
"group": "myLabelGroupName",
"name": "myLabelName",
"value": 99,
"enum": 0,
"sequence": 1.2,
"deprecated": false,
"description": "My label description.",
"metadata": {}
}
] |
array of objects | An object for each deleted label. | ||||||||||||
deletedTags |
The "deletedTags" property is an array of objects that describe the tags that were deleted. |
array of objects |
zero or more objects containing the following properties:
|
||||||||||||
deprecated |
The |
Boolean |
|
||||||||||||
description |
The Markdown is a good language for formatting description text. You must ensure the text is compatible with a JSON string. For example, you must escape a double quote character using the backslash character: \".
In the Thing API, It defaults to
|
string | 1 to 65,500 bytes | ||||||||||||
elapsedMilliseconds |
The "elapsedMilliseconds" property specifies the number of milliseconds it took for the server to execute the SQL statement. |
integer | The number of seconds it took to execute the statement. | ||||||||||||
enabled |
The "enabled" property is an optional Boolean that specifies whether or not the feature is enabled. The example below enables the TLS feature. "tls": {
"enabled": true,
"caCertificateFilename": "ca.crt",
"allowedCipherSuites": "",
"clientCertificateEnabled": true,
"clientCertificateFilename": "admin_client.crt",
"clientPrivateKeyFilename": "admin_client.key"
} |
Boolean |
|
||||||||||||
enablePermanentJsonApiSessions |
The "enablePermanentJsonApiSessions" property enables or disables permanent sessions. When set to false, permanent sessions cannot be created. |
Boolean |
|
||||||||||||
endTimestamp |
The "endTimestamp" property is an optional string that contains an ISO8601 timestamp, which filters the response to return problems that ended before or on its value. If any parts of the timestamp are missing or omitted, the server defaults the remaining parts to 0.
|
string containing an ISO8601 timestamp |
|
||||||||||||
enum |
The
|
smallint | -32768 to 32767 | ||||||||||||
errorCode |
The "errorCode" property indicates an error when set to a non-zero integer or success when 0. | integer | -2147483648 to 2147483647 | ||||||||||||
errorMessage |
The "errorMessage" property displays a human-readable error message. | string | 0 to 256 bytes | ||||||||||||
estimatedBacklogSeconds |
The "estimatedBacklogSeconds" property is an integer that reports the approximate time, in seconds, needed by the FairCom MQ server to apply data changes from the source server. |
integer | 0 to 4294967296 | ||||||||||||
fields |
The "fields" property is an array of objects. It is required when creating a table. 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
}
] |
array |
|
||||||||||||
fixedOutput |
includes all properties in a data change event when true. | Boolean |
|
||||||||||||
group |
The The The group name may contain up to 64 bytes of UTF-8 encoded characters. If the When you assign a group name to a label, the server automatically checks if the group name exists in the list of groups that the
|
string | 1 to 64 bytes | ||||||||||||
hierarchyDelimiter |
The optional
The
|
string | 1 byte | ||||||||||||
host |
The "host" property specifies the IP or hostname of the Rest resource, including the port. | string | 1 to 1024 bytes | ||||||||||||
hostIpAddresses |
The "hostIpAddresses" property specifies the IP addresses of the sessions host. "sessions": [
{
"hostname": "host's name",
"hostUuid": "561d3f41-37da-4d03-bcc2-9cf2b671119f",
"hostIpAddresses": [
"fe80::7b21:ec4f:fbb0:7d45",
"169.254.188.125",
"fe80::62c9:6f17:6132:d13f",
"169.254.150.200",
"fe80::6e3f:653a:ac7b:3074",
"169.254.169.237",
"fe80::c98f:a8f0:25c5:91e4",
"10.250.250.201",
"fe80::48d2:30ab:3798:6a6d",
"169.254.35.210"
],
"hostServerNamePort": "FAIRCOMS",
"hostSQLPort": 6597
}
] |
array of strings | The host's IP addresses | ||||||||||||
hostname |
The "hostname" property specifies the name of the host device. "sessions": [
{
"hostname": "host's name",
"hostUuid": "561d3f41-37da-4d03-bcc2-9cf2b671119f",
"hostIpAddresses": [
"fe80::7b21:ec4f:fbb0:7d45",
"169.254.188.125",
"fe80::62c9:6f17:6132:d13f",
"169.254.150.200",
"fe80::6e3f:653a:ac7b:3074",
"169.254.169.237",
"fe80::c98f:a8f0:25c5:91e4",
"10.250.250.201",
"fe80::48d2:30ab:3798:6a6d",
"169.254.35.210"
],
"hostServerNamePort": "FAIRCOMS",
"hostSQLPort": 6597
}
] |
string | The name of the host device. | ||||||||||||
hostnames |
The optional
When you use the
The Thing API implements the
|
array | zero or more hostname strings | ||||||||||||
hostServerNamePort |
The "hostServerNamePort" property specifies the server's ISAM port or server name. "sessions": [
{
"hostname": "host's name",
"hostUuid": "561d3f41-37da-4d03-bcc2-9cf2b671119f",
"hostIpAddresses": [
"fe80::7b21:ec4f:fbb0:7d45",
"169.254.188.125",
"fe80::62c9:6f17:6132:d13f",
"169.254.150.200",
"fe80::6e3f:653a:ac7b:3074",
"169.254.169.237",
"fe80::c98f:a8f0:25c5:91e4",
"10.250.250.201",
"fe80::48d2:30ab:3798:6a6d",
"169.254.35.210"
],
"hostServerNamePort": "FAIRCOMS",
"hostSQLPort": 6597
}
] |
string | The name of the server or ISAM port. | ||||||||||||
hostSQLPort |
The "hostSQLPort" property contains the server's SQL port. "sessions": [
{
"hostname": "host's name",
"hostUuid": "561d3f41-37da-4d03-bcc2-9cf2b671119f",
"hostIpAddresses": [
"fe80::7b21:ec4f:fbb0:7d45",
"169.254.188.125",
"fe80::62c9:6f17:6132:d13f",
"169.254.150.200",
"fe80::6e3f:653a:ac7b:3074",
"169.254.169.237",
"fe80::c98f:a8f0:25c5:91e4",
"10.250.250.201",
"fe80::48d2:30ab:3798:6a6d",
"169.254.35.210"
],
"hostServerNamePort": "FAIRCOMS",
"hostSQLPort": 6597
}
] |
string | The name of the server's SQL port. | ||||||||||||
hostUuid |
The "hostUuid" property specifies the universal identifier of the server instance. "sessions": [
{
"hostname": "host's name",
"hostUuid": "561d3f41-37da-4d03-bcc2-9cf2b671119f",
"hostIpAddresses": [
"fe80::7b21:ec4f:fbb0:7d45",
"169.254.188.125",
"fe80::62c9:6f17:6132:d13f",
"169.254.150.200",
"fe80::6e3f:653a:ac7b:3074",
"169.254.169.237",
"fe80::c98f:a8f0:25c5:91e4",
"10.250.250.201",
"fe80::48d2:30ab:3798:6a6d",
"169.254.35.210"
],
"hostServerNamePort": "FAIRCOMS",
"hostSQLPort": 6597
}
] |
string | A UUID | ||||||||||||
id |
The |
integer |
0 to 2147483647 0 to 9223372036854770000 in the Thing API |
||||||||||||
idleConnectionTimeoutSeconds |
The "idleConnectionTimeoutSeconds" property is an optional integer from 0 to 2147483647. It is the number of seconds that a session with no activity will stay open. A value of 0 keeps a session open indefinitely. |
integer |
0 to 2147483647
|
||||||||||||
idleCursorTimeoutSeconds |
The "idleCursorTimeoutSeconds" property is an optional integer from 0 to 2147483647. It is the number of seconds to keep a cursor open.
|
integer |
0 to 2147483647
|
||||||||||||
ids |
The
|
array | 0 or more ids | ||||||||||||
immutableKeys |
identifies whether the key's values can be changed. | boolean |
|
||||||||||||
inactiveTimestamp |
The "inactiveTimestamp" property is the date and time when the thing was last made inactive. It is null when the thing is active. It is returned in ISO 8601 format, such as "2025-08-28T10:47:13.041". |
timestamp | ISO 8601 timestamp | ||||||||||||
includedFields |
The "includedFields" property is an array of strings that includes specified source table fields in the data change event or all fields when empty. |
array of strings | 0 or more strings | ||||||||||||
includeExistingRecordsFilter |
The "includeExistingRecordsFilter" property is a Boolean that returns streams that synchronize existing records if true. |
Boolean |
|
||||||||||||
includeMetadata |
The "includeMetadata" property is an array of metadata objects that adds user-defined properties to each data change event. |
array of metadata objects | [
{
"propertyPath": "myPath",
"propertyValue": "myValue"
}
] |
||||||||||||
includePrimaryKey |
The "includePrimaryKey" property is an enumerated string that specifies when to add the "pk" property to the data change event's "fields" object to indicate the field's position in the primary key. |
string |
|
||||||||||||
indexes |
is an array of objects where each object identifies the characteristics of each index in the table. | array |
|
||||||||||||
inputConnectors |
The
|
array of objects |
zero or more objects containing zero or more of the following properties:
|
||||||||||||
inputName |
The "inputName" property is a required string that specifies the unique name of an input. | string | 1 to 64 bytes | ||||||||||||
integrationServices |
The "integrationServices" property is an array of objects that describes and controls FairCom's integration services. It defaults to an empty array.
|
array of objects |
|
||||||||||||
isConnected |
The "isConnected" property indicates whether the specified broker connection is active. | Boolean |
|
||||||||||||
jsonActionApiDefaults |
The default settings for the FairCom jsonAction APIs and browser-based applications are specified in the services.json file in the "jsonActionApiDefaults" property.
Default settings for jsonAction APIs "jsonActionApiDefaults": {
"defaultApi": "db",
"defaultBinaryFormat": "hex",
"defaultVariantFormat": "json",
"defaultDatabaseName": "faircom",
"defaultDebug": "max",
"defaultOwnerName": "admin",
"defaultResponseOptions":
{
"binaryFormat": "hex",
"variantFormat": "json",
"dataFormat": "objects",
"numberFormat": "number"
},
"idleConnectionTimeoutSeconds": 3600,
"idleCursorTimeoutSeconds": 600,
"defaultRetentionPolicy":"autoPurge",
"defaultRetentionPeriod":"4",
"defaultRetentionUnit":"week"
}
The property names and values in "jsonActionApiDefaults" are identical to those in the "params" property of "createSession", "alterSession", and "describeSessions". Each FairCom product ships with different default settings that make sense for that product — for example, in FairCom DB, the "defaultAPI" property is set to "db", in FairCom MQ it is set to "mq", and in FairCom Edge it is set to "hub". You can change the values of the properties in services.json, and all jsonAction APIs and browser-based user interfaces will use these properties as their default. If any of the properties in "jsonActionApiDefaults" are omitted from services.json, the property values may vary depending on the JSON action performed.
Keeping SQL_DATABASE and "jsonActionApiDefaults" in sync
ctsrvr.cfg SQL_DATABASE my_new_database services.json "": {
"defaultApi": "db",
"defaultBinaryFormat": "hex",
"defaultDatabaseName": "my_new_database",
"defaultDebug": "max",
"defaultOwnerName": "admin",
"defaultResponseOptions":
{
"binaryFormat": "hex",
"dataFormat": "objects",
"numberFormat": "number"
},
"idleConnectionTimeoutSeconds": 3600,
"idleCursorTimeoutSeconds": 600,
"defaultRetentionPolicy":"autoPurge",
"defaultRetentionPeriod":"4",
"defaultRetentionUnit":"week"
} |
object |
|
||||||||||||
key |
The "key" property is part of an optional key-value object that is defined in an array in the "userProperties" property. It is a user-defined string value. In the Key-Value API, this property is required. |
string | 1 to 128 bytes | ||||||||||||
keys |
The required "keys" property contains an array of keys for an action to work on and return, such as [ "key1", "key2" ]. |
array of strings | one or more key strings | ||||||||||||
keyStore |
The required
|
string enum |
|
||||||||||||
keyValuePairDetails |
The
|
array of objects | |
||||||||||||
keyValuePairs |
The "keyValuePairs" property contains an array of objects. Each object represents a key-value pair and contains "key" and "value" properties, such as { "key": "k1", "value": 1 }. |
array of key-value objects | |
||||||||||||
keyWithoutHierarchy |
The
|
string | 1 to 128 bytes | ||||||||||||
labels |
The The
When using tag actions, the optional
When you use the
You can use the
The Tag API implements the
|
array of objects |
1 or more label objects
Values are managed in the Label API with the group of |
||||||||||||
lastCollectedTimestamp |
The
It returns the ISO 8601 date and time of the last data collected by the input connector. If no data has been collected, the value is |
ISO 8601 timestamp | The ISO 8601 date and time of the last data collected by the input connector. | ||||||||||||
lastDeliveredTimestamp |
The
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 |
ISO 8601 timestamp | The ISO 8601 date and time of the last data delivered by the output connector. | ||||||||||||
length |
Identifies the length of the field. | integer | 1 to 65500 | ||||||||||||
listeners |
The "listeners" property is an array of objects that describes and controls FairCom's listeners. It defaults to an empty array.
|
array of objects |
|
||||||||||||
localDatabaseName |
The "localDatabaseName" property is a string that specifies the database name of the table on the FairCom MQ server that stores the stream's data change events. |
string | 1 to 64 bytes | ||||||||||||
localDataFilePath |
The "localDataFilePath" property is a string that specifies the data file path of the table on the FairCom MQ server that stores the stream's data change events. It can be a full path or a relative path from the server's data directory. |
string | No limits | ||||||||||||
localOwnerName |
The "localOwnerName" property is a string that specifies the account that owns the table on the FairCom MQ server that stores the stream's data change events. |
string | 1 to 64 bytes | ||||||||||||
localTableName |
The "localTableName" is a string that specifies the name of the table on the FairCom MQ server that stores the stream's data change events. |
string | 1 to 64 bytes | ||||||||||||
location |
The optional
This API uses the Label API to manage manufacturers.
|
string | 1 to 64 bytes | ||||||||||||
logLevel |
Defines what types of messages the replication agent will log. | string enum |
"off" - no messages logged "debug" - logs debug, info, warning, and error messages "info" - logs info, warning, and error messages "warning" - logs warning and error messages "error" - logs error messages |
||||||||||||
manufacturer |
The optional
This API uses the Label API to manage manufacturers.
|
string | 1 to 64 bytes | ||||||||||||
maxConnectionsPerIpAddress |
The "maxConnectionsPerIpAddress" property is the number of TCP/IP connections the app server will accept from a single TCP/IP address. This feature is implemented at the FairCom App Server level to prevent the app server from being overwhelmed by a DoS attack. It protects against simultaneous DoS attacks across multiple protocols: HTTP, HTTPS, MQTT, MQTTS, WS, and WSS. The default is 25 connections. A value of 0 disables this protection. This property can be added to the top level of the services.json file and/or to each listener object in the "listeners" array. At the top level, the property applies to all listeners. Within a listener, it applies only to that listener. In the case that your connections are routed through a firewall or load balancer, you may need to disable this feature since the connections will come from the same IP address.
{
"maxConnectionsPerIpAddress": 5,
"listeners": [
{
"serviceName": "https8443",
"description": "Port 8443 using TLS-secured HTTPS protocol for REST and Web Apps on all TCP/IP addresses bound to this server",
"port": 8443,
"protocol": "https",
"enabled": true,
"maxConnectionsPerIpAddress": 5,
"tls": {
"certificateFilename": "./web/fccert.pem"
}
}
]
} |
integer | 1 to 2147483647 | ||||||||||||
maxDeliveryRatePerSecond |
The "maxDeliveryRatePerSecond" property sets the throttle rate for current and new subscribers of the topic. This property is optional. If omitted, it defaults to 0, which means no throttling is applied.
|
integer | 0 to 2147483647 | ||||||||||||
maxJsonApiSessions |
The "maxJsonApiSessions" property is the total number of JSON API sessions the app server will accept. This setting ensures the server does not consume so many resources that it becomes unstable. The default value is the maximum number of JSON API connections allowed by the license. A value of 0 disables this protection and allows JSON API sessions up to the maximum number of connections allowed by the license file. This property is added to the "jsonActionApiDefaults" object. |
integer | 1 to 2147483647 | ||||||||||||
maxJsonApiSessionsPerIpAddress |
The "maxJsonApiSessionsPerIpAddress" property is the number of JSON API sessions the app server will accept from the same client IP Address. The default value is 50. The maximum possible number of connections is determined by the license file. A value of 0 disables this protection and allows JSON API sessions with the same IP Address up to the maximum number of connections allowed by the license file. This property is added to the "jsonActionApiDefaults" object. In the case that your connections are routed through a firewall or load balancer, you may need to disable this feature since the connections will come from the same IP address. |
integer | 1 to 2147483647 | ||||||||||||
maxJsonApiSessionsPerUsername |
The "maxJsonApiSessionsPerUsername" property is the number of JSON API sessions the app server will accept with the same username. Because of this, an application may use a different account for each JSON API session. The default value is 50. The maximum possible number of connections is determined by the license file. A value of 0 disables this protection and allows unlimited sessions with the same username up to the maximum number of connections allowed by the license file. If your application uses one account for all JSON API sessions, this feature will need to be disabled. This property is added to the "jsonActionApiDefaults" object. See the example below.
|
integer | 1 to 2147483647 | ||||||||||||
maxSecondsBeforeConnectingToNextServer |
The "maxSecondsBeforeConnectingToNextServer" property is an optional integer that specifies the maximum number of seconds the server will attempt to reconnect to the existing server before it attempts to connect to the next server in the "sourceServers" list. | int32 | 1 to 65535 | ||||||||||||
messageCount |
The "messageCount" property defines the total number of messages published by the topic. | BigInteger | 0 to 9223372036854775807 | ||||||||||||
metadata |
The |
JSON | 0 to 65,500 bytes | ||||||||||||
model |
The optional
This API uses the Label API to manage models.
|
string | 1 to 64 bytes | ||||||||||||
mqttPayloadType |
The "mqttPayloadType" property is an optional string that specifies the expected data type of the MQTT payload. When omitted or set to null, it defaults to "binary". It defines the expected data type of message payloads sent to a topic. It controls how the MQTT broker stores and validates the MQTT payload. It also determines how the payload is delivered to JavaScript transform steps. For example, if "mqttPayloadType" is set to "json", an MQTT message containing a JSON payload is delivered to transform steps as a JavaScript object; otherwise, it is delivered as a variant object. This property is useful because the FairCom server allows you to configure each topic to receive a specific type of data in MQTT payloads. Different topics may expect different types of payloads. For example, one topic may expect to receive JSON and another may expect images. The server can validate the expected type and log errors in the error and log fields, which allows users, applications, and JavaScript transform steps to identify and troubleshoot invalid MQTT messages. When the server receives an MQTT message, it takes the binary value from the MQTT payload and stores it in the source_payload field. The source_payload field is a variant, which means it stores the value along with its data type. If there are no errors in validating the MQTT payload to match the type specified in "mqttPayloadType", the server assigns the value of "mqttPayloadType" as the variant field's type. If "validateMqttPayload" is true, the server validates the MQTT payload to ensure it matches the type specified by "mqttPayloadType". The server may also convert the MQTT payload into another form before storing it. If the MQTT payload does not match the type or cannot be converted, the server stores the payload in the source_payload field, sets its variant type to "binary", and sets the error field to 1 to indicate there is an error. It also adds an error entry to the JSON array in the log field.
FairCom's MQTT server does the following when a topic receives an MQTT message and "mqttPayloadType" is set to one of the following values:
|
string enum |
|
||||||||||||
name |
The The The
|
string | 1 to 64 bytes | ||||||||||||
newKey |
The "newKey" property is required by the "renameKeys" action to rename keys. It is part of a key-rename object and its value is a string. It specifies the new name of a key. Each key-rename object contains "oldKey" and "newKey" properties that specify the current key's name and its new name. See the "renamedKeys" property for more information. |
string | 1 to 128 bytes | ||||||||||||
newSubscriberDeliveryMode |
The "newSubscriberDeliveryMode" property defines how new subscribers receive messages. The default is "newMessages".
|
string enum |
|
||||||||||||
newSubscriberMaxDeliveredMessages |
The "newSubscriberMaxDeliveredMessages" property is the maximum number of previously stored historical messages a client receives automatically when subscribing to a topic. The default is 0.
|
integer | -1 to 2147483647 | ||||||||||||
nullable |
Identifies whether a field can contain a NULL value. | Boolean |
|
||||||||||||
numberFormat |
The "numberFormat" property is an optional, case-insensitive string enum. It defines the format of JSON numbers. The default value for "numberFormat" is the "defaultNumberFormat" defined in the "createSession" or "alterSession" actions. If it is omitted there, it defaults to the value of the "defaultNumberFormat" property in the <faircom>/config/services.json file. When "numberFormat" occurs in "mapOfPropertiesToFields", it tells the server how to encode or decode a number assigned to a JSON property. For example, including "numberFormat" in a "tableFieldsToJson" transform step controls if the server encodes a number in a JSON property as a number or a number embedded in a string. Possible values:
Example request {
"action": "someAction",
"responseOptions":
{
"numberFormat": "string"
},
"authToken": "replaceWithAuthTokenFromCreateSession"
} |
string |
|
||||||||||||
oldKey |
The "oldKey" property is required by the "renameKeys" action to rename keys. It is part of a key-rename object and its value is a string. It specifies the current key that will be renamed. Each key-rename object contains "oldKey" and "newKey" properties that specify the current key's name and its new name. See the "renamedKeys" property for more information. |
string | 1 to 128 bytes | ||||||||||||
outParams |
The "outParams" property specifies the output values of a stored procedure. |
array of objects |
|
||||||||||||
output |
The "output" property specifies the results returned by a stored procedure or SELECT statement. |
object |
|
||||||||||||
outputConnectors |
The
|
array of objects |
Zero or more objects containing zero or more of the following properties:
|
||||||||||||
outputName |
The "outputName" property is an optional string that specifies a unique name for mapping an integration table to an output plugin to an external system. | string | 1 to 64 bytes | ||||||||||||
outputPayloadField |
The "outputPayloadField" property specifies the field that the MQTT Subscription service should use as the payload when it sends the payload to subscribers. If omitted or if it is an empty string, it defaults to "source_payload".
This makes it possible for the output from any transform to be used as the payload delivered to subscribers. |
string |
"source_payload" or a user-defined field |
||||||||||||
ownerName |
The "params": {
"ownerName": "SuperUser"
} |
string | 0 to 64 bytes | ||||||||||||
partialKey |
The "partialKey" property is an optional string or array that defines the range of returned records. The "getRecordsByPartialKeyRange" action uses the "partialKey" to find a starting position in the index where it can start returning records. It defaults to an empty string or empty array.
String "partialKey": "Mi" Array (multi-field) "partialKey": [ "2023-01-01", true, "full string", -3.4, "TWk=" ] In the Key-Value API, the required
|
string or array |
1 or more strings/arrays 1 to 128 bytes in the Key-Value API |
||||||||||||
password |
The "password" property is a required string from 0 to 256 bytes. "password" authenticates an account.
|
string | 0 to 256 bytes | ||||||||||||
permanentSession |
The "permanentSession" property is an optional Boolean that indicates if a session is permanent. It defaults to false.
If "permanentSession" is set to true when "createSession" is called, the server sets the authtoken as permanent. The authtoken is associated with the settings and authorizations of the user who created the session. It is always valid even after the server restarts. A permanent authToken works like an API Key and authenticates an application without the need for a username/password or a client certificate. Multiple applications can use the same permanent authToken.
|
Boolean |
|
||||||||||||
persistence |
The "persistence" property is an object that defines the parameters of the persistence table. | object |
|
||||||||||||
photo |
The optional "photo" property contains a photo of a thing. It defaults to null and is a binary value up to 2 GB in size. You cannot use it for lookups and filtering. |
string | up to 2 GB | ||||||||||||
port |
The "port" property is an integer that specifies the port number. |
integer | an integer port number | ||||||||||||
previousTransformSteps |
The "previousTransformSteps" property is a JSON array that contains the transform step objects assigned to the integration table before they were replaced by the "copyIntegrationTableTransformSteps" action. | array | the transform step objects of the specified transform before they were replaced by the action. | ||||||||||||
primaryKey |
When > 0, the "primaryKey" property identifies the ordinal position of the field within the table's primary key. | integer | 0 to 32 | ||||||||||||
primaryKeys |
This optional property identifies a table's primary key.
Each table created by the JSON DB API has a primary key that uniquely identifies each record. "createTable" automatically adds the "id" field as the primary key to your table. It makes "id" an auto-increment bigint field and indexes the field with a unique index named "id_pk". Using the "id" field as the primary key is a best practice. You can specify one or more fields to be the primary key of the table instead of the "id" field. To do so, you must add the "primaryKeyFields" property to "createTable" or use the "fields" property's "primaryKey" to specify which field(s) are in the primary key.
If multiple fields are specified for the key, the index is named "pk". If only one field is specified for the key, the index is named "<fieldname>_pk". If you use the "primaryKey" property to specify multiple fields as the primary key, the assigned value from 1 to n specifies the order of the fields in the primary key. Assign "primaryKey": 1 to the first field in the primary key, "primaryKey": 2 to the second, and so forth. If you create a primary key with multiple fields, the index is named "pk". If you specify just one field, the index is named "<fieldname>_pk".
Example "fields": [
{
"name": "a",
"type": "tinyint",
"primaryKey": 1
},
{
"name": "b",
"type": "smallint",
"primaryKey": 2
},
{
"name": "c",
"type": "integer",
"primaryKey": 3
}
] |
array of arrays | an array of arrays | ||||||||||||
primaryKeyFields |
This optional property specifies the fields of the table’s primary key when multiple fields are combined to form the primary key.
The order of fields in this property is the order of fields in the primary key index. The "fields" property contains the name and type of each field that is specified in the "primaryKeyFields" array. A primary key with multiple fields has an index named "pk". If you specify just one field, the index is named "<fieldname>_pk". If only one field is used as the primary key, the "primaryKey" property defines the primary key.
Example "primaryKeyFields": [
"a",
"b",
"c"
],
"fields": [
{
"name": "a",
"type": "tinyint"
},
{
"name": "b",
"type": "smallint"
},
{
"name": "c",
"type": "integer"
}
] |
array | an array | ||||||||||||
privateKeyFilename |
The "privateKeyFilename" is an optional string that specifies the name and optional path of a server key file. "tls": {
"allowedCipherSuites": "",
"certificateAuthoritiesFilename": "",
"certificateFilename": "",
"privateKeyFilename": ""
}, |
string | No limits | ||||||||||||
problemCode |
The "problemCode" property is an integer that specifies a unique code number that identifies the type of problem. |
integer | A unique code number | ||||||||||||
problemData |
The "problemData" property is an object that contains data about the problem stored in a JSON object. The data is stored in the object as key/value pairs. |
object | 1 or more key/value pairs | ||||||||||||
problemMessage |
The "problemMessage" property is a string that contains a message describing the problem. |
string | A message detailing the problem | ||||||||||||
problems |
The "problems" property is an array of objects that lists problems that match the request parameters. Each problem is contained in a separate object. | array of objects |
0 or more objects containing 1 or more of the following properties:
|
||||||||||||
problemTimestamp |
The "problemTimestamp" property is a string that lists the date and time the problem occurred. The timestamp is formatted as an ISO8601 timestamp embedded in the string. |
string containing an ISO8601 timestamp |
|
||||||||||||
problemType |
The "problemType" property is a string that details the type of problem that occurred, such as an error or warning. |
string |
|
||||||||||||
propertyPath |
The "propertyPath" property specifies the name of the data to be defined by "propertyValue". | string | 0 to 256 bytes | ||||||||||||
propertyValue |
This is a required object that contains properties that define the data values of a "propertyPath". It is required and has no default value. The data values specified in the "propertyValue" object can be a string or an object.
|
object |
|
||||||||||||
protocol |
The "protocol" property is a string that specifies the name of a protocol. |
string | the name of a protocol | ||||||||||||
publishedTopics |
The "publishedTopics" property returns a list of the topics the client has published since the session was first created. |
string | 1 to 65,500 bytes | ||||||||||||
purpose |
The "purpose" property is an optional string that provides a short description of the specified server's purpose.
In the Thing API, the optional
This API uses the Label API to manage purposes.
|
string | 1 to 64 bytes | ||||||||||||
reactions |
The "reactions" property contains the data returned by a SQL SELECT statement. | array of objects |
|
||||||||||||
reconnectFrequencySeconds |
The "reconnectFrequencySeconds" property is the number of seconds that the broker waits between attempts to reconnect to an external broker. This property is optional. If omitted, it defaults to 15 seconds.
|
int32 | the number of seconds the broker will wait between attempts to reconnect to an external broker. | ||||||||||||
recordAfterBeingTransformed |
The "recordAfterBeingTransformed" property contains an object with one property for each field in the record. Each property value is from the record after it was modified by the transform steps. |
object | 0 or more properties | ||||||||||||
recordBeforeBeingTransformed |
The "recordBeforeBeingTransformed" property contains an object with one property for each field in the record. Each property value is from the record before it was modified by the transform steps. |
object | 0 or more properties | ||||||||||||
recordFilter |
The "recordFilter" property is a string that specifies a FairCom expression that must match a record's field values before the record is included as a data change event. |
string | 1 to 65,000 bytes | ||||||||||||
recordFormat |
The "recordFormat" property is a string that includes the record's value in the data change event as a binary-encoded string or individual field values. |
string |
|
||||||||||||
renamedKeys |
The
|
array of key-rename objects | |
||||||||||||
requestedRecordCount |
The "requestedRecordCount" property is a signed, 32-bit integer set by the server in response to the "getRecordsFromCursor" method.
|
integer | 0 to 2147483647 |
||||||||||||
requestIterationMilliseconds |
The "requestIterationMilliseconds" property specifies the number of milliseconds the server will wait between attempting the request. |
integer | 1 to 2147483647 | ||||||||||||
requestMaxThreads |
The "requestMaxThreads" property specifies the maximum number of threads allowed in the request. |
integer | 1 to 2147483647 | ||||||||||||
retentionPeriod |
The "retentionPeriod" property specifies how many units of data to retain. It must be an integer value from 1 to 100. It refers to the unit of time specified by the "retentionUnit" property — for example, if "retentionPeriod" is 14 and "retentionUnit" is "day", then message data is retained for 14 days. This property is optional.
When partitions are auto-purged, some data are maintained "forever" in a global index. Auto-purge does not prevent these files from growing without bounds and filling up your hard drive. If not specified, the default found in the services.json file is used. Initially, it is 4 (weeks). Automatically purging data is important to ensure that retained data does not consume all storage and shut down the computer. The default value of 4 weeks allows FairCom's servers to store 1 TB of messages when 200 topics send one 2K message per second.
|
integer | 1 to 100 | ||||||||||||
retentionPolicy |
The "retentionPolicy" property controls how messages are persisted. This property is optional. If not specified, the default found in the services.json file is used. Initially, it is "autoPurge". retentionPolicy values:
|
string enum |
|
||||||||||||
retentionUnit |
Each time this unit cycles, FairCom purges 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".
|
string enum |
|
||||||||||||
retrySeconds |
The "retrySeconds" property is the number of seconds that FairCom's MQTT broker will wait for the next expected packet from a client during a QoS 1 or QoS 2 PUBLISH packet exchange/PUBLISH handshake with an MQTT client. The default value is 5. It applies when a client is publishing to the broker and when the broker is publishing to a client. This property does not apply to QoS 0 PUBLISH operations because QoS 0 PUBLISH operations are not answered. "retrySeconds" is optional.
|
integer | 1 to 65535 | ||||||||||||
returnedRecordCount |
The "returnedRecordCount" is a 32-bit integer set by the server in response to the "getRecordsFromCursor" method.
|
integer | 0 to 2147483647 |
||||||||||||
returnTagsBy |
The optional "returnTagsBy" property is an enumerated string with the following values: "tagName" and "id". It defaults to "id". It is used by the "listTags" action to specify whether it returns tags identified by ID or name. |
string enum |
|
||||||||||||
returnThingsBy |
The optional "returnThingsBy" property is an enumerated string with the following values: "name" and "id". It defaults to "id". It is used by the "listThings" action to specify whether it returns things identified by ID or "name". |
string enum |
|
||||||||||||
revealAfterValueOnFilteredDelete |
The "revealAfterValueOnFilteredDelete" property is a Boolean that includes the "afterValue" property in the notification message when true. When "recordFilter" filters out a record based on field values, an update causes a deleted change event to occur when its field values no longer match the filter. The "afterValue" property, when present, reveals the new field values and leaks information. |
Boolean |
|
||||||||||||
revealBeforeValueOnFilteredInsert |
The "revealBeforeValueOnFilteredInsert" property is a Boolean that includes the "beforeValue" property in the notification message when true. When "recordFilter" filters out a record based on field values, an update causes an insert change event when previous field values did not match the filter but now match it. The "beforeValue" property, when present, reveals the old field values and leaks information. |
Boolean |
|
||||||||||||
roleName |
The
|
string | 1 to 64 bytes | ||||||||||||
roleNames |
The "params": {
"partialNames": [
"adm",
"NewAccount"
]
}, |
array of strings | An array of 1 or more strings between 1 and 64 bytes. | ||||||||||||
rows |
The "rows" property specifies the rows returned by a stored procedure of a SELECT statement and metadata about the results. |
object | The rows returned by a stored procedure. | ||||||||||||
scale |
If the type is "number" or "money", the "scale" property identifies the number of places to the right of the decimal point,. | integer | 0 to 32 | ||||||||||||
schemaName |
The "schemaName" property is an optional string from 1 to 64 bytes that specifies the unique name of the account that owns an object. The default value is the "username" of the logged-in account. Things to know:
|
string | 1 to 64 bytes | ||||||||||||
sequence |
The |
float | Any floating point or integer number. | ||||||||||||
serialNumber |
The optional "serialNumber" property specifies a thing's serial number. Typically a serial number uniquely identifies a thing, but things from different manufacturers may have the same serial numbers. It defaults to "unknown" and is a string from 1 to 64 bytes. You can use it to do partial lookups and filtering. |
string | 1 to 64 bytes | ||||||||||||
serviceLibrary |
The "serviceLibrary" property is a string that specifies the filename of a dynamic library that provides the API used by the web application. Library files are located in the <faircom>/server/web/ folder. The full path includes the "serviceLibrary" value — for example, the Monitor app has a "serviceLibrary" name of ctmonitor.dll, and its full path in the file system is <faircom>/server/web/ctmonitor.dll. |
string | The file name for the service library. | ||||||||||||
serviceName |
The "serviceName" property contains the name of a FairCom input or output service. This property is required. See the "params" topic of each specific service for the requirements of this property. The following services are available as of the V5 release:
|
string | A service name between 1 and 64 bytes. | ||||||||||||
serverVersion |
The "serverVersion" property indicates which version of the FairCom server the request was made to. "result": {
"sessionStartTimestamp": "2025-08-28T15:44:56",
"sessionLastAccessedTimestamp": "2025-08-28T18:07:07",
"defaultRetentionPolicy": "autoPurge",
"defaultRetentionUnit": "week",
"defaultRetentionPeriod": 4,
"serverVersion": "FairCom EDGE Server - V4.2.4.109(Build-250819)"
}, |
string | The name of the version of the FairCom server to which the request was made. | ||||||||||||
sessionLastAccessedTimestamp |
The "sessionLastAccessedTimestamp" property indicates the date/time when the session was last accessed. "result": {
"sessionStartTimestamp": "2025-08-27T20:26:25",
"sessionLastAccessedTimestamp": "2025-08-27T20:56:25"
}, |
timestamp | An ISO 8601 timestamp | ||||||||||||
sessionPresent |
Boolean that specifies whether the broker will use a previously stored session state, including the client's previous descriptions. |
Boolean |
|
||||||||||||
sessions |
The "sessions" property is an array of session objects where each session object minimally describes a session. |
array of objects |
|
||||||||||||
sessionStartTimestamp |
The "sessionStartTimestamp" property indicates the date/time when the session was first initialized. "result": {
"sessionStartTimestamp": "2025-08-27T20:26:25",
"sessionLastAccessedTimestamp": "2025-08-27T20:56:25"
}, |
timestamp | An ISO 8601 timestamp | ||||||||||||
sessionType |
specifies which type of session the requested client is currently running. | string |
|
||||||||||||
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. Connector-specific "settings" |
object | |||||||||||||
sourceDatabaseName |
The "sourceDatabaseName" property is a string that specifies the database name of the table on the FairCom DB or RTG server that generates the stream's data change events. |
string | 1 to 64 bytes | ||||||||||||
sourceDataField |
The "sourceDataField" property is an optional string that contains the name of a field from an integration table. It defaults to "source_payload". |
string |
|
||||||||||||
sourceDataFilePath |
The "sourceDataFilePath" property is a string that specifies the data file path of the table on the FairCom DB or RTG server that generates the stream's data change events. It can be a full path or a relative path from the server's data directory. |
string | No limits | ||||||||||||
sourceDataFormat |
The "sourceDataFormat" property specifies the format of the "source_payload" field. You can set this property to any of the following values:
|
string enum |
|
||||||||||||
sourceFieldLength |
The
The following field types have a user-defined length:
|
integer | The field's length as defined by the integration table. | ||||||||||||
sourceFieldName |
The optional
|
string | 1 to 64 bytes | ||||||||||||
sourceFields |
The optional "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". |
array | One or more fields from the integration table. | ||||||||||||
sourceFieldScale |
The
|
integer | The field's scale as defined by the integration table. | ||||||||||||
sourceFieldType |
The
|
string | The field's type as defined by the integration table. | ||||||||||||
sourceHostname |
The "sourceHostname" property is a required string that specifies a unique host name or TCP/IP address of a FairCom DB or RTG server. | string | 1 to 255 bytes | ||||||||||||
sourceOwnerName |
The "sourceOwnerName" property is a string that specifies the account that owns the table on the FairCom DB or RTG server that generates the stream's data change events. |
string | 1 to 64 bytes | ||||||||||||
sourcePassword |
The "sourcePassword" property is an optional string that specifies the login password of a FairCom DB or RTG server. | string | 1 to 128 bytes | ||||||||||||
sourcePayloadBinaryFormat |
The optional
|
string enum |
|
||||||||||||
sourcePayloadDateFormat |
The optional
|
string enum |
"ccyy.mm.dd""mm.dd.ccyy""mm.dd.yy""dd.mm.ccyy""dd.mm.yy""ccyymmdd""iso8601""yymmdd""utc"
|
||||||||||||
sourcePayloadFormat |
deprecated version of "mqttPayloadType". Please use "mqttPayloadType". | string |
|
||||||||||||
sourcePayloadNumberRounding |
The optional
|
string enum |
|
||||||||||||
sourcePayloadPath |
The required
|
string | 1 to 2048 bytes | ||||||||||||
sourcePayloadTimeFormat |
The optional
|
string enum |
"hh.mm.ss.ttt""hh.mm.am/pm""hh.mm.ss.am/pm""hh.mm.ss""hh.mm""hhmm""iso8601""utc"
|
||||||||||||
sourcePayloadVariantFormat |
The optional
|
string enum |
"json""variantObject""binary""string"
|
||||||||||||
sourcePort |
The "sourcePort" property is an optional integer that specifies the ISAM TCP/IP port of a FairCom DB or RTG server. | int16 | 1 to 65535 | ||||||||||||
sourceServerName |
The "sourceServerName" property is a conditional string that specifies the server name of a FairCom DB or RTG server. It is the name specified by the SERVER_NAME keyword defined in the target server's configuration file, ctsrvr.cfg. The server name used by most FairCom DB and RTG servers is "FAIRCOMS". This property is required if the "sourceHostname" is not defined. | string | 1 to 255 bytes | ||||||||||||
sourceServers |
The "sourceServers" property is a required array containing a list of FairCom DB or RTG server connection objects. FairCom MQ attempts to connect to the first server in the list. If that fails, it attempts to connect to the next one. If it reaches the last server in the list, it attempts to connect to the first. | array of server connection objects | {
"purpose": "Primary Server",
"sourceServerName": "FAIRCOMS",
"sourceHostname": "10.70.13.112",
"sourcePort": 5597,
"sourceUsername": "ADMIN",
"sourcePassword": "ADMIN",
"tls": {
"enabled": true,
"caCertificateFilename": "ca.crt",
"allowedCipherSuites": "",
"clientCertificateEnabled": true,
"clientCertificateFilename": "admin_client.crt",
"clientPrivateKeyFilename": "admin_client.key"
}
}
|
||||||||||||
sourceTableName |
The "sourceTableName" property is a string that specifies the name of the table on the FairCom DB or RTG server that generates the stream's data change events. |
string | 1 to 64 bytes | ||||||||||||
sourceUsername |
The "sourceUsername" property is an optional string that specifies the name of a FairCom DB or RTG server. | string | 1 to 64 bytes | ||||||||||||
sql |
The "sql" property specifies the original SQL statement that was executed. |
string | The original SQL statement | ||||||||||||
startTimestamp |
The "startTimestamp" property specifies the time at which the query was initiated. |
timestamp | A timestamp | ||||||||||||
stats |
contains stats about describeMqSessions. | object |
|
||||||||||||
status |
The optional
When the
To create, alter, and list inactive items, set the |
string enum |
|
||||||||||||
statusCode |
The "statusCode" property displays the status code for the specified broker connection. | integer | See error codes | ||||||||||||
statusMessage |
The "statusMessage" property describes the status code with a written explanation. | string | 0 to 1024 bytes | ||||||||||||
streamingConnection |
The "streamingConnection" property is an object that contains the current values of the streaming connection object that connects FairCom MQ to the source FairCom DB or RTG server. |
object | "streamingConnection": {
"sourceServerName": "FAIRCOMS",
"sourceHostname": "10.70.13.112",
"sourcePort": 5597,
"sourceUsername": "ADMIN",
"sourcePassword": "ADMIN",
"maxSecondsBeforeConnectingToNextServer": 15,
"tls": {
"enabled": true,
"caCertificateFilename": "ca.crt",
"allowedCipherSuites": "",
"clientCertificateEnabled": true,
"clientCertificateFilename": "admin_client.crt",
"clientPrivateKeyFilename": "admin_client.key"
},
"metadata": {}
}
|
||||||||||||
streamingConnectionName |
The "streamingConnectionName" property is a required string that specifies a unique, user-defined name for a streaming connection. The API uses it to identify streaming connections and to connect a data change stream to a FairCom DB or RTG server. | string | 1 to 64 characters | ||||||||||||
streamParallelism |
The "streamParallelism" property is an optional integer that specifies the number of parallel streams the server uses to deliver data changes to the FairCom MQ server. You typically use a number that does not exceed the number of cores on the FairCom MQ server. | integer | 1 to 65535 | ||||||||||||
streamingConnectionName |
The "streamingConnectionName" property is a required string that specifies a unique, user-defined name for a streaming connection. The API uses it to identify streaming connections and to connect a data change stream to a FairCom DB or RTG server. | string | 1 to 64 characters | ||||||||||||
streamingConnectionNameFilter |
The "streamingConnectionNameFilter" property is an optional string that specifies a partial match for a connection name. | string | 1 to 64 bytes | ||||||||||||
streamingConnections |
The "streamingConnections" property is an array of objects that list the streaming connections that match the filters in the request as separate objects. |
array of objects |
0 or more objects containing 1 or more of the following properties:
|
||||||||||||
streamParallelism |
The "streamParallelism" property is an optional integer that specifies the number of parallel streams the server uses to deliver data changes to the FairCom MQ server. You typically use a number that does not exceed the number of cores on the FairCom MQ server. | integer | 1 to 65535 | ||||||||||||
stringFormat |
The optional "stringFormat" property in "responseOptions" changes how "char", "varchar", "lvarchar", and "variant" string field values are returned. This property applies to all "getRecords..." actions, except for "getRecordsUsingSql" because SQL controls the format of strings it returns. |
string |
|
||||||||||||
subscribedTopics |
The "subscribedTopics" property lists the topics that the specified topic is subscribed to. | array | No limits | ||||||||||||
subscriberCount |
specifies the number of subscribers | integer | Number of subscribers | ||||||||||||
tableName |
The required See table name in System limits for the table naming requirements and limitations. "params": {
"tableName": "ctreeTable"
} |
string | 1 to 64 bytes | ||||||||||||
tableReplicationReady |
The "tableReplicationReady" property enables the transaction log on the persistence table. Transaction logs must be enabled before a table can be replicated. | Boolean |
|
||||||||||||
tagChanges |
The "tagChanges" property is a string that specifies when to add "changed": true to field objects in the data change event to indicate when a field changed value. |
string |
|
||||||||||||
tagDataType |
The optional
|
string enum |
"string""number" "boolean" "date" "time" "timestamp" "json" "variant" "binary"
|
||||||||||||
tagName |
The required
|
string | 1 to 256 bytes | ||||||||||||
tagNames |
The required
|
string | 1 to 256 bytes | ||||||||||||
thingName |
The required "thingName" property is a string that specifies the unique name of a thing. It is a string from 1 to 64 bytes. It cannot be the empty string "". |
string | 1 to 64 bytes | ||||||||||||
thingNames |
The required "thingNames" property is an array of strings that specifies one or more thing names. Each item in the array is the exact name of a thing. It is a string from 1 to 64 bytes. You can use it to describe or delete things. |
array of strings | 1 or more thingName strings | ||||||||||||
things |
The "things" property occurs in the response to Tag API actions when the "includeThingProperties" property is in the request. It is an array of objects that contains all devices and software related to a tag. Each object contains the requested device properties. See "includeThingProperties" for examples and additional information. |
array of objects | All devices and software related to a tag. | ||||||||||||
thingType |
The optional
This API uses the Label API to manage types.
|
string | 1 to 64 bytes | ||||||||||||
testDatabaseName |
The optional "testDatabaseName" property specifies the database of the test table where this action tests the transform steps. When set to null or omitted, the server uses the default "databaseName" defined in the "createSession" action. For more information, see the "createSession" action and the "defaultDatabaseName" property.
|
string | 1 to 64 bytes | ||||||||||||
testOwnerName |
The optional "testOwnerName" property specifies the owner account of the test table where this action tests the transform steps. When set to null or omitted, the server uses the default "ownerName" defined in the "createSession" action. For more information, see the "createSession" action and the "defaultOwnerName" property.
|
string | 1 to 64 bytes | ||||||||||||
testTableName |
The required "testTableName" property specifies the name of the test table where this action tests the transform steps.
|
string | 1 to 64 bytes | ||||||||||||
testTransformScope |
The "testTransformScope" property is the same value specified in the call to the "testIntegrationTableTransformSteps" to the action. | string enum |
|
||||||||||||
threads |
The "threads" property is the number of threads assigned to a topic to write published messages to disk. This property is optional. The default value is 1.
|
integer |
|
||||||||||||
tls |
The "tls" property is a JSON object that defines the public server certificate filename, the private key filename, the certificate authority filename, the cipher suites that are allowed, and whether the client certificate is required. This property is optional. It defaults to an empty object.
|
object |
|
||||||||||||
topic |
The "topic" property is an optional string that specifies the MQTT topic on the external broker to which messages will be forwarded. |
string | A topic name between 1 and 65,500 bytes | ||||||||||||
topics |
The "topics" property occurs in the response to Tag API actions when the "includeTopicProperties" property is in the request. It is an array of objects that contains all topics related to a tag. Each object contains the requested topic properties. See "includeTopicProperties" for examples and additional information. |
array of objects | All topics related to a tag. | ||||||||||||
totalRecordCount |
The "totalRecordCount" property contains the total available number of records that can be returned from a query.
|
integer | -1 to 99999999999999999999999999999999 |
||||||||||||
transactionId |
The "transactionId" property identifies a server-generated ID that represents a point in the progress of a transaction. |
string | 0 to 255 bytes | ||||||||||||
transactionSavePointId |
The "transactionSavepointId" is a string that the server generates and returns in a "createTransactionSavepoint" action. The generated ID represents a point in a transaction's progress. In requests, it defaults to an empty string.
|
string | 0 to 255 bytes | ||||||||||||
transformBufferInitialBytes |
The "transformBufferInitialBytes" property is optional and defaults to 0. It is a positive integer that specifies the number of bytes for the session to allocate initially for its transform buffer. Omit this property or set it to 0 when you do not plan on using the "transformCodeName" property to transform the JSON returned from the "getRecords..." actions. If you plan on transforming the JSON, you can set the "transformBufferInitialBytes" property to the number of bytes that you anticipate the server will need to store the results of each transform. If the server needs more memory, it automatically increases the buffer size; thus, this property is an optimization that helps prevent the server from doing expensive memory allocations. |
integer | 0 or more bytes | ||||||||||||
transformPercentComplete |
The "transformPercentComplete" property is an integer between 0 and 99 that is an estimate of the transformation progress when either the "rerunIntegrationTableTransformSteps" or "testIntegrationTableTransformSteps" action is transforming existing records in the integration table.
|
integer | 0 to 99 | ||||||||||||
transformServices |
The "transformServices" property is an optional array of objects that describes and controls FairCom's transform services. It defaults to the services connected when the server last started up. "transformServices" [
{
"serviceName": "siemensUDT2JSON",
"serviceLibrary": "siemensudtservice.dll",
"enabled": true
}
], |
array of objects |
|
||||||||||||
transformStatus |
The "transformStatus" property is a string that describes the state of the transform process. Example values include "running" and "done". | string | the status of the transform | ||||||||||||
transformStepMethod |
The "transformStepMethod" property is a required string that specifies the type of transform, such as the "javascript" transform method that runs JavaScript to change the table's data or the "jsonToTableFields" transform method that extracts values from properties in a JSON field and stores them in other fields.
The value of the "transformStepMethod" affects the value of the "transformService" property. The following table defines the possible values of the "transformService" property when combined with the "transformStepMethod". Notice that some transform step methods are built into the server and do not require you to specify the "transformService".
|
string enum |
|
||||||||||||
transformStepName |
The "transformStepName" property is an optional string that assigns a name to each transform step. |
string | 1 to 64 bytes | ||||||||||||
transformSteps |
specifies an array of transform objects. | array of objects | 0 or more objects | ||||||||||||
transformStepService |
The "transformStepService" property is an optional string that specifies the name of a transform service, which is the user-defined name for a library (.dll, .so, .dylib) that implements the transform step method. This property allows you to register your own transform libraries or use an older version of a FairCom library for backward compatibility. Transform services are defined in the services.json file under the "transformServices" section. You can add and remove transform libraries to this list, such as your own transform libraries or specific versions of FairCom's transform libraries. Use the "serviceName" property to give each transform library a unique transform service name and use the "serviceLibrary" property to specify the filename of the library that implements the transform step method. On Windows the library filename ends with .dll. On Linux it ends with .so. On MacOS it ends with .dylib. Lastly, you must enable the transform service by setting "enabled" to true. Example "transformServices" section in the services.json file. "transformServices": [
{
"serviceName": "v8TransformService",
"serviceLibrary": "v8transformservice.dll",
"enabled": true
}
],
|
string | 1 to 64 bytes | ||||||||||||
triggers |
The "triggers" property is an array of enumerated strings that specifies a list of events on a table that create data change events. | array of enum strings |
|
||||||||||||
type |
Identifies the type of the field. See Data types. | string |
|
||||||||||||
unmatchedKeys |
The
|
array of strings | zero or more key strings | ||||||||||||
updatedBy |
The "updatedBy" property indicates the name of the account last used to update the code package. "result": {
"data": [
{
"createdBy": "ADMIN",
"createdOn": "2025-08-25T21:48:38.109",
"updatedBy": "ADMIN",
"updatedOn": "2025-08-25T21:48:38.109"
},
] |
string | The name of the account last used to update the code package. | ||||||||||||
updatedOn |
The "updatedOn" property indicates the date and time the code package was last updated. "result": {
"data": [
{
"createdBy": "ADMIN",
"createdOn": "2025-08-25T21:48:38.109",
"updatedBy": "ADMIN",
"updatedOn": "2025-08-25T21:48:38.109"
},
] |
timestamp | The date and time the code package was last updated. | ||||||||||||
updatedTimestamp |
The "updatedTimestamp" property is the date and time when the thing was last updated. It is the same as the "createdTimestamp" property when the thing has never been updated. It is returned in ISO 8601 format, such as "2025-08-28T10:47:13.041". |
timestamp | ISO 8601 timestamp | ||||||||||||
uri |
The "uri" property specifies the identifier name of the Rest resource. | string | 1 to 1024 bytes | ||||||||||||
uriPath |
The "uriPath" property is optional. It is a string that indicates the path where the "serviceLibrary" file is stored. If specified, this value is appended to the default <faircom>/server/web/ folder path. |
string | The file path for the service library. | ||||||||||||
username |
The "username" property is a required string from 1 to 64 bytes. It is the account name of a user or application. It is required by the "createSession" action for authentication. All API actions are performed in the context of the account identified by "username". For example, all tables created by an account are owned by the account. All queries use tables owned by the account. In JSON DB API and JSON Hub API, use the "ownerName" property to cause an action to use a different account name than the value of "username". This allows an account to use tables created by another account and to create tables that are owned by another account. Unlike other property names, such as "databaseName", "username" is all lowercase. A zero-length username is invalid.
In Key-Value actions, the
|
string
Defaults to the account name of the currently logged-in user for Key-Value actions |
1 to 64 bytes | ||||||||||||
validateMqttPayload |
The "validateMqttPayload" property determines whether the FairCom server will attempt to validate the incoming MQTT message payload against the expected data type specified in the "mqttPayloadType" property. | Boolean |
|
||||||||||||
value |
The
When you use the
In Key-Value actions, the required |
JSON | 0 to 65,500 bytes | ||||||||||||
variantFormat |
string |
|
|||||||||||||
verifyLinks |
The "verifyLinks" property is an optional Boolean property. When omitted or null, it defaults to true. When true, the action verifies that the specified labels, records, and tables exist. If your application has already validated that the labels, records, and tables exist, it can set "verifyLinks" to false, which provides a performance boost because the action does not need to look up this information. |
Boolean |
|
||||||||||||
willPayload |
The "willPayload" property is required when a will message is present. It contains the payload of the last will message. You can set it to any JSON value, including binary values embedded in a JSON string or array. |
JSON | |||||||||||||
willQoS |
The property "willQoS" is reserved. The server sets it to 2. |
integer | |||||||||||||
willRetain |
The "willRetain" property is optional. It defaults to false. When true, it tells the FairCom server to send the will message to new subscribers as the first message they receive when subscribing to a topic. |
Boolean |
|
||||||||||||
willTopic |
The "willTopic" property is optional. It is a UTF-8 string containing the topic that the FairCom server will use to publish the will message. If you set it to an empty string, "", null, or omit it, the FairCom server will not add the will message to the connection. | UTF-8 string |