Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
35f3b54
JIT provisioning updates
ShashiSubramanya Sep 8, 2026
8243e28
nav updates for publication, stale page removal
ShashiSubramanya Sep 8, 2026
8ec512c
rest-api-nav update
ShashiSubramanya Sep 8, 2026
55e2e2d
Merge pull request #545 from thoughtspot/askDocs-panel-dark-theme
ShashiSubramanya Sep 8, 2026
db7ba40
Minor edits
ShashiSubramanya Sep 9, 2026
4fe662c
SCAL-332993-332931
rani2655 Sep 9, 2026
e8bf121
SCAL-332993-332931
rani2655 Sep 9, 2026
dcbf25a
Merge pull request #546 from thoughtspot/weekly-31aug-26.9
rani2655 Sep 9, 2026
2a05849
SCAL-332993-332931
rani2655 Sep 9, 2026
c8f4b3a
SCAL-332993-332931
rani2655 Sep 9, 2026
98a3100
misplaced text
rani2655 Sep 10, 2026
8afee41
misplaced text
rani2655 Sep 10, 2026
f457426
docs(26.10.0.cl): add Spotter Analyst API reference page [SCAL-317811]
ShashiSubramanya Sep 15, 2026
f67361a
docs(26.10.0.cl): add Feature Management API reference page [SCAL-319…
ShashiSubramanya Sep 15, 2026
9dd6ea8
docs(26.10.0.cl): add Embed Spotter Analyst page [SCAL-317811]
ShashiSubramanya Sep 15, 2026
21a16ab
docs(26.10.0.cl): add October 2026 What's New section [SCAL-317811, S…
ShashiSubramanya Sep 15, 2026
bd6b44b
docs(26.10.0.cl): add SDK v1.53.0 changelog entry [SCAL-317811, SCAL-…
ShashiSubramanya Sep 15, 2026
4e1b2ff
docs(26.10.0.cl): add SDK v1.53.0 changelog entry [SCAL-317811, SCAL-…
ShashiSubramanya Sep 15, 2026
edc0da1
docs(26.10.0.cl): add REST API v2.0 changelog entry [SCAL-317811, SCA…
ShashiSubramanya Sep 15, 2026
805eb3e
docs(26.10.0.cl): add REST API v2.0 changelog entry [SCAL-317811, SCA…
ShashiSubramanya Sep 15, 2026
790df80
docs(26.10.0.cl): add Spotter pin EmbedEvents and scoped filter event…
ShashiSubramanya Sep 15, 2026
a986982
docs(26.10.0.cl): add Spotter pin HostEvents, GetGroups, OpenParamete…
ShashiSubramanya Sep 15, 2026
c51df1f
docs(26.10.0.cl): add Spotter pin EmbedEvents and scoped filter event…
ShashiSubramanya Sep 15, 2026
d7ffb9b
docs(26.10.0.cl): add Spotter pin HostEvents, GetGroups, OpenParamete…
ShashiSubramanya Sep 15, 2026
0adf76e
docs(26.10.0.cl): fix whats-new truncation — write full merged file w…
ShashiSubramanya Sep 15, 2026
4595b14
whats new edit
ShashiSubramanya Sep 15, 2026
e02731f
indentation issue fix
ShashiSubramanya Sep 15, 2026
65401c0
tutorial title fix
ShashiSubramanya Sep 17, 2026
3b5ea8d
removed deprecated features
ShashiSubramanya Sep 17, 2026
912dc3e
added github link to mktg tutorials
rani2655 Sep 21, 2026
60d4fb4
added github link to mktg tutorials
rani2655 Sep 21, 2026
55c78b6
edits
rani2655 Sep 23, 2026
1f75842
more edits
rani2655 Sep 23, 2026
4d49906
review edits
rani2655 Sep 23, 2026
093f7a0
updates to lb filters
rani2655 Sep 23, 2026
e52f280
fix(spotter-memory): correct content.recipe wire format documentation
ShashiSubramanya Sep 18, 2026
4975625
edits
ShashiSubramanya Sep 18, 2026
7205e4c
SCAL-339429 fixes
ShashiSubramanya Sep 21, 2026
25bf345
extended fixes for SCAL-339429
ShashiSubramanya Sep 21, 2026
6499140
formatting fix
ShashiSubramanya Sep 21, 2026
3e5f7e4
edits
ShashiSubramanya Sep 22, 2026
e0f7170
formatting fix
ShashiSubramanya Sep 22, 2026
6684314
edits
ShashiSubramanya Sep 22, 2026
3df2a7b
Spotter note for full app embed
ShashiSubramanya Sep 23, 2026
6f85311
review comments
ShashiSubramanya Sep 23, 2026
ad96d81
updates to lb filters
rani2655 Sep 23, 2026
d8dcb61
csr updates
rani2655 Sep 23, 2026
2608b78
lb csr
rani2655 Sep 23, 2026
8340e46
lb csr
rani2655 Sep 23, 2026
0374673
edited whats new
rani2655 Sep 24, 2026
cb69102
full app embed review comments
ShashiSubramanya Sep 25, 2026
5206718
note edit
ShashiSubramanya Sep 25, 2026
0cd87cd
search experience update
ShashiSubramanya Sep 25, 2026
6b7aba1
note addition
ShashiSubramanya Sep 25, 2026
b465d08
tutorial title fix
ShashiSubramanya Sep 17, 2026
5932ec9
gradient bg edits
ShashiSubramanya Sep 17, 2026
0691c6b
removed deprecated features
ShashiSubramanya Sep 17, 2026
7bd90da
fix(spotter-memory): correct content.recipe wire format documentation
ShashiSubramanya Sep 18, 2026
cc36339
edits
ShashiSubramanya Sep 18, 2026
e2195b2
SCAL-339429 fixes
ShashiSubramanya Sep 21, 2026
c737f78
formatting fix
ShashiSubramanya Sep 21, 2026
538928d
review comments
ShashiSubramanya Sep 23, 2026
e5ddd36
edits
ShashiSubramanya Sep 22, 2026
845d32e
formatting fix
ShashiSubramanya Sep 22, 2026
4083201
edits
ShashiSubramanya Sep 22, 2026
3e38f68
Spotter note for full app embed
ShashiSubramanya Sep 23, 2026
4409fbf
full app embed review comments
ShashiSubramanya Sep 25, 2026
dfe7fea
note edit
ShashiSubramanya Sep 25, 2026
6cf1f5a
search experience update
ShashiSubramanya Sep 25, 2026
f19b754
note addition
ShashiSubramanya Sep 25, 2026
7558bc4
full ap embed fixes
ShashiSubramanya Sep 28, 2026
1840a08
typos
rani2655 Sep 28, 2026
bb53b1b
Siddhant's feedback
rani2655 Sep 28, 2026
2651058
SCAL-339139 fixes
ShashiSubramanya Sep 18, 2026
db3725e
numerical op note and other updates
ShashiSubramanya Sep 28, 2026
1a5ec04
SCAL-339139 fixes
ShashiSubramanya Sep 18, 2026
d330e2d
numerical op note and other updates
ShashiSubramanya Sep 28, 2026
209316f
typo
rani2655 Sep 29, 2026
d61a02c
spotter analyst updates
ShashiSubramanya Sep 30, 2026
7746470
remove EA lable for lb cache
rani2655 Sep 30, 2026
56003c4
spotter and other updates
ShashiSubramanya Sep 30, 2026
ccd1bf1
v2 changelog
ShashiSubramanya Oct 1, 2026
7e0db36
V2 changelog and API updates
ShashiSubramanya Oct 1, 2026
abf1c8c
Merge branch 'main' into JIT-best-practices-update
ShashiSubramanya Oct 1, 2026
b317858
use-case based structure
ShashiSubramanya Oct 1, 2026
9bbfc2f
changelog, multi-org token and other edits
ShashiSubramanya Oct 1, 2026
c7fa74f
changed deprecation for IAMv1
rani2655 Oct 1, 2026
275c961
Merge pull request #548 from thoughtspot/docs-26-10-0-cl
ShashiSubramanya Oct 1, 2026
3121fa1
edits
ShashiSubramanya Oct 1, 2026
e39fca8
tutorial title fix
ShashiSubramanya Sep 17, 2026
826fc8b
Merge pull request #543 from thoughtspot/JIT-best-practices-update
ShashiSubramanya Oct 1, 2026
72d46c7
JIT provisioning updates
ShashiSubramanya Sep 8, 2026
3845321
Minor edits
ShashiSubramanya Sep 9, 2026
c015327
use-case based structure
ShashiSubramanya Oct 1, 2026
57a0dd9
edits
ShashiSubramanya Oct 1, 2026
e068537
Merge branch '26.10.0.cl' into 26-10-0-docs-prelim
ShashiSubramanya Oct 1, 2026
d7a7077
JIT provisioning updates
ShashiSubramanya Sep 8, 2026
f747cd7
Minor edits
ShashiSubramanya Sep 9, 2026
0217515
use-case based structure
ShashiSubramanya Oct 1, 2026
d2bf5b3
edits
ShashiSubramanya Oct 1, 2026
7d13e7c
version update
ShashiSubramanya Oct 1, 2026
4b0a749
Merge branch '26.10.0.cl' into 26-10-0-docs-prelim
ShashiSubramanya Oct 1, 2026
19f7d6d
Merge pull request #553 from thoughtspot/26-10-0-docs-prelim
ShashiSubramanya Oct 1, 2026
382d10d
deprecation note update
ShashiSubramanya Oct 5, 2026
fb853bd
minor fixes
ShashiSubramanya Oct 5, 2026
5ad22ba
Merge branch 'main' into 26.10.0.cl
ShashiSubramanya Oct 5, 2026
a300c0e
version update
ShashiSubramanya Oct 5, 2026
814adc3
SCAL-330658
rani2655 Oct 5, 2026
c0be171
Merge pull request #554 from thoughtspot/26.10.0.cl
ShashiSubramanya Oct 5, 2026
d7432a6
version update
ShashiSubramanya Oct 5, 2026
b7b7c9e
Merge branch 'release' into main
ShashiSubramanya Oct 6, 2026
27e45c1
removed highlights
rani2655 Oct 6, 2026
0151840
formatting fix
ShashiSubramanya Oct 6, 2026
5f07350
Updates for SCAL-341326, SCAL-337999, SCAL-337598
ShashiSubramanya Oct 6, 2026
ec7b45a
minor edits and fixes
ShashiSubramanya Oct 6, 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
29 changes: 21 additions & 8 deletions modules/ROOT/pages/about-rest-apis.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ You can use REST APIs to integrate ThoughtSpot capabilities into your applicatio

* *Manage users, groups, and roles*. Create and manage user accounts, define groups and privileges, and automate provisioning workflows.
* *Authenticate and manage sessions*. Get authentication tokens for users, including tokens for embedded application users with trusted authentication.
* *Manage metadata objects*. Search, create, update, and delete objects such as Liveboards, Answers, Models, Worksheets, and Tables. Import and export objects as ThoughtSpot Modeling Language (TML) representations.
* *Manage metadata objects*. Search, create, update, and delete objects such as Liveboards, Answers, Models, and Tables. Import and export objects as ThoughtSpot Modeling Language (TML) representations.
* *Query data*. Run search queries against your data and fetch Liveboard, Answer, and visualization data in your application.
* *Export reports*. Download Liveboards and Answers in PDF, PNG, CSV, or XLSX formats.
* *Automate deployments*. Move content between environments and Orgs with TML and version control APIs, and manage multi-tenant deployments.
Expand All @@ -37,7 +37,7 @@ ThoughtSpot REST APIs are available in the following versions:
The REST API v2 framework includes a wider set of xref:rest-api-v2-reference.adoc[API endpoints] with enhanced functionality and provides an interactive Playground for ease of use.

* REST API v1 (Deprecated) +
The xref:rest-api-reference.adoc[legacy REST v1 endpoints] to create, edit, administer and manage ThoughtSpot objects and data.
The xref:rest-api-reference.adoc[legacy REST API v1 endpoints] let you create, edit, administer, and manage ThoughtSpot objects and data.
+
include::{path}/rest-apiv1-deprecation-note.adoc[]

Expand All @@ -55,18 +55,31 @@ In the Playground, you can:
* View and copy generated code samples for your requests.

== Rate limits for API requests
To ensure API stability, optimize resource usage, and maintain service quality for all users, ThoughtSpot limits the number of public API requests allowed per client to prevent excessive requests from reaching application servers.
To ensure operational stability, optimize resource usage, and maintain service quality for all users, ThoughtSpot enforces rate limits on the number of public API requests allowed per client.

By default, on instances running 26.2.0.cl and later, a global rate limit of 100 requests per second per client IP is enforced at the cluster level for all public APIs. This limit is applied per client IP across all public APIs combined, not per endpoint. If a client IP exceeds this combined rate limit, a burst of 10 additional API requests is allowed before rejecting the requests with the 'HTTP 429: Too Many Requests' error.
By default, a global rate limit of 100 requests per second (RPS) per client IP is enforced at the cluster level for all public APIs. This limit applies per client IP across all public APIs combined, not per individual endpoint. If a client IP exceeds this combined rate limit, a burst of up to 10 requests is allowed before requests are rejected with the `HTTP 429: Too Many Requests` error.

For async status endpoints such as `/api/rest/2.0/metadata/tml/async/status`, up to 100 requests per minute per client IP are allowed, with a burst of 100 requests before requests are rejected with an HTTP 429 error.
For async status endpoints such as `/api/rest/2.0/metadata/tml/async/status`, up to 100 requests per minute per client IP are allowed, with a burst of 100 requests before requests are rejected with an `HTTP 429` error.

These rate limits are enforced by default on all ThoughtSpot instances. Currently, rate limits are applied at the cluster level; Org-level rate limits are not supported.
=== Org-level rate limit
Starting from the 26.11.0.cl release, a rate limit of 50 RPS per Org is enforced at the application layer in ThoughtSpot instances with Orgs enabled. This limit is applied per Org across all public REST API endpoints combined.

To update rate limits or adjust the rate limit settings for your dev or prod environment, contact ThoughtSpot Support.
The Org-level rate limit provides noisy-neighbor protection in multi-Org deployments. It ensures that API usage from one Org does not impact the service quality of other Orgs on the same cluster. If the Org-level limit is exceeded, the API returns an `HTTP 429: Too Many Requests` error.

== REST API SDKs
The Org-level and cluster-level rate limits operate independently. A request can be rejected by either limit:

* If a single client IP sends more than 100 RPS across the cluster, the cluster-level limit rejects the request.
* If all clients in a single Org collectively send more than 50 RPS, the Org-level limit rejects the request.

=== Rate limit response
When a request is rejected due to rate limiting, the API returns the `HTTP/1.1 429 Too Many Requests` response.

If your application receives an `HTTP 429` response, reduce the request frequency or implement a retry mechanism with exponential backoff.

=== Adjusting rate limits
The default rate limits are designed for typical production workloads. To request a change to the rate limits for your deployment, contact ThoughtSpot Support.

== REST API SDKs
To integrate v2.0 APIs into your applications faster, ThoughtSpot provides SDK libraries in several languages, including TypeScript and Python. The SDKs wrap endpoint calls, authentication, and typed request and response models. For more information, see xref:rest-api-sdk-libraries.adoc[REST API SDK libraries].

== Related information
Expand Down
99 changes: 99 additions & 0 deletions modules/ROOT/pages/api-changelog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,105 @@

This page documents the changes introduced in each release of the Visual Embed SDK. For information about the REST API v2.0 changes, see the xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].

== Version 1.53.0, October 2026

[width="100%", cols="1,4"]
|====
|[tag greenBackground]#NEW#
a|
[discrete]
===== Spotter Analyst embed
You can now embed a single, pinned Spotter Analyst in `SpotterEmbed` by using `spotterAnalystConfig.analystId`.
For more information, see xref:embed-spotter-analyst.adoc[Embed Spotter Analyst].

|[tag greenBackground]#NEW#
a|
[discrete]
===== Spotter embedding

`spotterChatPinConfig`::
You can now let users pin conversations in the chat history sidebar. Use the `spotterChatPinConfig` object in `spotterSidebarConfig` to turn pinning on (`enabled`) and to customize the labels of the *Pin* and *Unpin* options (`pinLabel` and `unpinLabel`). For more information, see xref:customize-spotter-sidebar.adoc#pinning-conversations[Pinning conversations].

`starterPrompts`::
You can now customize the starter prompt pills in the embedded Spotter interface by using the `starterPrompts` object in `spotterChatConfig`. The object supports the `enable`, `quick`, `research`, `previewData`, and `liveboard` keys. To show or hide individual pills, use `Action.QuickSearchPill`, `Action.DeepAnalysisPill`, and `Action.DataLiteracyPill`. For more information, see xref:embed-spotter-analyst.adoc#_customizing_starter_prompt_pills[Customizing starter prompt pills].

|[tag greenBackground]#NEW#
a|
[discrete]
===== Liveboards in embedded view
The SDK includes the following enhancements for the Liveboards in your embedded app.

* `isScopedLiveboardFilteringEnabled` +
Enables scoping filters and parameters to a group of visualizations on a Liveboard, in addition to the Liveboard and tab levels. Supported in `AppEmbed` and `LiveboardEmbed`.
* `openSpotterOnLiveboardByDefault` +
Opens the Spotter chat panel automatically when a Liveboard loads. Set this property in `spotterChatConfig`. The default value is `true`. Supported in `AppEmbed` and `LiveboardEmbed`.
* `starterPrompts.liveboard` +
Starter prompts for the Spotter chat panel on a Liveboard.

|[tag greenBackground]#NEW#
a|
[discrete]
===== Action IDs for embedded Spotter and Liveboard interfaces

The following `Action` enum members are added in this release:

* `Action.SpotterChatPin` +
Controls the visibility and enabled state of the pin and unpin action in the Spotter conversation edit menu.
* `Action.SpotterAnalystList` +
Controls the visibility and enabled state of the *Show all* Analysts entry in the Analyst interface.
* `Action.SpotterDefaultAnalyst` +
Controls the visibility and enabled state of the default Spotter entry in the Analyst interface.
* `Action.SpotterOnLiveboard` +
Controls the visibility and enabled state of the *Spotter* button in the Liveboard header.
* `Action.AllLiveboardFilters` +
Shows, hides, or greys out all filter surfaces on a Liveboard: filter chips, parameter chips, and cross-filter chips at the Liveboard, tab, and group levels. Parameter and cross-filter chips can only be hidden.
* `Action.EditInputTable` +
Controls the *Edit input table* action, which lets users edit an input table used by an Answer directly from the Liveboard.
* `Action.QuickSearchPill` +
Controls the *Basic Search* starter prompt pill in the Spotter interface.
* `Action.DeepAnalysisPill` +
Controls the *Deep Analysis* starter prompt pill in the Spotter interface.
* `Action.DataLiteracyPill` +
Controls the *Data Literacy* starter prompt pill in the Spotter interface.

|[tag greenBackground]#NEW#
a|
[discrete]
===== Events

Embed events::
* `EmbedEvent.SpotterConversationPinned` +
Emitted when a user pins a Spotter conversation. The event payload includes the `conversationId` and `pinnedAt` values.
* `EmbedEvent.SpotterConversationUnpinned` +
Emitted when a user unpins a Spotter conversation. The event payload includes the `conversationId` and `unpinnedAt` values.

Host events::
* `HostEvent.PinSpotterConversation` +
Pins a saved Spotter conversation. Accepts `{ conversationId }`.
* `HostEvent.UnpinSpotterConversation` +
Unpins a previously pinned Spotter conversation. Accepts `{ conversationId }`.
* `HostEvent.GetGroups` +
Returns filter and parameter group details for the current Liveboard. The response includes `orderedGroupIds`, `numberOfGroups`, and `Groups`.
* `HostEvent.OpenParameter` +
Opens the parameter panel for a specific parameter on the Liveboard. Accepts an optional `applicability` object to scope the action to a tab or group.

The pin and unpin events require `spotterChatPinConfig.enabled: true` and `enablePastConversationsSidebar: true` in the embed configuration. The host events also require chat history to be enabled on your ThoughtSpot instance.

Updated events::
The following existing events now include or accept an optional `applicability` attribute, which scopes filters and parameters to a Liveboard tab or group:

* `EmbedEvent.FilterChanged`
* `EmbedEvent.ParameterChanged`
* `HostEvent.OpenFilter`
* `HostEvent.GetFilters`
* `HostEvent.UpdateFilters`
* `HostEvent.GetParameters`
* `HostEvent.UpdateParameters`

Deprecated events::
* `HostEvent.UpdatePersonalizedView` is deprecated. Use `HostEvent.SelectPersonalizedView` instead. `HostEvent.SelectPersonalizedView` additionally accepts an optional `viewName` to select a view by name, resets to the original view when the payload is empty, and reports an error when the named view isn't found.
|====

== Version 1.52.x, September 2026

[width="100%" cols="1,4"]
Expand Down
120 changes: 120 additions & 0 deletions modules/ROOT/pages/authentication.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ __Optional__
|__Nullable__. `ENABLE` or `DISABLE` authentication for a particular Org. When enabled, a new org-level access token is generated if one does not exist. When disabled, the existing org-level access token is revoked.

|`org_identifier`
|__String__. Name or ID of the Org for which to enable or disable trusted authentication. Specify this attribute within the `org_preferences` array.

|=====

Expand Down Expand Up @@ -556,6 +557,125 @@ curl -X POST \
If `auto_create` is set to `true` and the username specified in the API request already exists in ThoughtSpot, the `/api/rest/2.0/auth/token/custom` API does not update user properties such as display name, email, Org, or group assignments.
====

[#multi-org-tokens]
=== Multi-Org tokens [beta betaBackground]^Beta^
By default, a token authorizes API requests in a single Org. From 26.10.0.cl, ThoughtSpot users with cluster administration privileges can request a token authorized for multiple Orgs by including the optional `scope` object in the token request, and then select the Org for each request using the `X-Org-Selector` header.

[NOTE]
====
* This feature is in Beta and is disabled by default. To enable this feature, contact ThoughtSpot Support.
* Only users with cluster administration privileges can generate a multi-Org token.
====

==== Supported endpoints

The `scope` request property is supported on the following token endpoints:

* `POST /api/rest/2.0/auth/token/full`
* `POST /api/rest/2.0/auth/token/custom` (supports `SPECIFIC_ORGS` only)
* `POST /api/rest/2.0/auth/token/object`

==== The `scope` request property

[width="100%" cols="2,4"]
[options="header"]
|=====
|Parameter|Description
|`scope` a|__Object__. Optional. The set of Orgs the token is authorized to operate in, recorded at issuance. Requires cluster administration privileges. Specify the following attributes:

* `org_scope` +
__String__. Org scope type. Valid values:

** `SPECIFIC_ORGS`: authorizes the token for the Orgs listed in `org_identifiers`.
** `ALL_MEMBER_ORGS`: authorizes the token for all Orgs the user is a member of. Not supported for custom (ABAC) tokens.

* `org_identifiers` +
__Array of strings__. ID or name of the Orgs the token is authorized for. Required when `org_scope` is `SPECIFIC_ORGS`; ignored when `org_scope` is `ALL_MEMBER_ORGS`.
|=====

==== Request example
A multi-Org token request replaces `org_id` with the `scope` object. The issued token is authorized for every Org in the requested set, and each API request selects its target Org with the `X-Org-Selector` header.

[source,cURL]
----
curl -X POST \
--url 'https://{ThoughtSpot-Host}/api/rest/2.0/auth/token/full' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{
"username": "tsAdminUser",
"secret_key": "{SECRET_KEY}",
"validity_time_in_sec": 86400,
"scope": {
"org_scope": "SPECIFIC_ORGS",
"org_identifiers": ["1", "2", "5"]
}
}'
----

[NOTE]
The `scope` object in a single-Org token response carries no `org_scope` or `org_ids` properties. API requests made with this token always execute in the Org the token was issued for; the `X-Org-Selector` header is not required.

==== Response properties
When a multi-Org token is issued, the `scope` object in the response includes the following additional properties.

[source,JSON]
----
{
"token": "{AUTH_TOKEN}",
"creation_time_in_millis": 1675129264089,
"expiration_time_in_millis": 1675129564089,
"scope": {
"access_type": "FULL",
"org_id": 1,
"metadata_id": null,
"org_scope": "SPECIFIC_ORGS",
"org_ids": [
{
"id": 1,
"name": "Org-Finance"
},
{
"id": 2,
"name": "Org-Sales"
},
{
"id": 5,
"name": "Org-Marketing"
}
]
},
"valid_for_user_id": "59a122dc0-38d7-43e7-bb90-86f724c7b602",
"valid_for_username": "tsAdminUser"
}
----

The same properties appear in the `POST /api/rest/2.0/auth/token/validate` response, so API clients can inspect which Orgs an existing token is authorized for.

[width="100%" cols="2,4"]
[options="header"]
|=====
|Property|Description
|`scope.org_scope`|__String__. Org scope the token is authorized for: `SPECIFIC_ORGS` or `ALL_MEMBER_ORGS`. This property is absent for a legacy single-Org token.
|`scope.org_ids`|__Array__. The Orgs the token is authorized for when `org_scope` is `SPECIFIC_ORGS`.
|=====

==== Per-request Org selection
Each API request made with a multi-Org token selects one Org from the token's authorized set using the `X-Org-Selector` request header:

[source,cURL]
----
curl -X POST \
--url 'https://{ThoughtSpot-Host}/api/rest/2.0/users/search' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {AUTH_TOKEN}' \
-H 'X-Org-Selector: 2' \
--data-raw '{}'
----

The header selects an Org from the authority the token already holds; it does not grant access to any Org outside the token's scope. Selecting an Org outside the authorized set fails the request.

=== Generating a session token
To generate a new authentication token for an existing authenticated session, send a `GET` request to `/api/rest/2.0/auth/session/token`. This endpoint mints a fresh bearer token valid for 24 hours. It does not return the token currently held by the caller's session, but issues a new token derived from the authenticated session context.

Expand Down
2 changes: 2 additions & 0 deletions modules/ROOT/pages/common/nav-embedding.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Embed ThoughtSpot in a web app
* link:{{navprefix}}/getting-started[Get started]
* link:{{navprefix}}/embed-ai-search-analytics[Embed Spotter AI Analytics]
** link:{{navprefix}}/embed-spotter[Embed full Spotter experience]
** link:{{navprefix}}/embed-spotter-analyst[Embed a Spotter Analyst]
** link:{{navprefix}}/customize-spotter-embed[Customize Spotter interface]
** link:{{navprefix}}/customize-spotter-chat-experience[Customize chat experience]
** link:{{navprefix}}/customize-spotter-sidebar[Customize sidebar panel]
Expand Down Expand Up @@ -61,6 +62,7 @@ Authentication and data security
** link:{{navprefix}}/saml-sso[SAML SSO authentication]
** link:{{navprefix}}/oidc-auth[OpenID Connect authentication]
** link:{{navprefix}}/just-in-time-provisioning[Just-in-time provisioning]
** link:{{navprefix}}/jit-provisioning-best-practices[JIT provisioning best practices]
* link:{{navprefix}}/security-settings[Security settings]

* link:{{navprefix}}/embed-object-access[Authorization]
Expand Down
2 changes: 2 additions & 0 deletions modules/ROOT/pages/common/nav-in-product-help.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ Embed ThoughtSpot in a web app
* link:{{navprefix}}/tsembed[Quickstart guide]
* link:{{navprefix}}/embed-ai-search-analytics[Embed Spotter AI Analytics]
** link:{{navprefix}}/embed-spotter[Embed full Spotter experience]
** link:{{navprefix}}/embed-spotter-analyst[Embed a Spotter Analyst]
** link:{{navprefix}}/customize-spotter-embed[Customize Spotter interface]
** link:{{navprefix}}/customize-spotter-chat-experience[Customize chat experience]
** link:{{navprefix}}/customize-spotter-sidebar[Customize sidebar panel]
Expand Down Expand Up @@ -236,6 +237,7 @@ REST APIs
*** link:{{navprefix}}/spotter-agent-sharing-apis[Spotter agent conversation sharing APIs]
*** link:{{navprefix}}/spotter-agent-instructions[Spotter AI agent instructions]
*** link:{{navprefix}}/spotter-agent-conversation-mgmt-apis[APIs for managing saved conversations]
*** link:{{navprefix}}/spotter-analyst-api[Spotter Analyst APIs]
*** link:{{navprefix}}/spotter-memory-migration[Spotter memory migration API]
*** link:{{navprefix}}/spotter-apis-classic[AI APIs (Spotter Classic) ^BETA^]
*** link:{{navprefix}}/spotter-nl-instructions[Data model instructions APIs ^BETA^]
Expand Down
2 changes: 2 additions & 0 deletions modules/ROOT/pages/common/nav-rest-api.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ REST API endpoints
** link:{{navprefix}}/api-user-management[Users and group privileges]
** link:{{navprefix}}/rbac[Role-based access control]
** link:{{navprefix}}/audit-logs[Audit logs]
** link:{{navprefix}}/feature-management[Feature Management]

* Multi-tenancy and Orgs
** link:{{navprefix}}/orgs-api-op[Orgs APIs]
Expand All @@ -37,6 +38,7 @@ REST API endpoints
** link:{{navprefix}}/spotter-agent-sharing-apis[Spotter agent conversation sharing APIs]
** link:{{navprefix}}/spotter-agent-instructions[Spotter AI agent instructions]
** link:{{navprefix}}/spotter-agent-conversation-mgmt-apis[APIs for managing saved conversations]
** link:{{navprefix}}/spotter-analyst-api[Spotter Analyst APIs]
** link:{{navprefix}}/spotter-memory-migration[Spotter memory migration API]
** link:{{navprefix}}/spotter-apis-classic[AI APIs (Spotter Classic)]
** link:{{navprefix}}/spotter-nl-instructions[Data model instructions APIs]
Expand Down
Loading
Loading