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 configuration details
To get details of the current configuration of a ThoughtSpot cluster, send a GET
request to the /tspublic/v1/admin/configinfo
API.
Example request
curl -X GET \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot' \
'https://<ThoughtSpot-host>/callosum/v1/tspublic/v1/admin/configinfo'
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
}
}
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.
Example request
Make sure the API request has the following headers:
-
the
Accept
header is set asAccept: application/json
-
the
X-requested-by
header must beX-Requested-By: ThoughtSpot
curl -X GET \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot' \
'https://<ThoughtSpot-host>/callosum/v1/tspublic/v1/admin/configinfo/overrides'
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
}
}
Update configuration
To update the configuration settings for your cluster, send a POST
request to the /tspublic/v1/admin/configinfo/update
API endpoint.
Request parameters
Form parameter | Description |
---|---|
|
String. A JSON file with configuration attributes. |
Example request
Make sure the API request has the following headers:
-
the
Accept
header is set asAccept: application/json
-
the
X-requested-by
header must beX-Requested-By: ThoughtSpot
-
the Content-Type is set as
application/x-www-form-urlencoded
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'
https://<ThoughtSpot-host>/callosum/v1/tspublic/v1/admin/configinfo/update