Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
892b189
version edit"
ShashiSubramanya Apr 13, 2026
6e9ef78
Spotter note
ShashiSubramanya Apr 13, 2026
87415a3
Spotter note
ShashiSubramanya Apr 13, 2026
9650466
heading update
ShashiSubramanya Apr 13, 2026
ca37665
heading update
ShashiSubramanya Apr 13, 2026
32fe86e
example fix
ShashiSubramanya Apr 13, 2026
3352e90
example fix
ShashiSubramanya Apr 13, 2026
97880a3
edits
ShashiSubramanya Apr 13, 2026
e2c04a5
what's new formatting fix
ShashiSubramanya Apr 13, 2026
15a3f4d
MCP Server updates
ShashiSubramanya Apr 17, 2026
4317deb
table edits
ShashiSubramanya Apr 17, 2026
fd4c774
edits
ShashiSubramanya Apr 17, 2026
c8d9ef7
edits
ShashiSubramanya Apr 17, 2026
622ce31
Cursor update
ShashiSubramanya Apr 18, 2026
08a5fe3
hosteEvent update
ShashiSubramanya Apr 18, 2026
4bc2a71
filters doc update
ShashiSubramanya Apr 18, 2026
d643f04
SCAL-288435 updates
ShashiSubramanya Apr 18, 2026
439da37
image update
ShashiSubramanya Apr 20, 2026
9fe33f4
edits
ShashiSubramanya Apr 20, 2026
f64a2d0
note addition
ShashiSubramanya Apr 20, 2026
1da112e
label for sw
rani2655 Apr 21, 2026
19b38e0
spottercode update
ShashiSubramanya Apr 21, 2026
425c3eb
misc edits
rani2655 Apr 21, 2026
1006180
api reference and link updates
ShashiSubramanya Apr 22, 2026
85710a3
numbering issue fix
ShashiSubramanya Apr 22, 2026
34156c8
edits
ShashiSubramanya Apr 23, 2026
b140930
left menu update
ShashiSubramanya Apr 23, 2026
39b7d7d
reference updates
ShashiSubramanya Apr 23, 2026
bbb3125
Typo fix
ShashiSubramanya Apr 27, 2026
8520178
review comments update
ShashiSubramanya Apr 29, 2026
628cf80
css updates
ShashiSubramanya May 1, 2026
5b4d705
review comments incorporation and final checks
ShashiSubramanya May 1, 2026
5a00d37
removed bearer token info
ShashiSubramanya May 1, 2026
ad8b337
Edits- final checks
ShashiSubramanya May 1, 2026
b587966
edits
ShashiSubramanya May 1, 2026
35574e0
css checks
ShashiSubramanya May 1, 2026
63ec050
changelog
ShashiSubramanya May 1, 2026
d2debaa
whats new and css edits
ShashiSubramanya May 1, 2026
43475db
mcp changelog edits
ShashiSubramanya May 1, 2026
54e99fa
css edits
ShashiSubramanya May 1, 2026
198af2b
review comments edit
ShashiSubramanya May 2, 2026
80fa2a0
edits
ShashiSubramanya May 2, 2026
a13c88d
Merge branch 'main' into mcp-server-update
ShashiSubramanya May 2, 2026
3b01080
Merge pull request #456 from thoughtspot/mcp-server-update
ShashiSubramanya May 2, 2026
03f06b6
edits
ShashiSubramanya May 2, 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
56 changes: 19 additions & 37 deletions modules/ROOT/pages/abac_rls-variables.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ In the ABAC via RLS with variables method, administrators add formula variables
////

=== Implementation steps

[NOTE]
====
Formula variables are available on ThoughtSpot starting from 10.15.0.cl. If this feature is not enabled on your instance, contact ThoughtSpot Support.
Expand All @@ -47,7 +48,6 @@ Several features within ThoughtSpot, such as autocompletion in Search on values
* Disable indexing for columns and fields that must be restricted by ABAC. You may also want to disable indexing on all sensitive columns.
* Define an RLS rule on those fields, since RLS is enforced at the indexing layer and will secure suggestions and sample values.


== Create formula variables
Formula variables must be defined in ThoughtSpot before they can be used in any RLS rule via the `ts_var()` formula.

Expand Down Expand Up @@ -101,14 +101,6 @@ RLS rules must always evaluate logically to SQL boolean `TRUE` or `FALSE`.

If a user has no variable values for a given formula variable, this results in `FALSE`.

There is a special wildcard value `['TS_WILDCARD_ALL']` that a formula variable can be set to represent "Allow all".

In this example, `customer` represents the `customer` column in the table, and `customer_var` represents a variable. If the value of `customer_var` is set to `TS_WILDCARD_ALL`, the user can access all customers in the column.

----
customer = ts_var(customer_var)
----

==== RLS rule with a single variable reference
In this formula example, `country` refers to the "country" column in the data table, and `country_var` is the variable.

Expand Down Expand Up @@ -144,7 +136,7 @@ In this example, users can access data if they are in the "data developers" grou
'data developers' in ts_groups OR Department = ts_var(department_var)
----

==== Variables with numeric and Date data types
==== Variables with numeric and date data types

The following rule enforces a numeric threshold and restricts access to rows where the Revenue value is less than or equal to the value provided by the `revenue_cap_var` variable.

Expand Down Expand Up @@ -198,34 +190,26 @@ __Array of strings or numeric values__. When assigning values, ensure the data f

All values are passed into the token as *arrays of strings*, even if the column is a numeric or date type in ThoughtSpot and the database. The column data type will be respected in the query issued to the database.

==== Allow all wildcard value
==== Using wildcard values
ThoughtSpot provides the following wildcard values that simplify "allow all" and "deny all" patterns without changing your RLS rules:

To allow all values for a given field, set the formula variable value to an array using the wildcard: `["TS_WILDCARD_ALL"]`.
* `TS_WILDCARD_ALL` +
Assigns all values in the column, providing access to all data. Ensure that the RLS rules are clearly defined to avoid unintended data exposure.
* `TS_WILDCARD_NONE` +
Resolves the rule as false and denies access to data.

In this example, the user is allowed all access for one variable, while for the other, specific values are set.
To "allow all" but restrict access to specific data, you can use these wildcards in the following way:

[source,JSON]
----
"variable_values": [
{
"name": "product_var",
"values": ["TS_WILDCARD_ALL"]
},
{
"name": "country_var",
"values": [
"Japan",
"Singapore",
"Australia"
]
}
]
----
* `in_department_var = TS_WILDCARD_ALL`. Allows access to all data.
* `not_department_var = ['Sales', 'Engineering']`. The user is allowed to access all data except the departments specified in the variable values.

Similarly, you can deny access to all data and allow access only to specific departments:

If `TS_WILDCARD_ALL` is set for variable attributes, ensure that the RLS rules are defined clearly on the Table to avoid unintended data exposure.
* `in_department_var = ['Sales', 'Engineering']`. The user is allowed to access all the departments specified in the rule.
* `not_department_var = TS_WILDCARD_NONE`. The user cannot access any data except the allowed departments.

==== Deny all by default
For every variable included in the token request, you can assign one or more values. All variables referenced in RLS rules are required. If a variable is not assigned any value, query generation fails with the following error:
==== Denying all by default
For every variable included in the token request, you can assign one or more values. All variables referenced in RLS rules are required. If a variable is not assigned any value or if its value is set to `TS_WILDCARD_NONE`, query generation fails with the following error:

[source,text]
----
Expand Down Expand Up @@ -257,7 +241,7 @@ If you don't want to append or replace any attribute values, do not pass any det
====
* The ABAC implementation with RLS and formula variables does not support session-based rules. Do not use the legacy `persist_option` value of `NONE`.
* `"persist_option": "RESET"` attribute is also a legacy value and is not supported.
* When creating a token request with `"persist_option": "REPLACE"`, the presence or absence of specific keys in your JSON payload determines whether the existing security rules are retained, updated, or deleted.
* When creating a token request with `"persist_option": "REPLACE"`, the presence or absence of specific keys in your JSON payload determines whether the existing security rules are retained, updated, or deleted.
====

=== Resetting a user or a variable
Expand Down Expand Up @@ -291,8 +275,8 @@ A formula variable exists across all Orgs in ThoughtSpot, but the values are rec
]
}
----
The above command results in `jane.smith@company.com` being denied any access when `country_var` is used in an RLS rule.

The above command results in `jane.smith@company.com` being denied any access when `country_var` is used in an RLS rule.

[NOTE]
====
Expand All @@ -309,7 +293,6 @@ This approach ensures that Liveboard schedule attachments enforce security rules

You can simplify user provisioning and programmatically manage user creation and deletion workflows using ThoughtSpot's REST APIs.


=== Variable scope
To restrict the scope of variable attributes and rules to a specific Org context and object, define `org_identifier` and `objects`.

Expand All @@ -320,7 +303,6 @@ To apply variable entitlements to a specific object, specify the object IDs in t
----
"objects": [
{
// example of the format
"type": "{OBJECT_TYPE}",
"identifier": "{id or name of the object}"
},
Expand Down
35 changes: 24 additions & 11 deletions modules/ROOT/pages/common/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,17 @@

* link:{{navprefix}}/whats-new[What's New]
** link:{{navprefix}}/whats-new[New features]

*** link:{{navprefix}}/fixed-issues[Fixed issues]
*** link:{{navprefix}}/known-issues[Known Issues]

** link:{{navprefix}}/embed-sdk-changelog[SDK and API changelog]
** link:{{navprefix}}/embed-sdk-changelog[SDK changelog]
*** link:{{navprefix}}/embed-sdk-changelog[Visual Embed changelog]
*** link:{{navprefix}}/mobile-sdk-changelog[Mobile Embed SDK changelog]
** link:{{navprefix}}/rest-v2-changelog[REST API changelog]
*** link:{{navprefix}}/rest-v2-changelog[REST API v2 changelog]
*** link:{{navprefix}}/rest-v1-changelog[REST API v1 changelog]
** link:{{navprefix}}/mcp-server-changelog[MCP Server changelog]
** link:{{navprefix}}/deprecated-features[Deprecation announcements]

* Live Playgrounds
Expand Down Expand Up @@ -107,11 +110,11 @@
**** link:{{navprefix}}/customize-actions[Custom actions through the UI]
***** link:{{navprefix}}/custom-action-url[URL actions]
***** link:{{navprefix}}/custom-action-callback[Callback actions]
***** link:{{navprefix}}/custom-action-payload[Callback response payload]
***** link:{{navprefix}}/edit-custom-action[Set the position of a custom action]
***** link:{{navprefix}}/add-action-viz[Add a local action to a visualization]
***** link:{{navprefix}}/add-action-worksheet[Add a local action to a model]
**** link:{{navprefix}}/code-based-custom-action[Code based custom actions]
**** link:{{navprefix}}/custom-action-payload[Callback response payload]
*** link:{{navprefix}}/customize-links[Customize links]
*** link:{{navprefix}}/set-locale[Customize locale]
*** link:{{navprefix}}/custom-domain-config[Custom domain configuration]
Expand Down Expand Up @@ -225,25 +228,35 @@ include::generated/typedoc/CustomSideNav.adoc[]
*** link:{{navprefix}}/webhooks-lb-payload[Webhook response payload]
*** link:{{navprefix}}/webhooks-kpi[Webhook for KPI alerts]

* MCP Servers and Tools
** link:{{navprefix}}/SpotterCode[SpotterCode for IDEs]
*** link:{{navprefix}}/integrate-SpotterCode[Integrating SpotterCode]
*** link:{{navprefix}}/spottercode-prompting-guide[SpotterCode prompting guide]
* link:{{navprefix}}/SpotterCode[SpotterCode for IDEs]
** link:{{navprefix}}/integrate-SpotterCode[Integrating SpotterCode]
** link:{{navprefix}}/spottercode-prompting-guide[SpotterCode prompting guide]

* MCP Servers and tools
** link:{{navprefix}}/ai-analytics-integration[ThoughtSpot AI analytics integration]
*** link:{{navprefix}}/mcp-integration[ThoughtSpot MCP server]
*** link:{{navprefix}}/connect-mcp-server-to-clients[Connecting MCP Server to MCP clients]
*** link:{{navprefix}}/custom-chatbot-integration-mcp[Integrating MCP Server in a custom application or chatbot]
** link:{{navprefix}}/mcp-integration[ThoughtSpot MCP server]
*** link:{{navprefix}}/mcp-server-spotter3[MCP Server with Spotter 3]
*** link:{{navprefix}}/mcp-server-legacy[Legacy MCP Server architecture and tools]
** link:{{navprefix}}/connect-mcp-server-to-clients[Connecting MCP Server to MCP clients]
** link:{{navprefix}}/custom-chatbot-integration-mcp[Integrating MCP Server in a custom app]
** link:{{navprefix}}/mcp-tool-reference[MCP tool reference]
*** link:{{navprefix}}/mcp-tool-reference-spotter3[MCP tool reference (Spotter 3)]
*** link:{{navprefix}}/mcp-tool-reference-spotter3[MCP tool reference (legacy version)]
** Related SDK components
*** [.typedoc-Function]#link:{{navprefix}}/Function_startAutoMCPFrameRenderer[startAutoMCPFrameRenderer]#
*** [.typedoc-Interface]#link:{{navprefix}}/Interface_AutoMCPFrameRendererViewConfig[AutoMCPFrameRendererViewConfig]#



* link:{{navprefix}}/development-and-deployment[Deployment and integration]
** link:{{navprefix}}/development-and-deployment[Development and deployment]
*** link:{{navprefix}}/thoughtspot-objects[ThoughtSpot objects overview]
*** link:{{navprefix}}/variables[Variables]
*** link:{{navprefix}}/parameterze-metdata[Parameterize metadata]
*** link:{{navprefix}}/parameterize-metadata[Parameterize metadata]
*** link:{{navprefix}}/deploy-with-tml-apis[Deploy with TML APIs]
**** link:{{navprefix}}/git-provider-integration[Git provider integration]
**** link:{{navprefix}}/modify-tml[TML modification]
*** link:{{navprefix}}/publish-data-overview[Publish content to Orgs]
**** link:{{navprefix}}/parameterize-metadata[Parameterize metadata]
**** link:{{navprefix}}/publish-to-orgs[Publish objects to Orgs]
*** link:{{navprefix}}/git-integration[Deploy with GitHub APIs (legacy)]
**** link:{{navprefix}}/git-configuration[Configure GitHub integration]
Expand Down
20 changes: 11 additions & 9 deletions modules/ROOT/pages/customize-style.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ To access style customization settings:
. To access the ThoughtSpot Developer portal, click *Develop*
. Under *Customizations*, click *Styles*.

[TIP]
[NOTE]
====
Style customization settings are also available in the ThoughtSpot *Admin* tab.
For more information on setting UI styles from the *Admin* tab, see link:https://docs.thoughtspot.com/cloud/latest/style-customization[Style Customization, window=_blank].
Expand All @@ -56,11 +56,8 @@ image::./images/style-applogo.png[Default Application Logo]
+
[NOTE]
====
Your logo image must be a square in jpg, jpeg, or png format.

The recommended size for the logo in V1 classic or V2 experience is 140px by 140px.

For instances using the V3 navigation and home page experience (version 26.3.0.cl or later), the logo in the top navigation bar is constrained to 28px by 28px. For best results, upload a square logo that remains clear and visible at 28px by 28px.
* The accepted file formats for the logo image are jpg, jpeg, and png.
* The recommended size for the logo is 140px by 140px. For ThoughtSpot instances using the V3 navigation and home page experience (version 26.3.0.cl or later), the logo in the top navigation bar is constrained to 28px by 28px. For best results, upload a square logo that remains clear and visible when scaled down to 28px by 28px.
====

+
Expand All @@ -72,9 +69,14 @@ For instances using the V3 navigation and home page experience (version 26.3.0.c
image::./images/style-widelogo.png[Wide application logo]

+
* The recommended size is 330px by 100px.
* The accepted file formats are jpg, jpeg, and png.
* This logo appears on the login screen.
[NOTE]
====
* The application logo (wide) appears on the login screen.

* The recommended size is 330px by 100px. This will allow the system to preserve the aspect ratio of the uploaded logo image and prevent distortion.

* The accepted file formats for the logo image are jpg, jpeg, and png.
====

+
.. Verify if the logo appears correctly.
Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/pages/data-report-v2-api.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ For *XLSX* downloads [earlyAccess eaBackground]#Early Access#,
* A maximum of 255 tabs per .xlsx workbook are allowed.
* It does not support any additional parameters to customize the page orientation and `include_cover_page`, `include_filter_page`, logo, footer text, and page numbers.
* Charts are exported as tabular data. Downloaded reports may include columns not seen in the visualization if they were used as tokens in the underlying search query.
* Pivot tables generated in .xlsx workbooks using this API endpoint retain their complete visual formatting and structural integrity. To enable this on your ThoughtSpot instance, contact ThoughtSpot Support.
* New pivot tables generated in .xlsx workbooks using this API endpoint retain their complete visual formatting and structural integrity. To enable this on your ThoughtSpot instance, contact ThoughtSpot Support.

===== Sample API payload for XLSX downloads

Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/pages/embed-pinboard.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ You can also pin a visualization to a Liveboard tab using the **Pin** action on

To view specific data across the tables and charts on an embedded Liveboard, users can use Liveboard filter options. By default, Liveboard filters cannot be applied at load. You can either embed a Liveboard that already includes filters or use the xref:runtime-filters.adoc[runtime filters] feature in the Visual Embed SDK to apply filters during load time.

=== Customizing filter visibility
==== Customizing filter visibility
To hide filters in an embedded Liveboard, you can use the following options:

* Set `hideLiveboardHeader` to `true` to hide the entire header area, including filters and the Liveboard menu. You can then trigger filter interactions programmatically using host events.
Expand Down
4 changes: 2 additions & 2 deletions modules/ROOT/pages/embed-spotter.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ To embed Spotter, you need the following access and setup:

[NOTE]
====
For Spotter embedding that uses cookieless authentication, use the Visual Embed SDK v1.45.0 or later with ThoughtSpot Cloud 26.2.0.cl or a later version. To enable proactive token refresh, set the `refreshAuthTokenOnNearExpiry` parameter to `true`. +
Spotter workflows can run longer, so set the authentication token expiry to at least 10 minutes to avoid authorization errors.
For Spotter embedding that uses cookieless authentication, use Visual Embed SDK version 1.45.0 or later with ThoughtSpot Cloud version 26.2.0.cl or later. To enable proactive token refresh, set the `refreshAuthTokenOnNearExpiry` parameter to `true`. +
Spotter workflows may run longer at times. To prevent authorization errors, set the authentication token expiration to at least 10 minutes.
====

== Import the SDK package
Expand Down
6 changes: 2 additions & 4 deletions modules/ROOT/pages/events-context-aware-routing.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -482,11 +482,9 @@ appEmbed.trigger(
);
----



== Validation and error handling

Ensure that the xref:EmbedEvent.adoc#_error[EmbedEvent.Error] is subscribed in your embed. This allows your embed to emit an event when an error occurs. Verify the error type and code for host event validation errors. For more information, see xref:EmbedErrorDetailsEvent.adoc[EmbedErrorDetailsEvent].
Ensure that you subscribe to xref:EmbedEvent.adoc#_error[EmbedEvent.Error] in your embed. This enables your embed to emit an event when an error occurs. Error events will be emitted via `EmbedEvent.Error` instead of silent failures, regardless of whether the Host Events V2 framework is enabled. +
Verify the error type and code for host event validation errors.For more information, see xref:EmbedErrorDetailsEvent.adoc[EmbedErrorDetailsEvent].

When the Host Events v2 framework is enabled, the event execution returns errors in the following scenarios:

Expand Down
7 changes: 4 additions & 3 deletions modules/ROOT/pages/filters_overview.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -444,18 +444,19 @@ To remove a specific filter, pass the empty values array, as shown in the follow
liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [{
columnName: "item type",
operator: RuntimeFilterOp.EQ,
values: [" "] // replace the values
values: [] // set an empty array to clear runtime filters
}]);
----

*Liveboard filters*

[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filters: [{
column: "state",
column: "state", // columnName is also a valid parameter.
oper: "EQ",
values: [" "] // sets empty values
values: [] // set an empty array to clear filters
}]
});
----
Expand Down
Loading
Loading