# Custom REST Connector Config: Settings

The Settings object contains configuration parameters such as the name of the REST provider, the name of the connector to be displayed in the ElastiCube Manager, the maximum number of data records to be scanned when determining a document's schema, and additional Configuration parameters.

# Properties

Name Type Required Description
Provider string Yes Provider system name. See Provider Details
ConnectorAssemblyFileName string Yes The value of this key should be set to _rest.tag when you want Sisense to automatically copy the REST Connector DLL file to your connector’s folder.
The advantage of this method is you do not need to add the Sisense REST Connector DLL file each time you upgrade Sisense.
When defining this key’s value, the FileList key must contain the name of your connector’s configuration files.
FileList string[] Yes The list of configuration files associated with your custom connector. Typically, the values of this key are config.json, and oath.json. This key is only mandatory when ConnectorAssemblyFileName is set to _reg.tag.
DisplayName string No Name of the connector to be displayed in the ElastiCube Manager. If no value is set, the value of Provider is displayed.
SchemaMapFile string No The name of the file with the schema. This file must be located in the same directory as your other Custom REST files.
SchemaMapCatalog string No The name of the schema catalog.
StringColumnLength integer No The string column length for a table.
MaxDocs integer Yes Maximum number of records fetched from a resource. This is used to determine a data schema.
FetchSize integer Yes Number of records fetched before caching data. For example, if FetchSize = 1000 and PageSize = 400, three calls will be executed before buffering. On the third call it will be calculated that current number of fetched records is more than 1000 and the next execution will be stopped for buffering.
OAuth2Config string No File name of the OAuth2 configuration file
IsAccumulativeSupported boolean No When True, accumulative builds are supported for the relevant tables within the ElastiCube Manager. By default, this value is false. To define which tables support accumulative builds, see AccumulativeSettings.
Parameters object[] No A hashtable of string type key-value pairs that can be used as parameters in other configuration sections. For more information, see Parameters.
RetryPolicyConfigs object[] No Retry policy. See RetryPolicyConfigs Details
UIParameters object No Optional UI parameters. See UIParams Details

# Provider Details

Provider system name. This name is used by Sisense to identify your connector and should start with the prefix rest- . For example, rest-marketo, rest-facebook, etc.

If you have multiple connectors using the same data source each with their own settings, the Provider system name should be unique, for example, rest-facebook1 and rest-facebook2

This string has the following limitations:

  • The null character (\u0000) cannot be part of a path name.
  • The following character ranges are not rendered well: \u0001 - \u0019 and \u007F - \u009F.
  • The following character ranges are not allowed: \ud800 - \uF8FFF, \uFFF0 - \uFFFF, \uXFFFE - \uXFFFF (where X is a digit 1 - E), \uF0000 - \uFFFFF.

# RetryPolicyConfigs Details

The retry policy array defines how and when Sisense should retry to query a custom REST data source when an error occurs.

In the Actions (Tables) object, you define which errors trigger the relevant retry policy.

The RetryPolicyConfigs array members have the following properties:

Name Type Required Description
Name string Yes A unique name for the retry policy that you define. This name is used in the Actions (Tables) object in the CodeValues array to define a retry policy for an error.
NumberOfRetries integer Yes How many attempts should be executed before cancelling a request.
Delay integer Yes Initial sleeping period in seconds between attempts.
Factor integer Yes A multiplier for a next sleeping period. For example, if the value is 2 and the value of Delay is 10, on the second attempt, Sisense waits 2(Factor) * 10(Delay) seconds before attempting another request. On the third attempt, Sisense waits 2* 2*10 seconds, etc.
ContinueOnError boolean Yes Defines Sisense’s behavior following an error; true: (Default) Continue execution; false: Throw an exception and stop execution.

# UIParameters Details

The UIParameters object is an optional object that you can add to the Settings object inside your configuration file. This object displays a UI in the ElastiCube Manager for passing information for Oauth2 authentication.

During OAuth2 authentication, the resource provider requires certain details such as the ClientId and ClientSecret to authenticate the user and provide the connector with access to the requested resources. The ClientId is a string used by the resource provider’s API to identify the application, and is also used to build authorization URLs that are presented to users. The ClientSecret is used to authenticate the identity of the application to the resource provider’s API. The UIParameters object enables your users to dynamically define their ClientID and ClientSecret keys without having to expose these values in the configuration file.

Note

When using UIParameters, comment out the values in the oauth2Config.json file to prevent Sisense from reading those instead.

For more information about OAuth2, click here.

In addition to ClientId and ClientSecret, Sisense has four other optional parameter types you can use to pass information to the resource provider. Each type of parameter provides some validation for the value the user can enter. For example, datetime parameters can accept only values in a date and time format, and integers can only accept numeric values.

You can redefine any of the fields to pass only the relevant information to the resource provider. The format of your code in the JSON file should be as follows:

{
   "parameter-name" :  "description;type"
}

These are the types you can use for UIParams:

Name Description Example
datetime Accepts a DateTime value in the format of yyyy-MM-dd. The user can also click the Value field to open a datepicker that enters the selected date in the correct format. { "Date": "Date value; datetime; yyyy-MM-dd" }
bool Displays a checkbox to accept a boolean value where a checked box indicates True and a clear checkbox indicates False. { "New User?": "Boolean data;bool" }
int Accepts integer values. { "User ID": "Enter User ID; int" }
real Real numbers in which a decimal point is included. For example, 1.00 { "Version": "Enter API Version; real" }

For example, if you want to display a Date field that allows the user to open a datepicker, the code should be defined as follows:

"Date": "Select a date: datetime",

{
   "Date" :  "Select a date;datetime"
}

The follow code sample is an example of a UI window that includes the ClientID and Client Secret as well as the four additional parameters.

"UIParameters": {
   "ClientId": "Client id;string",
   "ClientSecret": "Client Secret;string",
   "Date": "Current Date;datetime",
   "New User?": "Boolean data;bool",
   "User ID": "Enter User ID;int",
   "Version": "Enter API Version;real"  
}

When defining the UIParameters object, the parameters are case insensitive, however, the parameters need to match the names of parameters expected by your resource provider’s API.

Within the Value fields, you can also pass Configuration parameters such as InMemory parameters as described here. For example, if you wish to define an access key that has been saved in memory, your user can enter [@accesstoken] as the value of the field.

# Example

{
    "Settings": {
        "Provider": "rest-marketo",
        "ConnectorAssemblyFileName": "_rest.tag",
        "FileList":  [  
           "config.json",
           "oauth2Config.json"
        ],
        "DisplayName": "Marketo",
        "SchemaMapFile": "schema.json",
        "SchemaMapCatalog": "zendeskSchema",
        "StringColumnLength": 1000,
        "MaxDocs": 100,
        "FetchSize": 1000,
        "OAuth2Config": "oauth2Config.json",
        "IsAccumulativeSupported": true,
        "Parameters": {
            "uri": "https://123-OXE-123.mktorest.com",
            "startDate": "2016-01-1"
        },
        "UIParameters": {
            "ClientId": "Client id;string",
            "ClientSecret": "Client Secret;string",
            "Date": "Current Date;datetime",
            "New User?": "Boolean data;bool",
            "User ID": "Enter User ID;int",
            "Version": "Enter API Version;real"          
         },
        "RetryPolicyConfigs":[
         {
            "Name":"default",
            "NumberOfRetries":5,
            "Delay":70,
            "Factor":1,
            "ContinueOnError":true
         },
         {
            "Name":"quick",
            "NumberOfRetries":3,
            "Delay":10,
            "Factor":1,
            "ContinueOnError":true
         },
         {
            "Name":"average",
            "NumberOfRetries":10,
            "Delay":65,
            "Factor":1,
            "ContinueOnError":true
         }
      ]
    }
}