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. |
accounts.roleNames |
The "params": {
"partialNames": [
"adm",
"NewAccount"
]
},
|
array of strings | An array of 1 or more strings between 1 and 64 bytes. |
accounts.username |
The
|
string | 1 to 64 bytes |
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 |
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 |
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 |
|
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. |
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 |
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. "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 |
|
binaryFormat |
string | One of the following: "base64", "hex", or "byteArray". |
|
defaultResponseOptions.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 |
|
defaultResponseOptions.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 |
|
defaultResponseOptions.variantFormat |
string |
|
|
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. |
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: \".
|
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 |
|
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 |
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 |
|
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 |
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. |
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 |
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 |
|
indexes |
is an array of objects where each object identifies the characteristics of each index in the table. | array |
|
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 |
|
labels |
The The
|
array of objects | 1 or more label objects |
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 |
|
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 |
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 |
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". When the server receives an MQTT message, it always 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 type of data it contains. 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. Depending on the values of the "mqttPayloadType" and "validateMqttPayload" properties, the server may validate the MQTT payload to ensure it matches the type. The default value for the "validateMqttPayload" property is true. 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 |
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 |
|
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 |
|
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 |
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 |
|
port |
The "port" property is an integer that specifies the port number. |
integer | an integer port number |
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 |
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 |
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. |
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 |
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 |
requestMaxThreads |
The "requestMaxThreads" property specifies the maximum number of threads allowed in the request. |
integer | 1 to 2147483647 |
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. |
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 |
|
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 |
|
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 |
sourcePayloadFormat |
deprecated version of "mqttPayloadType". Please use "mqttPayloadType". | 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 |
|
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 |
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 |
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 |
|
type |
Identifies the type of the field. See Data types. | string |
|
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. |
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.
|
string | 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 |
JSON | 0 to 65,500 bytes |
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 |