Skip to main content

"alterSession"

Abstract

alterSession alters the settings of the session identified by the authToken property.

The "alterSession" action alters the settings of the session identified by the "authToken" property.

Things to know

  • "alterSession" can modify most session settings but cannot modify the "username" nor the "password" properties used to create the session.

  • The "result" property returned by the server describes the new state of the session that you just changed using the "alterSession" action.

Request examples

Change timeouts request example

{
  "api": "admin",
  "action": "alterSession",
  "authToken": "replaceWithValidAuthtoken",
  "params": {
    "idleConnectionTimeoutSeconds": 60000,
    "idleCursorTimeoutSeconds": 60000
  }
}
{
  "api": "admin",
  "action": "alterSession",
  "authToken": "replaceWithValidAuthtoken",
  "params": {
    "description": "optional user description of session for troubleshooting",
    "defaultApi": "db",
    "defaultDatabaseName": "ctreeSQL",
    "defaultOwnerName": "admin",
    "defaultBinaryFormat": "hex",
    "defaultDebug": "max",
    "defaultResponseOptions": {
      "dataFormat": "objects",
      "numberFormat": "string",
      "binaryFormat": "hex"
    },
    "idleConnectionTimeoutSeconds": 60000,
    "idleCursorTimeoutSeconds": 60000
  }
}

Response examples

{
  "authToken": "replaceWithValidAuthtoken",
  "result": {
    "authToken": "replaceWithValidAuthtoken",
    "username": "ADMIN",
    "description": "My test session",
    "defaultDatabaseName": "ctreeSQL",
    "defaultOwnerName": "admin",
    "defaultBinaryFormat": "hex",
    "defaultResponseOptions": {
      "binaryFormat": "hex",
      "dataFormat": "objects",
      "numberFormat": "number"
    },
    "idleConnectionTimeoutSeconds": 60000,
    "idleCursorTimeoutSeconds": 60000,
    "defaultApi": "mq",
    "defaultDebug": "max",
    "sessionStartTimestamp": "2023-04-20T18:08:56",
    "sessionLastAccessedTimestamp": "2023-04-20T18:10:22"
  },
  "requestId": "00000006",
  "errorCode": 0,
  "errorMessage": ""
}
{
  "authToken": "invalidAuthtoken",
  "requestId": "00000011",
  "debugInfo": {
    "request": {
      "authToken": "invalidAuthtoken",
      "api": "admin",
      "action": "alterSession",
      "params": {
        "idleConnectionTimeoutSeconds": 60000,
        "idleCursorTimeoutSeconds": 60000
      },
      "requestId": "00000011"
    }
  },
  "errorCode": 12031,
  "errorMessage": "'authToken' does not match any existing session. Use a valid 'authToken' or use 'createSession' to create a valid 'authToken'."
}

"params"

The "params" property is an object that contains an action's parameters. Each action defines its own required and optional properties.

Property summary

Table 1. "params" property summaries

Property

Description

Default

Type

Limits (inclusive)

"defaultApi"

defines the default value of the "api" property when "api" is omitted from an action request

FairCom DB defaults to "db"
FairCom Edge defaults "hub"
FairCom MQ defaults "mq"

string enum

"admin"
"hub"
"mq"
"db"

"defaultBinaryFormat"

defines the default value for the "binaryFormat" property, which tells the server how to parse binary data from the client making it useful when the binary format is not specified in the action request

"base64"

string enum

"base64"
"hex"

"defaultDatabaseName"

defines the default value of the "databaseName" property

FairCom DB defaults to "ctreeSQL"
FairCom Edge defaults to "faircom"
FairCom MQ defaults to "faircom"

string

Minimum length: 1
Maximum length: 64

"defaultOwnerName"

specifies the initial value of the "defaultOwnerName" property used by JSON APIs and FairCom's web application

"admin"

string

Minimum length: 1
Maximum length: 64

"defaultResponseOptions"

defines a default value for "responseOptions" that is used by default in all other action calls

{}

object

One or more of the following:

"numberFormat"
"dataFormat"
"binaryFormat"

"description"

allows the client to describe an object for later identification

""

string

Minimum length: 0
Maximum length: 65,500

"idleConnectionTimeoutSeconds"

contains the number of seconds that a session with no activity will stay open

3600

integer

0 - 2147483647

"idleCursorTimeoutSeconds"

contains the number of seconds to keep a cursor open

600

integer

0 - 2147483647



The "defaultOwnerName" property is an optional string that is supplied at "createSession". It is used by the "ownerName" property which specifies the owner account name. It defaults to the "username". When "ownerName" is omitted, the server sets "ownerName" to the value of "defaultOwnerName". However, if "defaultOwnerName" is set to the empty string, then the "ownerName" is set to the empty string.

Things to know:
  • When "ownerName" is omitted the server uses the "defaultOwnerName" property value set during login.

  • In "createSession" and "alterSession" when "defaultOwnerName" is omitted or set to null:

    • In the JSON DB API, the server sets "defaultOwnerName" to the "username" of the logged-in user. Thus, by default, the logged-in account owns the objects it creates.

    • In the JSON Hub API and JSON MQ API, the server sets "defaultOwnerName" to "admin" allowing the server to own the objects it creates.

  • Actions that create objects, such as "createTable" and "createIntegrationTable", can omit the "ownerName" property making the server set "ownerName" to the value of "defaultOwnerName".

  • When an action that creates an object sets the "ownerName" property to a valid account name, the specified account owns the created object and an account that owns an object has full management rights over the object. You can use object ownership as a simple way to control access to objects.

  • When "ownerName" is set to the empty string, then no account owns the object. Unowned objects can be managed by administrator accounts and by accounts assigned to roles that grant access rights to the object making it useful when you want to prevent an account from owning an object and inheriting full management rights to that object.

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.

Things to know:
  • 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 and omitting the error object 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": {
      "dataFormat": "objects",
      "numberFormat": "string",
      "binaryFormat": "hex"
    }

Property summary

Table 2. "defaultResponseOptions" property summaries

Property

Description

Default

Type

Limits (inclusive)

"binaryFormat"

determines how binary values are returned

"base64"

string

"base64"
"hex"

"dataFormat"

defines what format the results will be returned in

"arrays"

string

"default"
"arrays"
"objects"

"numberFormat"

controls how numbers are formatted in the JSON response message

"number"

string

"number"
"string"


The "dataFormat" property is an optional, case-insensitive string enum that defines the format of the response in 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.

  • "dataFormat" in the request inside "responseOptions" determines how the "data" property in the response is formatted.

    Possible values include:

    • "arrays"

      This is the default and causes the server to return results as an array of arrays, which is the most efficient.

    • "objects"

      This returns results as an array of objects. This is less efficient but is simpler to generate, read, and troubleshoot.

  • "dataFormat" in the request in the "params" object notifies the server how the "sourceData" property is formatted in the request. This version is rarely used because of the default "autoDetect" behavior.

    Possible values include:

    • "arrays"

      This causes the server to return results as an array of arrays, which is the most efficient.

    • "objects"

      This returns results as an array of objects. This is less efficient but is simpler to generate, read, and troubleshoot.

    • "autoDetect"

      This is the default and causes the server to automatically detect the format of the data in the "sourceData" property.

  • "dataFormat" in the response shows the client how the server formatted the "data" property.

    Possible values include:

    • "arrays"

      This is the default and causes the server to return results as an array of arrays, which is the most efficient.

    • "objects"

      This returns results as an array of objects. This is less efficient but is simpler to generate, read, and troubleshoot.

The "idleConnectionTimeoutSeconds" property is an optional integer from 0 to 2,147,483,647. It is the number of seconds that a session with no activity will stay open.

Thing to know:
  • Each time a session executes an operation, the session timer restarts.

  • A value of 0 keeps a session open indefinitely.

The "idleCursorTimeoutSeconds" property is an optional integer from 0 to 2,147,483,647. It is the number of seconds to keep a cursor open.

Things to know:
  • Each time a cursor retrieves records, the cursor timer restarts.

  • A value of -1 keeps a cursor open indefinitely.

  • A value of 0 immediately closes a cursor after the current operation.

"result"

The "result" property is a required object set by the server that contains the result of an action.

Things to know:

Property summary

Table 3. "result" property summaries

Property

Description

Type

Limits (inclusive)

"authToken"

signifies that the client is authenticated and authorized

string

Minimum length: 0
Maximum length: 255

"defaultApi"

defines the default value of the "api" property when "api" is omitted from an action request

string enum

"admin"
"hub"
"mq"
"db"

"defaultBinaryFormat"

defines the default value for the "binaryFormat" property, which tells the server how to parse binary data from the client making it useful when the binary format is not specified in the action request

string

"base64"
"hex"

"defaultDatabaseName"

defines the default value of the "databaseName" property

string

Minimum length: 1
Maximum length: 64

"defaultDebug"

defines the default value of the "debug" property for all requests in a session

string enum

One of the following:

"none"
"max"

"defaultOwnerName"

specifies the initial value of the "defaultOwnerName" property used by JSON APIs and FairCom's web application

string

Minimum length: 1
Maximum length: 64

"defaultResponseOptions"

defines a default value for "responseOptions" that is used by default in all other action calls

object

One of the following:

"includeFields"
"excludeFields"
"includePaths"
"excludePaths"
"omit"
"numberFormat"
"dataFormat"

Note

"includeFields" and "excludeFields" are mutually exclusive

"includePaths" and "excludePaths" are mutually exclusive

"description"

allows the client to describe an object for later identification

string

Minimum length: 0
Maximum length: 65,500

"errorCode"

indicates an error when set to a non-zero integer or success when 0

integer

-2,147,483,648 - 2,147,483,647

"idleConnectionTimeoutSeconds"

contains the number of seconds that a session with no activity will stay open

integer

0 - 2147483647

"idleCursorTimeoutSeconds"

contains the number of seconds to keep a cursor open

integer

0 - 2147483647

"username"

contains the account name of a user or application

string

Minimum length: 1
Maximum length: 64


The "authToken" property signifies that the client is authenticated and authorized. It is required.

Things to know:
  • It is supplied by the server in response to the connect action.

  • Clients must include it in all subsequent requests to validate that the client is authenticated and authorized. If the client does not supply the correct values, the server returns an unauthorized error.

"defaultDebug" is an optional string enum that defined the default value of the "debug" property for all requests in a session. It defaults to "max".

Important

This is different than the "debug" property in that the "debug" property can be universally used in any action while the "defaultDebug" property is only set in the "createSession" action and sets the "debug" property for any action run using the session being created.

Things to know:
  • Possible values include:

    • "none"

    • "max"

  • If "defaultDebug" is omitted or set to null, it defaults to "max".

    This causes the server to include the "debugInfo" property in the response.

    This setting is typically used in development environments and for temporarily troubleshooting issues in production environments.

  • For maximum performance set set "defaultDebug" to "none" .

    This causes the server to omit the "debugInfo" property in the response.

    This setting is typically used in production and staging environments where it is desirable to have maximum performance and minimal network traffic.

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.

Things to know:
  • 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 and omitting the error object 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": {
      "dataFormat": "objects",
      "numberFormat": "string",
      "binaryFormat": "hex"
    }

Property summary

Table 4. "defaultResponseOptions" property summaries

Property

Description

Default

Type

Limits (inclusive)

"binaryFormat"

determines how binary values are returned

"base64"

string

"base64"
"hex"

"dataFormat"

defines what format the results will be returned in

"arrays"

string

"default"
"arrays"
"objects"

"numberFormat"

controls how numbers are formatted in the JSON response message

"number"

string

"number"
"string"


The "dataFormat" property is an optional, case-insensitive string enum that defines the format of the response in 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.

  • "dataFormat" in the request inside "responseOptions" determines how the "data" property in the response is formatted.

    Possible values include:

    • "arrays"

      This is the default and causes the server to return results as an array of arrays, which is the most efficient.

    • "objects"

      This returns results as an array of objects. This is less efficient but is simpler to generate, read, and troubleshoot.

  • "dataFormat" in the request in the "params" object notifies the server how the "sourceData" property is formatted in the request. This version is rarely used because of the default "autoDetect" behavior.

    Possible values include:

    • "arrays"

      This causes the server to return results as an array of arrays, which is the most efficient.

    • "objects"

      This returns results as an array of objects. This is less efficient but is simpler to generate, read, and troubleshoot.

    • "autoDetect"

      This is the default and causes the server to automatically detect the format of the data in the "sourceData" property.

  • "dataFormat" in the response shows the client how the server formatted the "data" property.

    Possible values include:

    • "arrays"

      This is the default and causes the server to return results as an array of arrays, which is the most efficient.

    • "objects"

      This returns results as an array of objects. This is less efficient but is simpler to generate, read, and troubleshoot.

The "idleConnectionTimeoutSeconds" property is an optional integer from 0 to 2,147,483,647. It is the number of seconds that a session with no activity will stay open.

Thing to know:
  • Each time a session executes an operation, the session timer restarts.

  • A value of 0 keeps a session open indefinitely.

The "idleCursorTimeoutSeconds" property is an optional integer from 0 to 2,147,483,647. It is the number of seconds to keep a cursor open.

Things to know:
  • Each time a cursor retrieves records, the cursor timer restarts.

  • A value of -1 keeps a cursor open indefinitely.

  • A value of 0 immediately closes a cursor after the current operation.

The "username" property is a required string from 1 to 64 bytes. It is the account name of a user or application.

Things to know:
  • 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.