Admin APIs

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.

Supported operations🔗

API endpointAvailable from

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

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.1.1

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

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.1.1

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

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.1.1

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

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.1.1

GET /tspublic/v1/admin/embed/actions
Gets details of the custom actions enabled on the cluster.

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.2.1

GET /tspublic/v1/admin/embed/actions/{actionid}
Gets details of a specific custom action.

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.2.1

POST /tspublic/v1/admin/embed/actions
Creates a custom action

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.2.1

PUT /tspublic/v1/admin/embed/actions/{actionid}
Modifies the attributes of a custom action.

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.2.1

DELETE /tspublic/v1/admin/embed/actions/{actionid}
Deletes a custom action.

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.2.1

POST /tspublic/v1/admin/embed/actions/{actionid}/associations
Associates a custom action to a ThoughtSpot object.

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.2.1

GET /tspublic/v1/admin/embed/actions/{actionid}/associations
Gets the details of the ThoughtSpot objects associated with a custom action.

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.2.1

DELETE /tspublic/v1/admin/embed/actions/{actionid}/associations
Removes custom action associations.

ThoughtSpot Cloud ts7.aug.cl
ThoughtSpot Software 7.2.1

Required permissions🔗

To make an API request to the /tspublic/v1/admin/configinfo, /tspublic/v1/admin/configinfo/update /tspublic/v1/admin/configinfo/overrides endpoints, you must have administrator access.

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

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

Request parameters🔗

None

Example response🔗

If the request is successful, the API returns a response with details of the configuration and flags enabled on the cluster.

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://cloud-docs.thoughtspot.com/{versionNameForLink}/release/help-center.html",
      "iconFilePath": ""
    },
    {
      "enabled": true,
      "title": "Keywords",
      "id": "BLINK_KEYWORDS",
      "url": "https://cloud-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@cloud.thoughtspot.com>",
      "supportEmail": "ThoughtSpot Administrator <contact@cloud.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 codeDescription

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/overrides API endpoint.

Resource URL🔗

GET /tspublic/v1/admin/configinfo/overrides

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 Liveboard",
    "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 codeDescription

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 parameterDescription

configchanges

String. A JSON file with the key-value pair of 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 codeDescription

200

Successful operation

204

Successful update of the configuration information

401

Unauthorized request

Get details of the embed actions🔗

To get a list of custom actions available on a ThoughtSpot instance, send a GET request to the /tspublic/v1/admin/embed/actions API endpoint.

Resource URL🔗

GET /tspublic/v1/admin/embed/actions

Request parameters🔗

Query parameterDescription

tags

String. A JSON array of tag GUIDs. If tags are applied to worksheets, search answers, or Liveboard visualizations, and custom actions are associated to these objects, you can use this parameter to filter the custom action data by tags.

Example request🔗

cURL
curl -X GET \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot'
'https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions'
Request URL
https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions

Example response🔗

If the cluster has custom actions, the API returns a list of custom actions.

[
 {
    "id": "d86e9c55-2ac7-4c37-a3ff-2efa965ee221",
    "name": "Send Survey",
    "version": "v4",
    "detail": {
      "additionalUrlHeaders": "{}",
      "encodeUser": "",
      "apiKey": "X-API-KEY",
      "apiValue": "",
      "function": "send-survey",
      "authToken": "",
      "link": "https://mysurvey.com/",
      "authSelect": "NONE",
      "appActionType": ""
    },
    "type": "URL",
    "context": "NONE",
    "availability": [
      "GLOBAL"
    ],
    "application": "NONE",
    "actionAssociationMap": {},
    "userGroupList": []
  },
  {
    "id": "c3d847d3-1eda-4903-97a0-4caefbffa406",
    "name": "send email",
    "version": "v4",
    "detail": {
      "additionalUrlHeaders": "{}",
      "encodeUser": "",
      "apiKey": "X-API-KEY",
      "apiValue": "",
      "function": "send-email",
      "authToken": "",
      "link": "",
      "authSelect": "NONE",
      "appActionType": ""
    },
    "type": "CALLBACK",
    "context": "NONE",
    "availability": [
      "GLOBAL"
    ],
    "application": "NONE",
    "actionAssociationMap": {},
    "userGroupList": []
  },
  {
    "id": "e5a2467d-8d0b-45ea-bf72-bab9d1e456fd",
    "name": "Send to Slack",
    "version": "v4",
    "detail": {
      "additionalUrlHeaders": "{}",
      "encodeUser": "",
      "apiKey": "X-API-KEY",
      "apiValue": "",
      "function": "send-to-slack",
      "authToken": "",
      "link": "",
      "authSelect": "NONE",
      "appActionType": "SLACK"
    },
    "type": "APP",
    "context": "NONE",
    "availability": [
      "GLOBAL"
    ],
    "application": "NONE",
    "actionAssociationMap": {},
    "userGroupList": []
  }
]

Response codes🔗

HTTP status codeDescription

200

Successful operation

401

Unauthorized request

Get details of a specific custom action🔗

To get details of a specific custom action configured in the ThoughtSpot system, send a GET request to the GET /tspublic/v1/admin/embed/actions/{actionid} API endpoint.

Resource URL🔗

GET /tspublic/v1/admin/embed/actions/{actionid}

Request parameters🔗

Path ParameterDescription

actionId

String. The GUID of the action.

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/embed/actions/f1192d2f-6e2e-4669-a73d-d8997d6598ff'
Request URL
https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions/f1192d2f-6e2e-4669-a73d-d8997d6598ff

Example response🔗

If the request is successful, the API returns the JSON data for the specified action ID:

{
  "id": "f1192d2f-6e2e-4669-a73d-d8997d6598ff",
  "name": "Send Survey",
  "version": "v4",
  "detail": {
    "additionalUrlHeaders": "{}",
    "encodeUser": "",
    "apiKey": "X-API-KEY",
    "apiValue": "",
    "function": "send-survey",
    "authToken": "",
    "link": "",
    "authSelect": "NONE"
  },
  "type": "CALLBACK",
  "context": "NONE",
  "availability": [],
  "application": "NONE",
  "actionAssociationMap": {
    "WORKSHEET": {
      "2b9d083a-275c-4984-9cfe-90b036affa17": {
        "context": "PRIMARY",
        "enabled": "true"
      }
    },
    "ANSWER": {
      "e4079d3f-ae71-4b0a-a70a-f17ecaf157a5": {
        "context": "PRIMARY",
        "enabled": "true"
      }
    }
  },
  "userGroupList": []
}

Response codes🔗

HTTP status codeDescription

200

Successful operation

401

Unauthorized request

404

Invalid action ID

Create custom actions🔗

To programmatically create custom actions on ThoughtSpot clusters that support embedding configuration, send a POST request with action configuration details to the /tspublic/v1/admin/embed/actions API endpoint.

Resource URL🔗

POST /tspublic/v1/admin/embed/actions

Request parameters🔗

Form parameterDescription

embedaction

String. A JSON map of the configuration attributes presented as key-value pairs.

Example request🔗

cURL
curl -X POST \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot' \
--d 'embedaction={
  "availability": [
    "GLOBAL"
  ],
  "context": "NONE",
  "detail": {
    "link": "",
    "encodeUser": "",
    "authToken": "",
    "apiKey": "X-API-KEY",
    "apiValue": "",
    "authSelect": "NONE",
    "additionalUrlHeaders": "{}",
    "function": "test",
    "appActionType": "SLACK"
  },
  "name": "test",
  "type": "APP",
  "version": "v4",
  "userGroupList": []
} \
'https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions'
Request URL
https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions

Example JSON map🔗

{
  "availability": [
    "GLOBAL"
  ],
  "context": "NONE",
  "detail": {
    "link": "",
    "encodeUser": "",
    "authToken": "",
    "apiKey": "X-API-KEY",
    "apiValue": "",
    "authSelect": "NONE",
    "additionalUrlHeaders": "{}",
    "function": "test",
    "appActionType": "SLACK"
  },
  "name": "test",
  "type": "APP",
  "version": "v4",
  "userGroupList": []
}

Example response🔗

If the request is successful, the API returns the JSON data for the custom action in the response body:

{
  "id": "eab63fb9-2b04-48fe-89fe-871317c16b55",
  "name": "Send Survey",
  "version": "v4",
  "detail": {
    "additionalUrlHeaders": "{\"url_header1\":{\"id\":\"6a82908c-9328-40ff-b347-65adeda12f57\",\"key\":\"key1\",\"value\":\"value1\"}}",
    "encodeUser": "",
    "apiKey": "X-API-KEY",
    "apiValue": "",
    "function": "send-survey",
    "authToken": "asdfasadf3q4534534",
    "link": "https://unpkg.com",
    "authSelect": "BEARER"
  },
  "type": "URL",
  "context": "NONE",
  "availability": [
    "GLOBAL"
  ],
  "application": "NONE",
  "schemaVersion": "4",
  "actionAssociationMap": {
    "ANSWER": {
      "e4079d3f-ae71-4b0a-a70a-f17ecaf157a5": {
        "context": "MENU",
        "enabled": "true"
      }
    }
  },
  "userGroupList": [
    "d0326b56-ef23-4c8a-8327-a30e99bcc72b"
  ]
}

Response codes🔗

HTTP status codeDescription

200

Successful operation

401

Unauthorized request

Modify a custom action🔗

You can programmatically edit an existing custom action by sending a PUT request to the /tspublic/v1/admin/embed/actions/{actionid} API endpoint.

Resource URL🔗

PUT /tspublic/v1/admin/embed/actions/{actionid}

Request parameters🔗

ParameterParameter TypeDescription

actionId

Path parameter

String. The GUID of the custom action.

embedaction

Form data parameter

String. A JSON map of the configuration attributes presented as key-value pairs.

Example request🔗

cURL
curl -X PUT \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot' \
-d 'embedaction=={
  "id": "173f7c2f-4081-48a3-9a25-556947bedfdb",
  "name": "Send to Slack",
  "version": "v4",
  "detail": {
    "additionalUrlHeaders": "{}",
    "encodeUser": "",
    "apiKey": "X-API-KEY",
    "apiValue": "",
    "authToken": "",
    "function": "send-to-slack",
    "link": "",
    "authSelect": "NONE",
    "appActionType": "SLACK"
  },
  "type": "APP",
  "context": "NONE",
  "availability": [
    "GLOBAL"
  ],
  "application": "NONE",
  "userGroupList": []
}' \
'https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions/173f7c2f-4081-48a3-9a25-556947bedfdb'
Request URL
https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions/173f7c2f-4081-48a3-9a25-556947bedfdb

Example response🔗

If the request is successful, the API returns the JSON data for the specified action ID:

{
    "id":"0f1b18f9-2dbd-4742-bc70-7bfc1322ad3f",
    "name":"Send email",
    "version":"v2",
    "type":"CALLBACK",
    "detail":{
        "link":"",
        "function":"send-email",
        "authSelect":"NONE",
        "authToken":"",
        "encodeUser":"",
        "apiKey":"X-API-KEY",
        "apiValue":"",
        "additionalUrlHeaders":"{}"
    },
    "context":"NONE",
    "availability":[
        "LOCAL"
    ],
    "userGroupList":[
        "d0326b56-ef23-4c8a-8327-a30e99bcc72b"
    ]
}

Response codes🔗

HTTP status codeDescription

200

Successful operation

401

Unauthorized request

404

Invalid action ID

Delete a custom action🔗

To programmatically delete a custom action, send a DELETE request to the DELETE /tspublic/v1/admin/embed/actions/{actionid} API endpoint.

Resource URL🔗

DELETE /tspublic/v1/admin/embed/actions/{actionid}

Request parameters🔗

Path ParameterDescription

actionId

String. The GUID of the action.

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 as X-Requested-By: ThoughtSpot

cURL
curl -X DELETE \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot' \
'https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions/0f1b18f9-2dbd-4742-bc70-7bfc1322ad3f'
Request URL
https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions/0f1b18f9-2dbd-4742-bc70-7bfc1322ad3f

Example response🔗

On successful deletion of the action, the API returns a response body indicating that the specified action ID is no longer available:

{
  "id": "eab63fb9-2b04-48fe-89fe-871317c16b55",
  "name": "unpkg test",
  "version": "v4",
  "detail": {
    "additionalUrlHeaders": "{\"url_header1\":{\"id\":\"6a82908c-9328-40ff-b347-65adeda12f57\",\"key\":\"key1\",\"value\":\"value1\"}}",
    "encodeUser": "",
    "apiKey": "X-API-KEY",
    "apiValue": "",
    "function": "unpkg-test",
    "authToken": "asdfasadf3q4534534",
    "link": "https://unpkg.com",
    "authSelect": "BEARER"
  },
  "type": "URL",
  "context": "NONE",
  "availability": [
    "GLOBAL"
  ],
  "application": "NONE"
}

Response codes🔗

HTTP status codeDescription

200

Successful operation

401

Unauthorized request

404

Invalid action ID

Associate a custom action to ThoughtSpot objects🔗

ThoughtSpot supports associating custom actions to Liveboards, answers, and worksheets, To programmatically associate a custom action to a ThoughtSpot object, send a POST request to the /tspublic/v1/admin/embed/actions/{actionid}/associations API endpoint.

Resource URL🔗

POST /tspublic/v1/admin/embed/actions/{actionid}/associations

Request parameters🔗

ParameterParameter TypeDescription

actionId

Path parameter

String. The GUID of the custom action.

actionassociation

Form data parameter

String. A JSON map of the attributes for associating the action to a ThoughtSpot object ID.

Example request🔗

cURL
curl-X POST \
--header 'Content-Type:application/x-www-form-urlencoded' \
--header 'Accept:application/json' \
--header 'X-Requested-By: ThoughtSpot' \
-d' actionassociation={
  "actionAssociationMap": {
    "ANSWER": {
      "f605dbc7-db19-450b-8613-307118f74c3c": {
        "enabled": "true",
        "context": "PRIMARY"
      }
    }
  }
}' \
'https://{ThoughtSpot-host}/callosum/v1/tspublic/v1/admin/embed/actions/67495d70-f08b-4a48-ade7-46ed64c02e23/associations'
Request URL
https://{ThoughtSpot-host}/callosum/v1/tspublic/v1/admin/embed/actions/67495d70-f08b-4a48-ade7-46ed64c02e23/associations

Example response🔗

If the API request is successful, the object association map is appended to the custom action property and the API returns the object association JSON in the response body.

{
  "ANSWER": {
    "f605dbc7-db19-450b-8613-307118f74c3c": {
      "context": "PRIMARY",
      "enabled": "true"
    }
  }
}

Response codes🔗

HTTP status codeDescription

200

Successful operation

401

Unauthorized request

404

Invalid action ID

500

Request parsing error

Get details of custom action associations🔗

To get the details of the ThoughtSpot objects associated with a custom action, send a GET request to the /tspublic/v1/admin/embed/actions/{actionid}/associations API endpoint.

Resource URL🔗

GET /tspublic/v1/admin/embed/actions/{actionid}/associations

Request parameters🔗

Path ParameterDescription

actionId

String. The GUID of the custom action.

Example request🔗

cURL
curl -X GET \
--header 'Accept: application/json' \
--header 'X-Requested-By: ThoughtSpot' \
'https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions/67495d70-f08b-4a48-ade7-46ed64c02e23/associations'
Request URL
https://{ThoughtSpot-Host}/callosum/v1/tspublic/v1/admin/embed/actions/67495d70-f08b-4a48-ade7-46ed64c02e23/associations

Example response🔗

If the custom action is associated to a ThoughtSpot object, the API returns the action association map:

{
  "ANSWER": {
    "f605dbc7-db19-450b-8613-307118f74c3c": {
      "enabled": "true",
      "context": "PRIMARY"
    }
  }
}

Response codes🔗

HTTP status codeDescription

200

Successful operation

401

Unauthorized request

404

Invalid action ID

Delete custom action associations🔗

To remove custom action associations to ThoughtSpot objects, send a DELETE request to the /tspublic/v1/admin/embed/actions/{actionid}/associations API endpoint.

Resource URL🔗

DELETE /tspublic/v1/admin/embed/actions/{actionid}/associations

Request parameters🔗

ParameterParameter TypeDescription

actionId

Path parameter

String. The GUID of the custom action.

actionassociation

Form data parameter

String. A JSON map of the attributes for associating the action to a ThoughtSpot object ID.

Example request🔗

cURL
curl -X DELETE \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Accept: application/json' \
-d 'actionassociation={
  "actionAssociationMap": {
    "ANSWER": {
      "f605dbc7-db19-450b-8613-307118f74c3c": {
        "enabled": "true",
        "context": "PRIMARY"
      }
    }
  }
}' \
'https://{ThoughtSpot-host}/callosum/v1/tspublic/v1/admin/embed/actions/67495d70-f08b-4a48-ade7-46ed64c02e23/associations'
Request URL
https://{ThoughtSpot-host}/callosum/v1/tspublic/v1/admin/embed/actions/67495d70-f08b-4a48-ade7-46ed64c02e23/associations

Example response🔗

The API response shows the deleted association map:

{
  "ANSWER": {
    "f605dbc7-db19-450b-8613-307118f74c3c": {
      "enabled": "true",
      "context": "PRIMARY"
    }
  }
}

Response codes🔗

HTTP status codeDescription

200

Successful operation

400

Invalid operation

401

Unauthorized request

404

Invalid action ID