Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
544de29
broken link fixes and event example updates
ShashiSubramanya Mar 17, 2026
f855e9c
PNG flow deprecation note
rani2655 Mar 17, 2026
b83ed30
edited sdk update for hidelog url
rani2655 Mar 24, 2026
442b55c
Merge pull request #440 from thoughtspot/sdk-26.4
rani2655 Mar 24, 2026
7d9a54e
edited formatting
rani2655 Mar 24, 2026
41df285
formatting changes
rani2655 Mar 24, 2026
8d4efe1
edited temp prop for customize emails
rani2655 Mar 25, 2026
ae72346
edited formatting
rani2655 Mar 25, 2026
2ba9151
added param for email custom
rani2655 Mar 25, 2026
70244ff
added changelog for hide logo
rani2655 Mar 25, 2026
f340ee6
Added the collections API
rani2655 Mar 25, 2026
7c2cb88
Added collections to nav
rani2655 Mar 25, 2026
60e4bd7
Collections info edited
rani2655 Mar 27, 2026
18ef539
Collections info edited
rani2655 Mar 27, 2026
c0bf726
whats new
rani2655 Mar 29, 2026
7e6b84f
theme buidler content
rani2655 Mar 30, 2026
3e2a665
edits
rani2655 Mar 30, 2026
588c004
edits
rani2655 Mar 30, 2026
772e5c3
edits
rani2655 Mar 30, 2026
acb5327
edits
rani2655 Mar 30, 2026
2dc6bb2
edited
rani2655 Mar 30, 2026
d9908c1
Shivam's feedback
rani2655 Mar 30, 2026
fd8b311
edits
rani2655 Mar 30, 2026
f21b6dd
typo
rani2655 Mar 30, 2026
ebb1182
Merge pull request #445 from thoughtspot/whatsnew-26.4
rani2655 Mar 30, 2026
048e13a
Merge pull request #446 from thoughtspot/theme-builder-ai
rani2655 Mar 30, 2026
75cf252
added collections api
rani2655 Mar 30, 2026
a6a0de8
added beta label
rani2655 Mar 30, 2026
af08e89
typos
rani2655 Mar 30, 2026
acca347
Merge pull request #442 from thoughtspot/sdk-26.4
rani2655 Mar 30, 2026
e0b07c1
edit png deprecation note
rani2655 Mar 30, 2026
5e36190
Debarun's feedback
rani2655 Mar 30, 2026
7d7af48
pivot table support:
rani2655 Mar 31, 2026
e29c550
Added to rest api ref
rani2655 Mar 31, 2026
65ec895
host events v2 update
ShashiSubramanya Mar 30, 2026
0ab46ca
sdk changelog update
ShashiSubramanya Mar 30, 2026
d1c2900
broken link fixes, worksheet terminology fixes
ShashiSubramanya Mar 17, 2026
d30c8c1
delted orphaned lb access control page
rani2655 Mar 25, 2026
ef41e32
Webhook update
ShashiSubramanya Mar 30, 2026
9bb49b6
26.4.0.cl doc updates
ShashiSubramanya Mar 31, 2026
0b0f9d2
edits and typo fixes
ShashiSubramanya Mar 31, 2026
f539c76
edits
ShashiSubramanya Mar 31, 2026
d9c930c
whats new
rani2655 Mar 29, 2026
fd9560a
added collections api
rani2655 Mar 30, 2026
d0d171f
added beta label
rani2655 Mar 30, 2026
204bc40
edited temp prop for customize emails
rani2655 Mar 25, 2026
eced287
edited formatting
rani2655 Mar 25, 2026
8d3e172
added param for email custom
rani2655 Mar 25, 2026
c40c264
added collections api
rani2655 Mar 30, 2026
a76e697
consolidated list of what's new blurbs and changelog updates
ShashiSubramanya Mar 31, 2026
7311cf8
editorial fixes
ShashiSubramanya Mar 31, 2026
029c5b0
whats new format
ShashiSubramanya Apr 1, 2026
bcdc5d6
host event type update
ShashiSubramanya Apr 1, 2026
4c40ede
edits
ShashiSubramanya Apr 1, 2026
873878e
edits
ShashiSubramanya Apr 1, 2026
63afdd4
example fix
ShashiSubramanya Apr 1, 2026
d6d6339
edits
ShashiSubramanya Apr 1, 2026
0b2e9d3
Added api req for search
rani2655 Apr 1, 2026
a5c646a
page Id and formatting fix
ShashiSubramanya Apr 2, 2026
c1104ec
typos in code snippets
rani2655 Apr 2, 2026
1e56827
corrections
rani2655 Apr 2, 2026
a3073a2
nested coll
rani2655 Apr 2, 2026
75eff0e
corrections
rani2655 Apr 2, 2026
3b04963
corrections
rani2655 Apr 2, 2026
e105ec6
Siddhant's feedback
rani2655 Apr 2, 2026
b431afa
Merge pull request #448 from thoughtspot/pivot-lb
rani2655 Apr 2, 2026
f52ee5a
added api example to delete
rani2655 Apr 2, 2026
f7fc6d7
added api example to delete
rani2655 Apr 2, 2026
5943f9b
corrections
rani2655 Apr 2, 2026
0fc82c3
corrections
rani2655 Apr 2, 2026
7d4ab7d
corrections
rani2655 Apr 2, 2026
9a943a4
table width edits
rani2655 Apr 2, 2026
105db13
table width edits
rani2655 Apr 2, 2026
bfa26fb
typos
rani2655 Apr 2, 2026
97b4936
typos
rani2655 Apr 2, 2026
d60d905
added response for create and search
rani2655 Apr 2, 2026
80f6717
correction
rani2655 Apr 2, 2026
b60a645
Merge pull request #444 from thoughtspot/collections
rani2655 Apr 2, 2026
eff11c0
edits
ShashiSubramanya Apr 2, 2026
0abbc0b
Shashi's feedback
rani2655 Apr 2, 2026
c4f37c7
edited additional resources text
rani2655 Apr 2, 2026
e89a74a
deprecation updates
ShashiSubramanya Apr 2, 2026
acc3833
typo fixes
ShashiSubramanya Apr 2, 2026
865c103
deprecation typo fixes
ShashiSubramanya Apr 2, 2026
a9df44e
EoS timeline
ShashiSubramanya Apr 2, 2026
c7f37e0
Sidharth's feedback
rani2655 Apr 8, 2026
b497217
Merge pull request #451 from thoughtspot/coll-corrections
rani2655 Apr 8, 2026
58c325f
minor edits and typo fixes
ShashiSubramanya Apr 9, 2026
2e8d3bd
variable api note and rbac page update
ShashiSubramanya Apr 9, 2026
3805ba0
SCAL-302349 updates
ShashiSubramanya Apr 12, 2026
c3f5aad
SCAL-305744 updates
ShashiSubramanya Apr 12, 2026
ee71751
filters article update
ShashiSubramanya Apr 12, 2026
42d0799
Merge branch 'main' into 26.4.0.cl
ShashiSubramanya Apr 12, 2026
3da0167
edits
ShashiSubramanya Apr 13, 2026
4a0ff62
edits
ShashiSubramanya Apr 13, 2026
7ed39c6
version drop-down update
ShashiSubramanya Apr 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion modules/ROOT/pages/abac-migration-from-jwt-beta.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ Verify that variable values are correctly assigned to users using one of the fol
* Send a `POST` request to the `/api/rest/2.0/users/search` with user details, and explore the `variable_values` section of the response payload.
* Send a `POST` request to the `/api/rest/2.0/template/variables/search` API endpoint with variable details. In the request body, specify the `response_content` as `METADATA_AND_VALUES`, and explore the variable values for each user in the response payload.

If you want to update the values of variables, use either `/api/rest/2.0/template/variables/update-values` or `/api/rest/2.0/auth/token/custom` API endpoint.
If you want to update the values of variables, use either `/api/rest/2.0/template/variables/{identifier}/update-values` or `/api/rest/2.0/auth/token/custom` API endpoint.

== Review the configuration
Before you begin testing, your setup should have the following JWT ABAC configuration:
Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/pages/abac-migration-from-jwt-ga.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ Users with administration and *Can Administer and Bypass RLS* privileges are exe
+
[NOTE]
====
To update variable values for a user, use the `/api/rest/2.0/auth/token/custom` or `/api/rest/2.0/template/variables/update-values` API endpoint.
To update variable values for a user, use the `/api/rest/2.0/auth/token/custom` or `/api/rest/2.0/template/variables/{identifier}/update-values` API endpoint.
====

== Expected setup before the testing phase
Expand Down
4 changes: 2 additions & 2 deletions modules/ROOT/pages/abac_rls-variables.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ The following rule restricts access to rows where the `date_column` is within th

To set or update variable values for a user, use the `POST /api/rest/2.0/auth/token/custom` endpoint when logging in the user.

You can also use the `/api/rest/2.0/template/variables/update-values` endpoint for bulk operations or targeted resets.
You can also use the `/api/rest/2.0/template/variables/{identifier}/update-values` endpoint for bulk operations or targeted resets.

The variable attributes defined in the token request take effect only if they are referenced in an RLS rule. If the variables are not used in any formula or RLS rule, they have no impact on data access. Before generating the request with variable attributes, ensure that the xref:abac_rls-variables.adoc#_add_or_update_rls_rules_with_variable_references[variables are added to the RLS rules] for the table.

Expand Down Expand Up @@ -263,7 +263,7 @@ If you don't want to append or replace any attribute values, do not pass any det
=== Resetting a user or a variable
Passing an empty array along with a formula variable name in the token request *does not reset the attribute values* for that formula variable for that user.

To change formula variable attributes of a user, especially to set entitlements to an empty set, use the `/api/rest/2.0/template/variables/update-values` API endpoint.
To change formula variable attributes of a user, especially to set entitlements to an empty set, use the `/api/rest/2.0/template/variables/{identifier}/update-values` API endpoint.

[WARNING]
====
Expand Down
3 changes: 2 additions & 1 deletion modules/ROOT/pages/api-changelog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ If the current period inclusion in rolling date filters feature is enabled on yo
To disable this feature, use the `isThisPeriodInDateFiltersEnabled` setting. To hide, show, or disable this option in the embed view, use the action ID, `Action.IncludeCurrentPeriod`.
|====


== Version 1.46.x, March 2026

[width="100%" cols="1,4"]
Expand Down Expand Up @@ -265,7 +266,7 @@ The `HostEvent.UpdateParameters` event now supports configuring the `isVisibleTo

[width="100%" cols="1,4"]
|====
|[tag greenBackground]#NEW FEATURE# a|*Runtime overrides in Spotter embed*
|[tag greenBackground]#NEW FEATURE# a|*Runtime overrides in Spotter embed*

The Visual Embed SDK now supports runtime overrides in Spotter embed.

Expand Down
317 changes: 317 additions & 0 deletions modules/ROOT/pages/collections.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,317 @@
= Collections [beta betaBackground]^Beta^
:toc: true
:toclevels: 1
:page-title: Collections
:page-pageid: collections
:page-description: group different ThoughtSpot objects into Collections to manage them more easily.


ThoughtSpot now provides REST APIs that enable developers to organize different ThoughtSpot objects into an organizational container called *Collections*. These objects can be Liveboards, Answers, data models, tables, and even other Collections.
Collections provide a powerful way to manage your data assets, making discovery and collaboration easier, while ensuring the integrity of embedded workflows.

[NOTE]
====
The Collections APIs are in Beta and disabled by default on ThoughtSpot instances. To enable these APIs on your instance, contact ThoughtSpot Support.
====

== Before you begin

* For REST API v2 operations, the Org context is determined based on the authentication token used in your API requests. Ensure you log in to the appropriate Org context from which you want to send API requests.
* When enabled on a ThoughtSpot instance, Collections can be created by any user, and need no special user privileges.


== Create a Collection
To create a new Collection, send a `POST` request to the `POST /api/rest/2.0/collections/create` API endpoint, with the following parameters in the request body.

=== Request parameters
In your `POST` request body, include the following parameters:

[width="100%" cols="1,4"]
[options='header']
|=====
|Parameter|Description

|`name` a|__String__. Required. Specify a name for the Collection.
|`description` a|__String__. Optional. A short description for the Collection.
|`metadata` a|__Array__. Optional. The details for the metadata objects to be added to the Collection.

* `type` +
Metadata type. Select one of the following values:
** `LIVEBOARD`
** `ANSWER`
** `LOGICAL_TABLE`
** `COLLECTION`
+
To create nested collections, assign the `COLLECTION` metadata to a Collection.

* `identifiers` +
List of unique IDs or names of metadata objects.
|=====

==== Example request
[source,CURL]
----
curl -X POST \
--url 'https://{ThoughtSpot-Host}/api/rest/2.0/collections/create' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {AUTH_TOKEN}' \
--data-raw '{
"name": "Demo Collection",
"metadata": [
{
"type": "LIVEBOARD",
"identifiers": [
"Retail sales (Sample)",
"fe307a35-5242-445f-b3cb-b84cd1fc339c"
]
},
{
"type": "COLLECTION",
"identifiers": [
"Collection A"
]
}
],
"description": "For testing"
}'

----

==== API response

If the API request is successful, a Collection with the given metadata objects will be created.

== Search for a Collection
To get a list of Collections, send a `POST` request to the `POST /api/rest/2.0/collections/search` API endpoint.

If no parameters are specified, the API returns the first 10 collections (or fewer, depending on the total number available).

=== Request parameters
In your `POST` request body, include the following parameters:

[width="100%" cols="1,4"]
[options='header']
|=====
|Parameter|Description

|`name_pattern` a|__String__. Optional. Specify any case agnostic pattern to match the name of a Collection. Use `%` to perform a wildcard search by name.
|`record_offset` a|__Number__. Optional. The index of the first record to be included. Default value is 0.
|`record_size` a|__Number__. Optional. The total number of records to be searched. Default value is 10. Set to -1 to search across all available collections.
|`collection_identifiers` a|__Array__. Optional. GUID of the Collection(s) to be searched. `name_pattern` takes precedence over the `collection_identifiers`.
|`created_by_user_identifiers` a|__Array__. Optional. Searches for Collections by the name of the author.
|`include_metadata` a|__Boolean__. Optional. When set to `true`, includes the metadata objects within each Collection in the response.
|`sort_options` a|__Array__. Optional. To sort the search results, specify the field to apply the sort on `field_name`, and the sort order `order`.
|=====

==== Example request
[source,CURL]
----
curl -X POST \
--url 'https://{ThoughtSpot-Host}/api/rest/2.0/collections/search' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {AUTH_TOKEN}' \
--data-raw '{
"record_offset": 2,
"record_size": 15,
"include_metadata": false,
"name_pattern": "%",
"sort_options": {
"field_name": "NAME",
"order": "ASC"
}
}'
----

==== API response

If the API request is successful, it will return a list of Collection(s) matching the search criteria.

== Update a Collection
To update an existing Collection, send a `POST` request to the `POST /api/rest/2.0/collections/{collection_identifier}/update` API endpoint.

=== Request parameters
In your `POST` request body, include the following parameters:

[width="100%" cols="1,4"]
[options='header']
|=====
|Parameter|Description

|`collection_identifier` a| Required. GUID of the Collection to be updated. `collection_identifier` is passed as a parameter in the API request.
|`name` a|__String__. Optional. New name for the Collection.
|`description` a|__String__. Optional. Updated or a newly added description for the Collection.
|`metadata` a|__Array__. Required. The details for the metadata objects to be added, removed, or replaced in the Collection.

* `type`
* `identifiers`
|`operation` a|__Enum__. Required. Specify the nature of the update. Select one of the following values:

* ADD: Adds the specified metadata objects to the existing Collection without removing the current objects.
* REMOVE: Removes only the specified metadata objects from the Collection.
* REPLACE. __Default__: This replaces all existing objects in the Collection with the objects specified in this replace request.
|=====

==== Example request
[source,CURL]
----
curl -X POST \
--url 'https://{ThoughtSpot-Host}/api/rest/2.0/collections/0e5fd958-cb2b-43f0-b67f-13ac5c805bad/update' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {AUTH_TOKEN}' \
--data-raw '{
"operation": "ADD",
"metadata": [
{
"type": "LIVEBOARD",
"identifiers": [
"6fee1adb-1c50-4c15-8d49-4fe0503d0b34"
]
}
]
}'
----
==== API response

If the API request is successful, the object specified in the API request is added to the Collection.

==== Example request
[source,CURL]
----
curl -X POST \
--url 'https://{ThoughtSpot-Host}/api/rest/2.0/collections/0e5fd958-cb2b-43f0-b67f-13ac5c805bad/update' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {AUTH_TOKEN}' \
--data-raw '{
"operation": "REMOVE",
"metadata": [
{
"type": "LIVEBOARD",
"identifiers": [
"6fee1adb-1c50-4c15-8d49-4fe0503d0b34"
]
}
]
}'
----

==== API response

If the API request is successful, the object specified in the API request is removed from the Collection.

==== Example request
[source,CURL]
----
curl -X POST \
--url 'https://{ThoughtSpot-Host}/api/rest/2.0/collections/0e5fd958-cb2b-43f0-b67f-13ac5c805bad/update' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {AUTH_TOKEN}' \
--data-raw '{
"operation": "REPLACE",
"metadata": [
{
"type": "LIVEBOARD",
"identifiers": [
"6fee1adb-1c50-4c15-8d49-4fe0503d0b34",
"87328d32-2bf0-4fc4-ac51-a738712d7e79"
]
},
{
"type": "COLLECTION",
"identifiers": [
"6d85c77c-4822-42ba-8074-6306a90ba8e1"
]
}
]
}'
----


==== API response

If the API request is successful, the objects in the Collection are replaced with the objects in this API request.

== Delete a Collection
To remove an existing Collection, send a `POST` request to the `POST /api/rest/2.0/collections/delete` API endpoint.

=== Request parameters
In your `POST` request body, include the following parameters:

[width="100%" cols="1,4"]
[options='header']
|=====
|Parameter|Description

|`collection_identifiers` a|__String__. Required. GUID of the Collection to be deleted.
|`delete_children` a|__String__. Optional. Set to `true` to delete child objects in the Collection where the user has permission. Any objects without delete access will be ignored.
|`dry_run` a|__String__. Optional. Set to true to preview the deletion process without removing any objects. The response lists the items that would be deleted, so you can review them before proceeding with actual deletion.
|=====

==== Example request
To review your deletion request without actually deleting the Collection and its objects, set `dry_run` to `true` and `delete_children` to `true`.

[source,CURL]
----
curl -X POST \
--url 'https://{ThoughtSpot-Host}/api/rest/2.0/collections/delete' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {AUTH_TOKEN}' \
--data-raw '{
"collection_identifiers": [
"6996b262-8733-4af6-8f8e-8d7faefb5be0"
],
"delete_children": true,
"dry_run": true
}'
----

==== API response

If the API request is successful, it gives you a preview of the deletion operation without actually deleting anything.

* `metadata_deleted`: List of metadata objects that will be deleted
* `metadata_skipped`: List of metadata objects that will not be deleted for lack of permissions or other constraints

[source,JSON]
----
{"metadata_deleted":[{"type":"COLLECTION","identifiers":[{"id":"6996b262-8733-4af6-8f8e-8d7faefb5be0","name":"Docs Collection"}]},{"type":"LIVEBOARD","identifiers":[{"id":"278d2313-ac3a-44bb-b842-a4c9dff84e68","name":"Demo-lb"},{"id":"1bcdb2c1-e960-4f6b-bbf9-64f3e0cd33b9","name":"Demo-lb1"}]}],"metadata_skipped":[]}
----

==== Example request
To delete the Collection and the objects within it, set `dry_run` to `false` and `delete_children` to `true`.

[source,CURL]
----
curl -X POST \
--url 'https://{ThoughtSpot-Host}/api/rest/2.0/collections/delete' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {AUTH_TOKEN}' \
--data-raw '{
"collection_identifiers": [
"6996b262-8733-4af6-8f8e-8d7faefb5be0"
],
"delete_children": true,
"dry_run": false
}'
----

==== API response
If the API request is successful, it deletes the Collection and all objects within it for which you have delete permission.

[source,JSON]
----
{"metadata_deleted":[{"type":"COLLECTION","identifiers":[{"id":"6996b262-8733-4af6-8f8e-8d7faefb5be0","name":"Docs Collection"}]},{"type":"LIVEBOARD","identifiers":[{"id":"278d2313-ac3a-44bb-b842-a4c9dff84e68","name":"Demo-lb"},{"id":"1bcdb2c1-e960-4f6b-bbf9-64f3e0cd33b9","name":"Demo-lb1"}]}],"metadata_skipped":[]}
----

== Additional references


* For information about creating and managing Collections via ThoughtSpot UI, see link:https://docs.thoughtspot.com/cloud/latest/collections[Collections in ThoughtSpot, window=_blank]


Loading
Loading