Admin APIs

The admin API service allows you to query and update configuration information for a ThoughtSpot cluster. You can also use these APIs to migrate data from one cluster to another.

To access the admin API endpoints and send API requests, you must have admin user credentials.

Supported operations

GET /tspublic/v1/admin/configinfo
Gets details of the current configuration of a ThoughtSpot cluster.

POST /tspublic/v1/admin/configinfo/update
Updates the configuration settings of the current ThoughtSpot cluster.

GET /tspublic/v1/admin/configinfo/override
Gets details of configuration overrides on the current ThoughtSpot cluster.

Get configuration details

To get details of the current configuration of a ThoughtSpot cluster, send a GET request to the /tspublic/v1/admin/configinfo API.

Resource URL

POST /tspublic/v1/admin/configinfo

Request parameters

None === Example request

Make sure the API request has the following headers:

  • the Accept header is set as Accept: application/json

  • the X-requested-by header is set as X-Requested-By: ThoughtSpot

cURL
curl -X GET \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot' \
'https://<ThoughtSpot-host>/callosum/v1/tspublic/v1/admin/configinfo'
Request URL
https://<ThoughtSpot-host>/callosum/v1/tspublic/v1/admin/configinfo

Example response

If the request is successful, the API returns a response with details of the configuration details, flags enabled on the cluster, and custom actions added for embedded instances.

The following example shows a snippet of the configuration information:

{
  "highCardinalityMaxDataSize": 20000,
  "fetchPivotSummaryFromBackend": true,
  "vizRenderingQueueTimeoutMS": 30000,
  "enableColumnSummariesByDefault": true,
  "defaultChartDataSize": 5000,
  "maxFilterValues": 10000,
  "useDomainQualifiedName": true,
  "enableInstantSearch": false,
  "defaultFilterNonCascading": false,
  "pinboardFilterConfiguratorDisabled": false,
  "isAnswerUndoStackEnabled": false,
  "answerV2Experience": true,
  "enablePinboardV2": false,
  "blinkHelpConfigList": [
    {
      "enabled": true,
      "title": "How search works",
      "id": "BLINK_HOW_SEARCH_WORKS",
      "url": "https://docs.thoughtspot.com/{versionNameForLink}/release/help-center.html",
      "iconFilePath": ""
    },
    {
      "enabled": true,
      "title": "Keywords",
      "id": "BLINK_KEYWORDS",
      "url": "https://docs.thoughtspot.com/{versionNameForLink}/reference/keywords.html",
      "iconFilePath": ""
    }

  ],
  "blinkActionConfigList": [],
  "embedActionConfigList": [
    {
      "id": "f4a19262-e93a-4233-8511-2eaa91b32514",
      "name": "dave test action",
      "version": "v2",
      "type": "URL",
      "detail": {
        "link": "http://unpkg.com",
        "function": "dave-test-action",
        "authSelect": "NONE",
        "authToken": "",
        "encodeUser": "",
        "apiKey": "X-API-KEY",
        "apiValue": "",
        "additionalUrlHeaders": "{}"
      },
      "actionAssociationMap": {
        "WORKSHEET": {
          "47c22122-779e-41e1-afa6-5247192b845a": {
            "enabled": "true",
            "context": "PRIMARY"
          }
        }
      },
      "context": "NONE",
      "availability": []
    },
    {
      "id": "3f7eac93-cce1-4ffc-b7a8-429353edbc6b",
      "name": "unpkg test",
      "version": "v2",
      "type": "URL",
      "detail": {
        "link": "https://unpkg.com",
        "function": "unpkg-test",
        "authSelect": "BEARER",
        "authToken": "AbCdEf123456",
        "encodeUser": "",
        "apiKey": "X-API-KEY",
        "apiValue": "",
        "additionalUrlHeaders": "{\"url_header1\":{\"id\":\"6a82908c-9328-40ff-b347-65adeda12f57\",\"key\":\"key1\",\"value\":\"value1\"}}"
      },
      "actionAssociationMap": {
        "ANSWER": {
          "e783038e-95fc-494b-a52a-7da3487b90ea": {
            "enabled": "true",
            "context": "MENU"
          }
        }
      },
      "context": "NONE",
      "availability": [
        "GLOBAL"
      ]
    },

  "ldapConfiguration": {
    "enabled": false,
    "realms": "",
    "enforceBindingPriorToAuthentication": false,
    "bindUsername": "",
    "bindPassword": "",
    "updateLdapAttributes": true,
    "displayNameAttributeKey": "displayName",
    "emailAttributeKey": "mail"
  },
  "autoCompleteConfig": {
    "requestTimeout": 10000
  },
  "samlConfiguration": {
    "enabled": false,
    "samlLoginPageRedirect": false,
    "forceAuthn": false,
    "updateSamlAttributes": true,
    "logoutEnabledInUI": false,
    "mobileAppRedirectEnabled": true,
    "emailAttributeKey": "mail",
    "displayNameAttributeKey": "displayName",
    "samlGroupAttributeKey": "roles",
    "disableMaxAuthenticationAgeCheck": false,
    "updateUserGroupsFromSAML": false
  },
  "oidcConfiguration": {
    "enabled": false,
    "forceAuthn": false,
    "oidcLoginPageRedirect": false,
    "updateOIDCAttributes": true,
    "logoutEnabledInUI": false,
    "emailAttributeKey": "email",
    "displayNameAttributeKey": "displayName",
    "subjectAttributeKey": "preferred_username",
    "callbackUri": "/callosum/v1/oidc/callback",
    "oidcLoginUri": "/callosum/v1/oidc/login",
    "scope": "openid profile email"
  },
  "materializationConfig": {
    "enabled": false,
    "maxMaterializedViewsPerCluster": 50,
    "refreshWindowStartTime": "08:00PM",
    "materializationHours": 8
  },
  "emailConfig": {
    "companyName": "Your Company",
    "productName": "ThoughtSpot",
    "fromEmail": "no-reply@notification.thoughtspot.com",
    "thoughtspotLogoUrl": "https://storage.pardot.com/710713/5660/TS_logo_260x68.png",
    "welcomeEmailConfig": {
      "enabled": true,
      "fromEmail": "ThoughtSpot Administrator <noreply@thoughtspot.com>",
      "supportEmail": "ThoughtSpot Administrator <contact@thoughtspot.com>",
      "customMessage": "",
      "getStartedLink": "https://notyetset",
      "learnMoreLink": "https://docs.thoughtspot.com",
      "addMixpanelTokens": true
    }
  },
  "notificationConfig": {
    "groupMemberShareNotificationLimit": 500,
    "asyncShareEmailServiceThreadCount": 10,
    "accessRequestEmailThreadCount": 5,
    "useNotificationService": true
  },
  "sharingConfiguration": {
    "enableVizSharing": true,
    "enableDataSourceSharing": true,
    "enableVizSharingWithLink": true
  },
  "userPersonaConfiguration": {
    "dataManagementCheckEnabled": true
  },
  "demoDataConfiguration": {
    "demoConnectionGuids": [
      "2aa36dbd-dda6-4497-a6db-bc47e128862e"
    ],
    "demoWorksheetGuids": [
      "cd252e5c-b552-49a8-821d-3eadaa049cca"
    ],
    "demoTableGuids": [
      "a633dccd-b449-46df-a0fc-92034d6858cb",
      "7d174ef2-2482-4e61-9d6e-1e1d709d96b0",
      "757f2434-66ef-43ad-9820-ba9008072155"
    ],
    "demoPinboardGuids": [
      "d084c256-e284-4fc4-b80c-111cb606449a"
    ]
  },
  "analystOnboardingConfig": {
    "enabled": true,
    "videoURL": "https://fast.wistia.net/embed/iframe/dmue1pc6fp",
    "setupV2Enabled": true
  },
  "fullEmbedConfiguration": {
    "primaryNavHidden": true,
    "profileAndHelpOptionsInNavBarHidden": false,
    "alertBarHidden": false,
    "poweredFooterHidden": false,
    "pinboardCreationPrivilegeEnabled": false,
    "isPinboardDownloadAsPDFEnabled": true,
    "isPinboardVizDownloadAsPDFEnabled": true,
    "isPinboardVizDownloadAsPNGEnabled": true,
    "isPinboardVizDownloadAsCSVEnabled": true,
    "isPinboardVizDownloadAsXLSXEnabled": true
  },
  "walkMeConfiguration": {
    "enableWalkme": false,
    "enableTestEnvForWalkme": false
  }
}

Response codes

HTTP status code Description

200

Successful retrieval of the configuration information

401

Unauthorized request

Get details of configuration overrides

To get the details of configuration overrides, send a GET request to the /tspublic/v1/admin/configinfo/override API endpoint.

Resource URL

GET /tspublic/v1/admin/configinfo/override

Request parameters

None

Example request

Make sure the API request has the following headers:

  • the Accept header is set as Accept: application/json

  • the X-requested-by header must be X-Requested-By: ThoughtSpot

cURL
curl -X GET \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot' \ 'https://<ThoughtSpot-host>/callosum/v1/tspublic/v1/admin/configinfo/overrides'
Request URL
https://<ThoughtSpot-host>/callosum/v1/tspublic/v1/admin/configinfo/overrides

Example response

If the request is successful, the API returns the details of the configuration overrides. The following example shows a snippet of the configuration details:

{

  "enableColumnSummariesByDefault": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "Enable column summaries by default from backend",
    "current": true
  },

  "analystOnboardingConfig.setupV2Enabled": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "If setup v2 is to be enabled.",
    "current": true
  },

  "notificationConfig.asyncShareEmailServiceThreadCount": {
    "category": "MAIN",
    "dataType": "INTEGER",
    "description": "Number of threads sending asynchronous email notifications for share.",
    "current": 10
  },
  "samlConfiguration.groupMapping": {
    "category": "MAIN",
    "dataType": "STRING",
    "description": "SAML Group mapping in string format.",
    "regex": ".*",
    "current": ""
  },
  "samlConfiguration.updateUserGroupsFromSAML": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "Whether to check if update userGroups from SAML is enabled.",
    "current": false
  },
  "signUpConfiguration.signUpButtonLink": {
    "category": "MAIN",
    "dataType": "STRING",
    "description": "Flag to configure the end point of Sign up button",
    "regex": ".*",
    "current": ""
  },
  "enablePendo": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "Flag to enable or disable Pendo.",
    "current": true
  },
  "disableFeedback": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "Disable send feedback on the cluster",
    "current": false
  },
  "pinboardFilterConfiguratorDisabled": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "Disables Configure Filter option on a Pinboard",
    "current": false
  },

  "embedActionConfigList": {
    "category": "MAIN",
    "dataType": "ARRAYLIST",
    "description": "Embed Action items added by user",
    "current": [
      {
        "id": "f4a19262-e93a-4233-8511-2eaa91b32514",
        "name": "dave test action",
        "version": "v2",
        "type": "URL",
        "detail": {
          "link": "http://unpkg.com",
          "function": "dave-test-action",
          "authSelect": "NONE",
          "authToken": "",
          "encodeUser": "",
          "apiKey": "X-API-KEY",
          "apiValue": "",
          "additionalUrlHeaders": "{}"
        },
        "actionAssociationMap": {
          "WORKSHEET": {
            "47c22122-779e-41e1-afa6-5247192b845a": {
              "enabled": "true",
              "context": "PRIMARY"
            }
          }
        },
        "context": "NONE",
        "availability": []
      },
      {
        "id": "3f7eac93-cce1-4ffc-b7a8-429353edbc6b",
        "name": "unpkg test",
        "version": "v2",
        "type": "URL",
        "detail": {
          "link": "https://unpkg.com",
          "function": "unpkg-test",
          "authSelect": "BEARER",
          "authToken": "AbCdEf123456",
          "encodeUser": "",
          "apiKey": "X-API-KEY",
          "apiValue": "",
          "additionalUrlHeaders": "{\"url_header1\":{\"id\":\"6a82908c-9328-40ff-b347-65adeda12f57\",\"key\":\"key1\",\"value\":\"value1\"}}"
        },
        "actionAssociationMap": {
          "ANSWER": {
            "e783038e-95fc-494b-a52a-7da3487b90ea": {
              "enabled": "true",
              "context": "MENU"
            }
          }
        },
        "context": "NONE",
        "availability": [
          "GLOBAL"
        ]
      },
      {
        "id": "8b9f5009-bbcf-46b0-8076-9593c75d2ea2",
        "name": "my url",
        "version": "v2",
        "type": "URL",
        "detail": {
          "link": "http://thoughtspot.com/ ",
          "function": "my-url",
          "authSelect": "NONE",
          "authToken": "",
          "encodeUser": "",
          "apiKey": "X-API-KEY",
          "apiValue": "",
          "additionalUrlHeaders": "{}"
        },
        "actionAssociationMap": {
          "ANSWER": {
            "e783038e-95fc-494b-a52a-7da3487b90ea": {
              "enabled": "true",
              "context": "CONTEXT_MENU"
            }
          }
        },
        "context": "NONE",
        "availability": [
          "GLOBAL"
        ]
      }
    ]
  },

  "sharingConfiguration.enableVizSharingWithLink": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "enable/disable sharing of viz from using copy link button.",
    "current": true
  },
  "analystOnboardingConfig.enabled": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "If onboarding is to be enabled.",
    "current": true
  },

  "adminPortalDevEnabled": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "Enable AdminPortal for dev",
    "current": false
  },
  "rememberedSessionIdleTimeoutMs": {
    "category": "MAIN",
    "dataType": "INTEGER",
    "description": "Session idle timeout for an authenticated session with remember me set to true.",
    "current": 3600000
  },
  "maxNumSearchIQPreferredColumnsAllowed": {
    "category": "MAIN",
    "dataType": "INTEGER",
    "description": "Maximum number of searchIQ preferred columns within a table.",
    "current": 15
  },
  "vizEmbedConfiguration.disableTransformations": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "Whether transformations are permitted within an embedded viz.",
    "current": false
  },
  "loginConfig.allowSystemUserUILogin": {
    "category": "MAIN",
    "dataType": "BOOLEAN",
    "description": "Allow system user to login through UI",
    "current": false
  },
  "maxNumDataApiRows": {
    "category": "MAIN",
    "dataType": "INTEGER",
    "description": "Size for maximum number of rows that can be returned using data api.",
    "current": 100000
  },
  "callosumSaaSTest": {
    "category": "MAIN",
    "dataType": "INTEGER",
    "description": "Does not matter right now",
    "current": 1
  },
  "batchSize": {
    "category": "MAIN",
    "dataType": "INTEGER",
    "description": "Data result set batch size. Data is exported in batches of batchSize up to a maximum of maxNumPaginatedRows.",
    "current": 1000
  },
  "dataGenRules.enableUniqueCountTransformEmbrace": {
    "category": "DATA",
    "dataType": "BOOLEAN",
    "description": "Flag to enable unique count transformation for embrace.",
    "current": true
  }
}

Response codes

HTTP status code Description

200

Successful retrieval of the configuration information

401

Unauthorized request

Update configuration

To update the configuration settings for your cluster, send a POST request to the /tspublic/v1/admin/configinfo/update API endpoint.

Resource URL

POST /tspublic/v1/admin/configinfo/update

Request parameters

Form parameter Description

configchanges

String. A JSON file with configuration attributes.

Example request

Make sure the API request has the following headers:

  • the Accept header is set as Accept: application/json

  • the X-requested-by header must be X-Requested-By: ThoughtSpot

  • the Content-Type is set as application/x-www-form-urlencoded

cURL
curl -X POST \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot' \
-d 'configchanges=@import-embed-objects-b.json' \
'https://<ThoughtSpot-host>/callosum/v1/tspublic/v1/admin/configinfo/update'
Request URL
https://<ThoughtSpot-host>/callosum/v1/tspublic/v1/admin/configinfo/update

Example response

If the request is successful, the API returns the following response code:

Response Code
204

Response codes

HTTP status code Description

200

Successful operation

204

Successful update of the configuration information

401

Unauthorized request