# REST API v1 - Admin API endpoints

> For the complete documentation index, see [llms.txt](https://developers.thoughtspot.com/docs/llms.txt)

Source: https://developers.thoughtspot.com/docs/admin-api-v1

# REST API v1 - Admin API endpoints

> **IMPORTANT:** The REST API v1 endpoints are deprecated and replaced with the REST API v2 endpoints. Your existing integrations with REST API v1 endpoints will continue to function without disruption until further notice. ThoughtSpot strongly recommends migrating your integrations to the REST API v2 endpoints.

## Supported operations

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.

 
| API endpoint | Available from |
| --- | --- |
| 
`[**GET** /tspublic/v1/admin/configinfo]({{navprefix}}/{{admin-api}}#get-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]({{navprefix}}/{{admin-api}}#get-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]({{navprefix}}/{{admin-api}}#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]({{navprefix}}/{{admin-api}}#get-config-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]({{navprefix}}/{{admin-api}}#get-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}]({{navprefix}}/{{admin-api}}#get-action-by-id)`  
Gets details of a specific custom action.

 | 

ThoughtSpot Cloud ts7.aug.cl  
ThoughtSpot Software 7.2.1

 |
| 

`[**POST** /tspublic/v1/admin/embed/actions]({{navprefix}}/{{admin-api}}#create-custom-action)`  
Creates a custom action

 | 

ThoughtSpot Cloud ts7.aug.cl  
ThoughtSpot Software 7.2.1

 |
| 

`[**PUT** /tspublic/v1/admin/embed/actions/{actionid}]({{navprefix}}/{{admin-api}}#edit-custom-action)`  
Modifies the attributes of a custom action.

 | 

ThoughtSpot Cloud ts7.aug.cl  
ThoughtSpot Software 7.2.1

 |
| 

`[**DELETE** /tspublic/v1/admin/embed/actions/{actionid}]({{navprefix}}/{{admin-api}}#del-custom-action)`  
Deletes a custom action.

 | 

ThoughtSpot Cloud ts7.aug.cl  
ThoughtSpot Software 7.2.1

 |
| 

`[**POST** /tspublic/v1/admin/embed/actions/{actionid}/associations]({{navprefix}}/{{admin-api}}#custom-action-assoc)`  
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]({{navprefix}}/{{admin-api}}#get-custom-action-assoc)`  
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]({{navprefix}}/{{admin-api}}#del-action-association)`  
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
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:

```JSON
{
  "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 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/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
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:

```JSON
{

  "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 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 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
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

 |

## 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 parameter | Description |
| --- | --- |
| 
`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
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.

```JSON
[
 {
    "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 code | Description |
| --- | --- |
| 
**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 Parameter | Description |
| --- | --- |
| 
`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
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:

```JSON
{
  "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 code | Description |
| --- | --- |
| 
**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 parameter | Description |
| --- | --- |
| 
`embedaction`

 | 

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

 |

### Example request

cURL

```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

```JSON
{
  "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:

```JSON
{
  "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 code | Description |
| --- | --- |
| 
**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

  
| Parameter | Parameter Type | Description |
| --- | --- | --- |
| 
`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
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:

```JSON
{
    "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 code | Description |
| --- | --- |
| 
**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 Parameter | Description |
| --- | --- |
| 
`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
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:

```JSON
{
  "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 code | Description |
| --- | --- |
| 
**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 Models, 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

  
| Parameter | Parameter Type | Description |
| --- | --- | --- |
| 
`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
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.

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

### Response codes

 
| HTTP status code | Description |
| --- | --- |
| 
**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 Parameter | Description |
| --- | --- |
| 
`actionId`

 | 

_String_. The GUID of the custom action.

 |

### Example request

cURL

```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:

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

### Response codes

 
| HTTP status code | Description |
| --- | --- |
| 
**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

  
| Parameter | Parameter Type | Description |
| --- | --- | --- |
| 
`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
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:

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

### Response codes

 
| HTTP status code | Description |
| --- | --- |
| 
**200**

 | 

Successful operation

 |
| 

**400**

 | 

Invalid operation

 |
| 

**401**

 | 

Unauthorized request

 |
| 

**404**

 | 

Invalid action ID

 |