diff --git a/gatsby-config.js b/gatsby-config.js
index 166faf087..efad469bf 100644
--- a/gatsby-config.js
+++ b/gatsby-config.js
@@ -192,6 +192,7 @@ module.exports = {
.queries,
// for testing add dryRun as true,
// dryRun: true,
+ continueOnFailure: !process.env.ALGOLIA_ADMIN_KEY,
},
},
{
diff --git a/gatsby-node.js b/gatsby-node.js
index 3cb3567e4..98a9cf3a9 100644
--- a/gatsby-node.js
+++ b/gatsby-node.js
@@ -3,14 +3,123 @@ const {
DOC_NAV_PAGE_ID,
NOT_FOUND_PAGE_ID,
VERSION_DROPDOWN,
+ SITE_URL,
+ LLMS_SECTIONS,
} = require('./src/configs/doc-configs');
const { getDocLinkFromEdge } = require('./src/utils/gatsby-utils.js');
-exports.onPostBuild = () => {
+/* ── Build-time Markdown generation ───────────────────────────────────────
+ * For every asciidoc node, convert the already-generated HTML to clean
+ * Markdown using cheerio (DOM pre-processing) + turndown (HTML→MD).
+ * The result is stored as `fields.markdownBody` on each node and exposed
+ * in GraphQL so CopyPageDropdown can use it instead of scraping the DOM.
+ */
+exports.onCreateNode = ({ node, actions }) => {
+ if (node.internal.type !== 'Asciidoc') return;
+
+ const { createNodeField } = actions;
+ const TurndownService = require('turndown');
+ const cheerio = require('cheerio');
+
+ const html = node.html || '';
+ const title = node.document?.title || node.pageAttributes?.title || '';
+
+ /* Load HTML into cheerio for pre-processing */
+ const $ = cheerio.load(html, { decodeEntities: false });
+
+ /* Remove anchor icon links that Asciidoctor injects next to headings */
+ $('a.anchor').remove();
+
+ /* Remove the embedded TOC — it adds noise to Markdown */
+ $('#toc').remove();
+
+ /* Convert admonition tables to readable text blocks */
+ $('.admonitionblock').each((_, el) => {
+ const type = $(el).attr('class').match(/\b(note|tip|warning|caution|important)\b/i)?.[1]?.toUpperCase() || 'NOTE';
+ const content = $(el).find('td.content').text().trim();
+ $(el).replaceWith(`
${type}: ${content}
`);
+ });
+
+ /* Get the cleaned HTML */
+ const cleanedHtml = $('body').html() || '';
+
+ /* Configure turndown */
+ const td = new TurndownService({
+ headingStyle: 'atx',
+ bulletListMarker: '-',
+ codeBlockStyle: 'fenced',
+ fence: '```',
+ });
+
+ /* GFM table plugin — renders tables as proper Markdown pipe tables */
+ const { tables } = require('turndown-plugin-gfm');
+ td.use(tables);
+
+ const markdownBody = td.turndown(cleanedHtml);
+
+ createNodeField({
+ node,
+ name: 'markdownBody',
+ value: markdownBody,
+ });
+};
+
+exports.onPostBuild = async ({ graphql, reporter }) => {
fsExtra.copyFileSync(
`${__dirname}/robots.txt`,
`${__dirname}/public/robots.txt`,
);
+
+ try {
+ const result = await graphql(`
+ query {
+ allAsciidoc {
+ edges {
+ node {
+ document { title }
+ pageAttributes { pageid }
+ }
+ }
+ }
+ }
+ `);
+
+ if (result.errors) {
+ reporter.warn(`llms.txt generation: GraphQL errors — ${JSON.stringify(result.errors)}`);
+ return;
+ }
+
+ const pageMap = {};
+ result.data.allAsciidoc.edges.forEach(({ node }) => {
+ const pageid = node.pageAttributes?.pageid;
+ const title = node.document?.title;
+ if (pageid && title) pageMap[pageid] = title;
+ });
+
+ const lines = [
+ '# ThoughtSpot Developer Documentation',
+ '',
+ '> Developer documentation for ThoughtSpot Embedded — tools, APIs, and SDKs for embedding ThoughtSpot analytics into your applications.',
+ '',
+ ];
+
+ for (const section of LLMS_SECTIONS) {
+ lines.push(`## ${section.label}`);
+ for (const pageId of section.pageIds) {
+ const title = pageMap[pageId];
+ if (title) lines.push(`- [${title}](${SITE_URL}/${pageId})`);
+ }
+ lines.push('');
+ }
+
+ fsExtra.writeFileSync(
+ `${__dirname}/public/llms.txt`,
+ lines.join('\n'),
+ );
+ reporter.info(`llms.txt generated with ${Object.keys(pageMap).length} pages`);
+ } catch (err) {
+ reporter.warn(`llms.txt generation failed: ${err.message}`);
+ }
};
exports.createPages = async function ({ actions, graphql }) {
const { data } = await graphql(`
@@ -39,12 +148,23 @@ exports.createPages = async function ({ actions, graphql }) {
`);
const namePageIdMap = {};
+ // Collect per-category nav HTMLs keyed by category name (pageid minus 'nav-' prefix)
+ const navMap = {};
+ const NAV_PARTIAL_PREFIX = 'nav-';
+
data.allAsciidoc.edges.forEach((e) => {
const {
sourceInstanceName: sourceName,
relativePath: relPath,
} = e.node.parent;
const pageId = e.node.pageAttributes.pageid;
+
+ // Collect nav-* files into the navMap (not content pages)
+ if (pageId && pageId.startsWith(NAV_PARTIAL_PREFIX)) {
+ navMap[pageId.slice(NAV_PARTIAL_PREFIX.length)] = e.node.html;
+ return;
+ }
+
if (sourceName === 'tutorials') {
const relPathSplit = relPath.split('/');
const pageIdSplit = pageId.split('__');
@@ -66,13 +186,16 @@ exports.createPages = async function ({ actions, graphql }) {
data.allAsciidoc.edges.forEach((edge) => {
const { pageid: pageId } = edge.node.pageAttributes;
+ // Skip nav partial files — they are sidebar data, not content pages
+ if (pageId && pageId.startsWith(NAV_PARTIAL_PREFIX)) return;
+
const docPath = getDocLinkFromEdge(edge);
actions.createPage({
path: docPath,
component: require.resolve(
'./src/components/DevDocTemplate/index.tsx',
),
- context: { pageId, navId: DOC_NAV_PAGE_ID, namePageIdMap },
+ context: { pageId, navId: DOC_NAV_PAGE_ID, navMap, namePageIdMap },
});
if (pageId === 'introduction') {
@@ -81,7 +204,7 @@ exports.createPages = async function ({ actions, graphql }) {
component: require.resolve(
'./src/components/DevDocTemplate/index.tsx',
),
- context: { pageId, navId: DOC_NAV_PAGE_ID, namePageIdMap },
+ context: { pageId, navId: DOC_NAV_PAGE_ID, navMap, namePageIdMap },
});
}
});
diff --git a/modules/ROOT/pages/ai-integration-options.adoc b/modules/ROOT/pages/ai-integration-options.adoc
index 5e67530b7..ec760fd73 100644
--- a/modules/ROOT/pages/ai-integration-options.adoc
+++ b/modules/ROOT/pages/ai-integration-options.adoc
@@ -1,4 +1,4 @@
-= ThoughtSpot AI analytics integration
+= AI analytics integration
:toc: true
:toclevels: 3
diff --git a/modules/ROOT/pages/api-changelog.adoc b/modules/ROOT/pages/api-changelog.adoc
index 22cb4c719..1a1338efd 100644
--- a/modules/ROOT/pages/api-changelog.adoc
+++ b/modules/ROOT/pages/api-changelog.adoc
@@ -8,6 +8,102 @@
This changelog lists only the changes introduced in the Visual Embed SDK. For information about new features and enhancements available for embedded analytics, see xref:whats-new.adoc[What's New].
+== Version 1.48.x, May 2026
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a|
+[discrete]
+===== Liveboard embedding
+
+The SDK includes the following new features and enhancements in Liveboard embedding.
+
+Continuous Liveboard layout in PDF downloads [beta betaBackground]^Beta^::
+
+
+When set to `true`, the `isContinuousLiveboardPDFEnabled` enables the Liveboard tab to render on a single page that matches the exact UI layout you see in ThoughtSpot. This update addresses the issue where visualizations for PDF downloads were split across multiple A4 pages regardless of how they appear on screen. This feature is in beta and can be enabled by setting `isContinuousLiveboardPDFEnabled` to `true`.
+
+New events and action IDs;;
+
+* `EmbedEvent.DownloadLiveboardAsContinuousPDF` +
+Emits when the download action is triggered.
+* `HostEvent.DownloadLiveboardAsContinuousPDF` +
+Programmatically triggers the download action to export the PDF with a continuous Liveboard layout.
+* `Action.DownloadLiveboardAsContinuousPDF` +
+Action ID to control the visibility of download action that exports continuous PDFs.
+
+Liveboard download actions::
+
+The following action IDs are introduced in the SDK for the download buttons at the Liveboard level:
+
+* `Action.DownloadLiveboard` +
+* `Action.DownloadLiveboardAsXlsx` +
+* `Action.DownloadLiveboardAsCsv`
+
+Test email for Liveboard scheduled jobs::
+
+The SDK introduces the `isSendNowLiveboardSchedulingEnabled` to enable the **Send now** option for the Liveboard scheduled jobs. This option allows Liveboard users to send a test email notification to either themselves or the intended recipients of the Liveboard scheduled alerts.
+
+New events and action IDs;;
+
+* `EmbedEvent.SendTestScheduleEmail` +
+Emits when *Send now* button is clicked.
+* `HostEvent.SendTestScheduleEmail` +
+Programmatically triggers the Send now action to send a test email notification for a Liveboard scheduled job.
+* `Action.SendTestScheduleEmail` +
+Action ID to disable, show, or hide the **Send now** button on the Liveboard schedule page.
+
+|[tag greenBackground]#NEW FEATURE# a|
+
+[discrete]
+===== Spotter embedding
+
+The SDK introduces the following action IDs to control the visibility of specific UI components in chat panel of the embedded Spotter interface:
+
+* `Action.SpotterChatConnectorResources` +
+For the connector resources section in the Spotter chat interface.
+* `Action.SpotterChatConnectors` +
+For the connectors panel section in the Spotter chat interface.
+* `Action.SpotterChatModeSwitcher` +
+For the mode switcher in the Spotter chat interface.
+
+|[tag greenBackground]#NEW FEATURE# a|
+
+[discrete]
+===== Event handling
+Note the following changes:
+
+EmbedEvent::
+
+* `EmbedEvent.Subscribed` +
+The SDK introduces the `EmbedEvent.Subscribed` to emit an event when a HostEvent listener is registered. You can use this event to safely dispatch host events during the initial load without race conditions.
+* `EmbedEvent.Error` +
+The `EmbedEvent.Error` now fires on HostEvent payload validation failures.
+* `EmbedEvent.ChangePersonalizedView` +
+Emits when a user selects a different Personalized View or resets to default.
+
+HostEvent::
+* `HostEvent.GetExportRequestForCurrentPinboard` [.version-badge.breaking]#Breaking# +
+The response payload of the `GetExportRequestForCurrentPinboard` passthrough
+host event has been updated to include a `type` discriminator field, making it
+consistent with the shape of other host event responses. It now returns `{ data: { v2Content }, type }` instead of `{ v2Content }` directly. This enhancement introduces a breaking change for any code that reads `result.v2Content` directly. Update your integration workflows to use `result.data.v2Content`.
+
+* `HostEvent.SelectPersonalizedView` +
+Triggers the selection of a specific Personalized View and resets the default view on a Liveboard.
+
+⚠️Deprecated events and action IDs️::
+The following events are deprecated and replaced with new event IDs.
+
+* `EmbedEvent.UpdatePersonalisedView`. Use `EmbedEvent.UpdatePersonalizedView`.
+* `EmbedEvent.SavePersonalisedView`. Use `EmbedEvent.SavePersonalizedView`.
+* `EmbedEvent.DeletePersonalisedView`. Use `EmbedEvent.DeletePersonalizedView`.
+* `HostEvent.ResetLiveboardPersonalisedView`. Use `HostEvent.ResetLiveboardPersonalizedView`.
+* `Action.PersonalisedViewsDropdown`. Use `Action.PersonalizedViewsDropdown`.
+* `Action.OrganiseFavourites`. Use `Action.OrganizeFavorites`.
+
+
+|====
+
+
== Version 1.47.x, April 2026
[width="100%" cols="1,4"]
|====
@@ -147,7 +243,7 @@ Is emitted when a saved chat is deleted.
* `EmbedEvent.SpotterConversationSelected` +
Is emitted when a saved chat is selected in the chat history sidebar.
-|[tag greenBackground]#NEW FEATURE# | `enableLinkOverridesV2` +
+|[tag greenBackground]#NEW FEATURE# | `enableLinkOverridesV2` +
Use this configuration setting to override ThoughtSpot URLs on hover or when opening in a new tab. This is recommended over the earlier `linkOverride` flag for a better user experience.
@@ -619,7 +715,7 @@ For more information about Spotter customization, see xref:embed-spotter.adoc#Sp
|[tag greenBackground]#NEW FEATURE# a|
-Configurations attributes::
+Configuration attributes::
* `hideIrrelevantChipsInLiveboardTabs` +
Hides filter chips on a Liveboard when set to `true`.
diff --git a/modules/ROOT/pages/common/nav-embedding.adoc b/modules/ROOT/pages/common/nav-embedding.adoc
new file mode 100644
index 000000000..5632e6cbd
--- /dev/null
+++ b/modules/ROOT/pages/common/nav-embedding.adoc
@@ -0,0 +1,177 @@
+
+:page-pageid: nav-embedding
+:page-description: Embedding navigation
+
+[navSection]
+
+[.sidebar-title]
+Embed ThoughtSpot in a web app
+
+* link:{{navprefix}}/getting-started[Embed with Visual Embed SDK]
+* link:{{navprefix}}/tsembed[Quickstart guide]
+* link:{{navprefix}}/embed-ai-search-analytics[Embed AI Search and Analytics]
+** link:{{navprefix}}/embed-spotter[Embed Spotter experience]
+** link:{{navprefix}}/embed-spotter-agent[Embed Spotter Agent]
+* link:{{navprefix}}/embed-liveboard[Embed Analytics]
+** link:{{navprefix}}/embed-liveboard[Embed a Liveboard]
+** link:{{navprefix}}/embed-a-viz[Embed a visualization]
+* link:{{navprefix}}/full-embed[Embed full application]
+** link:{{navprefix}}/full-app-customize[Customize your embed]
+** link:{{navprefix}}/customize-nav-controls[Customize navigation panels]
+** link:{{navprefix}}/set-default-page[Customize default page and navigation path]
+** link:{{navprefix}}/customize-homepage-experience[Customize home page experience]
+* Embed token-based Search
+** link:{{navprefix}}/search-embed[Embed Search]
+** link:{{navprefix}}/embed-searchbar[Embed search bar]
+* link:{{navprefix}}/react-app-embed[Embed with React components]
+
+[.sidebar-title]
+Embed ThoughtSpot in a mobile app
+
+* link:{{navprefix}}/mobile-embed[Overview]
+* link:{{navprefix}}/embed-ts-mobile-react-native[React Native SDK]
+* link:{{navprefix}}/embed-ts-flutter[Flutter embed SDK]
+* link:{{navprefix}}/embed-ts-swift[Swift Embed SDK]
+* link:{{navprefix}}/embed-ts-android[Android Embed SDK]
+
+[.sidebar-title]
+Embed without SDK
+
+** link:{{navprefix}}/embed-without-sdk[Embed without SDK]
+** link:{{navprefix}}/custom-viz-rest-api[Create a custom visualization]
+
+[.sidebar-title]
+Customize and integrate
+
+* link:{{navprefix}}/style-customization[Customize UI layout and styles]
+** link:{{navprefix}}/customize-style[Customize basic styles]
+** link:{{navprefix}}/custom-css[CSS customization framework]
+** link:{{navprefix}}/theme-builder-doc[Theme builder]
+** link:{{navprefix}}/customize-icons[Customize icons]
+** link:{{navprefix}}/customize-text[Customize text strings]
+** link:{{navprefix}}/css-variables-reference[CSS variables reference]
+
+* link:{{navprefix}}/filters-overview[Filters types and application layers]
+** link:{{navprefix}}/runtime-overrides[Runtime overrides]
+** link:{{navprefix}}/runtime-filters[Runtime filters]
+** link:{{navprefix}}/runtime-params[Runtime Parameters]
+* link:{{navprefix}}/action-config[Customize menus]
+** link:{{navprefix}}/actions[Action IDs in the SDK]
+* link:{{navprefix}}/events-app-integration[Events and app interactions]
+** link:{{navprefix}}/embed-events[Using embed events]
+** link:{{navprefix}}/host-events[Using host events]
+** link:{{navprefix}}/context-aware-event-routing[Context-based execution of host events]
+** link:{{navprefix}}/hostEventsV2-migration[Migrating from Host Event v1 to Host Events v2 framework]
+** link:{{navprefix}}/handling-embed-errors[Handling embed errors]
+** link:{{navprefix}}/api-search-intercept[API intercept and data fetch requests]
+
+* link:{{navprefix}}/custom-action-intro[Custom actions]
+** 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}}/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]
+* link:{{navprefix}}/customize-emails[Customize onboarding settings]
+* link:{{navprefix}}/customize-email-apis[Customize email template]
+* link:{{navprefix}}/in-app-navigation[Create dynamic menus and navigation]
+* link:{{navprefix}}/best-practices[Performance optimization]
+** link:{{navprefix}}/best-practices[Best practices]
+** link:{{navprefix}}/prerender[Prerender components]
+** link:{{navprefix}}/lazy-load-fullHeight[Full height and lazy loading options]
+** link:{{navprefix}}/prefetch[Prefetch static resources]
+* link:{{navprefix}}/troubleshoot-errors[Troubleshoot errors]
+
+[.sidebar-title]
+Authentication and data security
+
+* link:{{navprefix}}/embed-auth[Authentication]
+** link:{{navprefix}}/trusted-auth[Trusted authentication]
+*** link:{{navprefix}}/trusted-auth-secret-key[Secret key management]
+*** link:{{navprefix}}/trusted-auth-sdk[Front-end trusted authentication integration]
+*** link:{{navprefix}}/trusted-auth-token-request-service[Token request service]
+*** link:{{navprefix}}/trusted-auth-troubleshoot[Troubleshoot trusted authentication]
+** 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}}/security-settings[Security settings]
+
+* link:{{navprefix}}/embed-object-access[Authorization]
+** link:{{navprefix}}/access-control-sharing[Access control and sharing]
+** link:{{navprefix}}/privileges-and-roles[Privileges and Roles]
+** link:{{navprefix}}/data-security[Data security]
+*** link:{{navprefix}}/rls-rules[RLS Rules]
+*** link:{{navprefix}}/abac-via-rls-variables[ABAC via RLS with variables]
+*** link:{{navprefix}}/jwt-abac-migration-guide[ABAC JWT migration guide]
+**** link:{{navprefix}}/jwt-filter-parameters-rules-migration-guide[JWT ABAC with filter rules -> ABAC via RLS]
+**** link:{{navprefix}}/jwt-abac-beta-migration-guide[JWT ABAC beta implementation -> ABAC via RLS]
+*** link:{{navprefix}}/abac-user-parameters[ABAC via JWT with filter rules and parameters]
+* link:{{navprefix}}/selective-user-access[User access]
+* link:{{navprefix}}/troubleshoot-errors[Troubleshoot errors]
+
+[.sidebar-title]
+Embedding tutorials
+
+* link:{{navprefix}}/tutorials/tutorials-overview[Embedding tutorials]
+* link:{{navprefix}}/tutorials/tse-fundamentals/intro[Embedding Fundamentals]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-01[01 - Overview]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-02[02 - Set up for course]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-03[03 - Security setup]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-04[04 - Start coding]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-05[05 - Embed Search]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-06[06 - Embed Natural Language Search]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-07[07 - Embed Liveboard]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-08[08 - Embed Visualization]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-09[09 - Embed full application]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-10[10 - Style embedded app]
+** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-11[11 - Course summary]
+** link:{{navprefix}}/tutorials/style-customization/tutorial[Style customization]
+* link:{{navprefix}}/tutorials/react-components/intro[React components]
+** link:{{navprefix}}/tutorials/react-components/lesson-01[01 - Initialize Visual Embed SDK]
+** link:{{navprefix}}/tutorials/react-components/lesson-02[02 - ThoughtSpot component pages]
+** link:{{navprefix}}/tutorials/react-components/lesson-03[03 - Menus and navigation elements]
+** link:{{navprefix}}/tutorials/react-components/lesson-04[04 - Event handling]
+
+
+[.sidebar-title]
+Reference guides and changelog
+
+* +++Visual Embed Playground+++
+* link:{{navprefix}}/VisualEmbedSdk[Visual Embed SDK Reference]
+include::generated/typedoc/CustomSideNav.adoc[]
+** Custom styles
+*** [.typedoc-Interface]#link:{{navprefix}}/Interface_CustomStyles[CustomStyles]#
+*** [.typedoc-Interface]#link:{{navprefix}}/Interface_CustomisationsInterface[CustomisationsInterface]#
+*** [.typedoc-Interface]#link:{{navprefix}}/Interface_customCssInterface[customCssInterface]#
+*** [.typedoc-Interface]#link:{{navprefix}}/Interface_CustomCssVariables[customCssVariables]#
+** Runtime filters
+*** [.typedoc-Interface]#link:{{navprefix}}/Interface_RuntimeFilter[RuntimeFilter]#
+*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_RuntimeFilterOp[RuntimeFilterOp]#
+** Others
+*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_Action[Action]#
+*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_ContextMenuTriggerOptions[ContextMenuTriggerOptions]#
+*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_DataSourceVisualMode[DataSourceVisualMode]#
+*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_Page[Page]#
+*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_PrefetchFeatures[PrefetchFeatures]#
+*** [.typedoc-Function]#link:{{navprefix}}/Function_executeTML[executeTML]#
+*** [.typedoc-Function]#link:{{navprefix}}/Function_exportTML[exportTML]#
+* link:{{navprefix}}/embed-sdk-changelog[Changelog]
+** link:{{navprefix}}/embed-sdk-changelog[Visual Embed SDK]
+** link:{{navprefix}}/mobile-sdk-changelog[Mobile Embed SDK]
+
+[.sidebar-title]
+Additional resources
+
+* link:{{navprefix}}/embed-ts[About ThoughtSpot embedding]
+* link:{{navprefix}}/get-started-tse[Embed licenses]
+* link:{{navprefix}}/license-feature-matrix[Feature matrix]
+* link:{{navprefix}}/faqs[FAQs]
+* link:{{navprefix}}/code-samples[Code samples]
+* link:https://codesandbox.io/s/big-tse-react-demo-i4g9xi[React CodeSandbox, window=_blank]
+* link:https://codesandbox.io/s/graphqlcookieembed-wf4fk9?file=/src/App.js:418-426[GraphQL CodeSandbox, window=_blank]
diff --git a/modules/ROOT/pages/common/nav-mcp-server.adoc b/modules/ROOT/pages/common/nav-mcp-server.adoc
new file mode 100644
index 000000000..d40f131d7
--- /dev/null
+++ b/modules/ROOT/pages/common/nav-mcp-server.adoc
@@ -0,0 +1,32 @@
+
+:page-pageid: nav-mcp-server
+:page-description: MCP Server navigation
+
+[navSection]
+
+[.sidebar-title]
+ThoughtSpot MCP server
+
+* link:{{navprefix}}/mcp-integration[Overview]
+** 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]
+
+[.sidebar-title]
+MCP tools reference
+
+* link:{{navprefix}}/mcp-tool-reference[Overview]
+* link:{{navprefix}}/mcp-tool-reference-spotter3[MCP tool reference (Spotter 3)]
+* link:{{navprefix}}/mcp-tool-reference-spotter3[MCP tool reference (legacy version)]
+
+[.sidebar-title]
+Related SDK components
+
+* [.typedoc-Function]#link:{{navprefix}}/Function_startAutoMCPFrameRenderer[startAutoMCPFrameRenderer]#
+* [.typedoc-Interface]#link:{{navprefix}}/Interface_AutoMCPFrameRendererViewConfig[AutoMCPFrameRendererViewConfig]#
+
+[.sidebar-title]
+MCP Server release notes
+
+* link:{{navprefix}}/mcp-server-changelog[MCP Server changelog]
diff --git a/modules/ROOT/pages/common/nav-rest-api.adoc b/modules/ROOT/pages/common/nav-rest-api.adoc
new file mode 100644
index 000000000..a9fec3165
--- /dev/null
+++ b/modules/ROOT/pages/common/nav-rest-api.adoc
@@ -0,0 +1,96 @@
+
+:page-pageid: nav-rest-api
+:page-description: REST API navigation
+
+[navSection]
+
+[.sidebar-title]
+REST APIs
+
+* link:{{navprefix}}/rest-apis[Overview]
+* link:{{navprefix}}/rest-apiv2-getstarted[Get started]
+* link:{{navprefix}}/api-authv2[REST API v2.0 authentication]
+* link:{{navprefix}}/rest-v2-changelog[REST API v2 changelog]
+* link:{{navprefix}}/restV2-playground?apiResourceId=http%2Fgetting-started%2Fintroduction[REST API v2 Playground]
+* link:{{navprefix}}/rest-apiv2-reference[REST API v2.0 Reference]
+** link:{{navprefix}}/api-user-management[Users and group privileges]
+** link:{{navprefix}}/rbac[Role-based access control]
+** link:{{navprefix}}/rest-apiv2-search[Search API endpoints]
+*** link:{{navprefix}}/rest-apiv2-users-search[Search users]
+*** link:{{navprefix}}/rest-apiv2-groups-search[Search groups]
+*** link:{{navprefix}}/rest-apiv2-metadata-search[Search metadata]
+** link:{{navprefix}}/fetch-data-and-report-apis[Data and Report APIs]
+** link:{{navprefix}}/spotter-api[Spotter APIs]
+*** link:{{navprefix}}/spotter-agent-apis[AI APIs (Spotter Agent and Spotter 3)]
+*** link:{{navprefix}}/spotter-apis-classic[AI APIs (Spotter Classic) ^BETA^]
+*** link:{{navprefix}}/spotter-coaching-apis[Spotter coaching APIs ^BETA^]
+** link:{{navprefix}}/audit-logs[Audit logs]
+** link:{{navprefix}}/tml[TML]
+** link:{{navprefix}}/collections[Collections ^BETA^]
+** link:{{navprefix}}/connections[Connections]
+** link:{{navprefix}}/connection-config[Connection configuration]
+** link:{{navprefix}}/runtime-sort[Runtime sorting]
+
+
+[.sidebar-title]
+REST API SDK
+
+* link:{{navprefix}}/rest-api-sdk[Overview]
+* link:{{navprefix}}/rest-api-sdk-typescript[TypeScript SDK]
+* link:{{navprefix}}/rest-api-sdk-java[Java SDK]
+* link:{{navprefix}}/rest-apiv2-js[REST API v2.0 in JavaScript]
+
+[.sidebar-title]
+Webhooks
+
+* link:{{navprefix}}/webhooks[Overview]
+* link:{{navprefix}}/webhooks-comm-channel[Configure and monitor webhook communication channels]
+* link:{{navprefix}}/webhooks-s3-integration[Deliver Liveboard reports to AWS S3 Storage]
+* link:{{navprefix}}/webhooks-lb-schedule[Deliver Liveboard reports to external application]
+* link:{{navprefix}}/webhooks-lb-payload[Webhook response payload]
+* link:{{navprefix}}/webhooks-kpi[Webhook for KPI alerts]
+
+[.sidebar-title]
+REST API Tutorials
+
+* link:{{navprefix}}/tutorials/rest-api/intro[REST API Tutorials]
+* link:{{navprefix}}/tutorials/rest-api/lesson-01[01 - REST API overview]
+* link:{{navprefix}}/tutorials/rest-api/lesson-02[02 - Simple Python implementation]
+* link:{{navprefix}}/tutorials/rest-api/lesson-03[03 - Complex REST API workflows]
+
+[.sidebar-title]
+REST API v1 (DEPRECATED)
+
+* link:{{navprefix}}/rest-api-getstarted[Get started]
+* link:{{navprefix}}/api-auth-session[REST API v1 authentication]
+* link:{{navprefix}}/catalog-and-audit[Catalog and audit content]
+* link:{{navprefix}}/rest-api-pagination[Paginate API response]
+* link:{{navprefix}}/rest-api-reference[REST API v1 Reference]
+** link:{{navprefix}}/orgs-api[Orgs API]
+** link:{{navprefix}}/user-api[User API]
+** link:{{navprefix}}/group-api[Group API]
+** link:{{navprefix}}/role-api[Role API]
+** link:{{navprefix}}/session-api[Session API]
+** link:{{navprefix}}/connections-api[Data connection API]
+** link:{{navprefix}}/metadata-api[Metadata API]
+** link:{{navprefix}}/admin-api[Admin API]
+** link:{{navprefix}}/tml-api[TML API]
+** link:{{navprefix}}/dependent-objects-api[Dependent objects API]
+** link:{{navprefix}}/search-data-api[Search data API]
+** link:{{navprefix}}/liveboard-data-api[Liveboard data API]
+** link:{{navprefix}}/liveboard-export-api[Liveboard export API]
+** link:{{navprefix}}/security-api[Security API]
+** link:{{navprefix}}/logs-api[Audit logs API]
+** link:{{navprefix}}/materialization-api[Materialization API]
+** link:{{navprefix}}/database-api[Database API]
+** link:{{navprefix}}/rest-v1-changelog[REST API v1 changelog]
+** link:{{navprefix}}/v1v2-comparison[REST v1 and v2.0 comparison]
+
+
+//** link:{{navprefix}}/graphql-guide[GraphQL API ^Beta^]
+
+
+
+
+
+
diff --git a/modules/ROOT/pages/common/nav-spottercode.adoc b/modules/ROOT/pages/common/nav-spottercode.adoc
new file mode 100644
index 000000000..b60c85c31
--- /dev/null
+++ b/modules/ROOT/pages/common/nav-spottercode.adoc
@@ -0,0 +1,12 @@
+
+:page-pageid: nav-spottercode
+:page-description: SpotterCode navigation
+
+[navSection]
+
+[.sidebar-title]
+SpotterCode agent
+
+* link:{{navprefix}}/SpotterCode[SpotterCode for IDEs]
+* link:{{navprefix}}/integrate-SpotterCode[Integrating SpotterCode]
+* link:{{navprefix}}/spottercode-prompting-guide[SpotterCode prompting guide]
diff --git a/modules/ROOT/pages/common/nav-tutorials.adoc b/modules/ROOT/pages/common/nav-tutorials.adoc
new file mode 100644
index 000000000..b7933f53d
--- /dev/null
+++ b/modules/ROOT/pages/common/nav-tutorials.adoc
@@ -0,0 +1,29 @@
+
+:page-pageid: nav-tutorials
+:page-description: Tutorials navigation
+
+[navSection]
+
+* link:{{navprefix}}/tutorials/tutorials-overview[Tutorials]
+** link:{{navprefix}}/tutorials/tse-fundamentals/intro[Embedding Fundamentals]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-01[01 - Overview]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-02[02 - Set up for course]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-03[03 - Security setup]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-04[04 - Start coding]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-05[05 - Embed Search]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-06[06 - Embed Natural Language Search]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-07[07 - Embed Liveboard]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-08[08 - Embed Visualization]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-09[09 - Embed full application]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-10[10 - Style embedded app]
+*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-11[11 - Course summary]
+** link:{{navprefix}}/tutorials/style-customization/tutorial[Style customization]
+** link:{{navprefix}}/tutorials/react-components/intro[React components]
+*** link:{{navprefix}}/tutorials/react-components/lesson-01[01 - Initialize Visual Embed SDK]
+*** link:{{navprefix}}/tutorials/react-components/lesson-02[02 - ThoughtSpot component pages]
+*** link:{{navprefix}}/tutorials/react-components/lesson-03[03 - Menus and navigation elements]
+*** link:{{navprefix}}/tutorials/react-components/lesson-04[04 - Event handling]
+
+*** link:{{navprefix}}/tutorials/rest-api/lesson-04[04 - Event handling]
+** Spotter
+*** link:{{navprefix}}/tutorials/spotter/integrate-into-chatbot[Integrate Spotter into your Chatbot]
diff --git a/modules/ROOT/pages/common/nav.adoc b/modules/ROOT/pages/common/nav.adoc
index 06771c138..9b6a374fa 100644
--- a/modules/ROOT/pages/common/nav.adoc
+++ b/modules/ROOT/pages/common/nav.adoc
@@ -4,249 +4,81 @@
[navSection]
-* link:{{navprefix}}/ask-docs[AskDocs ^Beta^]
-
-* 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 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]
+[.sidebar-title]
+Release notes and changelogs
+
+* link:{{navprefix}}/whats-new[What's new]
+* Changelog
+** link:{{navprefix}}/embed-sdk-changelog[Visual Embed SDK changelog]
+** link:{{navprefix}}/mobile-sdk-changelog[Mobile Embed SDK changelog]
+** link:{{navprefix}}/rest-v2-changelog[REST API v2 changelog]
** link:{{navprefix}}/mcp-server-changelog[MCP Server changelog]
-** link:{{navprefix}}/deprecated-features[Deprecation announcements]
-
-* Live Playgrounds
-** +++Visual Embed Playground+++
-** link:{{navprefix}}/restV2-playground?apiResourceId=http%2Fgetting-started%2Fintroduction[REST API v2 Playground]
-** link:{{navprefix}}/graphql-play-ground[GraphQL Playground]
-** +++REST API v1 Playground+++
-** link:{{navprefix}}/theme-builder[Theme Builder]
-** link:{{navprefix}}/spotdev-portal[How to use]
-*** link:{{navprefix}}/dev-playground[Visual Embed Playground]
-*** link:{{navprefix}}/graphql-playground[GraphQL Playground]
-*** link:{{navprefix}}/rest-playground[REST API Playground]
-
-* link:{{navprefix}}/tutorials/tutorials-overview[Tutorials]
-** link:{{navprefix}}/tutorials/tse-fundamentals/intro[Embedding Fundamentals]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-01[01 - Overview]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-02[02 - Set up for course]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-03[03 - Security setup]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-04[04 - Start coding]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-05[05 - Embed Search]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-06[06 - Embed Natural Language Search]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-07[07 - Embed Liveboard]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-08[08 - Embed Visualization]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-09[09 - Embed full application]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-10[10 - Style embedded app]
-*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-11[11 - Course summary]
-** link:{{navprefix}}/tutorials/style-customization/tutorial[Style customization]
-** link:{{navprefix}}/tutorials/react-components/intro[React components]
-*** link:{{navprefix}}/tutorials/react-components/lesson-01[01 - Initialize Visual Embed SDK]
-*** link:{{navprefix}}/tutorials/react-components/lesson-02[02 - ThoughtSpot component pages]
-*** link:{{navprefix}}/tutorials/react-components/lesson-03[03 - Menus and navigation elements]
-*** link:{{navprefix}}/tutorials/react-components/lesson-04[04 - Event handling]
-** link:{{navprefix}}/tutorials/rest-api/intro[REST API]
-*** link:{{navprefix}}/tutorials/rest-api/lesson-01[01 - REST API overview]
-*** link:{{navprefix}}/tutorials/rest-api/lesson-02[02 - Simple Python implementation]
-*** link:{{navprefix}}/tutorials/rest-api/lesson-03[03 - Complex REST API workflows]
-*** link:{{navprefix}}/tutorials/rest-api/lesson-04[04 - Event handling]
-** Spotter
-*** link:{{navprefix}}/tutorials/spotter/integrate-into-chatbot[Integrate Spotter into your Chatbot]
-
-* link:{{navprefix}}/getting-started[Embed ThoughtSpot]
-** link:{{navprefix}}/getting-started[Quickstart Guide]
-** link:{{navprefix}}/tsembed[Embed ThoughtSpot in Web app]
-*** Embed analytics
-**** link:{{navprefix}}/embed-liveboard[Embed a Liveboard]
-**** link:{{navprefix}}/embed-a-viz[Embed a visualization]
-*** link:{{navprefix}}/embed-ai-search-analytics[Embed AI Search and Analytics]
-**** link:{{navprefix}}/embed-spotter[Embed Spotter experience]
-**** link:{{navprefix}}/embed-spotter-agent[Embed Spotter Agent]
-*** link:{{navprefix}}/full-embed[Embed full application]
-**** link:{{navprefix}}/full-app-customize[Customize your embed]
-**** link:{{navprefix}}/customize-nav-controls[Customize navigation panels]
-**** link:{{navprefix}}/set-default-page[Customize default page and navigation path]
-**** link:{{navprefix}}/customize-homepage-experience[Customize home page experience]
+* link:{{navprefix}}/deprecated-features[Deprecation announcements]
-*** Embed token-based Search
-**** link:{{navprefix}}/search-embed[Embed Search]
-**** link:{{navprefix}}/embed-searchbar[Embed search bar]
-*** link:{{navprefix}}/react-app-embed[Embed with React components]
-** link:{{navprefix}}/mobile-embed[Embed ThoughtSpot in a mobile app]
-*** link:{{navprefix}}/embed-ts-mobile-react-native[React Native SDK]
-*** link:{{navprefix}}/embed-ts-flutter[Flutter embed SDK]
-*** link:{{navprefix}}/embed-ts-swift[Swift Embed SDK]
-*** link:{{navprefix}}/embed-ts-android[Android Embed SDK]
+[.sidebar-title]
+Live Playgrounds
-** Customize and integrate
-*** link:{{navprefix}}/style-customization[Customize UI layout and styles]
-**** link:{{navprefix}}/customize-style[Customize basic styles]
-**** link:{{navprefix}}/custom-css[CSS customization framework]
-***** link:{{navprefix}}/css-variables-reference[CSS variables reference]
-***** link:{{navprefix}}/customize-icons[Customize icons]
-***** link:{{navprefix}}/customize-text[Customize text strings]
-***** link:{{navprefix}}/theme-builder-doc[Theme builder]
+* +++Visual Embed Playground+++
+** link:{{navprefix}}/dev-playground[How to use]
-*** link:{{navprefix}}/filters-overview[Filters overview]
-**** link:{{navprefix}}/runtime-overrides[Runtime overrides]
-**** link:{{navprefix}}/runtime-filters[Runtime filters]
-**** link:{{navprefix}}/runtime-params[Runtime Parameters]
+* link:{{navprefix}}/restV2-playground?apiResourceId=http%2Fgetting-started%2Fintroduction[REST API v2 Playground]
+** link:{{navprefix}}/rest-playground[How to use]
+//** link:{{navprefix}}/graphql-play-ground[GraphQL Playground]
+//** +++REST API v1 Playground+++
+* link:{{navprefix}}/theme-builder[Theme Builder]
+** link:{{navprefix}}/theme-builder-doc[How to use]
-*** link:{{navprefix}}/action-config[Customize menus]
-**** link:{{navprefix}}/actions[Action IDs in the SDK]
-*** link:{{navprefix}}/events-app-integration[Events and app interactions]
-**** link:{{navprefix}}/embed-events[Using embed events]
-**** link:{{navprefix}}/host-events[Using host events]
-**** link:{{navprefix}}/context-aware-event-routing[Context-based execution of host events]
-**** link:{{navprefix}}/hostEventsV2-migration[Migrating from Host Event v1 to Host Events v2 framework]
-**** link:{{navprefix}}/api-search-intercept[API intercept and data fetch requests]
-*** link:{{navprefix}}/custom-action-intro[Custom actions]
-**** 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}}/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]
-*** link:{{navprefix}}/customize-emails[Customize onboarding settings]
-*** link:{{navprefix}}/customize-email-apis[Customize email template]
-*** link:{{navprefix}}/in-app-navigation[Create dynamic menus and navigation]
-** link:{{navprefix}}/security-settings[Security settings]
-** link:{{navprefix}}/embed-auth[Authentication]
-*** link:{{navprefix}}/trusted-auth[Trusted authentication]
-**** link:{{navprefix}}/trusted-auth-secret-key[Secret key management]
-**** link:{{navprefix}}/trusted-auth-sdk[Front-end trusted authentication integration]
-**** link:{{navprefix}}/trusted-auth-token-request-service[Token request service]
-**** link:{{navprefix}}/trusted-auth-troubleshoot[Troubleshoot trusted authentication]
-*** 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}}/embed-object-access[Authorization]
-*** link:{{navprefix}}/access-control-sharing[Access control and sharing]
-*** link:{{navprefix}}/privileges-and-roles[Privileges and Roles]
-*** link:{{navprefix}}/data-security[Data security]
-**** link:{{navprefix}}/rls-rules[RLS Rules]
-**** link:{{navprefix}}/abac-via-rls-variables[ABAC via RLS with variables]
-**** link:{{navprefix}}/jwt-abac-migration-guide[ABAC JWT migration guide]
-***** link:{{navprefix}}/jwt-filter-parameters-rules-migration-guide[JWT ABAC with filter rules -> ABAC via RLS]
-***** link:{{navprefix}}/jwt-abac-beta-migration-guide[JWT ABAC beta implementation -> ABAC via RLS]
-**** link:{{navprefix}}/abac-user-parameters[ABAC via JWT with filter rules and parameters]
-*** link:{{navprefix}}/selective-user-access[User access]
-** link:{{navprefix}}/best-practices[Performance optimization]
-*** link:{{navprefix}}/best-practices[Best practices]
-*** link:{{navprefix}}/prerender[Prerender components]
-*** link:{{navprefix}}/lazy-load-fullHeight[Full height and lazy loading options]
-*** link:{{navprefix}}/prefetch[Prefetch static resources]
-** link:{{navprefix}}/VisualEmbedSdk[Visual Embed SDK Reference]
-include::generated/typedoc/CustomSideNav.adoc[]
-*** Custom styles
-**** [.typedoc-Interface]#link:{{navprefix}}/Interface_CustomStyles[CustomStyles]#
-**** [.typedoc-Interface]#link:{{navprefix}}/Interface_CustomisationsInterface[CustomisationsInterface]#
-**** [.typedoc-Interface]#link:{{navprefix}}/Interface_customCssInterface[customCssInterface]#
-**** [.typedoc-Interface]#link:{{navprefix}}/Interface_CustomCssVariables[customCssVariables]#
-*** Runtime filters
-**** [.typedoc-Interface]#link:{{navprefix}}/Interface_RuntimeFilter[RuntimeFilter]#
-**** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_RuntimeFilterOp[RuntimeFilterOp]#
-*** Others
-**** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_Action[Action]#
-**** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_ContextMenuTriggerOptions[ContextMenuTriggerOptions]#
-**** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_DataSourceVisualMode[DataSourceVisualMode]#
-**** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_Page[Page]#
-**** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_PrefetchFeatures[PrefetchFeatures]#
-**** [.typedoc-Function]#link:{{navprefix}}/Function_executeTML[executeTML]#
-**** [.typedoc-Function]#link:{{navprefix}}/Function_exportTML[exportTML]#
-** Other embedding methods
-*** link:{{navprefix}}/embed-without-sdk[Embed without SDK]
-*** link:{{navprefix}}/custom-viz-rest-api[Create a custom visualization]
-** link:{{navprefix}}/troubleshoot-errors[Troubleshoot errors]
+//*** link:{{navprefix}}/graphql-playground[GraphQL Playground]
-* link:{{navprefix}}/rest-apis[REST API]
-** link:{{navprefix}}/rest-apis[Overview]
-** link:{{navprefix}}/api-user-management[Users and group privileges]
-** link:{{navprefix}}/rbac[Role-based access control]
-** link:{{navprefix}}/spotter-api[Spotter APIs ^BETA^]
-** link:{{navprefix}}/audit-logs[Audit logs]
-** link:{{navprefix}}/tml[TML]
-** link:{{navprefix}}/collections[Collections ^BETA^]
-** link:{{navprefix}}/connections[Connections]
-*** link:{{navprefix}}/connection-config[Connection configuration]
-** link:{{navprefix}}/rest-apiv2-getstarted[REST API v2.0]
-*** link:{{navprefix}}/rest-apiv2-getstarted[Get started]
-*** link:{{navprefix}}/api-authv2[REST API v2.0 authentication]
-*** link:{{navprefix}}/rest-apiv2-js[REST API v2.0 in JavaScript]
-*** link:{{navprefix}}/rest-apiv2-search[REST API v2.0 Search endpoints]
-**** link:{{navprefix}}/rest-apiv2-users-search[Search users]
-**** link:{{navprefix}}/rest-apiv2-groups-search[Search groups]
-**** link:{{navprefix}}/rest-apiv2-metadata-search[Search metadata]
-*** link:{{navprefix}}/fetch-data-and-report-apis[Data and Report APIs]
-*** link:{{navprefix}}/rest-api-sdk[REST API v2.0 SDKs]
-**** link:{{navprefix}}/rest-api-sdk-typescript[TypeScript SDK]
-**** link:{{navprefix}}/rest-api-sdk-java[Java SDK]
-** link:{{navprefix}}/rest-apiv2-reference[REST API v2.0 Reference]
-** link:{{navprefix}}/rest-api-getstarted[REST API v1]
-*** link:{{navprefix}}/rest-api-getstarted[Get started]
-*** link:{{navprefix}}/api-auth-session[REST API v1 authentication]
-*** link:{{navprefix}}/catalog-and-audit[Catalog and audit content]
-*** link:{{navprefix}}/rest-api-pagination[Paginate API response]
-** link:{{navprefix}}/rest-api-reference[REST API v1 Reference]
-*** link:{{navprefix}}/orgs-api[Orgs API]
-*** link:{{navprefix}}/user-api[User API]
-*** link:{{navprefix}}/group-api[Group API]
-*** link:{{navprefix}}/role-api[Role API]
-*** link:{{navprefix}}/session-api[Session API]
-*** link:{{navprefix}}/connections-api[Data connection API]
-*** link:{{navprefix}}/metadata-api[Metadata API]
-*** link:{{navprefix}}/admin-api[Admin API]
-*** link:{{navprefix}}/tml-api[TML API]
-*** link:{{navprefix}}/dependent-objects-api[Dependent objects API]
-*** link:{{navprefix}}/search-data-api[Search data API]
-*** link:{{navprefix}}/liveboard-data-api[Liveboard data API]
-*** link:{{navprefix}}/liveboard-export-api[Liveboard export API]
-*** link:{{navprefix}}/security-api[Security API]
-*** link:{{navprefix}}/logs-api[Audit logs API]
-*** link:{{navprefix}}/materialization-api[Materialization API]
-*** link:{{navprefix}}/database-api[Database API]
-** link:{{navprefix}}/runtime-sort[Runtime sorting]
-** link:{{navprefix}}/v1v2-comparison[REST v1 and v2.0 comparison]
-** link:{{navprefix}}/graphql-guide[GraphQL API ^Beta^]
-** link:{{navprefix}}/webhooks[Webhooks]
-*** link:{{navprefix}}/webhooks-comm-channel[Configure and monitor webhook communication channels]
-*** link:{{navprefix}}/webhooks-s3-integration[Deliver Liveboard reports to AWS S3 Storage]
-*** link:{{navprefix}}/webhooks-lb-schedule[Deliver Liveboard reports to external application]
-*** link:{{navprefix}}/webhooks-lb-payload[Webhook response payload]
-*** link:{{navprefix}}/webhooks-kpi[Webhook for KPI alerts]
+[.sidebar-title]
+Get started
+* link:{{navprefix}}/getting-started[Embed ThoughtSpot]
* 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}}/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}}/rest-apis[REST APIs]
+* link:{{navprefix}}/ai-analytics-integration[AI analytics integration]
+* link:{{navprefix}}/mcp-integration[MCP Server integration]
+//** link:{{navprefix}}/tutorials/tutorials-overview[Tutorials]
+* link:{{navprefix}}/VisualEmbedSdk[SDK and API reference]
+** link:{{navprefix}}/VisualEmbedSdk[Visual Embed SDK]
+** link:{{navprefix}}/rest-apiv2-reference[REST API]
+** link:{{navprefix}}/mcp-tool-reference[MCP tools]
+
+
+[.sidebar-title]
+Build and deploy
+
+* link:{{navprefix}}/development-and-deployment[Development and deployment]
+** link:{{navprefix}}/thoughtspot-objects[ThoughtSpot objects]
+** link:{{navprefix}}/variables[Variables]
+** 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}}/publish-to-orgs[Publish objects to Orgs]
+* link:{{navprefix}}/git-integration[Deploy with GitHub APIs (legacy)]
+** link:{{navprefix}}/git-configuration[Configure GitHub integration]
+** link:{{navprefix}}/git-api[GitHub REST APIs]
+** link:{{navprefix}}/guid-mapping[GUID mapping]
+
+[.sidebar-title]
+Multi-tenancy
+
+* link:{{navprefix}}/multi-tenancy[Overview]
+* link:{{navprefix}}/orgs[Multi-tenancy with Orgs]
+** link:{{navprefix}}/orgs-api-op[Org administration]
+** link:{{navprefix}}/multitenancy-within-an-org[Multi-tenancy within an Org]
+** link:{{navprefix}}/single-tenant-data-models[Single-tenant data models with Orgs]
+* link:{{navprefix}}/tse-cluster[Cluster maintenance and upgrade]
+
+[.sidebar-title]
+Integration guides
+
+** link:{{navprefix}}/external-tool-script-integration[Third-party tools and custom scripts]
* link:{{navprefix}}/development-and-deployment[Deployment and integration]
** link:{{navprefix}}/development-and-deployment[Development and deployment]
@@ -276,23 +108,17 @@ include::generated/typedoc/CustomSideNav.adoc[]
** link:{{navprefix}}/pendo-integration[Pendo integration with embed]
** link:{{navprefix}}/sf-integration[Integration with Salesforce]
** link:{{navprefix}}/vercel-integration[Vercel integration]
-* Additional references
-** link:{{navprefix}}/embed-ts[About ThoughtSpot embedding]
-** link:{{navprefix}}/get-started-tse[Embed licenses]
-** link:{{navprefix}}/license-feature-matrix[Feature matrix]
-** link:{{navprefix}}/faqs[FAQs]
-** link:{{navprefix}}/code-samples[Code samples]
-** link:https://codesandbox.io/s/big-tse-react-demo-i4g9xi[React CodeSandbox, window=_blank]
-** link:https://codesandbox.io/s/graphqlcookieembed-wf4fk9?file=/src/App.js:418-426[GraphQL CodeSandbox, window=_blank]
-
-* Resources
-** link:https://developers.thoughtspot.com[ThoughtSpot Developers, window=_blank]
-** link:https://community.thoughtspot.com/customers/s/[Community, window=_blank]
-** link:https://developers.thoughtspot.com/guides[Tutorials, window=_blank]
-** link:https://developers.thoughtspot.com/codespot[CodeSpot, window=_blank]
-** link:https://training.thoughtspot.com/page/developer[Training resources, window=_blank]
-** link:https://docs.thoughtspot.com[Product Documentation, window=_blank]
-** link:{{navprefix}}/abac-user-parameters-beta[ABAC via tokens (pre-10.4.0.cl) (Deprecated)]
+[.sidebar-title]
+Additional resources
+* link:{{navprefix}}/faqs[FAQs]
+* link:https://codesandbox.io/s/big-tse-react-demo-i4g9xi[React CodeSandbox, window=_blank]
+//** link:https://codesandbox.io/s/graphqlcookieembed-wf4fk9?file=/src/App.js:418-426[GraphQL CodeSandbox, window=_blank]
+* link:https://community.thoughtspot.com/customers/s/[Community, window=_blank]
+* link:https://training.thoughtspot.com/page/developer[Training resources, window=_blank]
+* link:https://docs.thoughtspot.com[Product Documentation, window=_blank]
+* link:https://developers.thoughtspot.com[ThoughtSpot Developers, window=_blank]
+* Deprecated feature docs
+** link:{{navprefix}}/abac-user-parameters-beta[ABAC via tokens (pre-10.4.0.cl) (Deprecated)]
diff --git a/modules/ROOT/pages/customize-homepage-full-embed.adoc b/modules/ROOT/pages/customize-homepage-full-embed.adoc
index 20f9de70e..954cb8da5 100644
--- a/modules/ROOT/pages/customize-homepage-full-embed.adoc
+++ b/modules/ROOT/pages/customize-homepage-full-embed.adoc
@@ -8,11 +8,10 @@
Developers can customize the home page experience in full application embedding to show either the classic layout or the new modular home page.
-[div announcementBlock]
---
[IMPORTANT]
+====
The classic (V1) experience and V2 experience modes will be deprecated in an upcoming release in 2026. Therefore, ThoughtSpot recommends upgrading the UI experience of your full application embedding to the V3 experience.
---
+====
== Home page layout
diff --git a/modules/ROOT/pages/data-report-v2-api.adoc b/modules/ROOT/pages/data-report-v2-api.adoc
index f9ad3bb86..17daad593 100644
--- a/modules/ROOT/pages/data-report-v2-api.adoc
+++ b/modules/ROOT/pages/data-report-v2-api.adoc
@@ -293,28 +293,39 @@ curl -X POST \
For *PDF* downloads, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers.
-===== Sample API payload for XLSX downloads
+You can now also download continuous pdfs which matches the full length of your Liveboard, without breaking them into multiple A4 pages.
+
+* `page_size = CONTINUOUS` [beta betaBackground]^Beta^ Unlike the A4 format, which introduces forced page breaks between visualizations, this continuous flow maintains your exact design and intended layout.
++
+When `page_size = CONTINUOUS`, the `include_filter_page` option works to show/hide the filter section in the PDF page (in a continuous PDF, there is no separate filter page, but the filters are included on the same page at the top).
+* `zoom_level` [beta betaBackground]^Beta^ offers various download size options to suit the viewer's screen dimensions, thereby enhancing legibility. This can be set only when `page_size = CONTINUOUS`. Valid values are integers in the range of 45 and 175.
+
+To enable this on your ThoughtSpot instance, contact ThoughtSpot Support.
+
+===== Sample API payload for PDF downloads
[source,cURL]
----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/report/liveboard' \
- -H 'Authorization: Bearer {access-token}'\
- -H 'Content-Type: application/json' \
+curl -X POST 'https://{ThoughtSpot-Host}/api/rest/2.0/report/liveboard' \
+--header 'Authorization: Bearer {access-token}' \
+--header 'Content-Type: application/json' \
--data-raw '{
-"metadata_identifier": "416052fd-ad22-4d48-be0a-e43b53109957",
-"file_format": "PDF",
-"visualization_identifiers": [
-"254c6e30-680c-41ea-aa4d-bb059f745462"
-],
-"pdf_options": {
-"include_cover_page": true,
-"include_custom_logo": true,
-"include_filter_page": true,
-"include_page_number": true,
-"page_orientation": "LANDSCAPE",
-"page_footer_text": "Sample footer text"
-}
+ "metadata_identifier": "416052fd-ad22-4d48-be0a-e43b53109957",
+ "file_format": "PDF",
+ "visualization_identifiers": [
+ "254c6e30-680c-41ea-aa4d-bb059f745462"
+ ],
+ "pdf_options": {
+ "page_size": "CONTINUOUS",
+ "zoom_level": 105,
+ "include_cover_page": true,
+ "include_custom_logo": true,
+ "include_filter_page": true,
+ "include_page_number": true,
+ "page_orientation": "PORTRAIT",
+ "truncate_table": false,
+ "page_footer_text": "Sample footer text"
+ }
}'
----
diff --git a/modules/ROOT/pages/deprecated-features.adoc b/modules/ROOT/pages/deprecated-features.adoc
index 4c977b11e..06089a22d 100644
--- a/modules/ROOT/pages/deprecated-features.adoc
+++ b/modules/ROOT/pages/deprecated-features.adoc
@@ -14,6 +14,8 @@ As ThoughtSpot applications evolve, some existing features will be deprecated an
[options='header']
|=====
|Feature|Impacted interface and release versions|Deprecation date |End of Support / removal from the product
+a|xref:deprecated-features.adoc#hostEventv1[HostEvent v1 framework]
+|ThoughtSpot Cloud 26.10.0.cl and later | October 2026 | March 2027
a|xref:deprecated-features.adoc#v1-v2-exp-fullApp-embed[V1 and V2 UI experience in full application embedding]|ThoughtSpot Cloud 26.8.0.cl and later | February 2026 | August 2026
a|xref:deprecated-features.adoc#PNGFlowDeprecation[Select PNG export options] a|ThoughtSpot Cloud 26.4.0.cl and later | April 2026 | August 2026
a|xref:deprecated-features.adoc#variableApis[Variable APIs] a|ThoughtSpot Cloud 26.4.0.cl and later | April 2026 | October 2026
@@ -85,6 +87,18 @@ a|xref:deprecated-features.adoc#_deprecated_parameter_in_rest_api_v2_0_authentic
||||
|=====
+[#hostEventv1]
+== HostEvent v1 framework in Visual Embed SDK
+The HostEvent v1 framework will be deprecated in the ThoughtSpot Cloud 26.10.0.cl release version. The default behavior of host events and application workflows with the HostEvent v1 framework will be replaced with the HostEvent v2 framework.
+
+Impact on your instance::
+Embedding applications with integrations and workflows that use HostEvent objects to trigger actions will benefit from enhanced event handling, routing behavior, and payload validation. If your embedded interface includes multi-layered interactions, event routing will be context-aware and deterministic.
+Embedding applications with integrations and workflows that use HostEvent objects to trigger actions will experience improved event handling, routing behavior, and payload validation. If your embedded interface includes multi-layered interactions, event routing will be context-aware and deterministic. For more information, see xref:events-context-aware-routing.adoc[Context-based execution of host events].
+
+Recommended actions::
+If you are using the HostEvent v1 framework in your embed, ThoughtSpot recommends migrating to the HostEvent v2 framework in your development environment and evaluating the event behavior and impact on custom workflows and integrations. +
+For migration and feature rollout guidelines, refer to the xref:hosteventsv2-migration.adoc[HostEvent v2 migration guide].
+
[#v1-v2-exp-fullApp-embed]
== V1 and V2 navigation and home page experience in full app embed
Starting with ThoughtSpot 26.8.0.cl, the V3 navigation and home page experience will be set as the default UI experience in full application embedding. The V1 and V2 navigation and home page experience will be deprecated and will no longer be supported.
diff --git a/modules/ROOT/pages/embed-event-error-best-practices.adoc b/modules/ROOT/pages/embed-event-error-best-practices.adoc
new file mode 100644
index 000000000..e9bdc49f0
--- /dev/null
+++ b/modules/ROOT/pages/embed-event-error-best-practices.adoc
@@ -0,0 +1,433 @@
+= Handling embed errors
+:toc: true
+:toclevels: 2
+
+:page-title: Handling embed errors
+:page-pageid: handling-embed-errors
+:page-description: This document lists the best practices for handling error events.
+
+The ThoughtSpot Visual Embed SDK provides a layered approach to error
+handling. `EmbedEvent.Error` is a real-time outbound event emitted from the embedded ThoughtSpot iframe to the host application, signaling that something has gone wrong, either inside the SDK itself, inside the embedded app (the iframe), or as a result of an invalid HostEvent payload sent by the host.
+
+Unlike most embed events, which are cached and can be replayed on late subscribers, `EmbedEvent.Error` is not cached or replayed. Every emission is independent, and a handler must be registered before an error occurs to receive it.
+
+`EmbedEvent.Error` fires on a per-embed-component basis. Any handler must be registered before `render()` is called.
+
+== Trigger sources
+Embed errors surface through distinct channels for the following failure categories:
+
+* xref:embed-event-error-best-practices.adoc#_sdk_or_configuration_validation[SDK or configuration validation]
+* xref:embed-event-error-best-practices.adoc#_hostevent_validation[HostEvent validation errors]
+* xref:embed-event-error-best-practices.adoc#_runtime_filter_or_cross_filter_errors[Runtime filter validation errors]
+* xref:embed-event-error-best-practices.adoc#_network_events[Network events]
+
+=== SDK or configuration validation
+
+When SDK or configuration errors occur, the internal `handleError(error)` method in the embed component:
+
+1. Sets `isError = true` and permanently blocks future `renderIFrame` calls on this instance.
+2. Calls `executeCallbacks(EmbedEvent.Error, { error })`.
+3. Logs via `logger.error(error)`.
+
+[cols="2,3", options="header"]
+|===
+| Condition | Error message emitted
+
+| `init()` was not called before `render()`
+| `"Looks like render was called before calling init..."`
+
+| Both `hiddenActions` and `visibleActions` passed
+| `"You cannot have both hidden actions and visible actions"`
+
+| Both `hiddenTabs` and `visibleTabs` passed
+| `"You cannot have both hidden Tabs and visible Tabs"`
+
+| `trigger()` called before `render()`
+| `"Please call render before triggering events"`
+
+| `trigger()` called with undefined event type
+| `"Host event type is undefined"`
+
+| Auth failure during `renderIFrame`
+| The caught auth/login error object
+|===
+
+=== HostEvent validation
+
+When the host sends a HostEvent with an invalid payload or a context mismatch, the event bridge validates it against the HostEvent schema. On failure, `dispatchValidationError()` is triggered to emit `EmbedEvent.Error` with code `embedErrorCodes.HOST_EVENT_VALIDATION`.
+
+[source,json]
+----
+{
+ "type": "ValidationError",
+ "code": "HOST_EVENT_VALIDATION",
+ "message": ""
+}
+----
+
+[IMPORTANT]
+====
+If `shouldBypassPayloadValidation: true`, validation failures are silently logged as console warnings and never reach your `EmbedEvent.Error` handler.
+====
+
+=== Runtime filter or cross-filter errors
+Filter operations can fail inside the iframe with typed errors:
+
+[cols="2,3", options="header"]
+|===
+| `eventErrorType` | Typical message pattern
+
+| `SingleValueFilter`
+| `"Filter {name}: Cannot pass multiple filtering elements to this single value filter."`
+
+| `NonExistFilter`
+| `"UpdateFilters could not update the filter on {name} as it is not an existing filter..."`
+
+| `InvalidDateValue`
+| `"UpdateFilters could not update the filter on {name} as invalid date value provided."`
+
+| `InvalidOperator`
+| `"UpdateFilters could not update the filter on {name} as invalid operator value provided."`
+
+| `WrongVizId`
+| `"UpdateCrossFilters could not update the filter as invalid VizId value provided."`
+
+| `NotAWorksheet`
+| `"UpdateCrossFilters could not update the filter as VizId does not consist any worksheet."`
+
+| `NoFilterableColumnPresent`
+| `"Could not apply CrossFilter..."`
+
+| `filterExistsOrNoAttributeColumn`
+| `"UpdateCrossFilters could not update the filter as column is not an attribute..."`
+
+| `InvalidColumnId`
+| `"Invalid ColumnId provided"`
+
+| `Fullscreen`
+| `"Failed to enable fullscreen, This may be happening because there was no user interaction..."`
+
+| `NoActivePersonalisedViewsError`
+| `"No Personalized Liveboard view is selected."`
+
+| `PersonalisedViewNotFound`
+| `"No Personalised View found matching the provided viewId or viewName."`
+|===
+
+=== Network events
+
+A global `window.offline` listener emits `EmbedEvent.Error` with a different payload shape:
+
+[source,json]
+----
+{
+ "offlineWarning": "Network not Detected. Embed is offline. Please reconnect and refresh"
+}
+----
+
+== Error types
+
+The `EmbedEvent.Error` is fired when the following types of errors occur:
+
+[cols="2,3", options="header"]
+|===
+|Error type| Description
+|`API` a| API call failure error. This error event occurs when an API request is blocked.
+Example:
+[source,JavaScript]
+----
+SearchEmbed.on(EmbedEvent.Error, (error) => {
+ console.log(error);
+ // { type: "Error", data: { errorType: "API", error: { message: '...', error: '...' } } }
+});
+----
+|`FULLSCREEN` a| Error in presenting a Liveboard or visualization in full-screen mode.
+
+[source,JavaScript]
+----
+LiveboardEmbed.on(EmbedEvent.Error, (error) => {
+ console.log(error);
+ // { type: "Error", data: { errorType: "FULLSCREEN", error: {
+ // message: "Fullscreen mode is not available",
+ // } }}
+})
+----
+|`SINGLE_VALUE_FILTER` a| Error in updating filter values. This error occurs when a single-value filter is applied to a Liveboard and the user tries to update this filter with multiple values.
+
+[source,JavaScript]
+----
+LiveboardEmbed.on(EmbedEvent.Error, (error) => {
+ console.log(error);
+ // { type: "Error", data: { errorType: "SINGLE_VALUE_FILTER", error: {
+ // message: "Filter {filter_name}: Cannot pass multiple filtering elements to this single value filter.",
+ // } }}
+})
+----
+|`NON_EXIST_FILTER` a| Error in applying filter due to a non-existent filter.
+
+[source,JavaScript]
+----
+LiveboardEmbed.on(EmbedEvent.Error, (error) => {
+ console.log(error);
+ // { type: "Error", data: { errorType: "NON_EXIST_FILTER", error: {
+ // message: "UpdateFilters could not update the filter on {filter_name} as it is not an existing filter in the Liveboard. Please edit the Liveboard and add {filter_name} as a filter chip in order to update it programmatically.",
+ // } }}
+})
+----
+|`INVALID_DATE_VALUE` a| Error due to an invalid date value in a filter. For example, if the column name is `Commit Date` and a correct date value is not specified, the `INVALID_DATE_VALUE` error event is fired.
+
+[source,JavaScript]
+----
+LiveboardEmbed.on(EmbedEvent.Error, (error) => {
+ console.log(error);
+ // { type: "Error", data: { errorType: "INVALID_DATE_VALUE", error: {
+ // message: "UpdateFilters could not update the filter on {filter_name} as invalid date value provided.",
+ // } }}
+})
+----
+|`INVALID_OPERATOR` a|Error due to an invalid operator in filter properties. For example, if you try to apply filters on the `Revenue` column with the operator as `LT` and specify multiple values, it may result in an error.
+
+[source,JavaScript]
+----
+LiveboardEmbed.on(EmbedEvent.Error, (error) => {
+ console.log(error);
+ // { type: "Error", data: { errorType: "INVALID_OPERATOR", error: {
+ // message: "UpdateFilters could not update the filter on {filter_name} as invalid operator value provided.",
+ // } }}
+})
+----
+|===
+
+== Payload shapes
+
+[source,typescript]
+----
+// SDK / auth error
+{ error: string | Record }
+
+// HostEvent validation error
+{ type: string; code: string; message: string }
+
+// Filter / runtime error (from embedded app)
+// — matches one of the eventErrorType patterns above
+
+// Network offline
+{ offlineWarning: string }
+----
+
+== How to subscribe
+
+[source,typescript]
+----
+import { LiveboardEmbed, EmbedEvent } from '@thoughtspot/visual-embed-sdk';
+
+const embed = new LiveboardEmbed('#container', {
+ liveboardId: 'your-liveboard-id',
+});
+
+// Register BEFORE render() — errors can fire during initialization
+embed.on(EmbedEvent.Error, (payload) => {
+
+ // SDK/auth error
+ if (payload?.error) {
+ console.error('[SDK Error]', payload.error);
+ return;
+ }
+
+ // HostEvent validation error (your payload is malformed)
+ if (payload?.code === 'HOST_EVENT_VALIDATION') {
+ console.error('[HostEvent validation failed]', payload.message);
+ return;
+ }
+
+ // runtime filter/action error from the iframe
+ console.warn('[Embed runtime error]', payload);
+
+ // network offline
+ if (payload?.offlineWarning) {
+ showOfflineBanner(payload.offlineWarning);
+ return;
+ }
+});
+
+embed.render();
+----
+
+
+
+////
+=== Recovery after an error
+
+Once `handleError` fires, the embed instance sets `isError = true` and all future
+`renderIFrame` calls are silently skipped. To recover, you must destroy the existing
+instance and create a new one:
+
+[source,typescript]
+----
+embed.on(EmbedEvent.Error, async (payload) => {
+ logError(payload);
+
+ if (isRecoverable(payload)) {
+ embed.destroy(); // removes window listeners and DOM node
+
+ const freshEmbed = new LiveboardEmbed('#container', viewConfig);
+ freshEmbed.on(EmbedEvent.Error, errorHandler);
+ await freshEmbed.render();
+ }
+});
+----
+////
+
+== Handling errors
+The following example shows the sample code for handling errors.
+
+[source,typescript]
+----
+import { HostEvent } from '@thoughtspot/visual-embed-sdk';
+
+try {
+ const result = await embed.trigger(HostEvent.UpdateRuntimeFilters, [
+ { columnName: 'Region', operator: 'EQ', values: ['West'] },
+ ]);
+
+ // Timeout is a resolve, not a reject — check explicitly
+ if (result instanceof Error) {
+ console.error('HostEvent timed out:', result.message);
+ return;
+ }
+
+ console.log('HostEvent succeeded:', result);
+
+} catch (err) {
+ // Rejection = iframe returned an explicit error in the response
+ console.error('HostEvent rejected by iframe:', err);
+}
+----
+
+=== Error handling guidelines
+
+[cols="2,4", options="header"]
+|=====
+| Error category | Detection and recovery
+
+| SDK init config error
+
+a|**Detection mechanism**: `EmbedEvent.Error` +
+
+**Payload/data**: `{ error: string }`
+
+**Recovery action**: Fix configuration. Recreate and render embed.
+
+| Auth failure (SDK layer)
+a|
+**Detection mechanism**: `AuthStatus.FAILURE` on init emitter
+
+**Payload/data**: `AuthFailureType`
+
+**Recovery action**: Check `getAuthToken` and credentials. Use `suppressErrorAlerts` for custom UI.
+
+| Auth failure (iframe layer)
+
+a|
+**Detection mechanism**: `EmbedEvent.AuthFailure` +
+
+**Recovery action**: Show login prompt. Recreate and render embed.
+
+| Session expired
+
+a|**Detection mechanism**: `EmbedEvent.AuthExpire`
+
+**Recovery action**: Refresh token. Use `autoLogin: true` for a transparent refresh.
+
+| Idle session timeout
+
+a|**Detection mechanism**: `EmbedEvent.IdleSessionTimeout` and `AuthStatus.FAILURE(IDLE_SESSION_TIMEOUT)`
+
+**Recovery action**: Use `autoLogin: true`. Prompt re-authentication.
+
+|Third-party cookies blocked
+
+a|**Detection mechanism**: `EmbedEvent.NoCookieAccess` and `AuthStatus.FAILURE(NO_COOKIE_ACCESS)`
+
+**Recovery action**: Switch to `TrustedAuthTokenCookieless`. Use `ignoreNoCookieAccess: true` to suppress alert.
+
+| User logout
+a|**Detection mechanism**: `EmbedEvent.AuthLogout` and `AuthStatus.LOGOUT`
+
+**Recovery action**: Redirect to login or clear state
+
+| Duplicate token
+a|**Detection mechanism**: `AuthStatus.FAILURE(SDK)` and `alert()` (suppressible)
+
+**Payload/data**: `DUPLICATE_TOKEN_ERR` string
+
+**Recovery action**: Always return a fresh token from `getAuthToken`.
+
+| Invalid token
+a|**Detection mechanism**: `AuthStatus.FAILURE(SDK)` and `logger.error`
+
+**Payload/data**: `INVALID_TOKEN_ERROR` string
+
+**Recovery action**: Verify token generation on the server.
+
+| Network offline
+a| **Detection mechanism**: `EmbedEvent.Error`
+
+**Payload/data**: `{ offlineWarning: string }`
+
+**Recovery action**: Show offline UI. Reconnect and reload.
+
+| HostEvent validation error
+a|**Detection mechanism**: `EmbedEvent.Error`
+
+**Payload/data**: `{ type, code: "HOST_EVENT_VALIDATION", message }`
+
+**Recovery action**: Fix the `HostEvent` payload; enable `useHostEventsV2: true` in development
+
+| HostEvent timeout (30 seconds)
+a|**Detection mechanism**: `trigger()` resolves with `Error`
+
+**Payload/data**: `Error("Trigger timed-out...")`
+
+**Recovery action**: Check if iframe is still mounted. Call `reload()` if needed
+
+| HostEvent iframe rejection
+a|**Detection mechanism**: `trigger()` rejects
+
+**Payload/data**: Error from iframe
+
+**Recovery action**: Inspect the rejection payload; see HostEvent validation error above
+
+| Filter errors at runtime
+a|**Detection mechanism**: `EmbedEvent.Error`
+
+**Payload/data**: `eventErrorType` message string
+
+**Recovery action**: Fix filter parameters. Validate against current Liveboard/answer filters.
+|=====
+
+== Best practices
+
+* Always register an event listener for `EmbedEvent.Error` on your embed instance to capture and handle errors emitted by the embedded ThoughtSpot application. Register `EmbedEvent.Error` before calling `render()`.
+* Inspect and categorize error payloads. The error event provides a payload with fields such as errorType, message, and code. Do not assume that `payload.error` always exists in `EmbedEvent.Error`. Offline errors use `offlineWarning`; validation errors use `code`.
+* Do not destroy the embed on errors. First, inspect the errors to determine if you need to display host fallback pages. Not all events are fatal. ThoughtSpot handles some failures internally, so only take action if necessary based on the specific error and event type.
+* Provide contextual and user-friendly error messages based on the errorType and error details. Avoid exposing raw error objects or stack traces to your application users.
+* Enable `useHostEventsV2: true` in development/staging to surface `HostEvent` payload errors early.
+* Log errors for diagnostics.
+* Simulate different error scenarios during development. For example, network failures and invalid filters to ensure the error handling logic works as expected.
+* Do not set `shouldBypassPayloadValidation: true` in production environments. Validation errors become invisible console warnings.
+* Do not call `trigger()` before `render()`; calling it before `render()` returns `null`.
+
+== Try it out in the Visual Embed Playground
+Try out the embed events in the +++ Visual Embed Playground +++ and preview changes.
+
+[.widthAuto]
+[.bordered]
+image::./images/embed-event-playground.png[Try Embed events in Playground]
+
+== Additional resources
+
+* To identify and log errors, use the error types and error codes. For more information, see xref:EmbedErrorDetailsEvent.adoc[EmbedErrorDetailsEvent] and xref:EmbedErrorCodes.adoc[EmbedErrorCodes].
+* For information about the supported event objects and examples, see xref:EmbedEvent.adoc[EmbedEvent].
+
+
diff --git a/modules/ROOT/pages/embed-pinboard.adoc b/modules/ROOT/pages/embed-pinboard.adoc
index eaae64319..d8a246b78 100644
--- a/modules/ROOT/pages/embed-pinboard.adoc
+++ b/modules/ROOT/pages/embed-pinboard.adoc
@@ -6,7 +6,7 @@
:page-pageid: embed-liveboard
:page-description: You can use the LiveboardEmbed SDK library to embed a ThoughtSpot Liveboard in your app and use it for live insights
-This page explains how to embed a ThoughtSpot Liveboard in your Web page, portal, or application.
+This page explains how to embed a ThoughtSpot Liveboard in your web page, portal, or application.
A ThoughtSpot Liveboard is an interactive dashboard that presents a collection of visualizations pinned by a user.
@@ -64,7 +64,7 @@ For more information about the Liveboard embed object, classes, methods, interfa
== Customize Liveboard view
-The `LiveboardEmbed` component includes the `xref:LiveboardViewConfig.adoc[LiveboardViewConfig]` object. This object provides various attributes and properties to customize the xref:css-customization.adoc[look and feel of the Liveboard page], xref:embed-actions.adoc[control the visibility of menu actions] and features, and xref:embed-events.adoc[manage interactions between the host and embedded app].
+The `LiveboardEmbed` component includes the `xref:LiveboardViewConfig.adoc[LiveboardViewConfig]` object. This object provides various attributes and properties to xref:css-customization.adoc[customize the look and feel of the Liveboard page], xref:embed-actions.adoc[control the visibility of menu actions] and features, and xref:embed-events.adoc[manage interactions between the host and embedded app].
The most common customization is controlling the visibility of menu items in the embedded view by configuring the `disabledActions`, `hiddenActions`, and `visibleActions` properties with an array of xref:Action.adoc[Action] IDs. For information about the other frequently used properties, see xref:embed-pinboard.adoc#common-customizations[common customization options].
@@ -94,16 +94,16 @@ liveboardEmbed.render();
----
== Verify the embedded object
-. Load the embedded object in your app. If the embedding is successful, you will see a Liveboard page with visualizations.
+. Load the embedded object in your app. If the embedding is successful, you see a Liveboard page with visualizations.
+
[.bordered]
image::./images/embed-lb.png[Liveboard embed]
-. Explore the charts and tables, and verify if objects render and show the desired data.
+. Explore the charts and tables, and verify that objects render and show the desired data.
[#common-customizations]
== Common customization options
-The *xref:LiveboardViewConfig.adoc[LiveboardViewConfig]* object includes several properties and attributes that allow fine-grained control of the embedded experience. You can specify settings that enable or disable a specific feature, control visible or disabled menu elements and actions, set tabs and layout preferences, manage filters, hide header, and more.
+The *xref:LiveboardViewConfig.adoc[LiveboardViewConfig]* object includes several properties and attributes that allow fine-grained control of the embedded experience. You can specify settings that enable or disable a specific feature, control visible or disabled menu elements and actions, set tabs and layout preferences, manage filters, hide header, and more.
=== Show/hide large UI elements
Parameters such as `hideLiveboardHeader`, `hideTabPanel`, `isLiveboardHeaderSticky`, `showLiveboardTitle`, and `showLiveboardDescription` control various aspects of the standard embedded Liveboard experience. Note the phrasing of the property name and the description in the documentation to understand whether `true` enables or disables the particular feature.
@@ -113,9 +113,9 @@ Parameters such as `hideLiveboardHeader`, `hideTabPanel`, `isLiveboardHeaderStic
[.widthAuto]
image::./images/liveboard_view_config_callouts_2.png[LiveboardViewConfig parameters]
-The `hideLiveboardHeader` property removes the entire header area above the Liveboard, including filters and the overall Liveboard menu, which is a common pattern for "read-only" use cases or rebuilding your own menus and buttons using xref:embed-events.adoc[HostEvents].
+The `hideLiveboardHeader` property removes the entire header area above the Liveboard, including filters and the overall Liveboard menu, which is a common pattern for "read-only" use cases or for rebuilding your own menus and buttons using xref:embed-events.adoc[HostEvents].
-The following constructor will disable the __sticky header__, while showing the Liveboard title, which would be hidden by default:
+The following constructor disables the __sticky header__ and shows the Liveboard title, which is hidden by default:
[source,JavaScript]
----
@@ -132,7 +132,7 @@ const liveboardEmbed = new LiveboardEmbed(document.getElementById('ts-embed'), {
[NOTE]
====
-When `fullHeight` is set to `true`, the SDK ignores the `isLiveboardHeaderSticky:true` setting, and the Liveboard header will not be sticky.
+When `fullHeight` is set to `true`, the SDK ignores the `isLiveboardHeaderSticky:true` setting, and the Liveboard header is not sticky.
====
=== Customize Liveboard tabs
@@ -157,9 +157,9 @@ The `activeTabId` property is available only in the `LiveboardEmbed` package and
====
=== Reduce visible tabs and visualizations
-`visibleVizs` and `visibleTabs` allow for limiting the experience for certain users from a Liveboard with many more elements.
+`visibleVizs` and `visibleTabs` allow you to limit the experience for certain users on a Liveboard with many more elements.
-For example, a template Liveboard with many different KPIs could be reduced down to a smaller set by giving a user an interface to select the particular visualizations to show, storing their selections, and using that saved set of visualization GUIDs as the array for `visibleVizs` on page load (there is an equivalent xref:embed-events.adoc[HostEvent] called `SetVisibleVizs` to make an update after the Liveboard has loaded).
+For example, a template Liveboard with many different KPIs could be reduced to a smaller set by giving a user an interface to select the particular visualizations to show, storing their selections, and using that saved set of visualization GUIDs as the array for `visibleVizs` on page load (there is an equivalent xref:embed-events.adoc[HostEvent] called `SetVisibleVizs` to make an update after the Liveboard has loaded).
[#noteTiles]
=== Add Note tiles
@@ -170,8 +170,8 @@ You can add a link:https://docs.thoughtspot.com/cloud/latest/liveboard-notes[Liv
* If you are adding links and images from an external site, or embedding multimedia or a web page in an iFrame, make sure the URLs are added to CORS and CSP allowlists. For more information, see xref:security-settings.adoc[Security settings].
=== Redefine Liveboard breakpoint widths
-When turned on, the `enable2ColumnLayout` allows for customising the Liveboard breakpoint width for embedded users.
-The current 12 column layout changes to 2 columns per row at 1024px, and to 1 column per row layout at 630px in the new Liveboard experience. Once enabled, these breakpoints would apply to all Liveboards in the ThoughtSpot instance, and cannot be set only for individual Liveboards.
+When enabled, the `enable2ColumnLayout` allows customizing the Liveboard breakpoint width for embedded users.
+The current 12 column layout changes to 2 columns per row at 1024px, and to 1 column per row layout at 630px in the new Liveboard experience. Once enabled, these breakpoints apply to all Liveboards in the ThoughtSpot instance, and cannot be set only for individual Liveboards.
These breakpoint widths are customisable for the embedded customers. Contact ThoughtSpot support for assistance with customisation.
@@ -216,7 +216,7 @@ You can also pin a visualization to a Liveboard tab using the **Pin** action on
=== Customize filters
-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.
+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 at load time.
==== Customizing filter visibility
To hide filters in an embedded Liveboard, you can use the following options:
@@ -249,7 +249,102 @@ Use the following host events in the Visual Embed SDK to update filters:
* link:https://developers.thoughtspot.com/docs/Enumeration_HostEvent#_updateruntimefilters[`HostEvent.UpdateRuntimeFilters`] to update runtime filters
* link:https://developers.thoughtspot.com/docs/Enumeration_HostEvent#_updatecrossfilter[`HostEvent.UpdateCrossFilter`]
-For more information and examples, see xref:filters_overview.adoc#_updating_filters_using_host_events[Updating filters] and xref:filters_overview.adoc#_updating_date_filters[Updating date filters].
+For more information and examples, see xref:filters_overview.adoc[Filter types and application layers].
+
+== Liveboard download options
+
+Embedding application users can download Liveboards in the PDF, XLSX, and CSV formats. If the `isContinuousLiveboardPDFEnabled` is set to `true`, users can download the PDF with a continuous layout as seen in the UI, with each tab on a single page. When this parameter is set to `false`, users can download the Liveboard PDF in the A4 format with a paginated view.
+
+[NOTE]
+====
+Starting with the 26.5.0.cl and Visual Embed SDK version 1.48.x, the new multi-format download experience is available on embedded Liveboards and can be enabled using the `isContinuousLiveboardPDFEnabled` and `isLiveboardXLSXCSVDownloadEnabled` parameters. The `Download` action in the Liveboard's more options menu is controlled by `Action.DownloadLiveboard` instead of `Action.Download` and `Action.DownloadAsPdf`.
+====
+
+=== Download actions and behavior
+
+[width=100%, cols="2,2,4"]
+[options='header']
+|=====
+| Download actions
+| SDK parameter
+| Action ID for show/hide control
+| **Download** menu action
+| Enabled by default.
+a| Use the `Action.DownloadLiveboard` to show, hide, or disable the Download action in the menu.
+| Continuous PDF
+|`isContinuousLiveboardPDFEnabled` +
+Enables or disables the continuous PDF option in Liveboard downloads
+a| Use the `Action.DownloadLiveboardAsContinuousPDF` action ID to show or hide the **PDF (Continuous)** option in the **Download** modal.
+
+| XLSX download
+| `isLiveboardXLSXCSVDownloadEnabled` +
+Enables the XLSX and CSV download options in the Download modal.
+a|`Action.DownloadLiveboardAsXlsx` - action ID to show or hide the XLSX option in the **Download** modal.
+
+| CSV download
+a| `isLiveboardXLSXCSVDownloadEnabled` +
+Enables the XLSX and CSV download options in the Download modal.
+a|`Action.DownloadLiveboardAsCsv` - action ID to show, hide, or disable the CSV option in the **Download** modal.
+|=====
+
+=== Example
+
+The following example enables the **PDF (Continuous)**, **XLSX**, and **CSV** options in the Liveboard **Download** modal.
+
+[source,javascript]
+----
+const embed = new LiveboardEmbed('#tsEmbed', {
+ isContinuousLiveboardPDFEnabled: true,
+ isLiveboardXLSXCSVDownloadEnabled: true,
+});
+----
+
+To hide or disable the download options, specify the following action IDs:
+
+[source,javascript]
+----
+const embed = new LiveboardEmbed('#tsEmbed', {
+ //...
+ hiddenActions: [
+ Action.DownloadLiveboard, // Hides the Download parent action from the more options menu
+ Action.DownloadLiveboardAsContinuousPDF, // Hides the Continuous PDF download option from the Download modal
+ Action.DownloadLiveboardAsCsv, // Hides the CSV download option from the Download modal
+ Action.DownloadLiveboardAsXlsx // Hides the XLSX download option from the Download modal
+ ],
+ // Use either `hiddenActions` or visibleActions, not both, to avoid errors
+ //visibleActions: [
+ //Action.DownloadLiveboard, // Shows the Download parent action in the more options menu
+ //Action.DownloadLiveboardAsContinuousPDF, // Shows the Continuous PDF download option
+ //Action.DownloadLiveboardAsCsv, // Shows the CSV download option
+ //Action.DownloadLiveboardAsXlsx // Shows the XLSX download option
+ //]
+});
+----
+
+[source,javascript]
+----
+const embed = new LiveboardEmbed('#tsEmbed', {
+ //...
+ disabledActions: [
+ Action.DownloadLiveboard,// Disables the Download parent action in the more options menu
+ Action.DownloadLiveboardAsContinuousPDF, // Disables the Continuous PDF download option in the Download modal
+ Action.DownloadLiveboardAsCsv, // Disables the CSV download option in the Download modal
+ Action.DownloadLiveboardAsXlsx, // Disables the XLSX download option in the Download modal)
+ ],
+});
+----
+
+=== HostEvent workflow for the download actions
+Use the HostEvent IDs to trigger download actions on an embedded Liveboard.
+
+* `HostEvent.DownloadLiveboardAsContinuousPDF` +
+To open the **Download** modal with the continuous PDF download option selected.
+* `HostEvent.DownloadAsPdf` +
+To trigger the standard PDF (A4) download action.
+* `HostEvent.DownloadAsXlsx` +
+To open the **Download** modal with the XLSX option selected when the `isLiveboardXLSXCSVDownloadEnabled` is enabled in the embed view.
+* `HostEvent.DownloadAsCsv` +
+To open the **Download** modal with the CSV option selected when `isLiveboardXLSXCSVDownloadEnabled` parameter is enabled in the embed view.
////
@@ -350,9 +445,9 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
=== Liveboard grouping and styling [earlyAccess eaBackground]#Early Access#
You can now create a visual group of Answers and note tiles together in the Liveboard. You can select multiple Answers and notes in the Liveboard editor. You can also style parts of the Liveboard, groups and Answers with the new styling panel.
To enable this feature, set `isLiveboardMasterpiecesEnabled` to `true`.
-It is important to note the following changes which happen in the Liveboard UI and layout when this feature is active.
+Note the following changes that occur in the Liveboard UI and layout when this feature is enabled.
-* All tiles on the Liveboard will now have a default border and an increased border-radius, resulting in more pronounced curved corners. This is part of the broader visualization tile customization options done to enhance the visual appearance of charts and tables.
+* All tiles on the Liveboard will now have a default border and an increased border-radius, resulting in more pronounced curved corners. This is part of the broader visualization tile customization options to enhance the visual appearance of charts and tables.
* For Note tiles, the default scrollbar is now hidden for long content. Users must scroll within the tile area itself, and if the tile is not sized appropriately for its content, it may appear clipped due to the new container styles. This change emphasizes the importance of properly sizing Note tiles to avoid content being visually cut off.
* If a Liveboard is saved with Groups in the ThoughtSpot interface, but the embedding code does not have the grouping and styling feature enabled, the Liveboard will fail to load and throw an error.
+
diff --git a/modules/ROOT/pages/filters_overview.adoc b/modules/ROOT/pages/filters_overview.adoc
index d77f3b1a5..0d78adf4b 100644
--- a/modules/ROOT/pages/filters_overview.adoc
+++ b/modules/ROOT/pages/filters_overview.adoc
@@ -1,4 +1,4 @@
-= Filters overview
+= Filter types and application layers
:toc: true
:toclevels: 2
@@ -6,9 +6,9 @@
:page-pageid: filters-overview
:page-description: ThoughtSpot has several layers of filters which have an order of precedence and different events
-ThoughtSpot Embedded provides a robust filtering framework for Liveboards, Answers, visualizations, and other ThoughtSpot objects with multiple filter types and layered application logic. Filters can be configured using the Visual Embed SDK events and parameters when embedding, applied at runtime, or via UI-driven workflows.
+ThoughtSpot Embedded provides a robust filtering framework for Liveboards, Answers, visualizations, and other ThoughtSpot objects with multiple filter types and layered application logic. Filters can be configured using Visual Embed SDK events and parameters at embed time, applied at runtime, or set through UI-driven workflows.
-== Filter types and application layers
+== Overview
The behavior of each filter type and the mechanism for setting filters can differ widely.
There are different types of filters, which can be applied in the following order:
@@ -19,11 +19,11 @@ RLS rules can also be used, along with custom variables and the JSON Web Token (
2. **Data Model filters** +
Models can have parameters, formulas, and filters. +
-Embedding application users cannot affect the formulas or filters, which are always applied, but Parameters used in a formula can be set by other methods. +
+Embedding application users cannot affect the formulas or filters, which are always applied, but parameters used in a formula can be set by other methods. +
If the user can edit the parameter, use the runtime parameters layer to programmatically set its value.
3. xref:runtime-filters.adoc[Runtime filters] and xref:runtime-parameters.adoc[Runtime Parameters] +
-You can define xref:runtime-filters.adoc[runtime filters] and xref:runtime-parameters.adoc[runtime parameters] within the browser for a given object at load time. Filters and parameters can be set using the Visual Embed SDK, REST API, or URL query parameters and updated via host events in the Visual Embed SDK.
+You can define xref:runtime-filters.adoc[runtime filters] and xref:runtime-parameters.adoc[runtime parameters] in the browser for a given object at load time. Filters and parameters can be set using the Visual Embed SDK, REST API, or URL query parameters and updated via host events in the Visual Embed SDK.
+
[NOTE]
====
@@ -39,24 +39,24 @@ Cross filters are ad-hoc filters based on user selection. These filters are used
Cross filters are supported only on attribute columns.
6. link:https://docs.thoughtspot.com/cloud/latest/filters[Search query filters, window=_blank] +
-Set via the search query string in Answers and visualizations, not visible as UI filter components on a Liveboard, but can be viewed in **Explore** or *Edit* modes. +
+Set via the search query string in Answers and visualizations, not visible as UI filter components on a Liveboard, but can be viewed in *Explore* or *Edit* modes. +
The lowest layer of filters is defined in the search query for a given Answer or visualization on a Liveboard. +
The link:https://docs.thoughtspot.com/cloud/latest/filters[filter terms, window=_blank] are saved as part of the `search_query` of the object, visible in TML.
== Filter attributes
When specifying a column for filtering, you must use the exact column name as defined in the model. Filters can be applied to string, number, boolean, Date, Datetime, and time data types.
-For the `DATE` and `DATE_TIME` data types, some filter types may require the date and time values to be specified in the Epoch time format.
+For the `DATE` and `DATE_TIME` data types, some filter types may require the date and time values to be specified in epoch time format.
All operations result in a `WHERE` clause being applied to the queries generated by ThoughtSpot, or no query being issued if the logic is always false.
A data filter object in ThoughtSpot typically includes the following attributes:
-`column`, `columnName`, or `columnId`::
+`column`, `columnName`, **or** `columnId`::
The name of the column to filter on. For example, `item type` or `product`. The column value must match the actual column name in the ThoughtSpot model. If the model uses column aliases, use the base column name, not the alias. This attribute is defined as `col1`, `col2`, `col3` in the object URLs and REST API requests, as `columnName` in the `runtimeFilters` array in the Visual Embed SDK. The filter object for host events in the SDK allows `column` or `columnName`.
+
If there are multiple columns with the same name, you can use the `WORKSHEET_NAME::COLUMN_NAME` format; for example, `"(Sample) Retail - Apparel::city"`.
-`oper` or `operator`::
+`operator`, `oper`, or `op`::
The supported operators include:
+
[width="80%" cols="1,2,2"]
@@ -116,12 +116,12 @@ The supported operators include:
| between non-inclusive
| 2
-|`IN`
-|is included in this list of values
-|multiple
-|`NOT_IN`
-|is not included in this list of values
-|multiple
+| `IN`
+| is included in this list of values
+| multiple
+| `NOT_IN`
+| is not included in this list of values
+| multiple
|===
values::
@@ -174,20 +174,22 @@ Any data restrictions resulting from filter rules will be seen in the visible fi
== Applying filters before and after load
-* xref:runtime-filters.adoc[Runtime filters] can be applied at load via Visual Embed SDK, REST API, or URL parameters.
-* Liveboard filters cannot be applied at load. However, they can be updated using `HostEvent.UpdateFilters` in the SDK.
-* Search query filters can be applied at load by specifying them in the initial search query when embedding an Answer or Spotter session. For example, in Spotter embed, you can use the `searchQuery` property to set a pre-defined search (including filters) at load.
-+
-When you view an Answer or visualization in *Edit* mode, the filter UI for search query filters appears above the chart or table. These filters are not shown on a Liveboard. If a Liveboard filter is applied to the same column as a search query filter, the Liveboard filter will override the search query filter values.
+xref:runtime-filters.adoc[Runtime filters] can be applied at load via Visual Embed SDK, REST API, or URL parameters.
+
+Liveboard filters cannot be applied at load. However, they can be updated using `HostEvent.UpdateFilters` in the SDK.
+
+Search query filters can be applied at load by specifying them in the initial search query when embedding an Answer or Spotter session. For example, in Spotter embed, you can use the `searchQuery` property to set a pre-defined search (including filters) at load.
+
+When you view an Answer or visualization in *Edit* mode, the filter UI for search query filters appears above the chart or table. These filters are not shown on a Liveboard. If a Liveboard filter is applied on the same column as a search query filter, the Liveboard filter overrides the search query filter values.
=== Cross filters
Liveboard users can apply filters across all visualizations based on the current selection using the *Filter* menu option from the contextual menu. For more information, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-filters-cross[Liveboard cross filter, window=_blank].
-If the column already has a Liveboard filter and the user applies cross filters, the cross filter replaces the values in the currently applied Liveboard filter. If there is no Liveboard filter applied to a column and the user applies a cross filter, a new filter chip with cross filter values is displayed in the header area. This filter chip is removed when the cross filter is cleared.
+If the column already has a Liveboard filter and the user applies cross filters, the cross filter replaces the values in the currently applied Liveboard filter. If there is no Liveboard filter applied on a column and the user applies a cross filter, a new filter chip with cross filter values is displayed in the header area. This filter chip is removed when the cross filter is cleared.
Whenever any user action affects a cross filter, a link:https://developers.thoughtspot.com/docs/Enumeration_EmbedEvent#_crossfilterchanged[EmbedEvent.CrossFilterChanged] fires, which can then be used to trigger a specific action.
-== Updating filters using host events
+== Updating filters using host events in Visual Embed SDK
There is no programmatic way to adjust the filter values before loading the Liveboard, but there are events that can adjust the values after the Liveboard is rendered.
=== OpenFilter event
@@ -195,12 +197,12 @@ If you have hidden the Liveboard header, you can trigger the action of opening a
[source,JavaScript]
----
-LiveboardEmbed.trigger(HostEvent.OpenFilter,
+liveboardEmbed.trigger(HostEvent.OpenFilter,
{ columnId: ''})
----
=== UpdateFilters event
-The link:https://developers.thoughtspot.com/docs/Enumeration_HostEvent#_updatefilters[HostEvent.UpdateFilters] directly updates the values of the target of an existing filter that's currently applied on a Liveboard:
+The link:https://developers.thoughtspot.com/docs/Enumeration_HostEvent#_updatefilters[HostEvent.UpdateFilters] directly updates the values of an existing filter currently applied on a Liveboard:
[source,JavaScript]
----
@@ -248,10 +250,10 @@ liveboardEmbed.trigger(HostEvent.UpdateCrossFilter, {
});
----
-== Updating date filters
+=== Updating date filters via host events
To update date filters in an embedded Liveboard, visualization, or saved answer, use `HostEvent.UpdateFilters`.
-When updating filters using `HostEvent.UpdateFilters`, you must include the date filter `type` along with the time period to apply a rolling or fixed time windows.
+When updating filters using `HostEvent.UpdateFilters`, you must include the date filter `type` along with the time period to apply rolling or fixed time windows.
[NOTE]
====
@@ -261,12 +263,13 @@ When updating filters using `HostEvent.UpdateFilters`, you must include the date
The following table lists the supported filter types and examples for each type:
-[width="100%" cols="3,5,8"]
+[width="100%" cols="3,8"]
[options='header']
|=====
-|Type| Description | Example
+|Type| Description
+
+| `YESTERDAY` a|
-| `YESTERDAY` | Specify the `type` as `YESTERDAY`. a|
[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
@@ -278,7 +281,7 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
}
});
----
-| `TODAY` | Specify the `type` as `TODAY`. a|
+| `TODAY` a|
[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
@@ -290,7 +293,7 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
}
});
----
-| `TOMORROW` | Specify the `type` as `TOMORROW`. a|
+| `TOMORROW` a|
[source,JavaScript]
----
@@ -304,7 +307,9 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
});
----
-|`EXACT_DATE` | Allows filtering column data to show details for the exact date, before or after the date. For example, to filter data for dates greater than `2023/07/31`, specify `2023/07/31` as value, with the filter operator as `GT`. a| [source,JavaScript]
+|`EXACT_DATE` a| Allows filtering column data to show details for the exact date, before or after the date. For example, to filter data for dates greater than `2023/07/31`, specify `2023/07/31` as value, with the filter operator as `GT`.
+
+[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filter: {
@@ -315,7 +320,8 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
}
});
----
-|`EXACT_DATE_RANGE` |Specify the start date and end date in the `values` array. Ensure that the start date is lower than the end date. For example, `"2023-01-31","2023-03-31"`. a|
+|`EXACT_DATE_RANGE`
+a|Specify the start date and end date in the `values` array. Ensure that the start date is lower than the end date. For example, `"2023-01-31","2023-03-31"`.
[source,JavaScript]
----
@@ -329,9 +335,9 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
});
----
-|`LAST_N_PERIOD` |Specify the period. You must include the `datePeriod` attribute based on the time period specified in the filter object. Valid values for `datePeriod` are `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `QUARTER`, and `YEAR`. For example, to filter column data by last 2 weeks, set `datePeriod` to `WEEK` and `values` to `2`.
+|`LAST_N_PERIOD` a|Specify the period. You must include the `datePeriod` attribute based on the time period specified in the filter object. Valid values for `datePeriod` are `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `QUARTER`, and `YEAR`. For example, to filter column data by last 2 weeks, set `datePeriod` to `WEEK` and `values` to `2`.
-a|[source,JavaScript]
+[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filter: {
@@ -345,9 +351,9 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
});
----
-|`NEXT_N_PERIOD` | Specify the period. You must include the `datePeriod` attribute based on the time period specified in the filter object. Valid values for `datePeriod` are `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `QUARTER`, and `YEAR`. For example, to filter column data by next 2 months, set `datePeriod` to `MONTH` and `values` to `2`.
+|`NEXT_N_PERIOD` a| Specify the period. You must include the `datePeriod` attribute based on the time period specified in the filter object. Valid values for `datePeriod` are `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `QUARTER`, and `YEAR`. For example, to filter column data by next 2 months, set `datePeriod` to `MONTH` and `values` to `2`.
-a|[source,JavaScript]
+[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filter: {
@@ -361,9 +367,9 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
});
----
-| `THIS_PERIOD` | Specify the period. You must include the `datePeriod` attribute based on the time period specified in the filter object. Valid values for `datePeriod` are `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `QUARTER`, and `YEAR`.
+| `THIS_PERIOD` a| Specify the period. You must include the `datePeriod` attribute based on the time period specified in the filter object. Valid values for `datePeriod` are `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `QUARTER`, and `YEAR`.
-a|[source,JavaScript]
+[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filter: {
@@ -376,9 +382,9 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
});
----
-| `PERIOD_TO_DATE` |Specify the period. You must include the `datePeriod` attribute based on the time period specified in the filter object. Valid values for `datePeriod` are `WEEK`, `MONTH`, `QUARTER`, and `YEAR`.
+| `PERIOD_TO_DATE` a|Specify the period. You must include the `datePeriod` attribute based on the time period specified in the filter object. Valid values for `datePeriod` are `WEEK`, `MONTH`, `QUARTER`, and `YEAR`.
-a|[source,JavaScript]
+[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filter: {
@@ -390,8 +396,9 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
}
});
----
-|`YEAR_ONLY` |Specify the year. For example, 2023.
-a|[source,JavaScript]
+|`YEAR_ONLY` a|Specify the year. For example, 2023.
+
+[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filter: {
@@ -403,8 +410,9 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
});
----
-| `MONTH_YEAR` |Specify the month and year in the `values` array. For example, `"July","2023"`.
-a|[source,JavaScript]
+| `MONTH_YEAR` a|Specify the month and year in the `values` array. For example, `"July","2023"`.
+
+[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filter: {
@@ -416,9 +424,9 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
});
----
-|`QUARTER_YEAR` | Specify the quarter and year in the `values` array. For example, `"Q1","2023"`.
+|`QUARTER_YEAR` a| Specify the quarter and year in the `values` array. For example, `"Q1","2023"`.
-a|[source,JavaScript]
+[source,JavaScript]
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filter: {
@@ -431,6 +439,433 @@ liveboardEmbed.trigger(HostEvent.UpdateFilters, {
----
|=====
+[#_override_filters]
+== Overriding filters during Liveboard export via REST API
+
+The `override_filters` parameter on the Liveboard report API
+(`POST /api/rest/2.0/report/liveboard`) lets you programmatically override filters when exporting a Liveboard report. Filters specified here override any existing filters that are applied on the same columns in the Liveboard.
+
+The `override_filters` value is a JSON array of filter objects, with each object targeting one column.
+
+[source,json]
+----
+"override_filters": [
+ { ... },
+ { ... }
+]
+----
+
+[IMPORTANT]
+====
+* The `override_filters` accepts a JSON array directly, not an object that wraps the array.
+* Specifying two or more filter objects that target the same date column returns the error, `more than one filter objects are not allowed for date type column `. However, columns with other data type do not have this restriction. Multiple filter objects on the same non-date column are merged.
+====
+
+=== Filter object fields
+
+Each filter object in the JSON array has the following top-level fields:
+
+[cols="1,4", options="header"]
+|===
+|Field| Description
+|`column_name` a| Name of the column to filter. The `column_name` field accepts the display name of the column as it appears in the Liveboard's underlying data source. Matching is case-insensitive, so `"Order Date"`, `"ORDER DATE"`, and `"order date"` are all equivalent.
++
+If there are multiple columns with the same name, you can use the `WORKSHEET_NAME::COLUMN_NAME` format; for example, `"Sales Metrics::Order Date"`.
+
+NOTE: Column names must be used as qualifiers. Column GUIDs are not supported in the
+`override_filters` object.
+
+|`generic_filter` | Attribute or measure filter for columns with data type other than `date` or `datetime`. The `date_filter` and `generic_filter` attributes are mutually exclusive.
+
+|`date_filter` a| Date filter definition for the columns with `date` or `datetime` data type. For information about the supported attributes, see xref:#_date_filter_parameters[Date filter parameters].
+
+|`negate`
+|__Boolean__. When `true`, inverts the filter match condition. Instead of returning rows that match the filter condition, it returns rows that do not match it.
+|===
+
+=== Date filter parameters
+For `date_filter` objects, use the following table attributes as needed:
+
+[cols="1,4", options="header"]
+|===
+|Field| Description
+|`type` a|
+__String__. Valid values for fixed date filters include:
+
+* `EXACT_DATE` - A specific calendar date, or an inequality relative to a date.
+* `EXACT_DATE_RANGE` - A date range between two bounds (inclusive). +
+`date_range.low_epoch`, `date_range.high_epoch`, `op: BW_INC` only.
+* `MONTH_YEAR` - A specific month in a specific year.
+* `QUARTER_YEAR` - A specific quarter in a specific year.
+* `YEAR_ONLY` - An entire calendar year.
+
+Valid values for rolling date filters include: +
+
+* `YESTERDAY` - For previous calendar day.
+* `TODAY` - The current calendar day.
+* `TOMORROW` - The next calendar day.
+* `THIS_PERIOD` - The current period (for example, this quarter).
+* `NEXT_PERIOD` - The next single period (for example, next month).
+* `LAST_N_PERIOD` - The last _N_ complete periods.
+* `NEXT_N_PERIOD` - The next _N_ complete periods.
+* `PERIOD_TO_DATE` - From the start of the current period to now (for example, month-to-date).
+
+The following types are not supported:
+
+* `EXACT_TIME`
+* `EXACT_DATE_TIME`
+* `NOW`
+* `MONTH_ONLY`
+* `WEEKDAY_ONLY`
+* `QUARTER_ONLY`
+* `N_PERIOD_AGO`
+* `PERIOD_ONLY`
+
+
+|`datePeriod` a|
+
+For rolling date filters such as `LAST_N_PERIOD`, `NEXT_N_PERIOD`, `LAST_PERIOD`, `NEXT_PERIOD`, `THIS_PERIOD`, and `PERIOD_TO_DATE`, the `datePeriod` attribute is required. The `datePeriod` specifies the period.
+
+Valid values for `datePeriod` include:
+
+* `DAY` - Calendar day
+* `WEEK` - Calendar week
+* `MONTH` - Calendar month
+* `QUARTER` - Calendar quarter
+* `YEAR` - Calendar year
+* `HOUR` - Hour (`dateTime` columns only)
+* `MINUTE` - Minute (`datetime` columns only)
+* `SECOND` - Second (`datetime` columns only)
+
++
+[NOTE]
+====
+`HOUR`, `MINUTE`, and `SECOND` are valid only for columns that contain a time
+component. Use them only for the columns with DATE_TIME or TIME data type.
+====
+
+|`include_current_period` a|
+For `LAST_N_PERIOD` and `NEXT_N_PERIOD`, you can set the optional attribute `include_current_period` to include current day, week, month, quarter, year as specified in the `datePeriod` property. For example, if the current day is May 7, and you specify `LAST_N_PERIOD` with `datePeriod: MONTH` and `number: 3`, the `include_current_period: true` setting will include data for March, April, and May.
+
+
+|`op` a|
+Comparison operator. Valid values depend on `type`.
+
+* Use `EQ` for `YESTERDAY`, `TODAY`, `TOMORROW`, `PERIOD_TO_DATE`, `QUARTER_YEAR`, `MONTH_YEAR`, `YEAR_ONLY`.
+* The `LAST_PERIOD`, `NEXT_PERIOD`, `THIS_PERIOD`, `LAST_N_PERIOD`, `NEXT_N_PERIOD` and `EXACT_DATE` filter types support `EQ`, `LE`, `LT`, `GE`, and `GT`.
+* For `EXACT_DATE_RANGE`, use `BW_INC` only.
+
+|`number` a|
+Period count. Required when `type` is `LAST_N_PERIOD` or `NEXT_N_PERIOD`.
+Must be ≥ 0.
+
+|`epoch` a|
+Required when `type` is `EXACT_DATE`.
+
+|`low_epoch` and `high_epoch` a|
+Required for the `EXACT_DATE_RANGE` filter type. `low_epoch` must be lower than `high_epoch`.
+
+|`year_name` a|
+Four-digit year as a string (for example, `"2024"`). Required for `YEAR_ONLY`,
+`QUARTER_YEAR`, and `MONTH_YEAR`.
+
+|`quarter_name` a|
+Quarter identifier. Required for `QUARTER_YEAR`. Valid values are `Q1`, `Q2`, `Q3`, and `Q4`.
+
+|`month_name` a|
+Name of the month in uppercase. Required for `MONTH_YEAR`.
+|===
+
+=== Examples
+
+==== Generic filter example
+
+[source,JSON]
+----
+"override_filters":[
+ {
+ "column_name":"Item type",
+ "generic_filter":{
+ "op":"EQ",
+ "values":[
+ "Jackets",
+ "Bags"
+ ]
+ },
+ "negate":false
+ },
+ {
+ "column_name":"Region",
+ "generic_filter":{
+ "op":"IN",
+ "values":[
+ "west",
+ "midwest"
+ ]
+ },
+ "negate":false
+ }
+ ]
+----
+
+
+==== Combining date and attribute filters
+
+[source,json]
+----
+"override_filters": [
+ {
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "LAST_N_PERIOD",
+ "datePeriod": "MONTH",
+ "number": 3,
+ "op": "EQ"
+ }
+ },
+ {
+ "column_name": "Region",
+ "generic_filter": {
+ "op": "IN",
+ "values": ["West", "East"]
+ }
+ }
+]
+----
+
+
+==== Negated filter example
+
+[source,json]
+----
+"override_filters":[
+ {
+ "column_name": "Order Date",
+ "negate": true,
+ "date_filter": {
+ "type": "QUARTER_YEAR",
+ "op": "EQ",
+ "quarter_name": "Q1",
+ "year_name": "2026"
+ }
+}]
+----
+
+==== Datetime data type example
+
+[source,JSON]
+----
+"override_filters":[
+ {
+ "column_name":"Commit Date",
+ "date_filter":{
+ "datePeriod":"HOUR",
+ "number":3,
+ "type":"LAST_N_PERIOD",
+ "op":"EQ"
+ }
+ }
+]
+----
+
+==== Date filter examples
+Refer to the following table for examples of JSON object for date filters:
+
+[width="100%" cols="3,8"]
+[options='header']
+|=====
+|Date filter type | Example
+
+| `YESTERDAY` a|
+
+[source,json]
+----
+"override_filters":[
+ {
+ "column_name":"Order Date",
+ "date_filter":{
+ "type":"YESTERDAY",
+ "op":"EQ"
+ }
+ }
+]
+----
+
+| `TODAY` a|
+[source,json]
+----
+"override_filters":[
+ {
+ "column_name":"Order Date",
+ "date_filter":{
+ "type":"TODAY",
+ "op":"EQ"
+ }
+ }
+]
+----
+| `TOMORROW` a|
+
+[source,json]
+----
+"override_filters":[
+ {
+ "column_name":"Order Date",
+ "date_filter":{
+ "type":"TOMORROW",
+ "op":"EQ"
+ }
+ }
+]
+----
+
+|`EXACT_DATE`
+a|
+[source,json]
+----
+"override_filters":[
+ {
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "EXACT_DATE",
+ "op": "EQ",
+ "epoch": 1710460800
+ }
+}]
+----
+
+|`EXACT_DATE_RANGE`
+a|
+[source,json]
+----
+"override_filters":[
+{
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "EXACT_DATE_RANGE",
+ "op": "BW_INC",
+ "date_range": {
+ "low_epoch": 1704067200,
+ "high_epoch": 1735689599
+ }
+ }
+}]
+----
+
+|`LAST_N_PERIOD`
+
+a|
+[source,json]
+----
+"override_filters":[
+ {
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "LAST_N_PERIOD",
+ "datePeriod": "MONTH",
+ "number": 3,
+ "op": "EQ",
+ "include_current_period": true
+ }
+}]
+----
+
+|`NEXT_N_PERIOD`
+
+a|[source,json]
+----
+"override_filters":[
+ {
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "NEXT_N_PERIOD",
+ "datePeriod": "MONTH",
+ "number": 3,
+ "op": "EQ",
+ "include_current_period": true
+ }
+}]
+----
+
+| `THIS_PERIOD`
+
+a|
+[source,json]
+----
+"override_filters":[
+ {
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "THIS_PERIOD",
+ "datePeriod": "QUARTER",
+ "op": "EQ"
+ }
+}]
+----
+
+| `PERIOD_TO_DATE`
+a| [source,json]
+----
+"override_filters":[
+ {
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "PERIOD_TO_DATE",
+ "datePeriod": "MONTH",
+ "op": "EQ"
+ }
+}]
+----
+
+|`YEAR_ONLY`
+a|[source,json]
+----
+"override_filters":[
+{
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "YEAR_ONLY",
+ "op": "EQ",
+ "year_name": "2024"
+ }
+}]
+----
+
+| `MONTH_YEAR` a|
+[source,json]
+----
+"override_filters":[
+{
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "MONTH_YEAR",
+ "op": "EQ",
+ "month_name": "MARCH",
+ "year_name": "2026"
+ }
+}]
+----
+
+| `QUARTER_YEAR`
+
+a|
+[source,json]
+----
+"override_filters":[
+{
+ "column_name": "Order Date",
+ "date_filter": {
+ "type": "QUARTER_YEAR",
+ "op": "EQ",
+ "quarter_name": "Q1",
+ "year_name": "2024"
+ }
+}]
+----
+||
+|=====
+
+
== Updating runtime filters
For information about runtime filters update, see xref:runtime-filters.adoc#_adjust_runtime_filters_using_sdk_events[Runtime filters documentation].
@@ -454,18 +889,35 @@ liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [{
----
liveboardEmbed.trigger(HostEvent.UpdateFilters, {
filters: [{
- column: "state", // columnName is also a valid parameter.
+ column: "state",
oper: "EQ",
values: [] // set an empty array to clear filters
}]
});
----
-Setting empty values via `HostEvent.UpdateFilters` removes only the filter values; it does not remove or hide the filter chips from the Liveboard.
+[NOTE]
+====
+* Setting empty values via `HostEvent.UpdateFilters` removes only the filter values; it does not remove or hide the filter chips from the Liveboard.
+* Clearing date filters by passing an empty values array is not supported.
+====
+
+== Additional resources
+
+Refer to the following documentation for more information:
+
+* xref:runtime-filters.adoc[Runtime filters]
+* xref:events-hostEvents.adoc[HostEvents in Visual Embed SDK]
+
+== Additional resources
+
+Refer to the following documentation for more information:
+* xref:runtime-filters.adoc[Runtime filters]
+* xref:events-hostEvents.adoc[HostEvents in Visual Embed SDK]
////
=== Events
There is no specific event to update `search_query filters` in the `SearchEmbed` component or the Liveboard edit mode.
-You can set your app to listen to link:https://developers.thoughtspot.com/docs/Enumeration_EmbedEvent#_querychanged[EmbedEvent.QueryChanged] and trigger the link:https://developers.thoughtspot.com/docs/Enumeration_HostEvent#_gettml[HostEvent.GetTML] event to get a new TML generated for the `search_query` string after an update.
+You can set your app to listen to link:https://developers.thoughtspot.com/docs/Enumeration_EmbedEvent#_querychanged[EmbedEvent.QueryChanged] and trigger the link:https://developers.thoughtspot.com/docs/Enumeration_HostEvent#_gettml[HostEvent.GetTML] event to get a new TML generated for the `search_query` string after an update.
\ No newline at end of file
diff --git a/modules/ROOT/pages/full-app-customize.adoc b/modules/ROOT/pages/full-app-customize.adoc
index 07366a97a..44d9e2530 100644
--- a/modules/ROOT/pages/full-app-customize.adoc
+++ b/modules/ROOT/pages/full-app-customize.adoc
@@ -8,11 +8,10 @@
The Visual Embed SDK provides several controls to customize the embedded view, including setting the default landing page, navigation style, visibility of modules and menu items, and more.
-[div announcementBlock]
---
[IMPORTANT]
+====
The classic (V1) experience and V2 experience modes will be deprecated in an upcoming release in 2026. Therefore, ThoughtSpot recommends upgrading the UI experience of your full application embedding to the V3 experience.
---
+====
== UI experience modes
ThoughtSpot application supports the following UI experience modes:
diff --git a/modules/ROOT/pages/home.adoc b/modules/ROOT/pages/home.adoc
index 82813c543..6e1d31b51 100644
--- a/modules/ROOT/pages/home.adoc
+++ b/modules/ROOT/pages/home.adoc
@@ -10,9 +10,10 @@
ThoughtSpot Embedded Documentation
-
Learn how to use developer tools, APIs, and SDK to embed ThoughtSpot content in your app!
+
Learn how to use developer tools, APIs, and SDKs to embed ThoughtSpot content in your app.
++++
+////
diff --git a/modules/ROOT/pages/mcp-server-changelog.adoc b/modules/ROOT/pages/mcp-server-changelog.adoc
index 78186247f..ce53f8fe9 100644
--- a/modules/ROOT/pages/mcp-server-changelog.adoc
+++ b/modules/ROOT/pages/mcp-server-changelog.adoc
@@ -40,7 +40,7 @@ a|
[discrete]
==== Support for Spotter 3
-ThoughtSpot MCP Server now supports Spotter 3, enabling advanced analytics, forecasting, multi-step reasoning, and deep research. The new MCP tools support real-time streaming, session-based conversations, and richer interactions. +
+ThoughtSpot MCP Server now supports Spotter 3, enabling advanced analytics, forecasting, multi-step reasoning, and deep research. The new MCP tools support real-time streaming, session-based conversations, richer interactions, and direct embedding of visualizations in MCP-aware apps. +
For more information, see xref:mcp-server-spotter3.adoc[MCP Server with Spotter 3].
---
@@ -51,8 +51,8 @@ MCP Server URLs now support date-based versioning, defined using the `?api-versi
[NOTE]
====
-* If the API version is set to a specific date, the server returns the latest version released on or before that date.
-* If your integration has custom workflows that rely on MCP tools, pin it to a tested version using the `?api-version={YYYY-MM-DD}` parameter.
+* The MCP Server URLs without the API version always point to the latest version and may introduce new tools. Pin your integration to a tested version using the `?api-version={YYYY-MM-DD}` parameter. For example, `?api-version=2026-05-01`.
+* If the API version is set to a future date, the server returns the latest API version released before the date specified in the URL.
====
---
@@ -74,7 +74,7 @@ To update your integration to use Spotter 3 features and the new MCP tools:
== April 2026
*API version string:* `?api-version=2026-04-30` or an earlier date string +
-*Upgrade notes*: Supports the legacy MCP tools and URLs only. Upgrade your integrations to version 2026-04-30 or later.
+*Upgrade recommendation*: Supports the legacy MCP tools and URLs only. Upgrade your integrations to version 2026-04-30 or later.
[.cl-table, cols="1,4", frame=none, grid=none]
|====
diff --git a/modules/ROOT/pages/mcp-tool-reference-guide.adoc b/modules/ROOT/pages/mcp-tool-reference-guide.adoc
index 90f34f4f4..c9fb5b1dc 100644
--- a/modules/ROOT/pages/mcp-tool-reference-guide.adoc
+++ b/modules/ROOT/pages/mcp-tool-reference-guide.adoc
@@ -16,6 +16,3 @@ ThoughtSpot MCP Server provides specialized tools that enable the AI agent in yo
* To view the MCP Server code, see the link:https://github.com/thoughtspot/mcp-server[MCP Server GitHub repository, window=_blank].
* For a chat client example, see link:https://github.com/thoughtspot/developer-examples/tree/main/mcp/python-react-agent-simple-ui[Python Agent with Simple React UI].
* See xref:mcp-connect-custom-chatbot.adoc[Integrating MCP Server in a custom application or chatbot]
-
-
-
diff --git a/modules/ROOT/pages/mcp-tool-reference-spotter3.adoc b/modules/ROOT/pages/mcp-tool-reference-spotter3.adoc
index 976af140e..997c9905b 100644
--- a/modules/ROOT/pages/mcp-tool-reference-spotter3.adoc
+++ b/modules/ROOT/pages/mcp-tool-reference-spotter3.adoc
@@ -18,6 +18,8 @@ The `data_source_id` is optional. Provide this when the user has specified or co
=== Example call
+[div tabbed-code]
+--
[source,javascript]
----
const session = await callMCPTool("create_analysis_session", {
@@ -34,6 +36,7 @@ call_mcp_tool(
},
)
----
+--
=== Response
@@ -65,6 +68,8 @@ __Optional__|Can be used to provide external information relating to the questio
=== Example call
+[div tabbed-code]
+--
[source,javascript]
----
const sendMessage = await callMCPTool("send_session_message", {
@@ -89,6 +94,7 @@ call_mcp_tool(
},
)
----
+--
=== Response
@@ -119,6 +125,8 @@ Send the `analytical_session_id` to specify the session to retrieve updates for.
=== Example call
+[div tabbed-code]
+--
[source,typescript]
----
const updates = await callMCPTool("get_session_updates", {
@@ -133,6 +141,7 @@ call_mcp_tool(
{"analytical_session_id": "sess_abc123"}, # Session ID from create_analysis_session.
)
----
+--
=== Response
@@ -236,6 +245,8 @@ Create a ThoughtSpot dashboard from answers generated in an analysis session.
=== Example call
+[div tabbed-code]
+--
[source,typescript]
----
const dashboard = await callMCPTool("create_dashboard", {
@@ -281,6 +292,7 @@ dashboard = call_mcp_tool(
},
)
----
+--
=== Response
diff --git a/modules/ROOT/pages/rest-apiv2-changelog.adoc b/modules/ROOT/pages/rest-apiv2-changelog.adoc
index 77512158a..720af01df 100644
--- a/modules/ROOT/pages/rest-apiv2-changelog.adoc
+++ b/modules/ROOT/pages/rest-apiv2-changelog.adoc
@@ -8,6 +8,71 @@
This changelog lists the features and enhancements introduced in REST API v2.0. For information about new features and enhancements available for embedded analytics, see xref:whats-new.adoc[What's New].
+== Version 26.5.0.cl, May 2026
+
+=== Sync connection metadata attributes
+You can now synchronize connection metadata attributes from your Cloud Data Warehouse (CDW) with ThoughtSpot by sending a request to `POST /api/rest/2.0/connections/{connection_identifier}/resync-metadata` API endpoint.
+
+=== Spotter APIs
+
+==== New API endpoints
+
+The following new endpoints allow sending messages to an active conversation
+session with a Spotter agent.
+
+* `POST /api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send` +
+Allows sending a message to an active Spotter AI conversation and returns a synchronous response.
+* `POST /api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send/stream` +
+Allows sending to an active Spotter AI conversation and returns the response as a real-time Server-Sent Events (SSE) stream.
+
+These new endpoints replace the legacy agent conversation and SSE streaming APIs.
+
+==== Deprecated endpoints [.version-badge.deprecated]#Deprecated#
+
+* `POST /api/rest/2.0/ai/agent/{conversation_identifier}/converse` +
+Replaced by `POST /api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send`.
+
+* `POST /api/rest/2.0/ai/agent/converse/sse` +
+Replaced by `POST /api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send/stream`
+
+These endpoints are deprecated and will be removed
+in a future release. Embedding applications and integrations using these APIs are advised to migrate to the new API endpoints for improved experience.
+
+==== Enhancements to conversation creation API [.version-badge.breaking]#Breaking#
+
+The following enhancements have been introduced for the conversation creation operation workflow with the `POST /api/rest/2.0/ai/agent/conversation/create` API endpoint:
+
+metadata_context::
+To define the conversation context, the API request must include the `metadata_context` parameter with one of the following values:
+
+* `AUTO_MODE`: Automatically discovers and selects the most relevant datasets for the user's queries.
+* `DATA_SOURCE`: Sets the target context as the data source. You must specify at least one data source ID.
+** To set a single data source object metadata context, specify a `data_source_identifier`.
+** For multi-data source context, specify the `data_source_identifiers`.
++
+[IMPORTANT]
+====
+The `data_source` and `guid` attributes are deprecated in the 26.5.0.cl release version. Integrations using these parameters in ThoughtSpot versions 26.2.0.cl through 26.4.0.cl will continue to work until further notice. However, ThoughtSpot recommends using either `AUTO_MODE` or `DATA_SOURCE` with `data_source_identifier` or `data_source_identifiers` for the metadata context.
+====
+
+Other context options::
+The `answer_context` and `liveboard_context` are removed and no longer supported. Any existing integration or embedding application passing `answer_context` or `liveboard_context` in the request body must update their workflows to use the `AUTO_MODE` or `DATA_SOURCE` option.
+
+Enable save chat::
+The `enable_save_chat` parameter, when set to `true`, saves the conversation.
+
+API response::
+The API response now returns the `conversation_identifier`, which is used in all
+subsequent send message or SSE streaming calls.
+
+=== Liveboard report API enhancements [beta betaBackground]^Beta^
+The `POST /api/rest/2.0/report/liveboard` API endpoint enhances the pdf downloads by introducing the following parameters:
+
+* `"page_size": "CONTINUOUS"` for a seamless PDF export that matches the full length of your Liveboard. Unlike the A4 format, which introduces forced page breaks between visualizations, this continuous flow maintains your exact design and intended layout.
+* `zoom_level` offers various download size options to suit the viewer's screen dimensions, thereby enhancing legibility. This can be set only when `page_size` is specified as `CONTINUOUS`.
+
+For more information, see xref:data-report-v2-api.adoc#_liveboard_report_api[Liveboard Report API documentation].
+
== Version 26.4.0.cl, April 2026
=== Variable API endpoints
@@ -390,7 +455,7 @@ For more information, see xref:rest-api-java-sdk.adoc#_import_the_sdk_to_your_ap
== Version 10.10.0.cl, July 2025
-=== Email template customization APIs:
+=== Email template customization APIs
This release introduces the following new endpoints for email template customization:
* `POST /api/rest/2.0/customization/email` +
diff --git a/modules/ROOT/pages/spotter-agent-apis.adoc b/modules/ROOT/pages/spotter-agent-apis.adoc
new file mode 100644
index 000000000..3eb4a5680
--- /dev/null
+++ b/modules/ROOT/pages/spotter-agent-apis.adoc
@@ -0,0 +1,1245 @@
+= AI APIs (Spotter Agent and Spotter 3)
+:toc: true
+:toclevels: 2
+
+:page-title: Spotter Agent APIs
+:page-pageid: spotter-agent-apis
+:page-description: You can use Spotter REST APIs to receive Answers for your analytical queries sent through the conversational experience with ThoughtSpot.
+
+ThoughtSpot's Spotter Agent APIs allow users to start a conversation session with Spotter Agent and send queries to explore data and receive responses synchronously or as a real-time Server-Sent Events (SSE) stream.
+
+== Overview
+Spotter Agent APIs support conversation sessions with natural language query strings, provide context-aware and guided data analysis, and allow integration with other agentic systems.
+
+The key capabilities of the Spotter APIs include the following:
+
+* Initiating and managing conversational sessions
+* Processing natural-language queries
+* Generating analytical responses, insights, and visualizations
+* Recommending relevant datasets or data sources
+* Decomposing complex user queries
+
+== API endpoints
+
+The AI REST API endpoints listed in the following table provide all the functionality necessary to implement a Spotter 3 conversational experience in your application, from data source discovery through to streaming query responses.
+The API endpoints introduced for Spotter 2 also support Spotter 3 capabilities as of version 26.2.0.cl. Some of these API endpoints are deprecated in 26.5.0.cl; ThoughtSpot recommends using the new API endpoints instead.
+
+Initialize session::
+Call the create agent conversation API (`/api/rest/2.0/ai/agent/conversation/create`) with a data source ID to establish the session context. When auto mode is enabled, and no data source ID is specified in the API request, Spotter will automatically identify the appropriate data source.
+
+Execute queries::
+To execute queries and generate a standard response synchronously, use the Send agent conversation message API (`/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send`). The send agent message API (`/api/rest/2.0/ai/agent/{conversation_identifier}/converse`) is deprecated in 26.5.0.cl and later versions.
+
+Real-time output (streaming)::
+To stream responses to the application UI in real-time, use the `POST /api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send/stream`. The legacy streaming API (`/api/rest/2.0/ai/agent/converse/sse`) is deprecated in 26.5.0.cl and later versions.
+
+=== Supported API endpoints
+
+[width="100%" cols="1"]
+|=====
+a|`POST /api/rest/2.0/ai/agent/conversation/create` +
+xref:spotter-agent-apis.adoc#_create_a_conversation_session_with_spotter_agent[Creates a conversation session with the Spotter agent] to generate Answers for the specified data context.
+__Available on ThoughtSpot Cloud instances from 10.13.0.cl onwards. Breaking changes introduced in 26.5.0.cl.__
+
+a| `POST /api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send` [.version-badge.new]#New# +
+xref:spotter-agent-apis.adoc#_send_queries_to_a_conversation_session[Sends natural language messages] to an existing Spotter agent conversation and returns the complete response synchronously.
+__Replaces /api/rest/2.0/ai/agent/{conversation_identifier}/converse__.
+
+a|`POST /api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send/stream` [.version-badge.new]#New# +
+xref:spotter-agent-apis.adoc#_send_a_query_to_agent_and_get_streaming_responses[Sends one or more natural language messages] to an existing Spotter agent conversation and returns the response as a real-time Server-Sent Events (SSE) stream.
+__Replaces /api/rest/2.0/ai/agent/{conversation_identifier}/converse__.
+
+a| `POST /api/rest/2.0/ai/data-source-suggestions` [beta betaBackground]^Beta^ +
+xref:spotter-agent-apis.adoc#_get_data_source_suggestions[Returns a list of relevant data sources], such as Models, based on a query and thus helping users and agents choose the most appropriate data source for analytics. +
+__Available on ThoughtSpot Cloud instances from 10.15.0.cl onwards__.
+
+a| `POST /api/rest/2.0/ai/relevant-questions/` [beta betaBackground]^Beta^ +
+xref:spotter-agent-apis.adoc#_get_relevant_questions[Decomposes a user query] into relevant sub-questions. Guides users to explore data more deeply for a comprehensive analysis. +
+__Available on ThoughtSpot Cloud instances from 10.13.0.cl onwards__.
+
+a| `POST /api/rest/2.0/ai/agent/converse/sse` [.version-badge.deprecated]#Deprecated# +
+Legacy API endpoint for streaming responses, including tokens and visualizations, for a specific conversation context.
+__Deprecated in 26.5.0.cl__.
+
+a| `POST /api/rest/2.0/ai/agent/{conversation_identifier}/converse` [.version-badge.deprecated]#Deprecated# +
+Legacy API endpoint to send natural language queries to a conversation session with Spotter agent. +
+__Deprecated in 26.5.0.cl__.
+|=====
+
+== Create a conversation session with Spotter Agent
+
+The `/api/rest/2.0/ai/agent/conversation/create` API endpoint creates a new conversation session with Spotter Agent for a specific or multi-data context and returns a conversation ID.
+
+=== Request parameters
+The request body must include the `metadata_context`. REST API clients must have at least view access to the data source objects specified in the API request to create a conversation session and use it for subsequent queries.
+
+[width="100%" cols="2,4"]
+[options='header']
+|=====
+|Form parameter| Description
+|`metadata_context` a| Defines the data context for the conversation.
+
+* `type` +
+Metadata context type. The context type is mandatory. Select one of the following values:
+
+** `AUTO_MODE` to allow Spotter Agent to automatically discover and select the most relevant datasets for user's queries.
+** `DATA_SOURCE` to set a specific data source as the data context. You must specify `data_source_context` and data source IDs. +
+To set a specific data source object, use `data_source_identifier`. +
+To set multi-data context, use `data_source_identifiers`.
+** `data_source` [.version-badge.deprecated]#Deprecated# +
+This option is deprecated in 26.5.0.cl. ThoughtSpot recommends using the `DATA_SOURCE` with `data_source_context` and data source IDs instead.
+
+|`conversation_settings` a|__Optional__. Defines additional parameters for the conversation context. You can set any of the following attributes as needed:
+
+* `enable_contextual_change_analysis` +
+__Boolean__. When enabled, Spotter analyzes how context changes over time, that is, comparing results from different queries. Enabled by default in 26.2.0.cl and later versions.
+* `enable_natural_language_answer_generation` +
+__Boolean__. Allows sending natural language queries to the conversation session. Enabled by default in 26.2.0.cl and later versions.
+* `enable_reasoning` +
+__Boolean__. Allows Spotter to use reasoning for deep analysis and precise responses. Enabled by default in 26.2.0.cl and later versions.
+* `enable_save_chat` +
+When set to `true`, adds the conversation to chat history.
+|=====
+
+=== Example request
+
+With AUTO_MODE for metadata context::
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/conversation/create' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata_context": {
+ "type": "AUTO_MODE"
+ },
+ "conversation_settings": {
+ "enable_save_chat": true
+ }
+}'
+----
+
+For a single data source as the data context::
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/conversation/create' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata_context": {
+ "type": "DATA_SOURCE",
+ "data_source_context": {
+ "data_source_identifier": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
+ }
+ },
+ "conversation_settings": {}
+}'
+----
+
+For multi-data source context::
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/conversation/create' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata_context": {
+ "type": "DATA_SOURCE",
+ "data_source_context": {
+ "data_source_identifiers": [
+ "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
+ "b2c3d4e5-f6a7-8901-bcde-f12345678901"
+ ]
+ }
+ },
+ "conversation_settings": {
+ "enable_save_chat": true
+ }
+}'
+----
+
+=== API response
+
+If the API request is successful, the API returns the conversation ID and identifier in the response body.
+
+[source,JSON]
+----
+{
+ "conversation_id": "wwHQ5j8O8dQC",
+ "conversation_identifier": "wwHQ5j8O8dQC"
+}
+----
+
+* `conversation_identifier` +
+Use this for all subsequent message calls.
+* `conversation_id` [.version-badge.deprecated]#Deprecated# +
+Returns the same value as `conversation_identifier`.
+
+== Send queries to a conversation session
+
+To send queries to an ongoing conversation session with the Spotter agent and receive a response synchronously, use the `/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send` API endpoint.
+
+This API operation requires the conversation ID obtained from the conversation creation API endpoint (`/api/rest/2.0/ai/agent/conversation/create`). The user making the API request must have access to the conversation session. The API request body must include at least one message in natural language format.
+
+=== Request parameters
+
+[width="100%" cols="2,2,4"]
+[options='header']
+|=====
+|Parameter|Type| Description
+|`conversation_identifier`|Path parameter|__String__. Required. Specify the conversation ID received from the xref:spotter-agent-apis.adoc#_create_a_conversation_session_with_spotter_agent[POST /api/rest/2.0/ai/agent/conversation/create] API call.
+|`messages`|Form parameter|_Array of strings_. Required. Specify at least one query in natural language. For example, `total sales of jackets last month`.
+|=====
+
+
+////
+|`settings` |__Optional__. Defines additional parameters for the conversation context. You can set any of the following attributes as needed:
+
+* `enable_contextual_change_analysis` +
+__Boolean__. When enabled, Spotter analyzes how the context changes over time, that is comparing results from different queries.
+* `enable_natural_language_answer_generation` +
+__Boolean__. Allows sending natural language queries to the conversation session.
+* `enable_reasoning` +
+__Boolean__. Allows Spotter to use reasoning for deep analysis and precise responses.
+////
+
+=== Request and response examples
+
+The following example sends a data comparison query to a conversation session. The conversation ID is specified in the request URL as a path parameter.
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "messages": [
+ "Sales in 2025 vs 2024"
+ ]
+}'
+----
+
+If the request is successful, the API returns an array of objects in the response. The messages in the API response include the following parts:
+
+[source,JSON]
+----
+[
+ {
+ "type": "text",
+ "text": "\n\nI'll compare sales between 2025 and 2024. First, let me get the dataset context.",
+ "metadata": {},
+ "internal": {},
+ "agent_context": ""
+ },
+ {
+ "type": "text",
+ "text": "```json\n{\"dataset_name\":\"(Sample) Retail - Apparel\",\"columns\":[{\"name\":\"sales\",\"type\":\"MEASURE\"},{\"name\":\"date\",\"type\":\"ATTRIBUTE\"}]}\n```",
+ "metadata": {},
+ "internal": {},
+ "agent_context": ""
+ },
+ {
+ "type": "answer",
+ "title": "Compare total sales for 2025 vs 2024",
+ "description": "",
+ "session_id": "842bb67a-e08e-4861-97e8-8db9538db51d",
+ "gen_no": 2,
+ "sage_query": "[sales] [date] = '2025' vs [date] = '2024'",
+ "tml_tokens": ["[sales]", "[date] = '2025' vs [date] = '2024'"],
+ "formulas": [],
+ "parameters": [],
+ "subqueries": [],
+ "viz_suggestion": "CAEQIBomEiQ2NjE5NzI0Yy1kMjVlLTU4MDItOWNjOC1jNDA3MWY3OWY5MzAoATIA",
+ "metadata": {
+ "output": "",
+ "worksheet_id": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "chart_type": "KPI",
+ "interrupted": false,
+ "data_awareness_enabled": true
+ },
+ "internal": {}
+ },
+ {
+ "type": "text",
+ "text": "\n\nThe visualization shows year-over-year comparison. You can identify growth or decline trends.",
+ "metadata": {},
+ "internal": {},
+ "agent_context": ""
+ }
+]
+----
+
+The following example sends a follow-up question to the same conversation session.
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "messages": [
+ "Now break that down by product category"
+ ]
+}'
+----
+
+If the request is successful, the agent returns the response for the follow-up question:
+
+[source,JSON]
+----
+[{
+ "type": "text",
+ "text": "I'll add product category to the comparison.",
+ "metadata": {},
+ "internal": {},
+ "agent_context": ""
+ },
+ {
+ "type": "answer",
+ "title": "Sales by Product Category: 2025 vs 2024",
+ "session_id": "9abc1234-0000-0000-0000-000000000005",
+ "gen_no": 3,
+ "sage_query": "[sales] [product category] [date] = '2025' vs [date] = '2024'",
+ "tml_tokens": ["[sales]", "[product category]", "[date] = '2025' vs [date] = '2024'"],
+ "formulas": [],
+ "parameters": [],
+ "subqueries": [],
+ "viz_suggestion": "",
+ "metadata": {
+ "chart_type": "BAR",
+ "worksheet_id": "cd252e5c-b552-49a8-821d-3eadaa049cca"
+ },
+ "internal": {}
+ }]
+----
+
+In each response, the agent returns the following information:
+
+* `type` +
+Type of the message, such as text, answer, or error.
+* `text` +
+Response message generated for the query.
+* `metadata` +
+Additional information based on the message type. For example, answer metadata, chart type, or the data source ID.
+* `tml_tokens` +
+Query string broken down as TML tokens.
+
+In case of errors, the response returns the error details:
+
+[source,JSON]
+----
+[{
+ "type": "error",
+ "message": "The conversation session has expired. Please create a new conversation.",
+ "code": "SESSION_EXPIRED"
+}]
+----
+
+
+
+////
+The following example shows the response text contents for the `answer` message type.
+
+[source,JSON]
+----
+[
+ {
+ "id": "r24X7D99SROD",
+ "type": "answer",
+ "group_id": "o8dQ9SAWdtrL",
+ "metadata": {
+ "sage_query": "[sales] [item type] = [item type].'jackets'",
+ "session_id": "b321b404-cbf1-4905-9b0c-b93ad4eedf89",
+ "gen_no": 1,
+ "transaction_id": "6874259d-13b1-478c-83cb-b3ed52628850",
+ "generation_number": 1,
+ "warning_details": null,
+ "ambiguous_phrases": null,
+ "query_intent": null,
+ "assumptions": "You want to see the total sales amount for jackets item type.",
+ "tml_phrases": [
+ "[sales]",
+ "[item type] = [item type].'jackets'"
+ ],
+ "cached": false,
+ "sub_queries": null,
+ "title": "Net sales of Jackets",
+ "worksheet_id": "cd252e5c-b552-49a8-821d-3eadaa049cca"
+ },
+ "title": "Net sales of Jackets"
+ }
+]
+----
+
+The session ID and generation number serve as the data context for the Answer. You can use this information to create a new conversation session using `/api/rest/2.0/ai/agent/conversation/create`, or download the answer via the `/api/rest/2.0/report/answer` API endpoint.
+
+
+* The tokens and TML phrases returned in the response can be used as inputs for the search data API call to get an Answer.
+////
+
+== Send a query to agent and get streaming responses
+
+To send queries to an ongoing conversation session with Spotter agent and receive streaming responses, use the `/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send/stream` API endpoint. This API endpoint uses the SSE protocol to deliver data incrementally in real time, rather than waiting for the entire response to be generated before sending it to the client.
+
+The `/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send/stream` API can be used as an integrated tool for real-time streaming of conversational interactions between agents and the ThoughtSpot backend.
+
+=== Request parameters
+
+[width="100%" cols="2,4"]
+[options='header']
+|=====
+|Parameter| Description
+|`conversation_identifier` |__String__. Specify the conversation ID received from the xref:spotter-agent-apis.adoc#_create_a_conversation_session_with_spotter_agent[POST /api/rest/2.0/ai/agent/conversation/create] API call.
+|`messages`|_Array of strings_. Include at least one natural language query. For example, `Sales data for Jackets`, `Top performing products in the west coast`.
+|=====
+
+=== Example request
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send/stream' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "conversation_identifier": "h2I_pTGaRQof",
+ "messages": [
+ "Net sales of Jackets"
+ ]
+}'
+----
+
+=== API response
+
+If the API request is successful, the response includes a stream of events, each containing a partial or complete message from the AI agent, rather than a single JSON object.
+
+Each event is a simple text-based message in a specific format, `data: \n\n`; `\n\n` means that each message sent from the server to the client is prefixed with the `data:` keyword, followed by the actual payload (``), and ends with two newline characters (`\n\n`).
+
+The API uses this format so that the clients can reconstruct the AI-generated response as it streams in, chunk by chunk, and show the responses in real-time. In agentic workflows, the receiving client or agent listens to the SSE stream, parses each event, and assembles the full response for its users.
+
+==== Example response
+If the request is valid, the API returns SSE streams. Each line has the form `data: [{"type": "...", ...}]`, a JSON array of event objects.
+
+[source,JSON]
+----
+data: [{"type":"ack","node_id":"aGxzcFVrtom8"}]
+
+data: [{"type":"conv_title","title":"Sales 2025 vs 2024","conv_id":"-XIi04l5rrof"}]
+
+data: [{"type":"notification","group_id":"cDEsAQbSnd3J","metadata":{"type":"thinking","tool_title":"Analyzing Sales Performance: 2025 vs 2024"},"code":"TOOL_CALL_NOTIFICATION"}]
+
+data: [{"id":"mNAdvy-NK2l6","type":"text-chunk","group_id":"cDEsAQbSnd3J","metadata":{"format":"markdown","type":"thinking"},"content":"\n\nI need to compare sales performance between 2025 and 2024."}]
+
+data: [{"type":"notification","group_id":"m1MTvttEUa7o","code":"nls_start"}]
+
+data: [{"id":"hxWMDP-pgR3B","type":"answer","group_id":"m1MTvttEUa7o","metadata":{"sage_query":"[sales] [date] = '2025' vs [date] = '2024'","session_id":"431adcf9-1328-4d8c-81a1-0faa7fa37ba6","title":"Compare sales for 2025 vs 2024"},"title":"Compare sales for 2025 vs 2024"}]
+
+data: [{"type":"notification","code":"FINAL_RESPONSE_NOTIFICATION"}]
+----
+For the complete response in one payload, use `sendAgentConversationMessage` instead.
+
+////
+[source,]
+----
+data: [{"type": "ack", "node_id": "BRxCtJ-aGt8l"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": "I"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " understand"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " you're"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " interested"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " in"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " the"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " net"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " sales"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " of"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " Jackets"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": "."}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " I'll"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " retrieve"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " the"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " relevant"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " data"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " for"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " you"}]
+
+data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": "."}]
+
+data: [{"type": "notification", "group_id": "o8dQ9SAWdtrL", "metadata": {"title": "Net sales of Jackets"}, "code": "nls_start"}]
+
+data: [{"type": "notification", "group_id": "o8dQ9SAWdtrL", "code": "QH", "message": "Fetching Worksheet Data"}]
+
+data: [{"type": "notification", "group_id": "o8dQ9SAWdtrL", "code": "TML_GEN", "message": "Translating your query with the Reasoning Engine"}]
+
+data: [{"type": "notification", "group_id": "o8dQ9SAWdtrL", "code": "ANSWER_GEN", "message": "Verifying results with the Trust Layer"}]
+
+data: [{"id": "r24X7D99SROD", "type": "answer", "group_id": "o8dQ9SAWdtrL", "metadata": {"sage_query": "[sales] [item type] = [item type].'jackets'", "session_id": "b321b404-cbf1-4905-9b0c-b93ad4eedf89", "gen_no": 1, "transaction_id": "6874259d-13b1-478c-83cb-b3ed52628850", "generation_number": 1, "warning_details": null, "ambiguous_phrases": null, "query_intent": null, "assumptions": "You want to see the total sales amount for jackets item type.", "tml_phrases": ["[sales]", "[item type] = [item type].'jackets'"], "cached": false, "sub_queries": null, "title": "Net sales of Jackets", "worksheet_id": "cd252e5c-b552-49a8-821d-3eadaa049cca"}, "title": "Net sales of Jackets"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "The"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " net"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " Jackets"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " have"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " been"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " visual"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "ized"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " you"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "."}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " This"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " analysis"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " specifically"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " filtered"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " item"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " type"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "jackets"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "\""}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " and"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " calculated"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " total"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " amount"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " associated"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " with"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " those"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " products"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ".\n\n"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "**"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "Summary"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " &"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " Insights"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ":"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "**\n"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "-"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " The"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " visualization"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " shows"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " total"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " net"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " all"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " jacket"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " transactions"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " in"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " your"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " apparel"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " dataset"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ".\n"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "-"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " The"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " calculation"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " uses"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " only"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " amounts"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " where"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " item"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " type"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " is"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " \""}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "J"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "ackets"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ".\"\n"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "-"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " This"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " information"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " is"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " useful"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " understanding"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " revenue"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " contribution"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " of"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " jackets"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " within"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " your"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " product"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " mix"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ".\n\n"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "If"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " you'd"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " like"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " to"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " see"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " a"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " breakdown"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " by"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " region"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ","}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " state"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ","}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " time"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " period"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ","}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " or"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " compare"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " jacket"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " to"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " other"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " product"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " types"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ","}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " please"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " let"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " me"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " know"}]
+
+data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "!"}]
+----
+////
+
+==== SSE event types
+The SSE event types streamed in the API response include:
+
+* `ack` +
+Confirms receipt of the request. For example, the type in the first message `data: [{"type": "ack", "node_id": "BRxCtJ-aGt8l"}]`, which indicates that the server has received the client's request and is acknowledging it.
+* `conv_title` +
+A conversation title (`title`, `conv_id`).
+* `notification` +
+Progress or status update (`group_id`, `metadata`, `code`). For example, `TOOL_CALL_NOTIFICATION`, `nls_start`, `FINAL_RESPONSE_NOTIFICATION`.
+* `type` +
+Type can be `thinking`, `text`
+* `text` +
+Complete text block in markdown format.
+* `text-chunk` +
+Text fragments in incremental streaming, often in markdown (`id`, `group_id`, `metadata` with `format`)
+* `content` +
+The actual text content sent incrementally. For example, `"I"`, `"understand"`, `"you're"`, `"interested"`, `"in"`, `"the"`, `"net"`, `"sales"`, and so on.
+* `text` +
+Full text block with same structure as text-chunk.
+* `answer` +
+Structured answer with metadata (`id`, `group_id`, `metadata` with `sage_query`, `session_id`, `title` and more)
+* `error` +
+In case of failures.
+* `*-interrupt` +
+If the generation was stopped mid-stream.
+* `group_id` +
+Groups related chunks together.
+
+For more information and examples, see xref:spotter-agent-apis.adoc#_sse_event_payload_reference[SSE event payload reference].
+
+=== Thinking versus output events
+Spotter responses have two phases:
+
+* A *thinking phase*, where the AI reasons through the query and calls internal tools, followed by an *output phase* containing the final response delivered to the user. +
+
+Events in the thinking phase carry `"metadata": { "type": "thinking" }`. All other events are final output.
+
+Every event includes a `group_id`. Events sharing the same `group_id` belong together. During the thinking phase, each tool call gets its own `group_id`. A `FINAL_RESPONSE_NOTIFICATION` notification marks the boundary between the thinking and output phases.
+
+[mermaid]
+----
+THINKING PHASE
+───────────────────────────────────────────────────────────
+ack
+
+┌─ group_id: g1 ── Tool Call 1 ("Searching data") ─────────┐
+│ notification (thinking, TOOL_CALL_NOTIFICATION) │
+│ text-chunk (thinking) │
+│ answer (thinking) │
+└──────────────────────────────────────────────────────────┘
+
+┌─ group_id: g2 ── Tool Call 2 ("Running code") ───────────┐
+│ notification (thinking, TOOL_CALL_NOTIFICATION) │
+│ text-chunk (thinking) │
+│ text-chunk (thinking) │
+└──────────────────────────────────────────────────────────┘
+
+notification (FINAL_RESPONSE_NOTIFICATION) ←── boundary
+────────────────────────────────────────────────────────────
+
+OUTPUT PHASE
+────────────────────────────────────────────────────────────
+┌─ group_id: g3 ────────────────────────────────────────────┐
+│ text "Here are the results:" │
+│ answer (final visualization) │
+└───────────────────────────────────────────────────────────┘
+[stream closes]
+----
+
+==== Notification codes reference
+
+[width="100%" cols="2,4"]
+[options='header']
+|===
+|Code| When it appears
+|`QH`|Query handling started
+|`TML_GEN` / `TML_GEN_RETRY`|Generating or retrying TML
+|`ANSWER_GEN`|Generating an answer
+|`IDENTIFYING_ATTRIBUTES`|Identifying data attributes
+|`PERFORMING_CHANGE_ANALYSIS`|Running change analysis
+|`PERFORMING_FORECASTING_ANALYSIS`|Running forecasting
+|`SUMMARIZING_RESULTS`|Summarizing results
+|`TOOL_CALL_NOTIFICATION`|Tool invocation (during thinking phase)
+|`FINAL_RESPONSE_NOTIFICATION`|Marks the transition from thinking to output
+|`search_datasets_start` / +search_datasets_end+|Data source discovery in progress or complete
+|`approval_required`|An external tool requires user permission before proceeding
+|===
+
+=== SSE event payload reference
+
+==== ack
+
+[source,JSON]
+----
+data: {
+ "type": "ack",
+ "group_id": "a1b2c3",
+ "id": "evt-001",
+ "node_id": "resp-node-abc"
+}
+----
+
+==== notification (thinking — tool call)
+
+[source,JSON]
+----
+data: {
+ "type": "notification",
+ "group_id": "g1",
+ "id": "evt-002",
+ "code": "TOOL_CALL_NOTIFICATION",
+ "message": "Searching for relevant data",
+ "metadata": {
+ "type": "thinking",
+ "tool_title": "Searching sales data",
+ "tool_code": "RUNNING_CODE_EXECUTION",
+ "tool_name": "code_interpreter"
+ }
+}
+----
+
+==== notification (thinking - external tool with MCP integration)
+
+[source,JSON]
+----
+data: {
+ "type": "notification",
+ "group_id": "g2",
+ "id": "evt-003",
+ "code": "TOOL_CALL_NOTIFICATION",
+ "message": "Querying Salesforce",
+ "metadata": {
+ "type": "thinking",
+ "tool_title": "Salesforce: Get Opportunities",
+ "tool_name": "get_opportunities",
+ "integration_id": "int-sf-123",
+ "integration_name": "Salesforce"
+ }
+}
+----
+
+==== notification (approval required)
+Sent when an external MCP tool requires explicit user permission before proceeding. Your application should prompt the user to approve or deny the action before continuing.
+
+[source,JSON]
+----
+data: {
+ "type": "notification",
+ "group_id": "g2",
+ "id": "evt-005",
+ "code": "approval_required",
+ "metadata": {
+ "request_id": "perm-req-789",
+ "integration_id": "int-sf-123",
+ "integration_name": "Salesforce",
+ "tool_name": "get_opportunities",
+ "annotated_title": "Access Salesforce Opportunities"
+ }
+}
+----
+
+==== notification (FINAL_RESPONSE_NOTIFICATION)
+
+[source,JSON]
+----
+data: {
+ "type": "notification",
+ "group_id": "g1",
+ "id": "evt-004",
+ "code": "FINAL_RESPONSE_NOTIFICATION",
+ "message": ""
+}
+----
+
+==== text
+
+[source,JSON]
+----
+data: {
+ "type": "text",
+ "group_id": "g3",
+ "id": "evt-007",
+ "content": "Here is the total revenue breakdown by region for Q4 2025:\n\n- **North America:** $4.2M\n- **EMEA:** $2.8M\n- **APAC:** $1.5M"
+}
+----
+
+==== text-chunk
+Multiple chunks sharing the same `id` should be appended together to reconstruct the full text item.
+
+[source,JSON]
+----
+data: { "type": "text-chunk", "group_id": "g3", "id": "evt-009", "content": "Based on the analysis, " }
+data: { "type": "text-chunk", "group_id": "g3", "id": "evt-009", "content": "revenue grew 12% quarter-over-quarter." }
+----
+
+==== answer
+When an `answer` event is received, the `session_id` and `gen_no` fields are returned. You can export the visualization data using the Export Answer Report API to process the results. This allows users to download the answer as a PDF, PNG, CSV, or XLSX file.
+
+[source,JSON]
+----
+data: {
+ "type": "answer",
+ "group_id": "g3",
+ "id": "evt-010",
+ "title": "Revenue by Region Q4 2025",
+ "metadata": {
+ "session_id": "sess-abc-123",
+ "gen_no": 1,
+ "transaction_id": "txn-456",
+ "worksheet_id": "ws-def-789",
+ "cached": false,
+ "is_hidden": false
+ }
+}
+----
+
+==== search_datasets
+Emitted as a start/end pair during Auto mode data source discovery.
+
+
+[source,JSON]
+----
+data: { "type": "search_datasets", "group_id": "g0", "id": "evt-012", "code": "search_datasets_start", "metadata": {} }
+
+data: {
+ "type": "search_datasets",
+ "group_id": "g0",
+ "id": "evt-013",
+ "code": "search_datasets_end",
+ "metadata": {
+ "data_sources": [
+ { "worksheet_id": "ws-1", "worksheet_name": "Sales Data", "confidence": "high", "reasoning": "Contains revenue columns" },
+ { "worksheet_id": "ws-2", "worksheet_name": "Marketing Data", "confidence": "low", "reasoning": "No revenue columns" }
+ ],
+ "auto_selected": { "worksheet_id": "ws-1", "worksheet_name": "Sales Data", "confidence": "high", "reasoning": "Best match" }
+ }
+}
+----
+==== file
+
+[source,JSON]
+----
+data: {
+ "type": "file",
+ "group_id": "g3",
+ "id": "evt-014",
+ "files": [
+ { "ts_file_id": "file-abc-001", "display_name": "quarterly_report.csv", "file_type": "csv", "created_at": "2025-11-15T10:30:00Z" },
+ { "ts_file_id": "file-abc-002", "display_name": "chart.png", "file_type": "png", "created_at": "2025-11-15T10:30:01Z" }
+ ],
+ "metadata": { "conv_id": "conv-123" }
+}
+----
+==== conv_title
+
+[source,JSON]
+----
+data: {
+ "type": "conv_title",
+ "group_id": "g0",
+ "id": "evt-015",
+ "title": "Revenue Analysis Q4 2025",
+ "conv_id": "conv-123"
+}
+----
+
+==== error
+
+[source,JSON]
+----
+data: {
+ "type": "error",
+ "group_id": "g3",
+ "id": "evt-016",
+ "code": "RATE_LIMIT_EXCEEDED",
+ "message": "Too many requests",
+ "display_message": "You've exceeded the rate limit. Please try again in a few minutes."
+}
+----
+==== agent-interrupt
+
+[source,JSON]
+----
+Sent when generation is stopped mid-stream.
+data: {
+ "type": "notification",
+ "group_id": "g3",
+ "id": "evt-017",
+ "code": "agent-interrupt",
+ "message": "Generation stopped"
+}
+----
+
+[#process_results]
+== Process results generated from a conversation session
+To export or download the Answer data generated by the Spotter APIs, use the xref:data-report-v2-api.adoc#exportSpotterData[Answer report] API.
+
+The `session_id` and `gen_no` values from the `answer` event metadata are required to identify the answer to export.
+
+NOTE: Requires at least view access to the Answer.
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/report/answer' \
+ -H 'Authorization: Bearer {Bearer_token}' \
+ -H 'Accept: application/octet-stream' \
+ -H 'Content-Type: application/json' \
+ --data-raw '{
+ "session_identifier": "sess-abc-123",
+ "generation_number": 1,
+ "file_format": "CSV"
+}'
+----
+The `file_format` parameter accepts `PDF`, `PNG`, `CSV`, or `XLSX`.
+
+[NOTE]
+====
+Using tokens generated by the Spotter API in a xref:data-report-v2-api.adoc#_search_data_api[Search Data API] request can return invalid column errors, because these tokens may reference formulas or columns not present in the data model. Instead, use the xref:data-report-v2-api.adoc#exportSpotterData[Answer report] API and include the session ID and generation number obtained from the Spotter API in your API request to retrieve the data.
+====
+
+
+== Data literacy and query assistance
+The query assistance APIs help users find the appropriate dataset for a given query string, suggest what questions can be asked, and return example questions. These APIs are specifically designed to improve data literacy for users who may not be familiar with the underlying data, making it easier for them to explore and analyze data effectively.
+
+=== Get data source suggestions
+
+The `POST /api/rest/2.0/ai/data-source-suggestions` API provides relevant data source recommendations for a user-submitted natural language query. To use this API, you must have at least view access to the underlying metadata object referenced in the response.
+
+==== Request parameters
+
+[width="100%" cols="2,4"]
+[options='header']
+|====
+|Parameter| Description
+|`metadata_context` a| Required. Specify one of the following attributes to set the metadata context:
+
+* `data_source_identifiers` +
+__Array of strings__. IDs of the data source object such as Models.
+* `answer_identifiers` +
+__Array of strings__. GUIDs of the Answer objects that you want to use as metadata.
+* `conversation_identifier` +
+__String__. ID of the conversation session.
+* `liveboard_identifiers` +
+__Array of strings__. GUIDs of the Liveboards that you want to use as metadata.
+
+| `query` |__String__. Required parameter. Specify the query string that needs to be decomposed into smaller, analytical sub-questions.
+|`limit_relevant_questions` +
+__Optional__ | __Integer__. Sets a limit on the number of sub-questions to return in the response. Default is 5.
+|`bypass_cache` +
+__Optional__| __Boolean__. When set to `true`, disables cache and forces fresh computation.
+|`ai_context` +
+__Optional__. a| Additional context to guide the response. Define the following attributes as needed:
+|====
+
+==== Example request
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/data-source-suggestions' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata_context": {
+ "data_source_identifiers": [
+ "cd252e5c-b552-49a8-821d-3eadaa049cca"
+ ]
+ },
+ "query": "Net sales of Jackets in west coast",
+ "limit_relevant_questions": 3
+}'
+----
+
+==== API response
+If the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.
+
+[source,JSON]
+----
+{
+ "relevant_questions": [
+ {
+ "query": "What is the trend of sales by type over time?",
+ "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "data_source_name": "(Sample) Retail - Apparel"
+ },
+ {
+ "query": "Sales by item",
+ "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "data_source_name": "(Sample) Retail - Apparel"
+ },
+ {
+ "query": "Sales across regions",
+ "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "data_source_name": "(Sample) Retail - Apparel"
+ }
+ ]
+}
+----
+
+The returned results include metadata such as:
+
+* `confidence` +
+A float indicating the Model's confidence in the relevance of each recommendation.
+* `details` +
+The data source ID, name, and description for each recommended data source.
+* `reasoning` +
+Reason provided by the LLM to explain why each data source was recommended.
+
+=== Get relevant questions
+
+The `/api/rest/2.0/ai/relevant-questions/` API endpoint breaks down a user-submitted query into relevant sub-questions. It accepts the original query and optional additional context, then generates a set of related questions to help users explore their data comprehensively.
+
+During agentic interactions, this API can be used as an integrated tool to decompose user queries and suggest relevant questions for a specific data context. REST clients can also call this API directly to fetch relevant questions via a `POST` request.
+
+==== Request parameters
+
+[width="100%" cols="2,4"]
+[options='header']
+|=====
+|Parameter| Description
+|`metadata_context` a| Required. Specify one of the following attributes to set the metadata context:
+
+* `data_source_identifiers` +
+__Array of strings__. IDs of the data source object such as Models.
+* `answer_identifiers` +
+__Array of strings__. GUIDs of the Answer objects that you want to use as metadata.
+* `conversation_identifier` +
+__String__. ID of the conversation session.
+* `liveboard_identifiers` +
+__Array of strings__. GUIDs of the Liveboards that you want to use as metadata.
+
+| `query` |__String__. Required parameter. Specify the query string that needs to be decomposed into smaller, analytical sub-questions.
+|`limit_relevant_questions` +
+__Optional__ | __Integer__. Sets a limit on the number of sub-questions to return in the response. Default is 5.
+|`bypass_cache` +
+__Optional__| __Boolean__. When set to `true`, disables cache and forces fresh computation.
+|`ai_context` +
+__Optional__. a| Additional context to guide the response. Define the following attributes as needed:
+
+* `instructions` +
+__Array of strings__. Custom user instructions to influence how the AI interprets and processes the query.
+* `content` +
+__Array of strings__. Additional input such as raw text or CSV-formatted data to enhance context and answer quality.
+|=====
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/relevant-questions/' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata_context": {
+ "data_source_identifiers": [
+ "cd252e5c-b552-49a8-821d-3eadaa049cca"
+ ]
+ },
+ "query": "Net sales of Jackets in west coast",
+ "limit_relevant_questions": 3
+}'
+----
+
+==== Example response
+If the request is successful, the API returns a set of questions related to the query and metadata context in the `relevant_questions` array. Each object in the `relevant_questions` array contains the following fields:
+
+* `query` +
+A string containing the natural language (NL) sub-question.
+* `data_source_identifier` +
+GUID of the data source object.
+* `data_source_name` +
+Name of the associated data source object.
+
+[source,JSON]
+----
+{
+ "relevant_questions": [
+ {
+ "query": "What is the trend of sales by type over time?",
+ "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "data_source_name": "(Sample) Retail - Apparel"
+ },
+ {
+ "query": "Sales by item",
+ "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "data_source_name": "(Sample) Retail - Apparel"
+ },
+ {
+ "query": "Sales across regions",
+ "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "data_source_name": "(Sample) Retail - Apparel"
+ }
+ ]
+}
+----
+
+== Additional resources
+
+* Visit the +++REST API v2.0 Playground+++ to view the API endpoints and verify the request and response workflows.
+* For information about MCP tools, see xref:mcp-integration.adoc[MCP server integration].
diff --git a/modules/ROOT/pages/spotter-apis.adoc b/modules/ROOT/pages/spotter-apis.adoc
index c13019ee4..f4ee15d71 100644
--- a/modules/ROOT/pages/spotter-apis.adoc
+++ b/modules/ROOT/pages/spotter-apis.adoc
@@ -1,20 +1,12 @@
-= Spotter AI APIs
+= Spotter APIs
:toc: true
:toclevels: 2
:page-title: Spotter APIs
:page-pageid: spotter-api
-:page-description: You can use Spotter REST APIs to receive Answers for your analytical queries sent through the conversational experience with ThoughtSpot.
+:page-description: You can use Spotter REST APIs to receive Answers for your analytical queries sent through the conversational experience with ThoughtSpot.
-ThoughtSpot's Spotter AI APIs [beta betaBackground]^Beta^ allow users to query and explore data through conversational interactions.
-
-[NOTE]
-====
-The Spotter AI APIs are in Beta and disabled by default on ThoughtSpot instances. To enable these APIs on your instance, contact ThoughtSpot Support.
-====
-
-== Overview
-Spotter AI APIs collectively support natural-language-driven analytics, context-aware and guided data analysis, and integration with agentic systems.
+The Spotter APIs support natural-language-driven analytics, context-aware and guided data analysis, and integration with agentic systems.
The key capabilities of the Spotter APIs include the following:
@@ -26,66 +18,26 @@ The key capabilities of the Spotter APIs include the following:
Spotter manages conversation sessions, context tracking, and response generation for user-submitted queries. The Spotter APIs are designed for use in Spotter-driven analytics and also for agentic interactions within an orchestrated agent framework.
-=== Locale settings for API requests
-
-When using the xref:spotter-apis.adoc#_generate_a_single_answer[Single Answer] and xref:spotter-apis.adoc#_send_a_question_to_generate_answer[Send message] APIs, the locale used for API requests depends on your application's locale settings:
-
-* If your application is set to "Use browser language," the API will not apply the default locale. In this case, you must explicitly include the desired locale code in the `Accept-Language` header of your API request. If you do not specify the locale, the API may not return responses in the expected language or regional format.
-* If you have set a specific locale in your ThoughtSpot instance or user profile, the API will use this locale to generate responses, overriding the browser or OS locale.
-
-To ensure consistent localization, set the `Accept-Language` header in your API requests when relying on browser language detection, or configure the locale explicitly in the user profile settings in ThoughtSpot.
-
-=== API endpoints
-Each of the Spotter AI APIs serves a specific function:
-
-[width="100%" cols="2,4"]
-[options='header']
-|=====
-|Category| API endpoints
-|Conversational analytics with Spotter (Classic) a|
-
-* `POST /api/rest/2.0/ai/conversation/create` +
-xref:spotter-apis.adoc#_create_a_conversation_session[Creates a conversation session] with Spotter to generate Answers from a specific data Model. The resulting session sets the context for subsequent queries and responses.
+Spotter API operations require `CAN_USE_SPOTTER` privilege and at least view-level access to the underlying metadata entities referenced in the response.
-* `POST /api/rest/2.0/ai/conversation/{conversation_identifier}/converse` +
-Allows xref:spotter-apis.adoc#_send_a_query_to_a_conversation_session[Sending a message or follow-up query] to an ongoing conversation session.
+== Supported API operations
-* `POST /api/rest/2.0/ai/answer/create` +
-xref:spotter-apis.adoc#_generate_a_single_answer[Generates an answer] for a natural language query specified in the API request.
+For information about supported API operations, see the following pages:
-|Advanced analytics and agentic interaction a| * `POST /api/rest/2.0/ai/agent/conversation/create` +
-xref:spotter-apis.adoc#_create_a_conversation_session_with_spotter_agent[Creates a conversation session with the Spotter agent] to generate Answers for the specified data context. This API endpoint is designed for agentic or orchestrated frameworks that leverage Spotter agent's capabilities for advanced analytics, context-aware conversations, and data literacy. +
-__Available on ThoughtSpot Cloud instances from 10.13.0.cl onwards__.
+* xref:spotter-classic-apis.adoc[APIs for Spotter classic workflow]
+* xref:spotter-agent-apis.adoc[APIs for Spotter agent workflows]
+* xref:spotter-nl-instructions.adoc[APIs for Spotter coaching and NL instructions]
-* `POST /api/rest/2.0/ai/agent/converse/sse` +
-xref:spotter-apis.adoc#_send_a_question_and_generate_streaming_responses[Streams responses], including tokens and visualizations, for a specific conversation context. This API endpoint can be used for real-time agentic interactions and orchestrated experiences. +
-__Available on ThoughtSpot Cloud instances from 10.13.0.cl onwards__.
+== Locale settings for API requests
-* `POST /api/rest/2.0/ai/agent/{conversation_identifier}/converse` +
-xref:spotter-apis.adoc#_send_queries_to_a_conversation_session_with_spotter_agent[Sends a message] to an ongoing conversation session with Spotter agent. +
-__Available on ThoughtSpot Cloud instances from 10.15.0.cl onwards__.
+When using the xref:spotter-classic-apis.adoc#_generate_a_single_answer[Single Answer] and xref:spotter-classic-apis.adoc#_send_a_query_to_a_conversation_session[Send message] APIs, the locale used for API requests depends on your application's locale settings:
-|Data literacy and guided analysis a|
-* `POST /api/rest/2.0/ai/data-source-suggestions` +
-xref:spotter-apis.adoc#_get_data_source_suggestions[Returns a list of relevant data sources], such as Models, based on a query and thus helping users and agents choose the most appropriate data source for analytics. +
-__Available on ThoughtSpot Cloud instances from 10.15.0.cl onwards__.
-
-* `POST /api/rest/2.0/ai/relevant-questions/`] +
-xref:spotter-apis.adoc#_get_relevant_questions[Decomposes a user query] into relevant sub-questions. Guides users to explore data more deeply for a comprehensive analysis. +
-__Available on ThoughtSpot Cloud instances from 10.13.0.cl onwards__.
-
-|NL instructions to coach Spotter a| * `POST /api/rest/2.0/ai/instructions/set` +
-xref:spotter-apis.adoc#_set_nl_instructions[Sets natural language instructions] on a specific data model to guide Spotter and enhance the quality of Spotter-generated responses. +
-__Available on ThoughtSpot Cloud instances from 10.15.0.cl onwards__.
-
-* `POST /api/rest/2.0/ai/instructions/get` +
-xref:spotter-apis.adoc#_retrieve_nl_instructions_assigned_to_a_model[Retrieves NL instructions assigned to a Model] +
-__Available on ThoughtSpot Cloud instances from 10.15.0.cl onwards__.
-|=====
+* If your application is set to "Use browser language", the API will use this locale to generate responses. To override this setting, you must explicitly include the desired locale code in the `Accept-Language` header of your API request. To ensure consistent localization, set the `Accept-Language` header in your API requests when relying on browser language detection, or configure the locale explicitly in the user profile settings in ThoughtSpot.
+* If you have set a specific locale in your ThoughtSpot instance or user profile, the API will use this locale to generate responses, overriding the browser or OS locale.
== Per-user API rate limits
-The following rate limits apply to xref:spotter-apis.adoc#_conversational_analytics_with_spotter_agent[Spotter agent APIs] per user:
+The following rate limits apply to Spotter agent APIs per user:
* A maximum of 10 conversation creation requests per minute.
* A maximum of 30 query messages to a conversation session per minute.
@@ -95,1286 +47,17 @@ The following rate limits apply to xref:spotter-apis.adoc#_conversational_analyt
|=====
|API endpoint| Rate Limit (per user, per minute)
|`/api/rest/2.0/ai/agent/conversation/create` | 10
-|`/api/rest/2.0/ai/agent/{conversation_identifier}/converse`| 30
-|`/api/rest/2.0/ai/agent/converse/sse` | 30
+|`/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send`| 30
+|`POST /api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send/stream` | 30
+|`/api/rest/2.0/ai/agent/{conversation_identifier}/converse` [.version-badge.deprecated]#Deprecated# | 30
+|`/api/rest/2.0/ai/agent/converse/sse` [.version-badge.deprecated]#Deprecated# | 30
||
|=====
If you are integrating these APIs in your environment, consider implementing a retry logic to handle the rate limit errors.
-== Conversational analytics with Spotter (Classic)
-In the Spotter classic mode, the conversation session and context will be managed by Spotter. The APIs allow users to interact directly with Spotter with no specific agentic capabilities or framework.
-
-=== Create a conversation session
-To create a conversation session with Spotter, send a `POST` request to the `/api/rest/2.0/ai/conversation/create` API endpoint. The resulting conversation session maintains the context and can be used to send queries and follow-up questions to generate answers.
-
-==== Request parameters
-Include the following parameters in the request body:
-
-[width="100%" cols="2,4"]
-[options='header']
-|=====
-|Form parameter|Description
-|`metadata_identifier`|_String_. Required. Specify the GUID of the data source objects such as ThoughtSpot Models. The metadata object specified in the API request will be used as a data source for the conversation.
-|`tokens` +
-__Optional__ a|_String_. To set the context for the conversation, you can specify a set of keywords as token string. For example, `[sales],[item type],[state]`.
-|=====
-
-==== Example requests
-
-===== With tokens
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/conversation/create' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
- "tokens": "[sales],[item type],[Jackets]"
-}'
-----
-
-===== Without tokens
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/conversation/create' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca"
-}'
-----
-
-==== API response
-
-If the API request is successful, a conversation identifier is created. Note the GUID of the conversation and use it when sending follow-up queries.
-
-[source,JSON]
-----
-{"conversation_identifier":"98f9b8b0-6224-4f9d-b61c-f41307bb6a89"}
-----
-
-
-=== Send a query to a conversation session
-To send a question to an ongoing conversation session or ask follow-up questions to , send a `POST` request body with conversation ID and query text to the `POST /api/rest/2.0/ai/conversation/{conversation_identifier}/converse` API endpoint.
-
-This API endpoint supports only the conversation sessions created using the `POST /api/rest/2.0/ai/conversation/create` API call.
-
-==== Request parameters
-
-[width="100%" cols="2,2,4"]
-[options='header']
-|=====
-|Parameter|Type| Description
-|`conversation_identifier`|Path parameter|__String__. Required. Specify the GUID of the conversation received from the xref:spotter-apis.adoc#_create_a_conversation_session[create conversation API call].
-|`metadata_identifier`|Form parameter|_String_. Required. Specify the GUID of the data source object, for example, Model. The metadata object specified in the API request will be used as a data source for the follow-up conversation.
-|`message`|Form parameter|_String_. Required. Specify a natural language query string. For example, `Sales data for Jackets`.
-|=====
-
-==== Example request
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/conversation/03f48527-b973-4efa-81fd-a8568a4f9e78/converse' \
- -H 'Accept: application/json' \
- -H 'accept-language: en-US', \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
- "message": "Top performing products in the west coast"
-}'
-----
-
-==== API response
-
-If the API request is successful, the following data is sent in the API response:
-
-* `session_identifier` +
-GUID of the Answer session.
-* `generation_number` +
-Number assigned to the Answer session.
-* `message_type` +
-Type of response received for the query. For example, `TSAnswer` (ThoughtSpot Answer).
-* `visualization_type` +
-The data format of the generated Answer, for example, a chart or table. When you download this Answer, the data will be exported in the format indicated by the `visualization_type`.
-* `tokens` +
-Tokens generated from the natural language search query specified in the API request. These tokens can be used as input to the `/api/rest/2.0/ai/conversation/create` API endpoint to set the context for a conversation session.
-
-[NOTE]
-====
-Note the session ID and generation number. To export the Answer generated from this conversation, send these attributes in the `POST` request body to the `/api/rest/2.0/report/answer` endpoint.
-====
-
-[source,JSON]
-----
-[
- {
- "session_identifier": "1290f8bc-415a-4ecb-ae3b-e1daa593eb24",
- "generation_number": 3,
- "message_type": "TSAnswer",
- "visualization_type": "Chart",
- "tokens": "[sales], [state], [item type], [region] = [region].'west', sort by [sales] descending"
- }
-]
-----
-
-==== Ask follow-up questions
-
-The API retains the context of previous queries when you send follow-up questions. To verify this, you can send another API request with a follow-up question to drill down into the data.
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/conversation/03f48527-b973-4efa-81fd-a8568a4f9e78/converse' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
- "message": "which city has the better sales of jackets here?"
-}'
-----
-
-The API retrains the context of the initial question and returns a response:
-
-[source,JSON]
-----
-[
- {
- "session_identifier": "ee077665-08e1-4a9d-bfdf-7b2fe0ca5c79",
- "generation_number": 3,
- "message_type": "TSAnswer",
- "visualization_type": "Table",
- "tokens": "[sales], by [city], [state], [item type] = [item type].'jackets', [region] = [region].'west', sort by [sales] descending"
- }
-]
-----
-
-=== Generate a single Answer
-To generate an Answer from a natural language search query, send a `POST` request to the `/api/rest/2.0/ai/answer/create` API endpoint. In the request body, include the query and the data source ID.
-
-==== Request parameters
-
-[width="100%" cols="2,4"]
-[options='header']
-|=====
-|Form parameter| Description
-|`query`|__String__. Required. Specify the string as a natural language query. For example, `Top performing products in the west coast`.
-|`metadata_identifier`|_String_. Required. Specify the GUID of the data source object, for example, Model. The metadata object specified in the API request will be used as a data source for the follow-up conversation.
-|=====
-
-==== Example request
-In the following example, a query string and the model ID are included in the request body to set the context of the conversation.
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/answer/create' \
- -H 'Accept: application/json' \
- -H 'accept-language: en-US', \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN} \
- --data-raw '{
- "query": "Top performing products in the west coast",
- "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca"
-}'
-----
-
-==== API response
-
-If the API request is successful, the following data is sent in the API response:
-
-* `session_identifier` +
-GUID of the Answer session.
-* `generation_number` +
-Number assigned to the Answer session.
-* `message_type`
-Type of response received for the query. For example, `TSAnswer` (ThoughtSpot Answer).
-* `visualization_type` +
-The data format of the generated Answer; for example, a chart or table. When you download this Answer, the data will be exported in the format indicated by the `visualization_type`.
-* `tokens` +
-Tokens generated from the natural language search query specified in the API request. These tokens can be used as input to the `/api/rest/2.0/ai/conversation/create` endpoint to set the context for a conversation session.
-
-[NOTE]
-====
-Note the session ID and generation number. To export the result generated from this API call, send these attributes in the `POST` request body to the `/api/rest/2.0/report/answer` endpoint.
-====
-
-[source,JSON]
-----
-[{
- "session_identifier": "57784fa1-10fa-431d-8d82-a1657d627bbe",
- "generation_number": 2,
- "message_type": "TSAnswer",
- "visualization_type": "Undefined",
- "tokens": "[product], [region] = [region].'west', sort by [sales] descending"
-}]
-----
-
-== Conversational analytics with Spotter agent
-Spotter agent is an advanced, agentic version of Spotter, which supports context-aware interactions, data literacy features, and follow-up conversations for deeper analytics. Spotter agent can be used for complex reasoning and agentic interactions in an orchestrated framework.
-
-=== Create a conversation session with Spotter agent
-
-The `/api/rest/2.0/ai/agent/conversation/create` API endpoint allows you to initiate a new conversation session with Spotter Agent for different data contexts, such as Answers, Liveboards, or Models.
-
-[NOTE]
-====
-Clients must have at least view access to the objects specified in the API request to create a conversation context and use it for subsequent queries.
-====
-
-==== Request parameters
-To set the context for the conversation session, you must specify the metadata type and context in the `POST` request body. Optionally, you can also define additional parameters to refine the data context and generate precise responses.
-
-[width="100%" cols="2,4"]
-[options='header']
-|=====
-|Form parameter| Description
-|`metadata_context` a| Defines the data context for the conversation.
-
-* `type` +
-Metadata context type. The context type is mandatory. Select one of the following values:
-** `data_source` - To set a data source context for the conversation session. +
-If the context type is `data_source`, you must define the `data_source_context` in the request payload.
-** `answer` - To use an existing Spotter-generated Answer as the object. +
-If the context type is `answer`, you must define both `data_source_context` and `answer_context` in the request payload.
-** `liveboard` - To use an existing Liveboard as context. +
-If the context type is `liveboard`, you must define `data_source_context`, `liveboard_context`, and `answer_context` in the request payload.
-
-* `answer_context` +
-If the metadata type is set as `answer` or `liveboard`, specify the following attributes:
-** `session_identifier`: __string__, Unique ID representing the answer session.
-** `generation_number`: __Integer__. Specific generation/version number of the answer within a conversation session.
-+
-The session identifier and generation numbers are assigned to the Answers generated from the Spotter AI REST APIs. These properties serve as the ID of the AI-generated Answer within the ThoughtSpot system.
-
-* `liveboard_context` +
-If the metadata type is set as `liveboard`, specify the GUIDs of the Liveboard and visualization.
-* `data_source_context` +
-Specify the GUID of the data source object. Required parameter for all types of metadata context.
-
-|`conversation_settings` a|__Optional__. Defines additional parameters for the conversation context. You can set any of the following attributes as needed:
-
-* `enable_contextual_change_analysis` +
-__Boolean__. When enabled, Spotter analyzes how context changes over time, that is comparing results from different queries.
-* `enable_natural_language_answer_generation` +
-__Boolean__. Allows sending natural language queries to the conversation session.
-* `enable_reasoning` +
-__Boolean__. Allows Spotter to use reasoning for deep analysis and precise responses.
-|=====
-
-==== Example request
-
-The following example shows the request payload for the `data_source` context type:
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/conversation/create' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "metadata_context": {
- "type": "data_source",
- "data_source_context": {
- "guid": "cd252e5c-b552-49a8-821d-3eadaa049cca"
- }
- },
- "conversation_settings": {
- "enable_contextual_change_analysis": false,
- "enable_natural_language_answer_generation": true,
- "enable_reasoning": true
- }
-}'
-----
-
-The following example shows the request payload for the `liveboard` context type:
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/conversation/create' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "metadata_context": {
- "type": "liveboard",
- "answer_context": {
- "session_identifier": "c3a00fa7-fd01-4d58-8c84-0704df986d9d",
- "generation_number": 2
- },
- "liveboard_context": {
- "liveboard_identifier": "cffdc614-0214-42ba-9f57-cb6e8312fe5a",
- "visualization_identifier": "da0ed3da-ce1f-4071-8876-74d551b05faf"
- },
- "data_source_context": {
- "guid": "54beb173-d755-42e0-8f73-4d4ec768114f"
- }
- },
- "conversation_settings": {
- "enable_contextual_change_analysis": false,
- "enable_natural_language_answer_generation": true,
- "enable_reasoning": false
- }
-}'
-----
-
-The following example shows the request payload for the `answer` context type:
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/conversation/create' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "metadata_context": {
- "type": "answer",
- "answer_context": {
- "session_identifier": "f131ca07-47e9-4f56-9e21-454120912ae1",
- "generation_number": 1
- },
- "data_source_context": {
- "guid": "cd252e5c-b552-49a8-821d-3eadaa049cca"
- }
- },
- "conversation_settings": {
- "enable_contextual_change_analysis": false,
- "enable_natural_language_answer_generation": true,
- "enable_reasoning": false
- }
-}'
-----
-
-==== API response
-
-If the API request is successful, the API returns the conversation ID. You can use this ID to send follow-up questions to the conversation session.
-
-[source,JSON]
-----
-{"conversation_id":"q9tZYf_6WnFC"}
-----
-Note the conversation ID for subsequent agentic interactions and API calls.
-
-=== Send a question and generate streaming responses
-
-To send queries to an ongoing conversation session with Spotter agent and receive streaming responses, use the `/api/rest/2.0/ai/agent/converse/sse` API endpoint. This API endpoint uses the SSE protocol to deliver data incrementally as it becomes available, rather than waiting for the entire response to be generated before sending it to the client.
-
-The `/api/rest/2.0/ai/agent/converse/sse` API can be used as an integrated tool for real-time streaming of conversational interactions between agents and the ThoughtSpot backend. It enables AI agents to send user queries and receive incremental, streamed responses that can be processed and sent to users. REST clients can also send a `POST` request with a conversation ID and query string to fetch streaming responses.
-
-==== Request parameters
-
-[width="100%" cols="2,4"]
-[options='header']
-|=====
-|Parameter| Description
-|`conversation_identifier` |__String__. Specify the conversation ID received from the xref:spotter-apis.adoc#_create_a_conversation_session_with_spotter_agent[POST /api/rest/2.0/ai/agent/conversation/create] API call.
-|`messages`|_Array of Strings_. Include at least one natural language query. For example, `Sales data for Jackets`, `Top performing products in the west coast`.
-|=====
-
-////
-|`settings` |__Optional__. Defines additional parameters for the conversation context. You can set any of the following attributes as needed:
-
-* `enable_contextual_change_analysis` +
-__Boolean__. When enabled, Spotter analyzes how the context changes over time, that is comparing results from different queries.
-* `enable_natural_language_answer_generation` +
-__Boolean__. Allows sending natural language queries to the conversation session.
-* `enable_reasoning` +
-__Boolean__. Allows Spotter to use reasoning for deep analysis and precise responses.
-////
-
-==== Example request
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/converse/sse' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "conversation_identifier": "h2I_pTGaRQof",
- "messages": [
- "Net sales of Jackets"
- ]
-}'
-----
-
-==== API response
-
-If the API request is successful, the response includes a stream of events, each containing a partial or complete message from the AI agent, rather than a single JSON object.
-
-Each event is a simple text-based message in a specific format, `data: \n\n`; `\n\n` means that each message sent from the server to the client is prefixed with `data:` keyword, followed by the actual payload (``), and ends with two newline characters (`\n\n`).
-
-The API uses this format so that the clients can reconstruct the AI-generated response as it streams in, chunk by chunk, and show the responses in real-time. In agentic workflows, the receiving client or agent listens to the SSE stream, parses each event, and assembles the full response for its users.
-
-===== Example response
-
-[source,]
-----
-data: [{"type": "ack", "node_id": "BRxCtJ-aGt8l"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": "I"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " understand"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " you're"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " interested"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " in"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " the"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " net"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " sales"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " of"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " Jackets"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": "."}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " I'll"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " retrieve"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " the"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " relevant"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " data"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " for"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": " you"}]
-
-data: [{"id": "OJ0zMh4PVa-y", "type": "text-chunk", "group_id": "czoDDhNwwU7z", "metadata": {"format": "markdown"}, "content": "."}]
-
-data: [{"type": "notification", "group_id": "o8dQ9SAWdtrL", "metadata": {"title": "Net sales of Jackets"}, "code": "nls_start"}]
-
-data: [{"type": "notification", "group_id": "o8dQ9SAWdtrL", "code": "QH", "message": "Fetching Worksheet Data"}]
-
-data: [{"type": "notification", "group_id": "o8dQ9SAWdtrL", "code": "TML_GEN", "message": "Translating your query with the Reasoning Engine"}]
-
-data: [{"type": "notification", "group_id": "o8dQ9SAWdtrL", "code": "ANSWER_GEN", "message": "Verifying results with the Trust Layer"}]
-
-data: [{"id": "r24X7D99SROD", "type": "answer", "group_id": "o8dQ9SAWdtrL", "metadata": {"sage_query": "[sales] [item type] = [item type].'jackets'", "session_id": "b321b404-cbf1-4905-9b0c-b93ad4eedf89", "gen_no": 1, "transaction_id": "6874259d-13b1-478c-83cb-b3ed52628850", "generation_number": 1, "warning_details": null, "ambiguous_phrases": null, "query_intent": null, "assumptions": "You want to see the total sales amount for jackets item type.", "tml_phrases": ["[sales]", "[item type] = [item type].'jackets'"], "cached": false, "sub_queries": null, "title": "Net sales of Jackets", "worksheet_id": "cd252e5c-b552-49a8-821d-3eadaa049cca"}, "title": "Net sales of Jackets"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "The"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " net"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " Jackets"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " have"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " been"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " visual"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "ized"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " you"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "."}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " This"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " analysis"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " specifically"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " filtered"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " item"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " type"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "jackets"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "\""}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " and"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " calculated"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " total"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " amount"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " associated"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " with"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " those"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " products"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ".\n\n"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "**"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "Summary"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " &"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " Insights"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ":"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "**\n"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "-"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " The"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " visualization"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " shows"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " total"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " net"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " all"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " jacket"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " transactions"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " in"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " your"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " apparel"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " dataset"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ".\n"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "-"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " The"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " calculation"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " uses"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " only"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " amounts"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " where"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " item"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " type"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " is"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " \""}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "J"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "ackets"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ".\"\n"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "-"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " This"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " information"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " is"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " useful"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " for"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " understanding"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " the"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " revenue"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " contribution"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " of"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " jackets"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " within"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " your"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " product"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " mix"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ".\n\n"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "If"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " you'd"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " like"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " to"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " see"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " a"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " breakdown"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " by"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " region"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ","}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " state"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ","}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " time"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " period"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ","}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " or"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " compare"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " jacket"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " sales"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " to"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " other"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " product"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " types"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": ","}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " please"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " let"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " me"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": " know"}]
-
-data: [{"id": "BgY16KR8nVL1", "type": "text-chunk", "group_id": "_ARJXDKbFhHF", "metadata": {"format": "markdown"}, "content": "!"}]
-----
-
-The messages in the API response include the following parts:
-
-* `id` +
-A unique identifier for the message group
-* `type`
-Type of the message. Valid types are:
-** `ack` +
-Confirms receipt of the request. For example, the type in the first message `data: [{"type": "ack", "node_id": "BRxCtJ-aGt8l"}]`, which indicates that the server has received the client's request and is acknowledging it.
-** `text / text-chunk` +
-Content chunks, optionally formatted.
-** `answer` +
-The final structured response with metadata and analytics
-** `error` +
-Indicates a failure.
-** `notification` +
-Notification messages.
-* `group_id` +
-Groups related chunks together.
-* `metadata`:
-Indicates content format, for example, markdown.
-* `content` +
-The actual text content sent incrementally. For example, `"I"`, `"understand"`, `"you're"`, `"interested"`, `"in"`, `"the"`, `"net"`, `"sales"`, and so on.
-
-The following example shows the response text contents for the `answer` message type.
-
-[source,JSON]
-----
-[
- {
- "id": "r24X7D99SROD",
- "type": "answer",
- "group_id": "o8dQ9SAWdtrL",
- "metadata": {
- "sage_query": "[sales] [item type] = [item type].'jackets'",
- "session_id": "b321b404-cbf1-4905-9b0c-b93ad4eedf89",
- "gen_no": 1,
- "transaction_id": "6874259d-13b1-478c-83cb-b3ed52628850",
- "generation_number": 1,
- "warning_details": null,
- "ambiguous_phrases": null,
- "query_intent": null,
- "assumptions": "You want to see the total sales amount for jackets item type.",
- "tml_phrases": [
- "[sales]",
- "[item type] = [item type].'jackets'"
- ],
- "cached": false,
- "sub_queries": null,
- "title": "Net sales of Jackets",
- "worksheet_id": "cd252e5c-b552-49a8-821d-3eadaa049cca"
- },
- "title": "Net sales of Jackets"
- }
-]
-----
-
-The session ID and generation number serve as the data context for the Answer. You can use this information to create a new conversation session using `/api/rest/2.0/ai/agent/conversation/create`, or download the answer via the `/api/rest/2.0/report/answer` API endpoint.
-
-////
-* The tokens and TML phrases returned in the response can be used as inputs for the search data API call to get an Answer.
-////
-
-=== Send queries to a conversation session with Spotter agent
-
-To send queries to an ongoing conversation session with the Spotter agent, use the `/api/rest/2.0/ai/agent/{conversation_identifier}/converse` API endpoint.
-To use this API, the user must have access to the relevant conversational session and include its ID in the API request URL. The API request body must include at least one message in natural language format.
-
-==== Request parameters
-
-[width="100%" cols="2,2,4"]
-[options='header']
-|=====
-|Parameter|Type| Description
-|`conversation_identifier`|Path parameter|__String__. Required. Specify the conversation ID received from the xref:spotter-apis.adoc#_create_a_conversation_session_with_spotter_agent[POST /api/rest/2.0/ai/agent/conversation/create] API call.
-|`messages`|Form parameter|_Array of strings_. Required. Specify at least one query in natural language. For example, `total sales of jackets last month`.
-|=====
-
-
-////
-|`settings` |__Optional__. Defines additional parameters for the conversation context. You can set any of the following attributes as needed:
-
-* `enable_contextual_change_analysis` +
-__Boolean__. When enabled, Spotter analyzes how the context changes over time, that is comparing results from different queries.
-* `enable_natural_language_answer_generation` +
-__Boolean__. Allows sending natural language queries to the conversation session.
-* `enable_reasoning` +
-__Boolean__. Allows Spotter to use reasoning for deep analysis and precise responses.
-////
-
-==== Example request
-
-The following example shows the request body with the query text and the conversation ID.
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/agent/-1XZmqqMcbtm/converse' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "messages": [
- "total sales of jackets"
- ]
-}'
-----
-
-==== API response
-
-If the request is successful, the API returns an array of objects in the response. The messages in the API response include the following parts:
-
-* `type` +
-Type of the message, such as text, answer, or error.
-* `text` +
-Response message generated for the query.
-* `metadata` +
-Additional information based on the message type.
-
-The following example shows the response text contents for the `answer` message type.
-
-[source,JSON]
-----
-{
- "messages":[
- {
- "metadata":{
- },
- "internal":{
- },
- "type":"text",
- "text":"Let me retrieve the total sales of jackets from the dataset.",
- "agent_context":""
- },
- {
- "metadata":{
- "output":"{metadata-output}",
- "worksheet_id":"cd252e5c-b552-49a8-821d-3eadaa049cca",
- "assumptions":"You want to know the total sales amount for jackets specifically.",
- "chart_type":"KPI",
- "data_awareness_enabled":true
- },
- "internal":{
- },
- "type":"answer",
- "title":"total sales of jackets",
- "description":"",
- "session_id":"19a5da20-28c5-4266-a3be-e1c61f122b5d",
- "gen_no":1,
- "sage_query":"sum [sales] [item type] = [item type].'jackets'",
- "tml_tokens":[
- "sum [sales]",
- "[item type] = [item type].'jackets'"
- ],
- "formulas":[
- ],
- "subqueries":[
- ],
- "viz_suggestion":"CAAQIBomEiQzNGRmZjA2ZS0yNTViLTQ3NjUtYmJmYi00M2EwOGEzYmI4MjkoATIA",
- "ac_state":null
- },
- {
- "metadata":{
- },
- "internal":{
- },
- "type":"text",
- "text":"The total sales of jackets has already been visualized for you.\n\n**Summary & Insights:**\n- The result represents the overall sales amount specifically for the item type \"jackets\".\n- This metric is useful for understanding the revenue contribution of jackets within your apparel product portfolio.\n- You can use this figure to benchmark jacket performance against other item types, evaluate promotional effectiveness, or inform inventory decisions.\n\nIf you’d like a breakdown by region, store, or time period, just let me know!",
- "agent_context":""
- }
- ],
- "__args":{
- "conversation_identifier":"IrnWPL1NFc6H",
- "messages":[
- "total sales of jackets"
- ]
- }
-}
-----
-
-The session ID and generation number serve as the data context for the Answer. You can use this information to create a new conversation session using `/api/rest/2.0/ai/agent/conversation/create`, or download the answer via the `/api/rest/2.0/report/answer` API endpoint.
-
-[#process_results]
-== Processing results generated from Spotter APIs
-To export or download the Answer data generated by the Spotter APIs, use the xref:data-report-v2-api.adoc#exportSpotterData[Answer report] API.
-
-[NOTE]
-====
-Using tokens generated by the Spotter API in a xref:data-report-v2-api.adoc#_search_data_api[Search Data API] request can return invalid column errors, because these tokens may reference formulas or columns not present in the data model. Instead, use the xref:data-report-v2-api.adoc#exportSpotterData[Answer report] API and include the session ID and generation number obtained from the Spotter API in your API request to retrieve the data.
-====
-
-== Data literacy and query assistance
-The query assistance APIs help users find the appropriate dataset for a given query string, suggest what questions can be asked, and return example questions. These APIs are specifically designed to improve data literacy for users who may not be familiar with the underlying data, making it easier for them to explore and analyze data effectively.
-
-=== Get data source suggestions
-
-The `POST /api/rest/2.0/ai/data-source-suggestions` API provides relevant data source recommendations for a user-submitted natural language query. To use this API, you must have at least view access to the underlying metadata object referenced in the response.
-
-==== Request parameters
-
-[width="100%" cols="2,4"]
-[options='header']
-|====
-|Parameter| Description
-|`metadata_context` a| Required. Specify one of the following attributes to set the metadata context:
-
-* `data_source_identifiers` +
-__Array of strings__. IDs of the data source object such as Models.
-* `answer_identifiers` +
-__Array of strings__. GUIDs of the Answer objects that you want to use as metadata.
-* `conversation_identifier` +
-__String__. ID of the conversation session.
-* `liveboard_identifiers` +
-__Array of strings__. GUIDs of the Liveboards that you want to use as metadata.
-
-| `query` |__String__. Required parameter. Specify the query string that needs to be decomposed into smaller, analytical sub-questions.
-|`limit_relevant_questions` +
-__Optional__ | __Integer__. Sets a limit on the number of sub-questions to return in the response. Default is 5.
-|`bypass_cache` +
-__Optional__| __Boolean__. When set to `true`, disables cache and forces fresh computation.
-|`ai_context` +
-__Optional__. a| Additional context to guide the response. Define the following attributes as needed:
-|====
-
-==== Example request
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/relevant-questions/' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}'
- --data-raw '{
- "metadata_context": {
- "data_source_identifiers": [
- "cd252e5c-b552-49a8-821d-3eadaa049cca"
- ]
- },
- "query": "Net sales of Jackets in west coast",
- "limit_relevant_questions": 3
-}'
-----
-
-==== API response
-If the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.
-
-[source,JSON]
-----
-{
- "relevant_questions": [
- {
- "query": "What is the trend of sales by type over time?",
- "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
- "data_source_name": "(Sample) Retail - Apparel"
- },
- {
- "query": "Sales by item",
- "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
- "data_source_name": "(Sample) Retail - Apparel"
- },
- {
- "query": "Sales across regions",
- "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
- "data_source_name": "(Sample) Retail - Apparel"
- }
- ]
-}
-----
-
-The returned results include metadata such as:
-
-* `confidence` +
-A float indicating the Model's confidence in the relevance of each recommendation.
-* `details` +
-The data source ID, name, and description for each recommended data source.
-* `reasoning` +
-Reason provided by the LLM to explain why each data source was recommended.
-
-=== Get relevant questions
-
-The `/api/rest/2.0/ai/relevant-questions/` API endpoint breaks down a user-submitted query into relevant sub-questions. It accepts the original query and optional additional context, then generates a set of related questions to help users explore their data comprehensively.
-
-During agentic interactions, this API can be used as an integrated tool to decompose user queries and suggest relevant questions for a specific data context. REST clients can also call this API directly to fetch relevant questions via a `POST` request.
-
-==== Request parameters
-
-[width="100%" cols="2,4"]
-[options='header']
-|=====
-|Parameter| Description
-|`metadata_context` a| Required. Specify one of the following attributes to set the metadata context:
-
-* `data_source_identifiers` +
-__Array of strings__. IDs of the data source object such as Models.
-* `answer_identifiers` +
-__Array of strings__. GUIDs of the Answer objects that you want to use as metadata.
-* `conversation_identifier` +
-__String__. ID of the conversation session.
-* `liveboard_identifiers` +
-__Array of strings__. GUIDs of the Liveboards that you want to use as metadata.
-
-| `query` |__String__. Required parameter. Specify the query string that needs to be decomposed into smaller, analytical sub-questions.
-|`limit_relevant_questions` +
-__Optional__ | __Integer__. Sets a limit on the number of sub-questions to return in the response. Default is 5.
-|`bypass_cache` +
-__Optional__| __Boolean__. When set to `true`, disables cache and forces fresh computation.
-|`ai_context` +
-__Optional__. a| Additional context to guide the response. Define the following attributes as needed:
-
-* `instructions` +
-__Array of strings__. Custom user instructions to influence how the AI interprets and processes the query.
-* `content` +
-__Array of strings__. Additional input such as raw text or CSV-formatted data to enhance context and answer quality.
-|=====
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/relevant-questions/' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}'
- --data-raw '{
- "metadata_context": {
- "data_source_identifiers": [
- "cd252e5c-b552-49a8-821d-3eadaa049cca"
- ]
- },
- "query": "Net sales of Jackets in west coast",
- "limit_relevant_questions": 3
-}'
-----
-
-==== Example response
-If the request is successful, the API returns a set of questions related to the query and metadata context in the `relevant_questions` array. Each object in the `relevant_questions` array contains the following fields:
-
-* `query` +
-A string containing the natural language (NL) sub-question.
-* `data_source_identifier` +
-GUID of the data source object.
-* `data_source_name` +
-Name of the associated data source object.
-
-[source,JSON]
-----
-{
- "relevant_questions": [
- {
- "query": "What is the trend of sales by type over time?",
- "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
- "data_source_name": "(Sample) Retail - Apparel"
- },
- {
- "query": "Sales by item",
- "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
- "data_source_name": "(Sample) Retail - Apparel"
- },
- {
- "query": "Sales across regions",
- "data_source_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
- "data_source_name": "(Sample) Retail - Apparel"
- }
- ]
-}
-----
-
-== NL instructions to coach Spotter
-Administrators and data owners can guide and refine how Spotter interprets and answers user questions. The natural language (NL) instructions API allows setting instructions at the data model level. The API provides business context and preferred interpretations for specific queries or terminology to coach Spotter, but it does not train or change the underlying LLM.
-
-=== Set NL instructions
-To coach and instruct the Spotter system on how to interpret queries, apply filters, select columns, handle data nuances, and present answers using the data from a specific model, you can set global rules in natural language format. Setting instructions helps Spotter generate precise and consistent responses for user queries.
-
-To set instructions for a Model, send a `POST` request to the `/api/rest/2.0/ai/instructions/set` API endpoint.
-
-[NOTE]
-====
-To set NL instructions, you'll need administration or data management privileges, or at least edit access to the data Model.
-====
-
-==== Request parameters
-
-[width="100%" cols="2,4"]
-[options='header']
-|=====
-|Form parameter| Description
-|`data_source_identifier`|__String__. ID of the Model.
-|`nl_instructions_info` a|Instructions in the natural language format.
-
-* `instructions` +
-_Array of strings_. Include the rules that you want to add in the `ìnstructions` array. Ensure that the instructions do not exceed 3000 characters.
-* `scope`
-Sets the scope for the rules. By default, the rules are applied globally for all Spotter users who can access the Model specified in the request.
-|=====
-
-==== Example request
-
-The following example defines instructions to coach Spotter on how to interpret the query:
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/instructions/set' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN} \
- --data-raw '{
- "data_source_identifier": "71311827-31bb-48b2-8465-9a215adbc05d",
- "nl_instructions_info": [
- {
- "instructions": [
- "When I ask for last month, use ‘last 30 days’ as a filter.",
- "Exclude orders where order_status = '\''CANCELLED-USER'\'' when calculating total revenue"
- ],
- "scope": "GLOBAL"
- }
- ]
-}'
-----
-
-==== Example response
-If the API request is successful, ThoughtSpot returns the `{"success":true}` response.
-
-=== Retrieve NL instructions assigned to a Model
-
-To view the NL instructions assigned for a Model, send a `POST` request to the `/api/rest/2.0/ai/instructions/get` API endpoint.
-
-Only Spotter users with view access to the data model can retrieve instructions via API requests.
-
-==== Request parameters
-
-[width="100%" cols="2,4"]
-[options='header']
-|=====
-|Form parameter| Description
-|`data_source_identifier`|__String__. ID of the Model from which you want to fetch instructions.
-|=====
-
-==== Example request
-The following example shows the request body for retrieving NL instructions configured on a Model:
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/instructions/set' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN} \
- --data-raw '{
- "data_source_identifier": "3bbeac16-a723-4886-9eba-c4779d07fd83"
-}'
-----
-
-==== Example response
-If the instructions are configured on the Model specified in the API request, ThoughtSpot returns an array of instructions in the API response.
-
-[source,JSON]
-----
-{
- "nl_instructions_info": [
- {
- "instructions": [
- "When I ask for last month, use ‘last 30 days’ as a filter.",
- "Exclude orders where order_status = 'CANCELLED-USER' when calculating total revenue"
- ],
- "scope": "GLOBAL"
- }
- ]
-}
-----
-
-== Spotter coaching access
-
-ThoughtSpot supports publishing Spotter coaching information to other Orgs.Coaching changes from the primary Org are synchronized with the data models published in secondary Orgs.
-
-=== Assign Spotter coaching access privilege
-
-To allow users and groups to access spotter coaching information in data models, assign the `SPOTTER_COACHING_PRIVILEGE` via `POST` request to the `/api/rest/2.0/security/metadata/manage-object-privilege` API endpoint.
-
-In the API request, specify the data model, user, group, and ensure that the object privilege is set to `SPOTTER_COACHING_PRIVILEGE`.
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/security/metadata/manage-object-privilege' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "operation": "ADD",
- "metadata_type": "LOGICAL_TABLE",
- "object_privilege_types": [
- "SPOTTER_COACHING_PRIVILEGE"
- ],
- "metadata_identifiers": [
- "62f3e9b5-4fcc-4352-b8ad-fdddc2287506"
- ],
- "principals": [
- {
- "identifier": "UserA",
- "type": "USER"
- }
- ]
-}'
-----
-
-If the request is successful, the API returns the 204 response code.
-
-=== Get a list of users or groups with Spotter coaching privilege
-
-To get a list of users and groups with the Spotter coaching privilege for a specific data model or all data models, send a `POST` request to the `/api/rest/2.0/security/metadata/fetch-object-privileges` API endpoint.
-
-In the API request, specify the user or the group for which you want to retrieve the object privilege details.
-
-
-[source,cURL]
-----
-curl -X POST \
- --url 'https://{ThoughtSpot-Host}/api/rest/2.0/security/metadata/fetch-object-privileges' \
- -H 'Accept: application/json' \
- -H 'Content-Type: application/json' \
- -H 'Authorization: Bearer {AUTH_TOKEN}' \
- --data-raw '{
- "metadata": [
- {
- "identifier": "53141e3b-331d-4a74-80a2-e4322f9d8339",
- "type": "LOGICAL_TABLE"
- }
- ],
- "record_offset": 0,
- "record_size": 20,
- "principals": [
- {
- "identifier": "UserA",
- "type": "USER"
- }
- ]
-}'
-----
-
-If the request is successful, ThoughtSpot returns the object privilege details in the API response:
-
-[source,JSON]
-----
-{
- "metadata_object_privileges":[
- {
- "metadata_id":"53141e3b-331d-4a74-80a2-e4322f9d8339",
- "metadata_name":"Model_formula_variable",
- "metadata_type":"WORKSHEET",
- "principal_object_privilege_info":[
- {
- "principal_type":"USER",
- "principal_object_privileges":[
- {
- "principal_id":"0000083e-e253-10af-aa97-5e45d512ebbd",
- "principal_name":"rani.gangwar@thoughtspot.com",
- "principal_sub_type":"OIDC_USER",
- "object_privileges":"[SPOTTER_COACHING_PRIVILEGE]"
- }
- ]
- }
- ]
- }
- ]
-}
-----
-
== Additional resources
* Visit the +++REST API v2.0 Playground+++ to view the API endpoints and verify the request and response workflows.
-* For information about MCP tools, see xref:mcp-integration.adoc[MCP server integration].
+* For information about embedding Spotter in your app, see xref:embed-spotter.adoc[Embed Spotter].
+* For information about MCP server, see xref:mcp-integration.adoc[MCP server integration].
diff --git a/modules/ROOT/pages/spotter-classic-apis.adoc b/modules/ROOT/pages/spotter-classic-apis.adoc
new file mode 100644
index 000000000..0b93fc5f2
--- /dev/null
+++ b/modules/ROOT/pages/spotter-classic-apis.adoc
@@ -0,0 +1,264 @@
+= AI APIs (Spotter Classic)
+:toc: true
+:toclevels: 2
+
+:page-title: Spotter APIs
+:page-pageid: spotter-apis-classic
+:page-description: You can use Spotter REST APIs to receive Answers for your analytical queries sent through the conversational experience with ThoughtSpot.
+
+This document describes how to use AI APIs with Spotter Classic to query and explore data through conversational interactions.
+For information about APIs for agent interactions, see xref:spotter-agent-apis.adoc[Spotter Agent APIs].
+
+
+== Overview
+The key capabilities of the Spotter APIs include the following:
+
+* Initiating and managing conversational sessions
+* Processing natural-language queries and interpreting user intent
+* Generating analytical responses, insights, and visualizations for user queries.
+//* Recommending relevant datasets or data sources
+//* Decomposing complex user queries
+
+In the Spotter classic mode, the conversation session and context is managed by Spotter. The APIs allow users to interact directly with Spotter with no specific agentic capabilities or framework.
+
+=== Locale settings for API requests
+
+When using the xref:spotter-classic-apis.adoc#_generate_a_single_answer[Single Answer] and xref:spotter-classic-apis.adoc#_send_a_query_to_a_conversation_session[Send message] APIs, the locale used for API requests depends on your application's locale settings:
+
+* If your application is set to "Use browser language," the API will not apply the default locale. In this case, you must explicitly include the desired locale code in the `Accept-Language` header of your API request. If you do not specify the locale, the API may not return responses in the expected language or regional format.
+* If you have set a specific locale in your ThoughtSpot instance or user profile, the API will use this locale to generate responses, overriding the browser or OS locale.
+
+To ensure consistent localization, set the `Accept-Language` header in your API requests when relying on browser language detection, or configure the locale explicitly in the user profile settings in ThoughtSpot.
+
+=== API endpoints
+Each of the Spotter AI APIs serves a specific function:
+
+[width="100%" cols="1"]
+[options='header']
+|=====
+a| `POST /api/rest/2.0/ai/conversation/create` [beta betaBackground]^Beta^ +
+
+xref:spotter-classic-apis.adoc#_create_a_conversation_session[Creates a conversation session] with Spotter to generate Answers from a specific data Model. The resulting session sets the context for subsequent queries and responses.
+
+a| `POST /api/rest/2.0/ai/conversation/{conversation_identifier}/converse` [beta betaBackground]^Beta^ +
+Allows xref:spotter-classic-apis.adoc#_send_a_query_to_a_conversation_session[sending a message or follow-up query] to an ongoing conversation session.
+
+a| `POST /api/rest/2.0/ai/answer/create` +
+xref:spotter-classic-apis.adoc#_generate_a_single_answer[Generates an answer] for a natural language query specified in the API request.
+|=====
+
+== Create a conversation session
+To create a conversation session with Spotter, send a `POST` request to the `/api/rest/2.0/ai/conversation/create` API endpoint. The resulting conversation session maintains the context and can be used to send queries and follow-up questions to generate answers.
+
+=== Request parameters
+Include the following parameters in the request body:
+
+[width="100%" cols="2,4"]
+[options='header']
+|=====
+|Form parameter|Description
+|`metadata_identifier`|_String_. Required. Specify the GUID of the data source objects such as ThoughtSpot Models. The metadata object specified in the API request will be used as a data source for the conversation.
+|`tokens` +
+__Optional__ a|_String_. To set the context for the conversation, you can specify a set of keywords as token string. For example, `[sales],[item type],[state]`.
+|=====
+
+=== Example requests
+
+==== With tokens
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/conversation/create' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "tokens": "[sales],[item type],[Jackets]"
+}'
+----
+
+==== Without tokens
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/conversation/create' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca"
+}'
+----
+
+=== API response
+
+If the API request is successful, a conversation identifier is created. Note the GUID of the conversation and use it when sending follow-up queries.
+
+[source,JSON]
+----
+{"conversation_identifier":"98f9b8b0-6224-4f9d-b61c-f41307bb6a89"}
+----
+
+== Send a query to a conversation session
+To send a question to an ongoing conversation session or ask follow-up questions, send a `POST` request body with conversation ID and query text to the `POST /api/rest/2.0/ai/conversation/{conversation_identifier}/converse` API endpoint.
+
+This API endpoint supports only the conversation sessions created using the `POST /api/rest/2.0/ai/conversation/create` API call.
+
+=== Request parameters
+
+[width="100%" cols="2,2,4"]
+[options='header']
+|=====
+|Parameter|Type| Description
+|`conversation_identifier`|Path parameter|__String__. Required. Specify the GUID of the conversation received from the xref:spotter-apis.adoc#_create_a_conversation_session[create conversation API call].
+|`metadata_identifier`|Form parameter|_String_. Required. Specify the GUID of the data source object, for example, Model. The metadata object specified in the API request will be used as a data source for the follow-up conversation.
+|`message`|Form parameter|_String_. Required. Specify a natural language query string. For example, `Sales data for Jackets`.
+|=====
+
+=== Example request
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/conversation/03f48527-b973-4efa-81fd-a8568a4f9e78/converse' \
+ -H 'Accept: application/json' \
+ -H 'accept-language: en-US' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "message": "Top performing products in the west coast"
+}'
+----
+
+=== API response
+
+If the API request is successful, the following data is sent in the API response:
+
+* `session_identifier` +
+GUID of the Answer session.
+* `generation_number` +
+Number assigned to the Answer session.
+* `message_type` +
+Type of response received for the query. For example, `TSAnswer` (ThoughtSpot Answer).
+* `visualization_type` +
+The data format of the generated Answer, for example, a chart or table. When you download this Answer, the data will be exported in the format indicated by the `visualization_type`.
+* `tokens` +
+Tokens generated from the natural language search query specified in the API request. These tokens can be used as input to the `/api/rest/2.0/ai/conversation/create` API endpoint to set the context for a conversation session.
+
+[NOTE]
+====
+Note the session ID and generation number. To export the Answer generated from this conversation, send these attributes in the `POST` request body to the `/api/rest/2.0/report/answer` endpoint.
+====
+
+[source,JSON]
+----
+[
+ {
+ "session_identifier": "1290f8bc-415a-4ecb-ae3b-e1daa593eb24",
+ "generation_number": 3,
+ "message_type": "TSAnswer",
+ "visualization_type": "Chart",
+ "tokens": "[sales], [state], [item type], [region] = [region].'west', sort by [sales] descending"
+ }
+]
+----
+
+=== Ask follow-up questions
+
+The API retains the context of previous queries when you send follow-up questions. To verify this, you can send another API request with a follow-up question to drill down into the data.
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/conversation/03f48527-b973-4efa-81fd-a8568a4f9e78/converse' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca",
+ "message": "which city has the better sales of jackets here?"
+}'
+----
+
+The API retains the context of the initial question and returns a response:
+
+[source,JSON]
+----
+[
+ {
+ "session_identifier": "ee077665-08e1-4a9d-bfdf-7b2fe0ca5c79",
+ "generation_number": 3,
+ "message_type": "TSAnswer",
+ "visualization_type": "Table",
+ "tokens": "[sales], by [city], [state], [item type] = [item type].'jackets', [region] = [region].'west', sort by [sales] descending"
+ }
+]
+----
+
+== Generate a single Answer
+To generate an Answer from a natural language search query, send a `POST` request to the `/api/rest/2.0/ai/answer/create` API endpoint. In the request body, include the query and the data source ID.
+
+=== Request parameters
+
+[width="100%" cols="2,4"]
+[options='header']
+|=====
+|Form parameter| Description
+|`query`|__String__. Required. Specify the string as a natural language query. For example, `Top performing products in the west coast`.
+|`metadata_identifier`|_String_. Required. Specify the GUID of the data source object, for example, Model. The metadata object specified in the API request will be used as the data source for generating the Answer.
+|=====
+
+=== Example request
+In the following example, a query string and the model ID are included in the request body to generate the Answer.
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/answer/create' \
+ -H 'Accept: application/json' \
+ -H 'accept-language: en-US' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "query": "Top performing products in the west coast",
+ "metadata_identifier": "cd252e5c-b552-49a8-821d-3eadaa049cca"
+}'
+----
+
+=== API response
+
+If the API request is successful, the following data is sent in the API response:
+
+* `session_identifier` +
+GUID of the Answer session.
+* `generation_number` +
+Number assigned to the Answer session.
+* `message_type` +
+Type of response received for the query. For example, `TSAnswer` (ThoughtSpot Answer).
+* `visualization_type` +
+The data format of the generated Answer; for example, a chart or table. When you download this Answer, the data will be exported in the format indicated by the `visualization_type`.
+* `tokens` +
+Tokens generated from the natural language search query specified in the API request. These tokens can be used as input to the `/api/rest/2.0/ai/conversation/create` endpoint to set the context for a conversation session.
+
+[NOTE]
+====
+Note the session ID and generation number. To export the result generated from this API call, send these attributes in the `POST` request body to the `/api/rest/2.0/report/answer` endpoint.
+====
+
+[source,JSON]
+----
+[{
+ "session_identifier": "57784fa1-10fa-431d-8d82-a1657d627bbe",
+ "generation_number": 2,
+ "message_type": "TSAnswer",
+ "visualization_type": "Undefined",
+ "tokens": "[product], [region] = [region].'west', sort by [sales] descending"
+}]
+----
+
+== Additional resources
+
+Visit the +++REST API v2.0 Playground+++ to verify the request and response workflows.
diff --git a/modules/ROOT/pages/spotter-in-custom-chatbot.adoc b/modules/ROOT/pages/spotter-in-custom-chatbot.adoc
deleted file mode 100644
index 04c01d17e..000000000
--- a/modules/ROOT/pages/spotter-in-custom-chatbot.adoc
+++ /dev/null
@@ -1,68 +0,0 @@
-== Integrating Spotter into your own Chatbot
-
-In this article we will use ThoughtSpot's https://github.com/thoughtspot/visual-embed-sdk[visual embed SDK] to add analytics and interactive data visualizations to your own chatbot. The full code written below is available at https://codesandbox.io/p/sandbox/bodyless-sample-doc-5q3dwr[codesanbox].
-
-=== Install Visual embed SDK
-
- $ npm i @thoughtspot/visual-embed-sdk
-
-=== Configure security and authentication
-
-. Allowlist the application which will embed thoughtspot visualizations. Basically adding the correct CORS and frame-ancestors CSP. More details on how to do that https://developers.thoughtspot.com/docs/security-settings[here].
-. Configure the authentication scheme which works best for your use case. Read https://developers.thoughtspot.com/docs/embed-auth[this guide], to help you choose. For the purpose of this article we will use `AuthType.None` and assume you are logged into your instance in a different Tab, as setting up the other scehmes are covered in https://developers.thoughtspot.com/docs/embed-auth[this article].
-
-=== Get the data model
-
-For this guide we assume that you have already connected your database, and created a ThoughtSpot data model. Please log into your instance to get the `id` of the model you want to use. In this article we use a https://try-everywhere.thoughtspot.cloud/#/everywhere[demo] Thoughtspot instance with a sample data model.
-
-=== Initialize the SDK
-
-[,js]
-----
-import {
- SpotterAgentEmbed,
- init,
- AuthType,
-} from "@thoughtspot/visual-embed-sdk";
-
-init({
- thoughtSpotHost: "https://.thoughtspot.cloud",
- authType: AuthType.None, // Or your authentication scheme.
-});
-----
-
-=== Create a new conversation
-
-To use the spotter conversational analytics, you start by creating a new conversation. This conversation holds the context to all messages sent to ThoughtSpot by your bot. This enables a truly conversational experience for your users.
-
-[,js]
-----
-const conversation = new SpotterAgentEmbed({
- // ID of the data source object
- worksheetId: "",
- });
-----
-
-=== Send messages and get interactive visualizations in response
-
-Once you have a conversation, you would use it to send user messages to ThoughtSpot Spotter AI which will evaluate and generate data on your data model and send back the visualization.
-
-[,js]
-----
-// Get the response from ThoughtSpot Spotter
-const { container } = await conversation.sendMessage(message);
-
-// Create a new DOM element, to host the visualization returned above.
-const div = document.createElement("div");
-
-// Add any styling you might want to this element.
-div.classList.add("viz");
-// Add the container of the visualization as contents to this dom element.
-div.append(container);
-// insert the DOM into your application.
-app.insertAdjacentElement("beforeend", div);
-----
-
-=== That's all folks!
-
-And, thats it! Super quick start on how to leverage Spotter embed APIs to integrate with your own chatbot. Look at the full https://codesandbox.io/p/sandbox/bodyless-sample-doc-5q3dwr[codesandbox] to see it in action in a dummy chatbot we created.
diff --git a/modules/ROOT/pages/spotter-nl-instructions.adoc b/modules/ROOT/pages/spotter-nl-instructions.adoc
new file mode 100644
index 000000000..4a278c469
--- /dev/null
+++ b/modules/ROOT/pages/spotter-nl-instructions.adoc
@@ -0,0 +1,211 @@
+= Spotter coaching APIs
+:toc: true
+:toclevels: 2
+
+:page-title: Spotter APIs
+:page-pageid: spotter-coaching-apis
+:page-description: You can use Spotter REST APIs to receive Answers for your analytical queries sent through the conversational experience with ThoughtSpot.
+
+Administrators and data owners can guide and refine how Spotter interprets and answers user questions. The natural language (NL) instructions API allows you to set instructions at the data model level. The API provides business context and preferred interpretations for specific queries or terminology to coach Spotter, but it does not train or change the underlying LLM.
+
+== Set NL instructions
+To coach and instruct the Spotter system on how to interpret queries, apply filters, select columns, handle data nuances, and present answers using the data from a specific model, you can set global rules in natural language format. Setting instructions helps Spotter generate precise and consistent responses for user queries.
+
+To set instructions for a Model, send a `POST` request to the `/api/rest/2.0/ai/instructions/set` API endpoint.
+
+[NOTE]
+====
+To set NL instructions, you need administration or data management privileges, or at least edit access to the data Model.
+====
+
+=== Request parameters
+
+[width="100%" cols="2,4"]
+[options='header']
+|=====
+|Form parameter| Description
+|`data_source_identifier`|__String__. ID of the Model.
+|`nl_instructions_info` a|Instructions in the natural language format.
+
+* `instructions` +
+_Array of strings_. Include the rules that you want to add in the `instructions` array. Ensure that the instructions do not exceed 3000 characters.
+* `scope`
+Sets the scope for the rules. By default, the rules are applied globally for all Spotter users who can access the Model specified in the request.
+|=====
+
+=== Example request
+
+The following example defines instructions to coach Spotter on how to interpret the query:
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/instructions/set' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "data_source_identifier": "71311827-31bb-48b2-8465-9a215adbc05d",
+ "nl_instructions_info": [
+ {
+ "instructions": [
+ "When I ask for last month, use ‘last 30 days’ as a filter.",
+ "Exclude orders where order_status = '\''CANCELLED-USER'\'' when calculating total revenue"
+ ],
+ "scope": "GLOBAL"
+ }
+ ]
+}'
+----
+
+=== Example response
+If the API request is successful, ThoughtSpot returns the `{"success":true}` response.
+
+== Retrieve NL instructions assigned to a Model
+
+To view the NL instructions assigned for a Model, send a `POST` request to the `/api/rest/2.0/ai/instructions/get` API endpoint.
+
+Only Spotter users with view access to the data model can retrieve instructions via API requests.
+
+=== Request parameters
+
+[width="100%" cols="2,4"]
+[options='header']
+|=====
+|Form parameter| Description
+|`data_source_identifier`|__String__. ID of the Model from which you want to fetch instructions.
+|=====
+
+=== Example request
+The following example shows the request body for retrieving NL instructions configured on a Model:
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/ai/instructions/get' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "data_source_identifier": "3bbeac16-a723-4886-9eba-c4779d07fd83"
+}'
+----
+
+=== Example response
+If the instructions are configured on the Model specified in the API request, ThoughtSpot returns an array of instructions in the API response.
+
+[source,JSON]
+----
+{
+ "nl_instructions_info": [
+ {
+ "instructions": [
+ "When I ask for last month, use ‘last 30 days’ as a filter.",
+ "Exclude orders where order_status = 'CANCELLED-USER' when calculating total revenue"
+ ],
+ "scope": "GLOBAL"
+ }
+ ]
+}
+----
+
+== Spotter coaching access
+
+ThoughtSpot supports publishing Spotter coaching information to other Orgs. Coaching changes from the primary Org are synchronized with the data models published in secondary Orgs.
+
+=== Assign Spotter coaching access privilege
+
+To allow users and groups to access spotter coaching information in data models, assign the `SPOTTER_COACHING_PRIVILEGE` via `POST` request to the `/api/rest/2.0/security/metadata/manage-object-privilege` API endpoint.
+
+In the API request, specify the data model, user, and group, and ensure that the object privilege is set to `SPOTTER_COACHING_PRIVILEGE`.
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/security/metadata/manage-object-privilege' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "operation": "ADD",
+ "metadata_type": "LOGICAL_TABLE",
+ "object_privilege_types": [
+ "SPOTTER_COACHING_PRIVILEGE"
+ ],
+ "metadata_identifiers": [
+ "62f3e9b5-4fcc-4352-b8ad-fdddc2287506"
+ ],
+ "principals": [
+ {
+ "identifier": "UserA",
+ "type": "USER"
+ }
+ ]
+}'
+----
+
+If the request is successful, the API returns the 204 response code.
+
+=== Get a list of users or groups with Spotter coaching privilege
+
+To get a list of users and groups with the Spotter coaching privilege for a specific data model or all data models, send a `POST` request to the `/api/rest/2.0/security/metadata/fetch-object-privileges` API endpoint.
+
+In the API request, specify the user or the group for which you want to retrieve the object privilege details.
+
+
+[source,cURL]
+----
+curl -X POST \
+ --url 'https://{ThoughtSpot-Host}/api/rest/2.0/security/metadata/fetch-object-privileges' \
+ -H 'Accept: application/json' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer {AUTH_TOKEN}' \
+ --data-raw '{
+ "metadata": [
+ {
+ "identifier": "53141e3b-331d-4a74-80a2-e4322f9d8339",
+ "type": "LOGICAL_TABLE"
+ }
+ ],
+ "record_offset": 0,
+ "record_size": 20,
+ "principals": [
+ {
+ "identifier": "UserA",
+ "type": "USER"
+ }
+ ]
+}'
+----
+
+If the request is successful, ThoughtSpot returns the object privilege details in the API response:
+
+[source,JSON]
+----
+{
+ "metadata_object_privileges":[
+ {
+ "metadata_id":"53141e3b-331d-4a74-80a2-e4322f9d8339",
+ "metadata_name":"Model_formula_variable",
+ "metadata_type":"WORKSHEET",
+ "principal_object_privilege_info":[
+ {
+ "principal_type":"USER",
+ "principal_object_privileges":[
+ {
+ "principal_id":"0000083e-e253-10af-aa97-5e45d512ebbd",
+ "principal_name":"rani.gangwar@thoughtspot.com",
+ "principal_sub_type":"OIDC_USER",
+ "object_privileges":"[SPOTTER_COACHING_PRIVILEGE]"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+----
+
+== Additional resources
+
+* Visit the +++REST API v2.0 Playground+++ to view the API endpoints and verify the request and response workflows.
+* For information about MCP tools, see xref:mcp-integration.adoc[MCP server integration].
diff --git a/modules/ROOT/pages/spottercode-integration.adoc b/modules/ROOT/pages/spottercode-integration.adoc
index f213c0bfc..386f231c9 100644
--- a/modules/ROOT/pages/spottercode-integration.adoc
+++ b/modules/ROOT/pages/spottercode-integration.adoc
@@ -170,10 +170,3 @@ video::./images/cursor-lb-embed.mp4[width=100%,options="autoplay,loop"]
* `additionalDocs` - To include more documentation for extra context, such as Java or TypeScript SDK guidance.
////
-
-
-
-
-
-
-
diff --git a/modules/ROOT/pages/variables.adoc b/modules/ROOT/pages/variables.adoc
index 025beb6ca..a5d4ce38b 100644
--- a/modules/ROOT/pages/variables.adoc
+++ b/modules/ROOT/pages/variables.adoc
@@ -55,7 +55,6 @@ xref:variables.adoc#_delete_a_variable[Deletes the variables] specified in the A
* Variable APIs for creating, deleting, searching, and assigning values can only be used by the ThoughtSpot instance administrator.
* These APIs can only be used from the primary Org.
====
-
////
[NOTE]
====
diff --git a/modules/ROOT/pages/webhooks-comm-channel.adoc b/modules/ROOT/pages/webhooks-comm-channel.adoc
index 50442d032..ad7ce839c 100644
--- a/modules/ROOT/pages/webhooks-comm-channel.adoc
+++ b/modules/ROOT/pages/webhooks-comm-channel.adoc
@@ -1,4 +1,4 @@
-= Configure, validate and monitor communication channels
+= Configure and monitor communication channels
:toc: true
:toclevels: 3
diff --git a/modules/ROOT/pages/whats-new-prev-history.adoc b/modules/ROOT/pages/whats-new-prev-history.adoc
new file mode 100644
index 000000000..e2661ee2c
--- /dev/null
+++ b/modules/ROOT/pages/whats-new-prev-history.adoc
@@ -0,0 +1,2599 @@
+= What’s new
+:toc: true
+:toclevels: 1
+
+:page-title: What's new
+:page-pageid: whats-new-prev-releases
+:page-description: New features and enhancements
+
+This page lists new features, enhancements, and deprecated functionality introduced for ThoughtSpot Embedded instances in release versions before the year 2026. For information about the features introduced in the new release versions in 2026, see xref:whats-new.adoc[What's new].
+
+== Version 10.15.0.cl
+
+.Theme Builder
+[%collapsible]
+====
+Theme Builder is now generally available (GA) and will be rolled out to all ThoughtSpot instances in customer deployments over the next few weeks.
+
+When this feature is enabled on your instance, you can access it from the *Develop* page in ThoughtSpot and use it to customize styles and UX themes directly within the product.
+
+For more information, see xref:theme-builder.adoc[Theme Builder].
+====
+
+.V3 navigation and home page experience
+[%collapsible]
+====
+The new V3 navigation and home page experience is now generally available (GA) and can be enabled on ThoughtSpot embedded instances.
+
+The default UI experience in full application embedding remains the classic (V1) experience until further notice. Developers embedding the full ThoughtSpot application can enable the V3 experience in their applications by setting the appropriate configuration options in their embed code.
+
+For more information, see xref:full-app-customize.adoc[Customizing full application embedding].
+====
+
+.Formula variables in RLS rules
+[%collapsible]
+====
+You can now create formula variables using the Variable REST API and use these variables in RLS rules for a specific data context and in ABAC token requests to dynamically assign security attributes to users.
+
+For more information, see xref:abac_rls-variables.adoc[ABAC via RLS with variables].
+====
+.Spotter APIs
+[%collapsible]
+====
+ThoughtSpot introduces new REST APIs for the following Spotter workflows:
+//* To get data source suggestions based on a user's query
+* To send queries to a conversation session with the Spotter agent
+* To set natural language (NL) instructions on a model to coach the Spotter system
+* To fetch NL instructions configured on a model
+
+For more information, see xref:spotter-apis.adoc[Spotter APIs].
+====
+.Embed events and parameters to intercept API calls
+[%collapsible]
+====
+You can now intercept API calls from the embedded ThoughtSpot application using the `interceptUrls` attribute in the Visual Embed SDK. This feature lets you control API requests in your embedding application and use embed events to modify, block, or handle requests before they are sent to the backend. For more information, see xref:api-intercept.adoc[Intercept API calls and search requests].
+====
+.Icon customization enhancements
+[%collapsible]
+====
+You can now replace or customize the chart switcher toggle and icons in the Charts drawer on an Answer or visualization page using SVG sprites. Previously, these icons were fixed to ThoughtSpot defaults and were not configurable. In the new version, these icons are available as SVG components and can be replaced by developers through the xref:customize-icons.adoc[icon customization framework] as needed.
+====
+.Mobile Embed SDK
+[%collapsible]
+====
+The SDKs for embedding ThoughtSpot components in mobile apps are now Generally Available (GA). For more information about the SDKs and how to embed a ThoughtSpot component in a mobile app, see xref:mobile-embed.adoc[Mobile embed documentation].
+====
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.44.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API
+[%collapsible]
+====
+For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 10.14.0.cl
+
+.Code based custom actions
+[%collapsible]
+====
+ThoughtSpot now enables developers to define custom action in their embed code through the Visual Embed SDK. This enhancement enables code based customization of actions for Liveboards, Visualizations, Answers, and Spotter. With this functionality, developers can add custom actions that show up as new menu options in one of the following UI elements:
+
+* the primary menu bar
+* the **More** options menu image:./images/icon-more-10px.png[the more options menu]
+* the contextual menu that appears when a user right-clicks on an Answer or visualization +
+
+Key characteristics of code-based custom actions:
+
+* Can be maintained within your codebase to facilitate migration across organizations and clusters.
+* Can have controlled visibility in ThoughtSpot by evaluating conditions within your application logic. This approach enables you to dynamically display or hide custom actions based on specific criteria, ensuring that only relevant actions are presented to users in different contexts.
+* Can be assigned to Liveboards.
+* Can be conditionally displayed based on the presence of a specific column in a visualization.
+
+For more information, see xref:code-based-custom-actions.adoc[Code based custom actions].
+====
+
+.Webhooks for Liveboard schedule events [beta betaBackground]^Beta^
+[%collapsible]
+====
+You can now configure a xref:webhooks-lb-schedule.adoc[webhook for Liveboard schedule events] to automate notifications to external applications. This feature allows you to send Liveboard reports directly to a webhook endpoint and create your own custom emails or workflow.
+
+This feature is currently in beta and is not enabled by default. To enable it on your instance, contact ThoughtSpot Support.
+====
+
+=== Template variables for publishing
+The variable APIs include several enhancements to streamline variable creation and update workflows.
+For information about the new enhancements and breaking changes, see xref:rest-apiv2-changelog.adoc#_variable_api_enhancements[REST API changelog] and xref:variables.adoc[Variables documentation].
+
+.Parameter chip visibility configuration [tag redBackground]#BREAKING CHANGE#
+[%collapsible]
+====
+The `HostEvent.UpdateParameters` event in the Visual Embed SDK now includes the `isVisibleToUser` attribute, which allows you to control the visibility of Parameter chips on embedded ThoughtSpot pages.
+
+Before this enhancement, the Parameter chip display behavior was inconsistent across embed types when the Parameter values were updated via `HostEvent.UpdateParameters` requests. With the new change, the `isVisibleToUser` attribute in `HostEvent.UpdateParameters` is set to `false` by default for all embed types.
+
+With the new enhancement, the embedded pages that previously kept the parameter chip visible after an override via `HostEvent.UpdateParameters` will now hide it unless the `isVisibleToUser` attribute is explicitly set to `true`. +
+This behavior may introduce a breaking change if your current implementation relies on the previous default chip visibility behavior. To retain chip visibility, developers must update their embedding implementation to pass `isVisibleToUser: true` in their `HostEvent.UpdateParameters` requests.
+
+For more information, see xref:runtime-parameters.adoc#_show_or_hide_parameter_chips_in_embedded_sessions[Runtime Parameter overrides].
+====
+.Pre-rendering enhancements
+[%collapsible]
+====
+Pre-rendering now provides enhanced flexibility and granular control over for rendering embedded ThoughtSpot components. For more information, see xref:prerender.adoc[Pre-rendering ThoughtSpot Embed components].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.43.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API
+[%collapsible]
+====
+For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 10.13.0.cl
+
+.Spotter AI APIs
+[%collapsible]
+====
+ThoughtSpot introduces the following new xref:spotter-apis.adoc[Spotter AI APIs] [beta betaBackground]^Beta^, to provide contextual and agentic capabilities for integration with external clients and custom AI applications:
+
+* `/api/rest/2.0/ai/agent/conversation/create`
+//* `/api/rest/2.0/ai/data-source-suggestions`
+* `/api/rest/2.0/ai/relevant-questions/`
+* `/api/rest/2.0/ai/agent/converse/sse`
+
+These APIs are designed to build context with each interaction, orchestrate reasoning, and expose tools and skills for natural language analytics.
+
+For more information, see xref:spotter-apis.adoc[Spotter AI APIs].
+
+////
+With the introduction of these APIs, the following legacy API endpoints will be deprecated:
+
+* `POST /api/rest/2.0/ai/conversation/create`
+* `POST /api/rest/2.0/ai/conversation/{conversation_identifier}/converse`
+* `POST /api/rest/2.0/ai/analytical-questions`
+
+The above-listed AI endpoints will be available in the Playground until further notice. However, we recommend using the new APIs for better context management, extensibility, and integration options.
+////
+====
+
+.Support for runtime overrides in Spotter embed
+[%collapsible]
+====
+You can apply runtime filters and parameter overrides to Spotter sessions and interactions using the Visual Embed SDK. When these overrides are configured in the SDK, they are applied to the data used for Spotter queries, and the generated answers in these sessions will reflect the applied overrides.
+
+The Visual Embed SDK Playground for Spotter embedding includes an option to set runtime overrides. You can test and preview the results before updating your embed code.
+
+For more information, see xref:runtime-filters.adoc[Runtime filters] and xref:runtime-parameters.adoc[Runtime Parameters].
+====
+
+.Full application embed experience
+[%collapsible]
+====
+* The new experience with a sliding navigation panel and modular home page is now available as an Early Access feature for ThoughtSpot embedded application users.
++
+The new experience introduces a left navigation panel with a persona-based app selector and a modular home page with customizable components. This feature is turned off by default on ThoughtSpot. If this feature is enabled on your instance, you can enable it in full application embed using the `discoveryExperience` SDK property.
++
+For more information, see xref:full-app-customize.adoc[V3 navigation and home page experience].
+
+* List pages, such as Answers and Liveboards, now include enhanced sorting and filtering capabilities. These pages also allow users to organize, find, and personalize content. Developers can customize the visibility of columns in their embeds by configuring the xref:AppViewConfig.adoc#_hiddenlistcolumns[`hiddenListColumns`] property in the SDK.
++
+For more information, see xref:full-app-customize.adoc#_hide_columns_on_list_pages_new_experience[Hide columns on List pages].
+====
+
+.Worksheet deprecation and removal
+[%collapsible]
+====
+Worksheets are replaced with Models, and all application workflows will require you to use Models. If you are importing worksheet TMLs, the import operation may fail with an error, requiring users to convert Worksheets to Models. Please update your CI/CD and Git workflows to use Model TMLs instead of Worksheets.
+
+For more information, see xref:deprecated-features.adoc#_worksheet_deprecation_and_removal[Worksheet deprecation].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.42.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 10.12.0.cl
+
+.Liveboard grouping and styling [beta betaBackground]^Beta^
+[%collapsible]
+====
+You can now create a visual group of Answers and note tiles on an embedded Liveboard and customize the look and feel of the Liveboard, groups, and visualizations using the new styling panel.
+
+The Liveboard styling and grouping feature is disabled by default on embedded apps. To enable this feature on your embed, set `isLiveboardStylingAndGroupingEnabled` to `true` in the SDK and contact ThoughtSpot Support.
+
+[NOTE]
+The `isLiveboardStylingAndGrouping` attribute is now replaced with `isLiveboardMasterpiecesEnabled`.
+
+When this feature is enabled, you can use the following CSS variables in the Visual Embed SDK to style your Liveboard elements:
+
+* `--ts-var-liveboard-layout-background`
+* `--ts-var-liveboard-group-background`
+* `--ts-var-liveboard-group-title-font-color`
+* `--ts-var-liveboard-group-border-color`
+* `--ts-var-liveboard-group-description-font-color`
+* `--ts-var-liveboard-group-tile-title-font-color`
+* `--ts-var-liveboard-group-tile-description-font-color`
+
+For more information, see xref:customize-css-styles.adoc#grp-style[CSS variables reference].
+====
+.Lazy loading of visualizations on a Liveboard
+[%collapsible]
+====
+To optimize initial load time, you can now enable lazy loading of Liveboard visualizations using the `lazyLoadingForFullHeight` parameter. When both `fullHeight` and `lazyLoadingForFullHeight` attributes are set to `true`, visualizations in the embedded Liveboard are loaded incrementally as the user scrolls, rather than all at once on initial load. For more information, see xref:lazy-loading-fullheight.adoc[Lazy loading of Liveboard visualizations].
+====
+
+.Spotter embed enhancements
+[%collapsible]
+====
+Spotter coaching::
+Your application users can now coach Spotter based on an ongoing conversation.
+The *Add to coaching* feature is turned off by default on ThoughtSpot instances. To enable this feature, contact your administrator.
+
+Spotter Agent embedding::
+To embed Spotter Agent in a React app, the SDK provides a React component and the `useSpotterAgent` custom React hook. For more information, see xref:embed-ts-react-app.adoc#_embed_spotter_agent_in_your_own_app[Embed Spotter Agent in your React app].
+
+For information about the other SDK enhancements, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.Full application embed
+[%collapsible]
+====
+In full application embed, developers can now enable the new navigation panel and home page experience. The new experience also organizes the application menu into separate persona-based contextual sections. The new interface also provides a slider to allow users to view or hide the left navigation panel.
+
+The new navigation experience is disabled by default and is available for Early Access. To enable this feature on your instance, contact your ThoughtSpot administrator and then configure the xref:AppViewConfig.adoc#_discoveryexperience[`discovery experience`] property in the SDK.
+====
+
+.REST API
+[%collapsible]
+====
+[discrete]
+==== Connection configuration APIs
+ThoughtSpot now supports multiple configurations per data Connection. This feature allows data engineers to define and manage several distinct Connection configurations under a single data Connection object in ThoughtSpot. This feature is available only for Snowflake, Databricks, and BigQuery Cloud Data Warehouses (CDW) connections.
+
+For more information, see xref:connection-config.adoc[Connection Configuration].
+
+[discrete]
+==== Custom calendar APIs
+
+You can now create and manage custom calendars for a given Connection object. For more information, see the API documentation in the REST API v2 Playground. For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+
+[discrete]
+==== Other enhancements
+For information about other REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.41.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+== Version 10.11.0.cl
+
+.Spotter embed enhancements
+[%collapsible]
+====
+Spotter embed now supports a comprehensive set of embed and host events that enable interaction between the embedded Spotter component and the host application.
+
+Developers can use these events to:
+
+* Listen for key Spotter user interactions and system events, such as downloads, edits, visual changes, and Spotter-specific query responses, by registering handlers for embed events.
+* Trigger specific host events from the application to programmatically control actions such as starting a search, resetting the conversation, saving, downloading, and adding Spotter-generated Answers to a Liveboard.
+
+For a complete list of events, see the following pages:
+
+* xref:api-changelog.adoc[Visual Embed SDK changelog]
+* xref:EmbedEvent.adoc[EmbedEvent]
+* xref:HostEvent.adoc[HostEvent]
+====
+
+.Primary action configuration for Liveboard visualizations
+[%collapsible]
+====
+You can now override the action assigned to the primary button that appears on visualization tiles of an embedded Liveboard. The `primaryAction` parameter in the Visual Embed SDK allows developers to set that primary action for the embedded Liveboard visualizations.
+
+For more information, see xref:embed-actions.adoc#_override_default_primary_actions[Override default primary action].
+====
+
+.Enhancements to the API response format for Liveboards
+[%collapsible]
+====
+The `liveboard_reponse_version` parameter in search metadata (`/api/rest/2.0/metadata/search`) REST API request now allows you to retrieve details of Liveboard tabs, visualizations, and filters in a structured format.
+
+For more information, see xref:rest-api-v2-metadata-search.adoc#_response_format_for_liveboards[Response format for Liveboard objects].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.40.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 10.10.0.cl
+
+.Email customization per Org [beta betaBackground]^Beta^
+[%collapsible]
+====
+ThoughtSpot embedded users can now customize their automated email notifications for each Org through REST APIs v2. You can customize features such as the company logo, style, and fonts, visibility of components in the template, and ThoughtSpot-specific content in notification emails, thus ensuring a consistent brand experience.
+
+For more information, see xref:customize-email-apis.adoc[Customize email template].
+
+[NOTE]
+These APIs are currently in beta and turned off by default on ThoughtSpot instances. To enable this feature on your instance, contact ThoughtSpot Support.
+====
+
+.Publishing content to Orgs [beta betaBackground]^Beta^
+
+[%collapsible]
+====
+The publishing feature enables administrators to publish objects from the Primary Org to other Orgs within a multi-tenant instance. This feature simplifies the deployment process for ThoughtSpot administrators, especially when the same object needs to be made available to multiple Orgs within an instance. It also eliminates the need to create duplicate copies of the object, thereby optimizing memory usage.
+
+The publishing feature includes a set of REST APIs that ThoughtSpot administrators can use to create and assign variables, parameterize properties of underlying data objects such as Connections and Tables per Org, and publish objects from the Primary Org to other Orgs on their instance. For more information, see xref:publishing-overview.adoc[Publishing content to Orgs].
+
+[NOTE]
+The publishing feature is in beta and turned off by default on ThoughtSpot instances. To enable this feature on your instance, contact ThoughtSpot Support.
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.39.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 10.9.0.cl
+
+.String IDs for customizing text strings
+[%collapsible]
+====
+You can now customize a specific occurrence of a text string in the ThoughtSpot UI using string IDs. String IDs allow you to selectively and precisely override the visible text strings in the UI and prevent unintended text changes.
+
+For more information, see xref:customize-text-strings.adoc[Customize text strings].
+====
+.Mobile embed SDKs
+[%collapsible]
+====
+ThoughtSpot provides the following new SDKs to embed ThoughtSpot in mobile apps:
+
+* link:https://github.com/thoughtspot/flutter-embed-sdk[Flutter Embed SDK, window=_blank] [beta betaBackground]^Beta^ to embed ThoughtSpot content in a Flutter app
+* link:https://github.com/thoughtspot/swift-embed-sdk[Swift Embed SDK, window=_blank] [beta betaBackground]^Beta^ to embed ThoughtSpot content in an iOS native app
+* link:https://github.com/thoughtspot/android-embed-sdk[Android Embed SDK, window=_blank] [beta betaBackground]^Beta^ to embed ThoughtSpot content in an Android native app
+
+For more information and quickstart guides, see xref:mobile-embed.adoc[Mobile embed documentation].
+====
+.Spotter embed components
+[%collapsible]
+====
+The following Spotter embed components are now deprecated and replaced with new components:
+
+* `ConversationEmbed` +
+Replaced with `SpotterEmbed`
+* `ConversationViewConfig` +
+Replaced with `SpotterEmbedViewConfig`
+* `BodylessConversation` +
+Replaced with `SpotterAgentEmbed`
+* `BodylessConversationViewConfig` +
+Replaced with `SpotterAgentEmbedViewConfig`
+
+[discrete]
+==== Impact on Spotter embed deployments
+The new Spotter embed components are available for use with the Visual Embed SDK v1.38.0 and later.
+The `ConversationEmbed`, `ConversationViewConfig`, `BodylessConversation`, and `BodylessConversationViewConfig` components are deprecated in Visual Embed SDK v1.38.0 and later versions.
+The old component names will be visible in the code panel of the Visual Embed Playground on ThoughtSpot instances with 10.9.0.cl or earlier. The component names in the Playground will be updated in an upcoming version.
+
+[discrete]
+==== Recommended action
+The Spotter embed component changes do not break your existing Spotter embed implementation. Your implementation with the old component names will continue to function until further notice. However, ThoughtSpot recommends transitioning to the new names as early as you can, to allow sufficient time for testing your implementation with the updated names.
+
+For Spotter embed documentation and code samples with new components, see xref:embed-spotter.adoc[Embed Spotter].
+====
+.Ability to control the visibility of columns in full app embedding
+[%collapsible]
+====
+You can now show or hide the following columns on the *Liveboards*, and *Answers* list pages in full application embeds:
+
+* `Favorite`
+* `Author`
+* `Last modified`
+* `Tags`
+* `Share`
+
+For more information, see xref:full-app-customize.adoc#_hide_columns_on_list_pages_new_experience[Customize full application embedding].
+====
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.38.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API
+[%collapsible]
+====
+For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+.REST API Java SDK
+[%collapsible]
+====
+The REST API Java SDK enables developers to interact programmatically with ThoughtSpot REST APIs from Java applications. It provides a client library with Java methods and classes that map to API endpoints, handle authentication, send API requests, and allow creating and modifying ThoughtSpot resources and objects.
+
+For information about how to install and use the SDK, see xref:rest-api-java-sdk.adoc[Java SDK for REST APIs].
+====
+
+== Version 10.8.0.cl
+
+.React Native SDK to embed ThoughtSpot in a mobile app [beta betaBackground]^Beta^
+[%collapsible]
+====
+Developers can now embed ThoughtSpot Analytics in their mobile apps using the React Native Embed SDK [beta betaBackground]^Beta^. With the React Native Embed SDK, developers can use native resources and a single codebase to build their mobile app with embedded ThoughtSpot content for both *iOS* and *Android* platforms.
+
+In the initial release, the SDK supports embedding a Liveboard component and customizing the embedded view. For more information, see xref:mobilesdk-quick-start.adoc[React Native SDK quick start guide].
+====
+.External tools and custom script integration
+[%collapsible]
+====
+You can now integrate third-party tools and execute custom scripts within your embed. This feature is disabled by default on ThoughtSpot instances. When enabled, you can use this feature to integrate your preferred analytics and product-guide tools such as Pendo, LogRocket, and Mixpanel into your ThoughtSpot embed.
+
+While you can inject custom Javascript into your embeds, it is essential to consider the associated security risks and vulnerabilities, such as Cross-site scripting (XSS). Before contacting Support to enable this feature on your instance, assess the potential security risks to your application environment and review your organization's security guidelines. We recommend that you sanitize user data before rendering and ensure that your environment runs scripts from trusted domains only. For more information, see xref:3rd-party-script.adoc[Integrate third-party tools and scripts].
+====
+.Recommended action for deployments that use pendoTrackingKey
+[%collapsible]
+====
+If you are using the xref:EmbedConfig.adoc#_pendotrackingkey[pendoTrackingKey] setting in the Visual Embed SDK, note that ThoughtSpot will deprecate this attribute six months after the 10.8.0.cl release. While you can continue using `pendoTrackingKey` until its deprecation, we recommend using the xref:3rd-party-script.adoc[external tools integration] feature to integrate your preferred tool for analytics and product guides. For additional information or migration assistance, contact ThoughtSpot Support.
+====
+.Help menu and information center changes
+[%collapsible]
+====
+In the 10.8.0.cl release, ThoughtSpot introduces a unified help and support experience that will eventually replace the information center panel generated by Pendo.
+The new information panel provides access to ThoughtSpot documentation and support and also allows you to add custom links. This feature will be enabled gradually on ThoughtSpot instances.
+
+This change will affect your instance if you have embedded the full ThoughtSpot experience with the top navigation bar and Help (?) icon, using `showPrimaryNavbar: true` and `disableProfileAndHelp: false` settings in the Visual Embed SDK.
+
+Customer environments currently using the legacy information center during embedded sessions will continue to do so for the next few months to minimize disruption. Your ThoughtSpot Customer Success team will contact you and assist you in migrating to the new experience.
+
+To facilitate testing and the rollout of the new information center, ThoughtSpot provides the xref:AppViewConfig.adoc#_enablependohelp[enablePendoHelp] SDK flag. By default, the `enablePendoHelp` is set to `true` to ensure that your embedded sessions use the legacy information center generated by Pendo. To enable the new experience, you need to set `enablePendoHelp` to `false`.
+====
+.Column name localization [beta betaBackground]^Beta^
+[%collapsible]
+====
+ThoughtSpot now supports column name and description aliases in a Worksheet or Model, which can be used for localizing the Search and Answer interfaces. This feature is disabled by default on ThoughtSpot instances. To enable this feature, contact ThoughtSpot support.
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.37.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 10.6.0.cl
+
+.Spotter embed enhancements
+[%collapsible]
+====
+Spotter is enabled on ThoughtSpot instances by default and is now generally available for embedding in your applications and chatbot.
+
+This release also introduces several enhancements to Spotter embed:
+
+* xref:embed-spotter.adoc#configControls[Configuration controls in the SDK] to disable or hide the data source, and show or hide sample questions
+* xref:embed-spotter.adoc#SpotterCSS[Customization controls for CSS overrides], xref:embed-spotter.adoc#spotterMenuActions[action IDs] for menu customization on the Spotter page.
+* Additional options in the xref:developer-playground.adoc#playground-spotter[Spotter Playground experience], which allow users to explore the customization settings available for Spotter.
+
+For more information, see xref:embed-spotter.adoc[Embed Spotter].
+====
+.Theme builder for ThoughtSpot interface customization [beta betaBackground]^Beta^
+[%collapsible]
+====
+ThoughtSpot now offers link:https://developers.thoughtspot.com/docs/theme-builder[Theme Builder, window=_blank] [beta betaBackground]^Beta^, a graphical representation of CSS controls and themes to assist developers with the CSS customization framework. Theme Builder allows you to explore and preview the CSS customization options available with the Visual Embed SDK to customize the look and feel of the ThoughtSpot application interface.
+
+Developers embedding ThoughtSpot can preview the customization options in Theme Builder for various embed components, including Liveboard, Visualizations, Search page, and the full application experience. Additionally, you can view and download the default CSS variables in JSON format and upload a JSON file containing custom values for these CSS variables.
+
+For more information, see xref:theme-builder.adoc[Theme Builder].
+====
+.Multi-Factor authentication and REST API behavior
+[%collapsible]
+====
+ThoughtSpot now supports Multi-Factor authentication (MFA) [beta betaBackground]^Beta^ for environments using local authentication with IAMv2. MFA is in beta and disabled by default on ThoughtSpot instances. When enabled on a ThoughtSpot instance, administrators can enable MFA for all local users authenticating to ThoughtSpot with `username` and `password`.
+
+[tag redBackground]#BREAKING CHANGE#
+
+When MFA is enabled on your ThoughtSpot instance, using basic authentication in REST API calls to the following API endpoints will result in an error:
+
+* `POST /api/rest/2.0/auth/session/login`
+* `POST /api/rest/2.0/auth/token/object`
+* `POST /api/rest/2.0/auth/token/full`
+* `POST /api/rest/2.0/auth/token/custom`
+* `POST /tspublic/v1/session/login`
+
+When MFA is enabled on a ThoughtSpot instance, local authentication users cannot log in with their `username` and `password` and are prompted to enable MFA when they try to log in via UI. Setting up MFA via APIs is not supported.
+
+If you are using REST APIs with basic authentication, ThoughtSpot recommends updating your application environment to use `username` and `secret_key` to generate authentication token. To stay security compliant and avoid breaking changes, before activating MFA for your users, we recommend that you enable *Trusted Authentication* on your instance and set up your embed and REST API environments to use token-based authentication. For more information and assistance, contact ThoughtSpot Support.
+====
+.Liveboard enhancements
+[%collapsible]
+====
+[discrete]
+==== Compact Liveboard header [earlyAccess eaBackground]#Early Access#
+
+Developers embedding ThoughtSpot Liveboards can now enable the Compact Liveboard feature for their application users. When enabled, this feature optimizes Liveboard header space, moves the tabs panel to the top of the header, and maximizes the visibility of the charts and tables on the Liveboard.
+
+Compact Liveboard header is disabled by default. To enable this feature, set `isLiveboardCompactHeaderEnabled` to `true` in the SDK.
+
+[discrete]
+==== Show only relevant filters and Parameters on Liveboards
+
+By default, Liveboards display all filters and parameters, including those that are not applicable to the visualizations in a tab. On embedded Liveboards, developers can control the visibility of filters and Parameters for visualizations in a tab using the `hideirrelevantchipsinliveboardtabs` property in the SDK.
+
+For more information about filters for Liveboard tabs, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-filters#_apply_filters_to_specific_visualizations_or_tabs[Apply filters to specific visualizations or tabs].
+====
+.Worksheet to Model conversion
+[%collapsible]
+====
+You can now convert a Worksheet to a Model via a REST API POST call to the
++++/api/rest/2.0/metadata/worksheets/convert+++ endpoint.
+
+ThoughtSpot recommends migrating your Worksheet data to Models, because Worksheets are deprecated in ThoughtSpot and will be removed from the product in 10.10.0.cl release.
+====
+.ThoughtSpot Enterprise Org enablement
+[%collapsible]
+====
+Starting with ThoughtSpot Cloud 10.6.0.cl release, all ThoughtSpot Enterprise instances will gradually be enabled with Orgs. Your environment will remain a single-tenant instance until you create Orgs. When the Orgs feature is enabled on your instance, you can switch to a single-tenant mode anytime by deleting all user-created Orgs and using only the default Primary Org.
+====
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.36.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 10.5.0.cl
+
+.Default search experience on embedded ThoughtSpot Home page
+[%collapsible]
+====
+If your ThoughtSpot instance is upgraded from 10.1.0.cl to 10.5.0.cl, the Natural Language Search interface will be the default search experience on the embedded ThoughtSpot Home page. The split search experience, which was introduced in 10.3.0.cl, will be turned off by default on these instances. For applications embedding full ThoughtSpot experience, the `isUnifiedSearchExperienceEnabled` property will be set to `true` in the Visual Embed SDK. Your application users can continue to use the unified experience until it is deprecated. However, developers can choose to disable the unified search experience and customize the Home page search experience for their application users.
+
+On instances upgraded from 10.3.0.cl or 10.4.0.cl to 10.5.0.cl, Object Search will be the default search experience on the embedded ThoughtSpot Home page. The unified search experience will be disabled by default and the `isUnifiedSearchExperienceEnabled` property in the Visual Embed SDK will be set to `false`. If required, developers can switch to AI Search experience by setting the `homePageSearchBarMode` property to `aiAnswer`.
+
+For more information, see xref:full-app-customize.adoc#_search_experience_on_home_page[Home page search experience customization].
+====
+.Support for partitioned cookies
+[%collapsible]
+====
+With most web browsers blocking third-party cookies, cookies will no longer be shared across the ThoughtSpot
+embedded pages and the host application, or other tabs in the browser. If your embed no longer functions without the use of third-party cookies, consider using one of the following options:
+
+* Update your implementation to use cookieless authentication; for example, `AuthType.EmbeddedSSO` or `AuthType.TrustedAuthTokenCookieless` (Recommended)
+* Customize the domain of your ThoughtSpot instance to match the domain of your host application. +
+For more information, see xref:custom-domain-configuration.adoc[Custom domain configuration].
+* Enable partitioned cookies on your ThoughtSpot instance. +
+If your implementation relies on cookies or if you are using `AuthType.None` in your development and test environments, ThoughtSpot administrators have the option to enable partitioned cookies on their instance. With partitioned cookies, you can restrict cookie sharing between different sites and thus prevent cross-site tracking.
++
+On browsers that support partitioned cookies, the session cookie will persist in the ThoughtSpot app after a successful login. When using the `AuthType.None` embed authentication method in development or test environments with partitioned cookies, users must log in to their ThoughtSpot instance using basic authentication for seamless access to the embed.
++
+[NOTE]
+Safari blocks all third-party cookies and does not support partitioned cookies. ThoughtSpot recommends switching to a Web browser that supports partitioned cookies or using cookieless authentication.
+
+For more information, see xref:security-settings.adoc#_enable_partitioned_cookies[Security Settings].
+====
+
+.ABAC via tokens implementation changes
+[%collapsible]
+====
+The ABAC via tokens feature is GA in 10.5.0.cl. Several changes have been introduced since the ThoughtSpot 10.4.0.cl release to improve the ABAC configuration workflows:
+
+* The `user_parameters` property in `auth/token/full` and `auth/token/object` APIs used for the xref:abac-user-parameters-beta.adoc[beta implementation of ABAC] was deprecated in 10.4.0.cl.
+* Starting from 10.4.0.cl, administrators are advised to xref:abac-user-parameters.adoc[use the `/api/rest/2.0/auth/token/custom` API endpoint] to define security attributes for ABAC implementation.
+
+If you have implemented ABAC using `auth/token/full` or `auth/token/object` API endpoints and your cluster is upgraded to 10.4.0.cl or 10.5.0.cl, you can migrate your implementation to start using the `/api/rest/2.0/auth/token/custom` API endpoint. For more information, refer to xref:jwt-migration.adoc[ABAC migration guide].
+====
+.Orgs context for custom links
+[%collapsible]
+====
+Starting with ThoughtSpot Cloud 10.5.0.cl release, developers embedding ThoughtSpot in their application can include the Org context in ThoughtSpot URLs using custom link settings.
+//For instance, being able to seamlessly access content from a different Org, while being logged in another Org.
+
+This feature is turned off by default. To enable this feature on your ThoughtSpot instance, contact link:https://community.thoughtspot.com/customers/s/contactsupport[ThoughSpot Support, window=_blank]. For more information, see xref:orgs.adoc[Orgs context for sharing links].
+====
+
+.Migration to IAMv2
+[%collapsible]
+====
+All new ThoughtSpot application instances are enabled with enhanced Identity and Access Management (IAMv2). The existing ThoughtSpot embedded instances will be migrated to IAMv2 during the maintenance windows.
+
+* To ensure a seamless migration, review and follow the link:https://docs.thoughtspot.com/cloud/latest/okta-iam#_before_migrating_to_iam_v2[steps in the ThoughtSpot product documentation, window=_blank].
+* To understand changes to the API endpoints with this upgrade, see xref:api-user-management.adoc[User migration to IAMv2]
+* For more information, see link:https://docs.thoughtspot.com/cloud/latest/okta-iam[Identity and Access Management V2, window=_blank].
+====
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.35.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+== Version 10.4.0.cl
+
+.Spotter AI for conversational analytics
+[%collapsible]
+====
+ThoughtSpot Spotter [beta betaBackground]^Beta^ enables users to find insights from their data through a conversational interface powered by Generative AI. Spotter functions as your AI Analyst and allows your application users to start a conversation, ask follow-up questions on the results generated by ThoughtSpot, and get the data they need.
+
+For more information, see the following pages:
+
+* xref:embed-spotter.adoc#_embed_spotter_using_visual_embed_sdk[Embed Spotter in your app] +
+* xref:spotter-apis.adoc[Generate Answers from AI APIs]
+* xref:spotter-in-custom-chatbot.adoc[Spotter tutorials]
+
+[NOTE]
+The Spotter feature is in beta and disabled by default on ThoughtSpot Embedded instances. To enable this feature on your instance, contact ThoughtSpot Support.
+====
+
+.ABAC token generation enhancements
+[%collapsible]
+====
+To generate a token with custom rules, attributes, and filter conditions for Attribute-Based Access Control (ABAC) [beta betaBackground]^Beta^, you can use the `/api/rest/2.0/auth/token/custom` API endpoint instead of the `user_parameters` property in `/api/rest/2.0/auth/token/full` and `/api/rest/2.0/auth/token/object` APIs.
+
+For more information, see xref:authentication.adoc#_get_tokens_with_custom_rules_and_filter_conditions[Get tokens with custom rules and filter conditions].
+====
+
+.Visual Embed Playground enhancements
+[%collapsible]
+====
+The Visual Embed Playground provides several checkboxes and customization settings for ThoughtSpot embed components. You can use these checkboxes to customize your embedded view, view results instantly, and copy code.
+
+For more information, see xref:developer-playground.adoc[Visual Embed Playground].
+====
+.Models
+[%collapsible]
+====
+Models are now available on ThoughtSpot embedded instances. ThoughtSpot recommends using Models as data source objects for Answers and Liveboards instead of Worksheets from 10.4.0.cl release onwards.
+
+Worksheets are deprecated in 10.4.0.cl and will be removed from ThoughtSpot in an upcoming release. If you are embedding full ThoughtSpot application or the Data Workspace page in your app, you will notice that the Worksheet creation option is disabled by default. However, existing Worksheets continue to be available and editable. To enable Worksheet creation on your instance, contact ThoughtSpot Support.
+====
+.Orgs enablement
+[%collapsible]
+====
+Starting with ThoughtSpot Cloud 10.4.0.cl release, Orgs will be enabled by default on all new ThoughtSpot instances. Your environment remains a single-tenant instance until you create Orgs.
+If the Orgs feature is enabled on your instance, you can switch to a single-tenant mode anytime by deleting the Orgs and using just the Primary Org.
+
+For more information, see xref:orgs.adoc[Multi-tenancy with Orgs].
+====
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.34.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+.Feature deprecations
+[%collapsible]
+====
+The Search Assist feature for Worksheets and the **Enable Search Assist** checkbox in Search Embed Playground are removed from ThoughtSpot in 10.4.0.cl. If your embedding application uses the `enableSearchAssist` property, you may want to update your deployment.
+
+For more information, see xref:deprecated-features.adoc#_search_assist[Deprecated features].
+====
+
+== Version 10.3.0.cl
+
+.Natural language search and object search
+[%collapsible]
+====
+Starting from the ThoughtSpot 10.3.0.cl release, the **Home** page does not provide a combined search experience with Natural Language Search and Object Search. As a result, Object Search will become the default search experience on the **Home** page, and Natural Language Search will be disabled by default.
+
+If you are embedding the **Home** page of ThoughtSpot application in your app, and you want to retain both the object Search and Natural Language Search experience for your users, you can customize the search type in the Visual Embed SDK. For more information, see xref:full-app-customize.adoc#_customize_search_experience[Search experience customization].
+====
+
+.Selective user access
+[%collapsible]
+====
+With selective user access, you can allow users without the administrator or developer privilege to securely access the non-embedded pages.
+
+For more information, see xref:selective-user-access.adoc[User access to non-embedded content].
+====
+
+.Liveboard experience enhancements
+[%collapsible]
+====
+You can now customize the width of the Liveboard breakpoint on an embedded instance. To enable it, you must set the `enable2ColumnLayout` property to `true`.
+
+For more information, see xref:embed-pinboard.adoc#_redefine_liveboard_breakpoint_widths[Redefine Liveboard breakpoint widths].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.33.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+.Feature deprecations
+[%collapsible]
+====
+In the 10.3.0.cl release, the application background customization option on the **Admin** > **Style customization** and **Develop** > **Customizations** > **Styles** is deprecated. For more information, see xref:deprecated-features.adoc#_application_background_customization_via_ui[Application background customization].
+====
+
+== Version 10.1.0.cl
+
+.Customization of the new Data Panel experience
+[%collapsible]
+====
+The CSS customization framework now supports customizing the look and feel of the new Data Panel experience. For more information, see xref:embed-search.adoc#_data_panel_experience_in_the_embedded_search_page[Embed Search] and xref:css-customization.adoc[CSS customization framework].
+====
+
+.UI changes in the Liveboard and Answers list pages
+[%collapsible]
+====
+If you have embedded full application experience with **Liveboards** and **Answers** listing pages, note the following UI changes:
+
+* The *Edit TML*, *Export TML*, and *Import TML* actions are no longer available on the *Liveboards* and *Answers* listing pages. You can use the TML menu actions on the individual Liveboard and Answer pages, or the import and export TML options available on the **Data Workspace** > **Utilities** page.
+* To add new tags or assign a tag to an object, users can use the **Edit tags** button on the **Liveboards** and **Answers** pages. However, users cannot rename or delete a tag.
+====
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.32.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+.Feature deprecations
+[%collapsible]
+====
+In 10.1.0.cl release, the following features are deprecated and removed from the UI:
+
+* Classic experience mode for Liveboards, SpotIQ, and Answers. For more information, see xref:deprecated-features.adoc#_classic_experience_for_liveboards_answers_and_spotiq[Deprecation announcements].
+* Page title customization setting in the **Admin** > **Style customization** and **Develop** > **Customizations** > **Styles** page. For more information, see xref:deprecated-features.adoc#_page_title_customization[Deprecation announcements].
+====
+
+== Version 10.0.0.cl
+
+.Customize number, currency, and date format
+[%collapsible]
+====
+You can now customize the number, date, and currency format displayed on embedded pages.
+
+For more information, see xref:locale-setting.adoc#_set_locale_in_the_sdk[Set locale].
+====
+.Git integration
+[%collapsible]
+====
+If xref:roles.adoc[RBAC] is enabled on your instance, ensure that the Version Control API users have the `Can manage version control` (`CAN_MANAGE_VERSION_CONTROL`) Role privilege.
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.31.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information on REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+.Feature deprecations
+[%collapsible]
+====
+For information about deprecated features, see xref:deprecated-features.adoc[Deprecation announcements].
+====
+
+== Version 9.12.5.cl
+
+.New home page and navigation [earlyAccess eaBackground]#Early Access#
+[%collapsible]
+====
+The new navigation and Home page experience is now available for ThoughtSpot users.
+
+ThoughtSpot administrators can enable this feature on their application instance on the **Admin** page. If the new navigation and Home page experience is enabled on your instance, users can turn on the New Experience mode on their *Profile* settings page.
+
+On embedding apps, the new navigation and Home page experience is disabled by default. To enable it, you must set the `modularHomeExperience` property to `true` in the `AppEmbed` component.
+
+The new navigation and Home page experience introduces the following notable changes:
+
+* The top navigation menu bar is replaced with an app selector image:./images/app_switcher.png[the app switcher menu] that allows users to switch between different apps.
+* The **Insights** module presents a redesigned Home page with modular content and a left navigation panel. Users can navigate to Liveboards, Answers, SpotIQ Analysis, and Monitor Subscriptions pages from the Home page by using the left navigation menu options.
+
+For more information, see xref:full-app-customize.adoc[Customize full application embedding].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.30.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 9.12.0.cl
+
+.SSO authentication with IAMv2
+[%collapsible]
+====
+ThoughtSpot now supports managing user authentication through IAMv2 on embedded instances. With this feature, administrators can set up SAML and OIDC authentication with Identity providers such as Okta, Google, and so on. You can also map Identity Provider (IDP) attributes on the ThoughtSpot Admin page when setting up OIDC or SAML authentication on your instance.
+
+IAMv2 is turned off by default. To enable it on your instance, contact ThoughtSpot Support.
+
+For more information, see xref:configure-saml.adoc#IAMv2[SAML SSO authentication] and xref:configure-oidc.adoc#IAMv2[OpenID Connect authentication].
+====
+
+.OIDC authentication on Orgs-enabled clusters
+[%collapsible]
+====
+ThoughtSpot now supports Orgs through OpenID Connect (OIDC) authentication on embedded instances. With Org mapping, the IdP will have the ability to assign users to specific Orgs when they log in via OIDC authentication. You need administrator privileges to enable Org mapping on the cluster.
+
+For more information, see xref:orgs.adoc#_oidc_authentication[Multi-tenancy with Orgs] and xref:configure-oidc.adoc#orgMapping[OpenID Connect authentication].
+====
+
+.Ask Sage [beta betaBackground]^Beta^
+[%collapsible]
+====
+ThoughtSpot application users can now ask follow-up questions and seek clarifications about visualizations and Answers generated using natural language search. The **Ask Sage** action on Liveboard visualizations and **Ask a follow-up** action search results page allow you to start a conversation with the AI analyst, ask successive questions, and refine the Answer retrieved from a Natural Language Search query.
+
+The **Ask Sage** feature is turned off by default. To enable this feature on your instance, contact ThoughtSpot Support. To enable or disable this feature for embedded application users, use the `enableAskSage` attribute.
+====
+
+.Liveboard UI changes
+[%collapsible]
+====
+The following TML menu actions are now grouped under the *TML* sub-menu of the **More** image:./images/icon-more-10px.png[the more options menu]menu.
+
+* Export TML
+* Edit TML
+* Update TML
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.29.x, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+
+== Version 9.10.5.cl
+
+.Row-level security via tokens [beta betaBackground]^Beta^
+[%collapsible]
+====
+You can now implement Row-Level Security (RLS) and Attribute-Based Access Control (ABAC) via tokens for ThoughtSpot embedded application users. You can now configure your authentication process in the SDK to assign security attributes for any user during session creation.
+
+For more information, see xref:abac-user-parameters.adoc[ABAC via token].
+
+[NOTE]
+ABAC via tokens is supported only with the Trusted Authentication method.
+====
+
+.AI Highlights [earlyAccess eaBackground]#Early Access#
+
+[%collapsible]
+====
+You can now get quick insights on how top metrics have changed in your Liveboard via AI Highlights.
+
+* Users with administration privileges can enable AI Highlights at the cluster level on the **Admin** page.
+* When AI Highlights is enabled, the AI highlights image:./images/ai-highlights.png[AI Highlights icon] icon appears on the Liveboard header and the **Edit** button moves to the **More** menu image:./images/icon-more-10px.png[the more options menu].
+* You can hide this feature on your embedded instance by adding `Action.AIHighlights` to the `hiddenActions` array in the SDK.
+
+For more information, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-ai-highlights[AI Highlights, window=_blank].
+====
+
+.Granular Roles for data management
+[%collapsible]
+====
+If the RBAC is enabled on your ThoughtSpot instance, administrators can use the following Roles for granular access control and data management:
+
+* `CAN_MANAGE_CUSTOM_CALENDAR`
+* `CAN_CREATE_OR_EDIT_CONNECTIONS`
+* `CAN_MANAGE_WORKSHEET_VIEWS_TABLES`
+
+For more information, see xref:roles.adoc[Role-based access control].
+
+[NOTE]
+The RBAC feature is in beta and turned off by default. To enable this feature, contact ThoughtSpot Support.
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.29.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+
+== Version 9.10.0.cl
+
+.Integration with Vercel projects
+[%collapsible]
+====
+You can now integrate your ThoughtSpot instance with a Vercel project. If you are using Vercel to build and maintain your embedding application, you can install ThoughtSpot analytics integration, connect to ThoughtSpot data, and embed content in your app seamlessly.
+
+For more information, see xref:vercel-int.adoc[Vercel integration].
+====
+
+.CSS variables for custom styling
+[%collapsible]
+====
+The following custom CSS variables are deprecated and not supported from 9.10.0.cl onwards:
+
+* `--ts-var-sage-bar-img-url`
+* `--ts-var-sage-bar-img-color`
+* `--ts-var-sage-bar-img-visibility`
+====
+
+.Security settings for non-embedded instances
+[%collapsible]
+====
+The **Security Settings** page in the **Develop** tab now allows any ThoughtSpot user with developer or admin privileges to modify CSP settings for image, font, and style import.
+
+For more information, see xref:security-settings.adoc[Security Settings].
+====
+.Support for Sage coach
+[%collapsible]
+====
+In full application embedding, you can now review user feedback on the natural language search queries on the **Data** page.
+//For more information, see link:https://docs.thoughtspot.com/cloud/latest/sage-coach[Sage Coach, window=_blank].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.28.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 9.8.0.cl
+
+.Support for Natural Language Search embedding
+[%collapsible]
+====
+You can now embed ThoughtSpot Search with Natural Language Search capabilities using `SageEmbed` SDK package. Natural Language Search allows your application users to search for data using natural language query strings. This feature also provides AI-suggested sample questions and popular queries to assist users in their data search operations.
+
+Using `SageEmbed`, you can embed the ThoughtSpot Search interface with Natural Language Search components in your app and also customize the search experience as per your requirements.
+
+For more information, see xref:embed-nls.adoc[Embed Natural Language Search].
+====
+
+.Embed Playground enhancements
+[%collapsible]
+====
+The Visual Embed playground now allows you to explore Natural Language Search embedding options and Search page customization capabilities. For more information, see xref:developer-playground.adoc#playground-nls-search[Natural Language Search].
+====
+
+.Git integration enhancements
+[%collapsible]
+====
+The **Deploy Commit** Version Control API now provides the `VALIDATE_ONLY` option to validate TML imports to the destination environment. If your destination environment has TML content that has been modified or is different from the content on the main branch, you can run the validation before deploying changes to the destination environment.
+
+For more information, see xref:version_control.adoc#_deploy_commits[Deploy commits].
+====
+
+.CSS variables for Natural Language Search interface customization
+[%collapsible]
+====
+To customize Natural Language Search interface, you can use the following variables in your custom CSS:
+
+* `--ts-var-sage-bar-header-background-color`
+* `--ts-var-source-selector-background-color`
+* `--ts-var-sage-search-box-font-color`
+* `--ts-var-sage-search-box-background-color`
+* `--ts-var-sage-embed-background-color`
+* `--ts-var-sage-seed-questions-background`
+* `--ts-var-sage-seed-questions-font-color`
+* `--ts-var-sage-seed-questions-hover-background`
+* `--ts-var-sage-bar-img-url`
+* `--ts-var-sage-bar-img-color`
+* `--ts-var-sage-bar-img-visibility`
+
+For mor information, see xref:css-customization.adoc#_natural_language_search_interface[Customize CSS].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.27.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+
+== Version 9.7.0.cl
+
+.Git integration and version control
+[%collapsible]
+====
+The Git integration feature and Version Control APIs are GA and enabled by default on ThoughtSpot. This version also includes several enhancements to the Version Control APIs.
+For more information, see xref:rest-apiv2-changelog.adoc#_version_control_apis[REST API v2 Changelog] and xref:version_control.adoc[Git integration and version control].
+====
+
+.Custom styles
+[%collapsible]
+====
+You can now customize icon sprites and add custom text strings. For more information, see xref:css-customization.adoc#_customize_text_strings[Customize text strings] and xref:css-customization.adoc#_customize_icons[Customize icons].
+====
+
+.Liveboard experience
+[%collapsible]
+====
+Personalized Liveboard Views [tag purpleBackground]#Early Access#::
+
+Embedding application users can now create a personalized version of Liveboard with their changes. The personalized Liveboard view inherits any changes made to the master Liveboard, including changes made to pinned visualizations, tabs, filter chips, and re-ordering.
++
+This feature is disabled by default and can be enabled by administrators. For more information, see link:https://docs.thoughtspot.com/cloud/latest/personalized-liveboard-views[ThoughtSpot Product Documentation].
+
+Embedding in note tiles::
+You can now embed interactive content such as videos in an iFrame on a Liveboard Note tile. For more information, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-notes#embed[ThoughtSpot Product Documentation].
+
+Liveboard customization::
+You can now customize Liveboard headers, show or hide Liveboard users, tabs, description text, and Liveboard title.
+
+For more information, see xref:api-changelog.adoc#_version_1_26_0_november_2023[Visual Embed SDK Changelog] and xref:LiveboardViewConfig.adoc[SDK documentation].
+====
+
+.Search experience
+[%collapsible]
+====
+You can now enable the new data panel experience on the embedded Search page in the SDK. The new data panel experience is turned off by default on embedded ThoughtSpot instances.
+
+For more information, see xref:embed-search.adoc#_data_panel_experience_in_the_embedded_search_page[Embed ThoughtSpot Search].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.26.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+
+== Version 9.6.0.cl
+.Playground enhancements
+[%collapsible]
+====
+The 9.6.0.cl release adds the following features to the Visual Embed Playground:
+
+* Liveboard tab selection +
+The Playground page for Liveboard embedding now shows the tab selection drop-down, which allows users to set the default tab view on an embedded Liveboard.
+
+* Use host event checkbox +
++
+On selecting the *Use host event* checkbox, the code panel in the Playground displays the code snippet to try out host events. You can use this code snippet to register a host event and trigger an action using the *Try Event* button in the Playground.
+====
+
+.Home page experience in Full application embedding mode
+[%collapsible]
+====
+If you are embedding the full ThoughtSpot experience with the ThoughtSpot Sage feature, the Home page allows you to use AI-generated search answers. To enable AI-assisted search on your instance, contact ThoughtSpot Support.
+====
+
+.Role-Based Access Control [beta betaBackground]^Beta^
+[%collapsible]
+====
+The role-based access control (RBAC) feature allows administrators to create a role in the UI or via REST API calls and assign a set of privileges. With the RBAC feature, you can assign granular permissions and control user access to ThoughtSpot features and application workflows. For more information, see xref:roles.adoc[Role-based Access Control].
+
+The RBAC feature is turned off by default. To enable this feature, contact ThoughtSpot Support.
+====
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.25.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 9.5.0.cl
+
+.Webhooks for KPI monitor alerts [beta betaBackground]^Beta^
+[%collapsible]
+====
+ThoughtSpot administrators and developers can now create a Webhook to send KPI monitor alerts to the REST endpoint of an external application. The Webhooks feature is turned off by default. To enable this feature on your instance, contact ThoughtSpot Support.
+
+For more information, see xref:webhooks.adoc[Webhooks for KPI Monitor alerts].
+====
+
+.Version control and Git integration [beta betaBackground]^Beta^
+[%collapsible]
+====
+The Git integration feature now supports pushing commits and publishing content to Org-based deployment environments. If your ThoughtSpot cluster has Orgs and multi-tenancy enabled, you can create `dev` and `prod` environments on the same ThoughtSpot instance and connect these environments to your GitHub repository.
+
+For more information, see xref:version_control.adoc[Git integration and version control].
+====
+
+.SDK library to embed AI-powered ThoughtSpot Search experience [beta betaBackground]^Beta^
+[%collapsible]
+====
+The Visual Embed SDK provides a new JavaScript library to embed the Search page with AI-powered features such as natural language search and AI-suggested answers. To view the AI-suggested answers, make sure the AI search support is enabled on the data source or worksheet used for searching data.
+
+//ThoughtSpot does not display AI-suggested search responses if the xref:search-assist-tse.adoc[Search Assist] feature is enabled.
+
+For more information, see xref:SageEmbed.adoc[SageEmbed SDK reference].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.24.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 9.4.0.cl
+
+.Version control and Git integration [beta betaBackground]^Beta^
+[%collapsible]
+====
+GUID mapping::
+
+If a TML file on your source environment contains GUIDs that don't match the GUIDs on your destination environment, the version control APIs can now automatically handle the mapping of GUIDs when deploying the TML content.
+
++
+For more information, see xref:version_control.adoc#_guid_mapping[Git integration and version control].
+
+Folder structure changes [tag redBackground]#BREAKING CHANGE#::
+
+The folder structure of the TML objects in the Git repository is modified in 9.4.0.cl. In earlier releases, the TML objects were stored in the object directory of the `primary` root folder, for example `primary/liveboard`. Starting from 9.4.0.cl, the TML objects will be stored in the object folder at the root level. ThoughtSpot will not migrate your existing TML files from `primary/` to the new folder structure. You must move these files to the respective object directory at the root level.
+
+File naming convention [tag redBackground]#BREAKING CHANGE#::
+Starting from 9.4.0.cl, the TML files pushed to a Git branch from a ThoughtSpot instance are named in the
+`..tml` format. The earlier releases used the `..tml` naming convention for TML files. This change may break your current setup. We recommend that you reconfigure the Git connection on your ThoughtSpot instance and start using the version control feature from scratch.
+====
+
+.Security settings enhancements for Orgs
+[%collapsible]
+====
+
+CORS settings per Org::
+
+On multi-tenant clusters with Orgs, developers can now add a list of CORS hosts at the Org level. For more information, see xref:security-settings.adoc#cors-hosts[Security Settings].
+
+Block user access to non-embedded application pages::
+
+ThoughtSpot administrators and developers can now enable the **Block non-embed full app access** feature at the Org level.
+
+For more information, see xref:security-settings.adoc#_block_access_to_non_embedded_thoughtspot_pages[Security Settings].
+====
+
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.23.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+
+== Version 9.3.0.cl
+
+.Support for cookieless authentication
+[%collapsible]
+====
+Developers can now enable cookieless authentication when embedding ThoughtSpot in their applications. The cookieless authentication method allows using a bearer token instead of session cookies when users interact with embedded content or initiate API requests. If the embedded content does not load from the same domain as your embedding application, and your Web browser does not allow third-party cookies, you can use Cookieless authentication in the Trusted authentication mode.
+
+For more information, see xref:embed-authentication.adoc#trusted-auth-embed[Trusted authentication].
+====
+
+.Idle sensing and APIs for managing cluster states
+[%collapsible]
+====
+ThoughtSpot Cloud clusters support idle sensing in embedded deployments. With idle sensing enabled on your embedded ThoughtSpot instance, your instance becomes inactive if there is no active user session detected for a period of 120 minutes. You can restart an inactive cluster using API when required.
+
+For more information, see xref:tse-eco-mode.adoc[Manage your cluster state].
+====
+
+.Per-Org style customization
+[%collapsible]
+====
+The *Develop* tab now allows customizing UI styles and layout at the Org level. To enable this feature on your multi-tenant instance, contact ThoughtSpot support.
+
+For more information, see xref:style-customization.adoc#_custom_styles_for_orgs_on_multi_tenant_clusters[Custom styles for Orgs on multi-tenant clusters].
+====
+
+.Version control and Git integration via REST API [beta betaBackground]^Beta^
+[%collapsible]
+====
+You can now connect your ThoughtSpot instance to a Git repository and push commits from your application instance to a Git branch via REST API. With the Git integration [beta betaBackground]^Beta^ feature, ThoughtSpot provides the ability to integrate your application environment with Git workflows and deploy commits from a development instance to a production cluster.
+
+For more information, see xref:version_control.adoc[Version control with Git integration].
+====
+
+.Visual Embed Playground enhancements
+
+[%collapsible]
+====
+The Visual Embed developer Playground now includes a *Try* button in the preview panel. The *Try* button is attached to an event handler. You can register a host event and click *Try* to trigger an action on the embedded page in the Playground.
+
+For more information, see xref:embed-events.adoc[Events reference].
+====
+
+.Visual Embed SDK
+
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK versions 1.22.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 9.2.0.cl
+
+.Per-Org secret key and tokens for Trusted authentication
+
+[%collapsible]
+====
+ThoughtSpot now supports generating secret keys per Org. Org administrators can generate a secret key for trusted authentication in their Org context and allow their Org users to obtain authentication tokens using this secret key.
+
+Starting from 9.2.0.cl, Org users require Org-specific authentication tokens issued for their user accounts when switching between Orgs. When generating an authentication token via REST API, make sure to request separate tokens for each Org context.
+
+For more information, see xref:trusted-authentication.adoc#trusted-auth-enable[Trusted authentication].
+====
+
+.Custom styles
+
+[%collapsible]
+====
+The 9.2.0.cl release introduces the following new variables for custom styling of the ThoughtSpot Search page:
+
+* `--ts-var-search-auto-complete-font-color`
+* `--ts-var-search-auto-complete-subtext-font-color`
+* `--ts-var-answer-edit-panel-background-color`
+
+For more information, see xref:css-customization.adoc#_search_bar_and_data_panel[Customize CSS].
+====
+
+.GraphQL playground [beta betaBackground]^Beta^
+[%collapsible]
+====
+The *Develop* tab in the ThoughtSpot UI introduces the GraphQL playground to allow users to interact with GraphQL endpoints and run query and mutation operations. To enable this feature on your instance, contact ThoughtSpot Support.
+
+For more information, see xref:graphql-playground.adoc[GraphQL Playground].
+====
+.Runtime Parameter overrides
+[%collapsible]
+====
+Embedded application users can now create Worksheet and Answer Parameters to optimize data queries. You can also adjust values and apply overrides at runtime on a Liveboard or Answer either via REST API or by appending Parameters to the query URL in the UI.
+
+For more information, see xref:runtime-parameters.adoc[Runtime Parameter overrides].
+====
+.Link customization
+[%collapsible]
+====
+You can now customize the navigation links in your app using the *Generic link* option in the *Develop* > *Customization* > *Link settings* page.
+
+For more information, see xref:customize-links.adoc#_customize_link_format[Customize links].
+====
+.Cross filters on Liveboard visualizations [earlyAccess eaBackground]#Early Access#
+[%collapsible]
+====
+ThoughtSpot now supports brushing and linking of visualizations on a Liveboard using cross filters. Cross filters allow you to present a coordinated view of a Liveboard by applying filters across all visualizations based on the current selection.
+
+[NOTE]
+The Cross filters feature is turned off by default. To enable this feature on your instance, contact your ThoughtSpot administrator.
+
+To hide or disable the cross filter feature on an embedded instance, use the `Action.CrossFilter` and `Action.RemoveCrossFilter` parameters in the SDK. For more information, see xref:embed-actions.adoc[Show or hide menu items] and xref:Action.adoc[Action reference].
+[discrete]
+=== Contextual menu behavior
+
+By default, the contextual menu in ThoughtSpot application pages is set as right-click pop-up menu. Starting from 9.2.0.cl, you can set the contextual menu to trigger on left-click.
+
+To trigger the contextual menu on left-click or right-click on an embedded app, you can use the `contextMenuTrigger` property in the Visual Embed SDK. In the following example, the contextual menu is configured to trigger on left-click.
+
+----
+contextMenuTrigger: "left-click"
+----
+
+----
+contextMenuTrigger: ContextMenuTriggerOptions.LEFT_CLICK
+----
+
+When set as right-click menu (default behavior)::
+The contextual menu opens on right-click. If you want to monitor right-click actions and listen to the right-click events on a chart or table, use `EmbedEvent.VizPointRightClick` event. For more information, see link:https://developers.thoughtspot.com/docs/Enumeration_EmbedEvent#_vizpointrightclick[VizPointRightClick].
+
+When set as left-click menu::
+The contextual menu opens on left-click. If your app is already using `EmbedEvent.VizPointClick` to listen to left-click events on a visualization, the `VizPointClick` event will be triggered whenever a user clicks on an action in the contextual menu. If you are using `EmbedEvent.VizPointClick` to trigger actions such as updating runtime filters on a Liveboard visualization, the click events from left-click contextual menu may impact your app’s current workflow.
+
++
+We recommend using a development environment to test your customizations before rolling them out on production servers. For more information, contact ThoughtSpot Support.
+====
+.Note tiles on Liveboards [earlyAccess eaBackground]#Early Access#
+[%collapsible]
+====
+In the new Liveboard experience mode, you can now add Note tiles with custom text, images, and links. This feature is turned off by default and can be enabled by ThoughtSpot administrators.
+
+For more information, see xref:embed-pinboard.adoc#noteTiles[Note tiles].
+====
+.Visual Embed SDK
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK versions 1.20.0 and 1.21.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+====
+
+== Version 9.0.0.cl
+
+.New Liveboard experience
+[%collapsible]
+====
+The xref:embed-pinboard.adoc#lbv2[new Liveboard experience] is now Generally Available (GA) on embedded instances and is enabled by default.
+====
+
+.New CSS variables for custom styling
+[%collapsible]
+====
+The CSS customization feature supports new variables to customize the look and feel of the following UI elements:
+
+* Search bar and navigation panel
+* Search suggestion panel
+* Dialogs
+
+For more information, see xref:css-customization.adoc[Customize CSS].
+====
+.REST API v2.0 endpoints and Playground
+[%collapsible]
+====
+Starting with 9.0.0.cl, the REST API v2 [beta betaBackground]^Beta^ API endpoints are deprecated and removed from the REST API v2 Playground. A set of new endpoints is now generally available (GA) on all ThoughtSpot instances.
+
+The new REST API v2.0 endpoints introduce several improvements to the request and response structure and let you perform more tasks in a single API call. For example, you can create a new user, map the user to groups and Orgs, set home Liveboards for the user, and assign privileges in a single API request.
+
+[div announcementBlock]
+--
+* All REST API v2 [beta betaBackground]^Beta^ endpoints are deprecated, but remain functional until further notice. The REST API SDK that was available with REST API v2 [beta betaBackground]^Beta^ version is no longer supported. +
+ThoughtSpot does not recommend using REST API v2 [beta betaBackground]^Beta^ endpoints for production use cases. For more information, see xref:deprecated-features.adoc#_deprecation_of_rest_v2_api[Deprecation announcements].
+* The new REST API v2.0 endpoints are not an extension of the REST API v2 [beta betaBackground]^Beta^ endpoints. The resource categories, base path, endpoint URIs, and the structure of API requests and responses are different from those of the REST API v2 [beta betaBackground]^Beta^ version.
+* Some API operations such as the CRUD operations for data connections and passing runtime filters on Liveboard visualizations are not available in the initial release. For more information, see xref:rest-api-v1v2-comparison.adoc[REST API v1 and v2.0 comparison] and xref:rest-api-v2-reference.adoc[REST API v2.0 reference].
+* For Org CRUD operations in production environments, ThoughtSpot recommends using xref:org-manage-api.adoc[REST API v1 endpoints].
+--
+====
+
+.Early Access features
+[%collapsible]
+====
+Starting from 9.0.0.cl, ThoughtSpot allows its administrators to turn on Early Access features from the Admin portal. Early Access features are qualified by ThoughSpot for customer use but are not enabled by default on ThoughtSpot instances until the features are GA.
+
+The 9.0.0.cl release introduces the following Early Access features:
+
+* Custom maps
++
+Allows uploading map files (TopoJSON) to configure custom regions and visualize data on these regions. For more information, see link:https://docs.thoughtspot.com/cloud/latest/geomaps-custom[Upload custom geo maps, window=_blank].
+
+* Mandatory filters
++
+Allows setting certain filters as mandatory on a Liveboard. For more information, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-filters-mandatory[Mandatory Liveboard filter, window=_blank].
+
+* Chart configuration experience
++
+Allows making multiple edits to a chart configuration and applying all changes at once. For more information, see link:https://docs.thoughtspot.com/cloud/latest/chart-x-axis[Reorder labels on the axis or legend, window=_blank].
+
+* Chart data labels
++
+Allows displaying data labels in a lighter color on charts with a dark background. For more information, see link:https://docs.thoughtspot.com/cloud/latest/chart-data-labels[Show data labels, window=_blank].
+====
+
+.Visual Embed SDK version 1.19.0
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.19.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog].
+====
+
+== Version 8.10.0.cl
+
+.Ability to embed only the Search bar in an app [beta betaBackground]^Beta^
+[%collapsible]
+====
+You can now embed the ThoughtSpot search bar component in your app. For example, if you are using Google Sheets for data analysis, you can embed the ThoughtSpot search bar and let your users search data from a specific data source. The embedded Search bar allows passing search tokens and modifying search options. You can also retrieve the search results as raw data and let your host application render it in the format you want.
+
+For more information, see xref:embed-searchbar.adoc[Embed ThoughtSpot search bar].
+====
+
+.Advanced style customization with custom CSS
+[%collapsible]
+====
+The CSS customization feature supports new variables to customize the look and feel of the following UI elements:
+
+* Search data button in the navigation panel
+* Font type and text style of search tokens
+* Data panel on the Search and saved Answer pages
+* Filter chips on Liveboard, visualizations, and Answer pages
+* Menu components
+* X-axis and Y-axis titles and labels on charts
+
+For more information, see xref:css-customization.adoc[Customize CSS].
+====
+
+.CSP allowlist for font, image and stylesheet sources
+[%collapsible]
+====
+You can now enable CSP overrides for font, stylesheet, and image sources in ThoughtSpot UI. If you want to load fonts, stylesheets, images, or favicons from an external source, add the source URLs to the CSP allowlist on the *Security Settings* page.
+
+For more information, see xref:security-settings.adoc#_add_trusted_domains_for_font_css_and_image_import[Security Settings].
+====
+
+.Multi-tenancy with Orgs
+[%collapsible]
+====
+You can now set up your ThoughtSpot Cloud instance as a multi-tenant cluster and partition it into logical and isolated workspaces called *Orgs*. Each Org can have its own users, groups, and metadata, and stay independent of and invisible to other Orgs configured on the same application instance.
+
+For more information, see xref:orgs.adoc[Multi-tenancy with Orgs].
+====
+
+.Visual Embed SDK version 1.18.0
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.18.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
+====
+
+== Version 8.9.0.cl
+
+.Improvements to authentication methods and AuthType enums in the SDK
+[%collapsible]
+====
+The following changes are introduced in the Visual Embed SDK to improve the authentication framework and options for embedded application users:
+
+* New auth type enum for embedded SSO authentication
++
+The `AuthType.EmbeddedSSO` enum allows you to enable SSO login on embedded instances. This authentication method allows you to use your current SAML IdP or OpenID Connect configuration and redirect users to the IdP for authentication within the embedded iFrame.
+
+* Changes to the existing `AuthType` enums: +
+** `AuthType.SAML` is renamed as `AuthType.SAMLRedirect` +
+** `AuthType.OIDC` is renamed as `AuthType.OIDCRedirect` +
+** `AuthType.AuthServer` is renamed to `AuthType.TrustedAuthToken` +
+
+For more information, see xref:embed-authentication.adoc[Authentication].
+====
+
+.Just-in-time user creation and dynamic privilege assignment
+[%collapsible]
+====
+Starting from 8.9.0.cl, the xref:session-api.adoc#session-authToken[/tspublic/v1/session/auth/token] endpoint supports just-in-time provisioning of users. If the user specified in the API request does not exist in the ThoughtSpot system, you can set the `autocreate` property to `true` to add the user to ThoughtSpot and assign the user to `groups`.
+====
+.Advanced style customization [beta betaBackground]^Beta^
+[%collapsible]
+====
+ThoughtSpot now allows you to override style specifications of the embedded UI pages and elements with custom CSS. Custom CSS provides granular control over the design elements and lets you modify the properties of these elements
+to match the look and feel of your host application.
+
+To help users visualize and preview the CSS overrides, the *Visual Embed* playground will include the *Apply custom styles* checkbox, which allows you to explore the variables available for customization.
+
+For more information, see xref:style-customization.adoc[Customize styles and layout] and xref:css-customization.adoc[Customize CSS using SDK].
+
+====
+.Visual Embed SDK version 1.17.0
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.17.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API
+[%collapsible]
+====
+For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
+====
+
+== Version 8.8.0.cl
+.Custom tile size for visualizations on a Liveboard (New Liveboard experience only)
+[%collapsible]
+====
+ThoughtSpot users can now customize the tile size of a visualization on a Liveboard. In the earlier versions, ThoughtSpot allowed resizing visualizations using predefined layout options available in the *More* menu image:./images/icon-more-10px.png[the more options menu]. With custom tile size, users can now change the size of a visualization just by clicking and dragging the tile to the desired size.
+
+This feature is in beta and disabled by default on all Thoughtspot instances. To enable this feature on your instance, contact ThoughtSpot Support.
+====
+.Visual Embed SDK version 1.16.0
+[%collapsible]
+====
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.16.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+.REST API v1
+[%collapsible]
+====
+For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
+====
+.Bug fixes and improvements
+[%collapsible]
+====
+Bug fixes and new improvements in embedded user experience. +
+For more information, see xref:fixed-issues.adoc[Fixed issues].
+====
+
+== Version 8.7.0.cl
+
+.Liveboard tabs
+[%collapsible]
+====
+The new Liveboard experience[beta betaBackground]^Beta^ now supports organizing visualizations in tabs. Users with edit access to a Liveboard can add, edit, and move visualizations to tabs on a Liveboard. On embedded ThoughtSpot instances, developers can set a specific tab as an active tab using the Visual Embed SDK.
+
+This feature is available only on deployments that have the new Liveboard experience enabled. For more information, see xref:embed-pinboard.adoc#_liveboard_tabs[Customize Liveboard tabs].
+
+[IMPORTANT]
+The new Liveboard experience is in BETA on embedded ThoughtSpot instances. This feature is turned off by default on embedded ThoughtSpot instances.
+====
+.Visual Embed SDK version 1.15.0
+[%collapsible]
+====
+For information about the new features and enhancements in the Visual Embed SDK version 1.15.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API v1
+[%collapsible]
+====
+For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
+====
+
+.REST API v2 [beta betaBackground]^Beta^
+[%collapsible]
+====
+The REST API v2 [beta betaBackground]^Beta^ feature will be deprecated in 8.10.0.cl and replaced with the new v2.0 API endpoints. For more information, see xref:deprecated-features.adoc[Deprecation announcements].
+====
+
+== Version 8.6.0.cl
+
+.Liveboard new experience [beta betaBackground]^Beta^
+[%collapsible]
+====
+The new Liveboard experience is now available on embedded ThoughtSpot instances. In addition to the existing Liveboard features, the new experience introduces several notable changes to the *Liveboard* page:
+
+Liveboard editing::
+To edit a Liveboard, users must switch to the edit mode by clicking the *Edit* button on the Liveboard page.
+The edit mode allows you to edit the Liveboard title and description text, apply filters, copy the Liveboard, modify the layout of the visualization tiles, delete a visualization, and so on.
+
+Liveboard filters::
+* The Liveboard filter configuration options are available on a single modal.
+* When a user creates a copy of a Liveboard, the filters applied to its visualizations are also copied.
+
+Other features and enhancements::
+* The *Add filters* action is placed in the primary menu bar and can be viewed only when a Liveboard is in edit mode. Only users with edit access to the Liveboard can apply filters.
+* The *Undo*, *Redo*, and *Reset* actions for visualizations.
+* The *Liveboard Info* action label in the More image:./images/icon-more-10px.png[the more options menu] menu is renamed to *Show Liveboard details*.
+* The *Schedule* action is placed in the More image:./images/icon-more-10px.png[the more options menu] menu.
+* Improved visualization Explore experience.
+
+Deprecated features::
+The following features are *_not_* available with the new Liveboard experience:
+* The *Copy embed link* and *Copy link* menu actions in the More image:./images/icon-more-10px.png[the more options menu] menu of a Liveboard
+* The edit title icon on visualization tiles
+* The *Share* button on visualizations
+
+For more information about the new Liveboard experience, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-experience-new[New Liveboard experience, window=_blank].
+
+[discrete]
+==== New Liveboard experience rollout on embedded instances
+
+The new Liveboard experience is currently available in BETA on embedded ThoughtSpot instances. The new liveboard experience will be rolled out on embedded instances in phases:
+
+In ThoughtSpot Cloud 8.6.0.cl::
+
+The new Liveboard experience is turned off by default on embedded ThoughtSpot instances. If you are using the Visual Embed SDK to embed ThoughtSpot, you can xref:embed-pinboard.adoc#lbv2[set the `liveboardV2` parameter] in the SDK package to `true` and enable the new experience globally for all users on your instance. +
+
++
+ThoughtSpot users with administrator privileges can also link:https://docs.thoughtspot.com/cloud/latest/liveboard-experience-new[turn on the new Liveboard experience, window=_blank] at the cluster level.
+
+In later releases::
+The new Liveboard Experience will be turned on by default for all embed application users. To switch to the classic experience, you can set the `liveboardV2` parameter to `false` in the SDK, or change the Liveboard experience preference in the `Admin` tab of the ThoughtSpot UI.
+
+[NOTE]
+The Liveboard experience setting in the SDK takes precedence over the cluster-level settings in the *Admin* tab.
+
+[discrete]
+==== Actions and Events in the SDK
+If you have enabled the new Liveboard experience on your instance, you can use the `Action` and `Event` enumeration members available in the SDK package to customize an embedded object and improve interactivity.
+
+For example, to disable the *Delete* action for a visualization object on the Liveboard, you can use the `Action.Remove` enum. Similarly, you can trigger events such as `VizPointClick` on visualizations in an embedded Liveboard.
+
+====
+
+.Visual Embed SDK version 1.14.0
+[%collapsible]
+====
+For information about the new features and enhancements in the Visual Embed SDK version 1.14.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API
+[%collapsible]
+====
+For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
+====
+
+== Version 8.5.0.cl
+
+.Search Assist support for embedded instances
+[%collapsible]
+====
+Your application users can now access sample search walkthrough lessons created using Search Assist on embedded ThoughtSpot instances. If the Search Assist feature is enabled in the SDK, and the Search Assist lessons are created on the Worksheet, users can view sample search questions and follow the actions in the walkthrough to get answers.
+
+//For more information, see xref:search-assist-tse.adoc[Enable Search Assist, window=_blank].
+====
+
+.Visual Embed SDK 1.13.0
+[%collapsible]
+====
+For information about the new features and enhancements in the Visual Embed SDK version 1.13.0, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.ThoughtSpot UI
+[%collapsible]
+====
+The new Data workspace is Generally Available (GA) in 8.5.0.cl on ThoughtSpot instances. For more information about the new Data tab, SpotApps, and other related features, see link:https://docs.thoughtspot.com/cloud/latest/notes[ThoughtSpot product documentation].
+
+[IMPORTANT]
+While some customizable actions from the Visual Embed SDK will be honored from within an embedded instance of the new Data workspace page, full support of this page in embedded ThoughtSpot instances is planned for a future release. If you are actively embedding and customizing the `Data` tab for your application and wish to retain the legacy `Data` tab, contact ThoughtSpot Support.
+
+====
+
+== Version 8.4.0.cl
+
+.Link customization
+[%collapsible]
+====
+This release allows query parameters in the Liveboard, saved Answer, and visualization URLs that are customized for an embedded ThoughtSpot instance. For example, you can customize the *Unsubscribe* link sent in email notifications for KPI charts by adding `{ts-query-params}` to the visualization URL, and thus allow users to unsubscribe from KPI threshold alerts at any time.
+
+For more information, see xref:customize-links.adoc[Customize links].
+====
+
+.Visual Embed SDK 1.12.0
+
+[%collapsible]
+====
+The Visual Embed SDK version 1.12.0 introduces new events. For more information, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API v2 [beta betaBackground]^Beta^
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+||
+|[tag greenBackground]#NEW ENDPOINTS# a| This release introduces the following new REST API v2 [beta betaBackground]^Beta^ endpoints: +
+
+* Data +
+** `*GET* /tspublic/rest/v2/data/answer/querysql` +
+** `*GET* /tspublic/rest/v2/data/liveboard/querysql`
+* Admin
+** `*PUT* /tspublic/rest/v2/admin/assignauthor`
+|[tag redBackground]#BREAKING CHANGES# a| * The method names for the following endpoints will be changed in the SDK. +
+** `/tspublic/rest/v2/user/addgroup` +
+** `/tspublic/rest/v2/user/removegroup` +
+* The `/tspublic/rest/v2/admin/changeowner` endpoint will be renamed as `/tspublic/rest/v2/admin/changeauthor`.
+|====
+====
+
+== Version 8.3.0.cl
+
+.Visual Embed SDK 1.11.0
+[%collapsible]
+====
+The Visual Embed SDK version 1.11.0 introduces several new events for embedded components. For more information, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API v2 [beta betaBackground]^Beta^
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+||
+|[tag greenBackground]#NEW ENDPOINTS# a| The following REST API v2 [beta betaBackground]^Beta^ endpoints are now available:
+
+* Connection endpoints +
+** `GET /tspublic/rest/v2/connection/database` +
+** `POST /tspublic/rest/v2/connection/table` +
+** `POST /tspublic/rest/v2/connection/tablecoloumn` +
+* Report endpoint +
+** `POST /tspublic/rest/v2/report/liveboard` +
+* Security endpoints +
+** `POST /tspublic/rest/v2/security/share/tsobject` +
+** `POST /tspublic/rest/v2/security/share/visualization` +
+** `GET /tspublic/rest/v2/security/permission/tsobject` +
+** `GET /tspublic/rest/v2/security/permission/principal` +
+** `POST /tspublic/rest/v2/security/permission/tsobject/search` +
+** `POST /tspublic/rest/v2/security/permission/principal/search` +
+* Custom action endpoints +
+** `GET /tspublic/rest/v2/customaction` +
+** `POST /tspublic/rest/v2/customaction/create` +
+** `PUT /tspublic/rest/v2/customaction/update` +
+** `DELETE /tspublic/rest/v2/customaction/delete` +
+** `POST /tspublic/rest/v2/customaction/search` +
+** `GET /tspublic/rest/v2/customaction/association` +
+** `DELETE /tspublic/rest/v2/customactions/association/delete`
+
+|[tag orangeBackground]#MODIFIED# a|
+* The `x-requested-by` header is not mandatory for API requests to the REST API v2 [beta betaBackground]^Beta^ endpoints.
+* The `createdBy` attribute in the `/tspublic/rest/v2/metadata/header/search` API is renamed to `author`.
+* The attributes with the `boolean` data type in the API endpoints are changed to `string` data type. If a boolean attribute was set as `true` in your existing setup, the value will be changed to `"true"`.
+|[tag redBackground]#BREAKING CHANGES# a|
+
+* Note the change in HTTP request method for the following REST API v2 [beta betaBackground]^Beta^ endpoints: +
+** `**PUT** /tspublic/rest/v2/metadata/tag/assign` +
+** `**PUT** /tspublic/rest/v2/metadata/tag/unassign` +
+** `**PUT** /tspublic/rest/v2/metadata/favorite/assign` +
+** `**PUT** /tspublic/rest/v2/metadata/favorite/unassign` +
+** `**PUT** /tspublic/rest/v2/metadata/homeliveboard/assign` +
+** `**PUT** /tspublic/rest/v2/metadata/homeliveboard/unassign` +
+* In the REST API SDK [beta betaBackground]^Beta^, the classes corresponding to enumerations used for string fields such as the `type` field in metadata API, are renamed. If you are using the REST API SDK in your environments, make sure the class names are updated.
+|[tag redBackground]#REMOVED# a| The `ownedBy` attribute is removed from the `/tspublic/rest/v2/metadata/header/search` API endpoint.
+|====
+====
+
+== Version 8.2.0.cl
+
+////
+=== Custom actions
+[width="100%" cols="1,4"]
+|====
+||
+|[tag greenBackground]#NEW FEATURE# a| +++
App actions for Slack integration
+++
+
+ThoughtSpot introduces app actions[beta betaBackground]^Beta^ to support seamless integration with third-party business apps such as Slack. Your application users can now connect ThoughtSpot with their Slack workspaces and deliver insights directly to Slack channels.
+
+Users with developer or admin privileges can create an app action for Slack[beta betaBackground]^Beta^ in the Developer portal and add it as a menu action on visualizations and saved answers. On clicking this action, ThoughtSpot users can initiate the Slack integration workflow and send data to their Slack channels without leaving the ThoughtSpot UI.
+
+For more information, see xref:app-actions.adoc[App actions] and xref:push-data-to-slack.adoc[Push data to a Slack workspace].
+|====
+////
+
+.Visual Embed SDK 1.10.x
+[%collapsible]
+====
+The Visual Embed SDK version 1.10.x introduces new attributes and bug fixes. For more information, see xref:api-changelog.adoc[Visual Embed changelog].
+====
+
+.REST API v1
+[%collapsible]
+====
+New endpoints for data connection queries. For more information, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog].
+====
+
+.REST API v2 [beta betaBackground]^Beta^
+
+[%collapsible]
+====
+Starting from 8.2.0.cl release, the xref:rest-api-v2.adoc[REST API Playground and SDK] [beta betaBackground]^Beta^ feature is enabled by default on ThoughtSpot instances.
+
+The 8.2.0.cl release also introduces the following features:
+
+Endpoint URL path::
+The REST API v2 [beta betaBackground]^Beta^ endpoint URL path is changed from `/api/rest/v2` to `/tspublic/rest/v2/`. For example, the `GET /api/rest/v2/connection` endpoint is now available as `GET /tspublic/rest/v2/connection`.
+
+Trusted authentication::
+If trusted authentication is enabled on your instance, you can now obtain a login token to authenticate to ThoughtSpot and authorize your API requests.
+
+For more information, see xref:authentication.adoc#trustedAuthToken[REST API v2 authentication].
+
+SDK for .NET clients::
+ThoughtSpot provides the .NET SDK to allow developers to interact with REST APIs from .NET applications. You can download the SDK from NuGet Package Manager and install it using the NuGet GUI. For more information, see xref:rest-api-sdk-libraries.adoc[REST API SDK and client libraries].
+
+New API endpoints::
+
+* `GET /tspublic/rest/v2/admin/configuration`
+* `GET /tspublic/rest/v2/admin/configuration/overrides`
+* `PUT /tspublic/rest/v2/admin/configuration/update`
+* `PUT /tspublic/rest/v2/admin/resetpassword`
+* `PUT /tspublic/rest/v2/admin/syncprincipal`
+* `PUT /tspublic/rest/v2/admin/changeowner`
+* `PUT /tspublic/rest/v2/user/changepassword`
+* `POST /tspublic/rest/v2/data/search`
+* `POST /tspublic/rest/v2/data/answer`
+* `POST /tspublic/rest/v2/data/liveboard`
+* `POST /tspublic/rest/v2/report/answer`
+* `GET /tspublic/rest/v2/logs/events`
+
+//For more information, see xref:rest-api-v2-reference-beta.adoc[REST API v2 Reference].
+
+====
+
+== Version 8.1.0.cl
+
+.Visual Embed SDK version 1.9.x
+[%collapsible]
+====
+The Visual Embed SDK version 1.9.x introduces new action enumerations, events, and attributes. For more information, see xref:api-changelog.adoc[Visual Embed Changelog].
+====
+
+.REST API v2 [beta betaBackground]^Beta^
+[%collapsible]
+====
+The following REST API v2 endpoints are now available on instances on which the REST API v2 Playground and SDK feature is enabled.
+
+* `GET /api/rest/v2/connection`
+* `POST /api/rest/v2/connection/create`
+* `PUT /api/rest/v2/connection/update`
+* `DELETE /api/rest/v2/connection/delete`
+* `PUT /api/rest/v2/connection/addtable`
+* `PUT /api/rest/v2/connection/removetable`
+* `POST /api/rest/v2/connection/search`
+* `DELETE /api/rest/v2/metadata/delete`
+* `GET /api/rest/v2/metadata/header`
+
+The REST API v2 Playground and SDK is a limited availability feature and is in beta.
+
+For more information, see xref:rest-api-v2.adoc[REST API v2] and xref:rest-api-v2-reference.adoc[REST API v2 Reference].
+====
+
+
+== Version 8.0.0.cl
+
+.Visual Embed SDK version 1.8.x
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+||
+|[tag redBackground]#BREAKING CHANGE# | +++
Auto login
+++
+
+The `autoLogin` attribute is now set as `false` by default. This attribute is used in the `init` method to automatically re-login a user when a user session expires.
+|[tag greenBackground]#NEW FEATURE# | +++
Authentication
+++
+
+The `init` method now returns an `authPromise` that resolves when the authentication is completed.
+|====
+
+====
+
+
+.Embed application
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a| +++
OpenID Connect authentication
+++
+
+ThoughtSpot now supports OpenID Connect (OIDC) authentication framework on embedded instances. Your application users can now authenticate to an authorization server at your OpenID provider and access embedded ThoughtSpot content using their SSO credentials.
+
+For more information, see xref:configure-oidc.adoc[OpenID Connect authentication].
+
+|[tag redBackground]#REMOVED# a| +++
Follow button
+++
+
+If you have embedded the full ThoughtSpot application, you will notice that the *Follow* button on the Liveboards page is removed. You can now schedule email notifications using the **Schedule** feature and follow Liveboard updates.
+|====
+====
+
+
+.Visual Embed SDK 1.7.0
+
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+
+|[tag greenBackground]#NEW FEATURE# |+++
OIDC AuthType
+++
+
+The SDK supports the `OIDC` `authType` in `init` calls. If you want your application users to authenticate to an OpenID provider and use their SSO credentials to access the embedded ThoughtSpot content, you can enable the `OIDC` authentication type in the SDK.
+
+For more information, see xref:embed-authentication#oidc-auth.adoc[Authentication and security attributes].
+|[tag greenBackground]#NEW FEATURE# a|+++
Embed events
+++
+
+The SDK includes the following new event:
+
+* `RouteChange`
+
+For more information, see xref:embed-events.adoc[Events reference].
+
+|====
+====
+
+.REST API Playground and SDK [beta betaBackground]^Beta^
+
+[%collapsible]
+====
+
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a| +++
REST API Playground and SDK
+++
+
+ThoughtSpot introduces the v2 [beta betaBackground]^Beta^ version of REST API endpoints and an interactive Playground to explore the API request and response workflows.
+
+The API Playground offers several distinct features, such as an interactive code panel, a catalog of resource-oriented endpoint URLs, language-specific SDK and client libraries, code samples, and API reference documentation.
+
+You can use any standards-compliant HTTP client or use the Playground to make an API call. If you want to construct your queries and process API responses programmatically, you can download the SDK and client libraries in the programming language of your choice and integrate them with your applications.
+
+The REST API Playground and SDK is a limited availability feature and is in beta. To preview this feature, visit link:https://try-everywhere.thoughtspot.cloud/v2/#/everywhere/api/rest/playgroundV2[ThoughtSpot Live Playground, window=_blank]. To enable this feature on your ThoughtSpot instance, contact ThoughtSpot Support.
+
+For more information, see xref:rest-api-v2.adoc[REST API v2].
+|====
+====
+
+
+== Version ts8.nov.cl
+
+.Developer portal
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+|[tag orangeBackground]#CHANGE NOTICE# a| +++
Pinboards are now Liveboards!
+++
+
+Effective from the ThoughtSpot 8 November Cloud release, ThoughtSpot pinboards are rebranded as Liveboards and optimized for live analytics in cloud deployments. Along with granular insights, Liveboards offer interactive data analytics experience with enhanced capabilities.
+
+As part of rebranding, we have made some terminology changes in the ThoughtSpot UI and Developer portal. We are in the process of rolling out terminology changes across all ThoughtSpot interfaces, platforms, and information artifacts. During this period, your environment may show some instances of `pinboard` based on the rebranding rollout stage. In some cases, we may even continue to use the legacy terminology for backward compatibility, and to ensure that your existing integrations work seamlessly. For more information, see xref:terminology-update.adoc[Terminology changes].
+|====
+====
+
+
+.Custom actions
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a| +++
Custom action association to user groups
+++
+
+ThoughtSpot now allows you to restrict a custom action's availability to specific user groups. Developers can associate a custom action to one or several user groups in the Developer portal and allow only authorized users to view and access the custom action on a Worksheet, Answer, or visualization.
+
+For more information, see xref:customize-actions-menu.adoc#access-control[Custom actions] and xref:custom-actions-url.adoc[Configure a custom URL action].
+|====
+====
+
+.User access
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# |ThoughtSpot now supports restricting embed user access to the non-embedded ThoughtSpot application instance. By default, all embedded ThoughtSpot users can navigate to and log in to the non-embedded ThoughtSpot application instance.
+If you want to allow only users with administrator or developer privileges to access the non-embedded ThoughtSpot application instance, contact ThoughtSpot Support.
+|====
+====
+
+
+.Visual Embed SDK version 1.6.x
+[%collapsible]
+====
+
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a|+++
Visible actions
+++
+
+You can now configure a set of ThoughtSpot UI actions as visible actions and display these actions in the embedded UI. If your embedded instance requires only a few actions, you can use the `visibleActions` API to show only these actions in the embedded ThoughtSpot UI.
+
+For more information, see xref:embed-actions.adoc[Show or hide UI actions].
+
+|[tag orangeBackground]#MODIFIED# | +++
Terminology changes
+++
+
+The SDK library and object parameter names are modified to rebrand pinboards as Liveboards. For a complete list of changes, see xref:terminology-update.adoc#sdk-changes[Terminology changes].
+
+|[tag greenBackground]#NEW FEATURE# a|+++
Embed events
+++
+
+The SDK supports the following new events:
+
+* `DialogOpen`
+* `DialogClose`
+
+For more information, see xref:embed-events.adoc[Events reference].
+
+|====
+====
+
+.REST API
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a|`POST /tspublic/v1/session/login/token`
+
+This API allows you to send the login token and user information in the request body. For more information, see the xref:session-api.adoc#session-loginToken[REST API reference page].
+
+|[tag orangeBackground]#MODIFIED# a| The `/tspublic/v1/connection/create` and `/tspublic/v1/connection/update` endpoints now allow configuring and modifying a connection without importing tables.
+
+For more information, see xref:connections-api.adoc[Data connection APIs].
+|[tag orangeBackground]#MODIFIED#|You can now filter metadata objects by author GUIDs using the `authorguid` attribute in the `/tspublic/v1/metadata/list` endpoint.
+
+For more information, see xref:metadata-api.adoc#metadata-list[Get a list of metadata objects].
+|====
+
+====
+
+.ThoughtSpot application UI
+[%collapsible]
+====
+
+To make it easier for users to find new insights, the **Search data** functionality is moved from the search bar toggle on the **Home** page to the **Search data** button in the main navigation bar.
+
+Note that if you are embedding the full application without the navigation bar, your application users may not be able to access the **Search data** button. If you must include the Search bar toggle on the **Home** page, contact ThoughtSpot Support to restore this feature on your cluster.
+
+image:./images/search-toggle.png[Search toggle, width=auto]
+
+image:./images/search-data-btn.png[Search data button, width=auto]
+
+====
+
+== Version ts7.oct.cl
+
+.Custom actions
+[%collapsible]
+====
+
+[width="100%" cols="1,4"]
+|====
+|[tag orangeBackground]#MODIFIED# a|+++
Custom actions feature availability
+++
+
+Starting from ThoughtSpot 7 Cloud October release, you _do not_ require a separate license to create or manage custom actions. The *Custom action* feature is unlocked on all clusters that have a valid ThoughtSpot Enterprise Cloud service subscription. ThoughtSpot Cloud service users with Developer or Admin privileges can access the *Custom actions* feature in the *Develop* tab.
+
+|[tag redBackground]#REMOVED# a|+++
The Only allow in context menu checkbox
+++
+
+The *Only allow in context menu* checkbox in the custom action creation dialog is removed from the UI. This checkbox was available in previous releases to allow developers to set a custom action to appear only in the contextual menu on pinboard visualizations, charts, or tables.
+
+If you have created custom actions with the *Only allow in context menu* setting enabled on your instance, note these custom action workflow changes:
+
+* If you have a *Global* custom action with the *Only allow in context menu* setting enabled, the configuration setting _is not_ preserved and the action is placed in the **More** image:./images/icon-more-10px.png[the more options menu] menu instead of the contextual menu.
++
+You can xref:custom-actions-edit.adoc[modify the position of this action] by using the *Edit* option in the *Custom actions* panel on a visualization or search results page.
+
+* If you have a *Local* custom action with the *Only allow in context menu* setting enabled and the action is already assigned to a Worksheet, visualization, chart, or table, the configuration setting _is_ preserved and the custom action shows up in the contextual menu.
+
+* If you have a *Local* custom action with the *Only allow in context menu* setting enabled, but it is not assigned to a Worksheet, visualization, chart, or table, the action will not be available as a menu item or button. You must add the action to a visualization, chart, or table, and configure its position as required. For more information, see xref:custom-actions-viz.adoc[Add a custom action to a visualization] and xref:custom-actions-worksheet.adoc[Add custom actions to a Worksheet].
+
+|====
+====
+
+.Visual Embed SDK version 1.5.0
+
+[%collapsible]
+====
+
+The ThoughtSpot 7 Cloud October release introduces the Visual Embed SDK version 1.5.0, which includes the following new features and enhancements.
+
+[width="100%" cols="1,4"]
+|====
+||
+|[tag greenBackground]#NEW FEATURE# | +++
Render embedded objects in queue
+++
+
+The SDK now supports rendering embedded objects in a queue. If you have multiple embedded objects, you can enable the `queueMultiRenders` parameter to queue your embedded objects and render them one after another. This feature helps in decreasing the load on the web browsers and improving your application loading experience. By default, this attribute is set to `false`.
+
+|[tag greenBackground]#NEW FEATURE# a|+++
Liveboard embed
+++
+
+The `pinboardEmbed` package includes the `defaultHeight` attribute that sets a minimum height for embedded objects on a pinboard page and the corresponding visualization pages that a user can navigate to.
+
+For more information, see xref:embed-search.adoc[Embed a pinboard].
+
+|[tag greenBackground]#NEW FEATURE# a|+++
Embed events
+++
+
+The SDK EmbedEvent library includes the following new events:
+
+* `VizPointDoubleClick`
+* `Drilldown`
+* `SetVisibleVizs`
+
+For more information, see xref:embed-events.adoc[Events reference].
+
+|====
+====
+
+.REST APIs
+[%collapsible]
+====
+The ThoughtSpot 7 Cloud October release includes the following new REST API endpoints. For more information about these APIs, see xref:rest-api-reference.adoc[REST API Reference].
+
+* `POST /tspublic/v1/group/{groupid}/users`
+* `GET /tspublic/v1/group/{groupid}/users`
+* `DELETE /tspublic/v1/group/{groupid}/users`
+* `PUT /tspublic/v1/user/email`
+* `POST /tspublic/v1/user/{userid}/groups`
+* `GET /tspublic/v1/user/{userid}/groups`
+* `PUT /tspublic/v1/user/{userid}/groups`
+* `DELETE /tspublic/v1/user/{userid}/groups`
+====
+
+
+== Version ts7.sep.cl
+
+.Licensing
+[%collapsible]
+====
+
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a| +++
+++New ThoughtSpot license for embedded analytics +++
+++
+
+ThoughtSpot introduces the ThoughtSpot Embedded Edition license that grants access to Developer portal, Playground, customization workflows, Visual Embed SDK, and REST APIs. If you have a ThoughtSpot Enterprise Cloud Service subscription and you want to avail the benefits of ThoughtSpot Embedded analytics, you can now request for a license upgrade.
+
+The new licensing model introduces several notable changes in the ThoughtSpot Developer portal:
+
+* On clusters that _do not_ have the ThoughtSpot Embedded Edition license, the ThoughtSpot Developer Portal displays a locked icon next to the customization menu actions. When you click the locked icon, the UI prompts you to sign up for a free trial or upgrade your license.
+* The ThoughtSpot Enterprise Cloud service subscribers can either start a 30-day free trial or initiate a license upgrade from the UI.
+* Free trial users can initiate a license upgrade request by clicking **Upgrade Now** at any time during the evaluation period, or when the trial expires.
+* If you click *Upgrade* or **Upgrade Now**, ThoughtSpot opens the Live Chat Support widget. You can start a conversation with the Sales personnel to initiate the license upgrade.
+
+For more information about the licensing model and upgrade process, see xref:get-started-tse.adoc[Get started with embedded analytics].
+|====
+
+====
+
+.Developer portal enhancements
+[%collapsible]
+====
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a| +++
+++Developer Playground enhancements+++
+++
+
+* The *Full app* Playground page includes the *Hide profile and help* checkbox to provide a preview of the `disableHelpAndProfile` function that can hide the Help and Profile icons in the ThoughtSpot navigation bar.
+
+* The *Full Height* checkbox in *Pinboard* Playground provides a preview of the `fullHeight` attribute that can dynamically resize the embedded pinboard frame according to the height of the pinboard.
+
+For more information, see xref:developer-playground.adoc[Developer Playground].
+|====
+
+====
+
+.Visual Embed SDK version 1.4.0
+
+[%collapsible]
+====
+The ThoughtSpot 7 Cloud September release introduces the Visual Embed SDK version 1.4.0, which includes the following new features and enhancements.
+
+[width="100%" cols="1,4"]
+|====
+||
+|[tag greenBackground]#NEW FEATURE# a|+++
+++Prefetch API+++
+++
+
+The `prefetch` API fetches static resources from a given URL before your application loads. Web browsers can then cache the prefetched resources locally and serve them from a user's local disk. You can use this API to load the embedded objects faster and improve your application response time.
+
+For more information, see xref:prefetch-and-cache.adoc[Prefetch static resources].
+
+|[tag greenBackground]#NEW FEATURE# a|+++
+++In-app page navigation+++
+++
+
+The `navigateToPage` method in the SDK lets you provide quick and direct access to a specific pinboard, saved Answer, or an application page. You can add a custom menu action or button in your application UI that calls the `navigateToPage` method and leads your users to the page specified in the `path` parameter.
+
+For more information, see xref:page-navigation.adoc[Add a custom action for in-app navigation].
+
+|[tag greenBackground]#NEW FEATURE# a|+++
+++Full application embedding+++
+++
+
+The `appEmbed` SDK package includes the following new attributes:
+
+* The `disableProfileAndHelp` attribute to show or hide the `Help (?)` and the user profile menu in the navigation bar of your embedded app.
+
+* The `hideObjects` attribute to hide specific objects from a user's page view.
+
+For more information, see xref:full-embed.adoc[Embed full application].
+
+|[tag greenBackground]#NEW FEATURE# |+++
+++Search embed +++
+++
+
+The `searchEmbed` package includes the `forceTable` attribute that sets tabular view as the default format for presenting search data. You can use set this attribute to `true` to force search results to appear in the table view.
+
+For more information, see xref:embed-search.adoc[Embed ThoughtSpot search].
+
+|[tag redBackground]#REMOVED# |
+
+The `searchQuery` parameter is no longer supported and is removed from the `searchEmbed` SDK package.
+|[tag greenBackground]#NEW FEATURE# a|+++
+++Embed events +++
+++
+The SDK EmbedEvent library includes the following events:
+
+* `QueryChanged`
+* `AuthExpire`
+
+For more information, see xref:embed-events.adoc[Subscribe to Events].
+|====
+
+====
+
+.REST APIs
+
+[%collapsible]
+====
+
+The ThoughtSpot 7 Cloud September release includes the following new endpoints and modifications to the REST APIs. For more information, see xref:rest-api-reference.adoc[REST API Reference].
+
+.New APIs
+
+* `POST /tspublic/v1/connection/create`
+* `POST /tspublic/v1/connection/update`
+* `POST /tspublic/v1/connection/export`
+* `POST /tspublic/v1/connection/delete`
+* `POST /tspublic/v1/metadata/unassigntag`
+* `GET /tspublic/v1/metadata/list`
+* `GET /tspublic/v1/security/metadata/permissions`
+* `GET /tspublic/v1/security/metadata/{id}/permissions`
+* `GET /tspublic/v1/security/effectivepermissionbulk`
+* `GET /tspublic/v1/session/info`
+* `POST /tspublic/v1/user/activate`
+* `POST /tspublic/v1/user/inactivate`
+* `POST /tspublic/v1/user/session/invalidate`
+* `POST /tspublic/v1/user/resetpassword`
+* `PUT /tspublic/v1/group/{groupid}/users`
+* `POST /tspublic/v1/group/{groupid}/groups`
+* `PUT /tspublic/v1/group/{groupid}/groups`
+* `GET /tspublic/v1/group/{groupid}/groups`
+* `POST /tspublic/v1/group/addmemberships`
+* `POST /tspublic/v1/group/removememberships`
+* `DELETE /tspublic/v1/group/{groupid}/groups`
+
+
+.Modified APIs
+
+* `POST /tspublic/v1/metadata/assigntag`
+
+====
+
+== Version ts7.aug.cl
+
+.Custom actions
+[%collapsible]
+====
+
+[width="100%" cols="1,4"]
+|====
+||
+|[tag greenBackground]#NEW FEATURE# a| +++
Custom actions for worksheets
+++
+
+The Worksheet pages now include a `Custom actions` tab that shows the custom actions created in the Developer portal. ThoughtSpot users can add these actions to a Worksheet and place them as primary actions or menu items in the new visualizations built from that Worksheet.
+
+This feature is available to all ThoughtSpot users who have edit privileges to a Worksheet.
+
+For more information, see xref:custom-actions-worksheet.adoc[Add custom actions to a Worksheet].
+
+|[tag greenBackground]#NEW FEATURE# a| +++
Query parameters for URL-based custom actions
+++
+
+The Developer portal now allows you to add arbitrary key-value pairs as query parameters for a URL action. If a URL endpoint requires specific information, such as the database details or data object attributes, you can add a key-value pair of these attributes when creating a custom action. When the custom action workflow is triggered, these attributes are passed as query parameters in `GET` requests to get the data payload from ThoughtSpot.
+
+For more information, see xref:custom-actions-url.adoc[Configure a custom URL action].
+|====
+
+====
+
+.Visual Embed SDK version 1.3.1
+
+[%collapsible]
+====
+The ThoughtSpot 7 Cloud August release supports Visual Embed SDK version 1.3.1, which includes the following features and enhancements.
+
+[width="100%" cols="1,4"]
+|====
+||
+|[tag greenBackground]#NEW FEATURE# a| +++
searchOptions
+++
+
+The `searchEmbed` SDK package introduces the `searchOptions` parameter for setting search tokens. The `searchOptions` parameter includes the following attributes:
+
+* `searchTokenString`
++
+A TML query string to define search tokens.
+
+* `executeSearch`
++
+When set to `true`, it executes search and shows the search results.
+
+For more information, see xref:embed-search.adoc#search-query[Embed ThoughtSpot search].
+
+|[tag redBackground]#DEPRECATED# a| +++
searchQuery
+++
+
+The `searchQuery` parameter in the `searchEmbed` SDK package is deprecated in the Visual Embed SDK version 1.3.1. Instead, you can use the `searchOptions` parameter to define the search token string.
+
+For more information about `searchOptions`, see xref:embed-search.adoc#search-query[Embed ThoughtSpot search].
+
+|[tag greenBackground]#NEW FEATURE# a| +++
autoLogin
+++
+
+The SDK now supports logging in users automatically after a user session has expired.
+
+For more information, see xref:embed-authentication.adoc#embed-session-sec[Embed user authentication].
+
+|[tag greenBackground]#NEW FEATURE# a| +++
shouldEncodeUrlQueryParams
+++
+
+You can now convert query parameters in the ThoughtSpot generated URLs to base64-encoded format. You can enable this attribute to secure your cluster from cross-site scripting attacks.
+|[tag redBackground]#BREAKING CHANGE# a| +++
Data structure changes in custom action response payloads
+++
+
+* The data structure passed in the custom action response for search now shows as `payload.data.embedAnswerData` instead of `payload.data.columnsAndData`.
+
+* The Answer payload for custom actions includes the following metadata:
+
+** `reportBookmetadata`
++
+Includes visualization metadata attributes such as description, object header metadata, author details, timestamp of the Answer creation, and modification.
+
+** user data
++
+Includes user information such as username, GUID of the user, and email address.
+
+To view a sample response payload, see xref:callback-response-payload.adoc#search-data-payload[Custom action response payload].
+
+|[tag greenBackground]#NEW FEATURE# a| +++
preventPinboardFilterRemoval
+++
+
+The `pinboardEmbed` SDK package now includes the `preventPinboardFilterRemoval` attribute. You can use this attribute to disable the filter removal action and thus prevent users from removing the filter chips added on a pinboard page.
+
+For more information, see xref:embed-pinboard.adoc[Embed a pinboard] and xref:embed-a-viz.adoc[Embed a visualization].
+|[tag greenBackground]#NEW FEATURE# a| +++
suppressNoCookieAccessAlert
+++
+
+You can now set custom alerts for `noCookieAccess` events. By default, the SDK triggers a `noCookieAccess` event and generates an alert when a user's browser blocks third-party cookies. The `suppressNoCookieAccessAlert` allows you to disable this alert.
+
+|[tag greenBackground]#NEW FEATURE# a| +++
Support for fetching callback custom action payload in batches
+++
+
+The Visual Embed SDK now supports processing data in batches for callback custom action responses.
+The callback custom action event in the SDK package supports defining `batchSize` and `offset` values to paginate the Answer payload and send the records in batches.
+
+For more information, see xref:push-data-to-external-app.adoc#large-dataset[Callback custom action workflow].
+|====
+
+====
+
+.REST APIs
+[%collapsible]
+====
+
+The ThoughtSpot 7 Cloud August release introduces several new APIs to xref:user-api.adoc[manage users], xref:group-api.adoc[user groups], xref:admin-api.adoc[cluster configuration], xref:dependency-apis.adoc[object dependencies], and so on.
+
+For a complete list of APIs, see xref:rest-api-reference.adoc[REST API Reference].
+
+====
+
+
+== Version ts7.jun.cl
+
+.Custom actions
+[%collapsible]
+====
+
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a|+++
Global and local custom actions
+++
+
+The ThoughtSpot developer portal now supports configuring a custom action as a __global__ or __local__ action. This feature allows you to determine and control the placement of custom actions in the ThoughtSpot UI. Developers can now choose to create a custom action that will appear on all visualizations, or a specific custom action that can be added to a visualization by a ThoughtSpot user. The custom actions panel in the visualization page allows ThoughtSpot users to view the available custom actions and add an action to any visualization.
+
+For example, if you want an action that triggers a callback into your parent app, which would then post its data to Slack, you might want to add a custom action globally to all visualizations. Similarly, if you want to send the data obtained from a specific visualization to a URL, you can associate a custom action locally to that visualization.
+
+For more information, see xref:customize-actions-menu.adoc[Custom actions] and xref:custom-actions-viz.adoc[Add a custom action to a specific visualization].
+
+|[tag greenBackground]#NEW FEATURE# a|+++
Authentication schemes for custom actions
+++
+
+You can now apply an authentication scheme for a custom action that triggers a data payload to a specific URL target. If an action requires your users to authenticate to send data to a URL, you can specify the authentication method and authorization attributes when creating a custom action in the Developer portal.
+ThoughtSpot will use this information to send the required attributes in the `Authorization` headers to the URL endpoint configured in the custom action.
+
+|[tag greenBackground]#NEW FEATURE# a|
++++
Custom action position settings
+++
+
+ThoughtSpot users with edit privileges can now define or modify the position of a custom action on visualization pages. When a developer creates a custom action in the Developer portal, ThoughtSpot adds a menu item to the **More** image:./images/icon-more-10px.png[the more options menu] menu by default. ThoughtSpot users can change this to a context menu action or a primary action at any time.
+
+If your application instance requires an action that sends only a single row of data from charts or tables, developers can configure a custom action and restrict it to only the contextual menu. If this setting is enabled on a custom action, ThoughtSpot users cannot modify this action on a visualization page.
+
+For more information, see xref:custom-actions-viz.adoc[Add a custom action to a specific visualization].
+|====
+
+====
+
+.Custom link format for embedded instances
+[%collapsible]
+====
+
+ThoughtSpot generates links to access objects, such as pinboards, visualizations, and answers, when a user shares an object with another user or follows a pinboard to receive periodic notifications. If you have embedded ThoughtSpot in your application, you might want to generate these links in the format that preserves your host application context.
+
+For embedded instances, ThoughtSpot now allows you to customize the format of these links in the Developer portal. The *Link Settings* page in the Developer portal allows you to customize the link format for various resource URLs and the *unsubscribe* link sent in email notifications.
+
+For more information, see xref:customize-links.adoc[Customize links].
+====
+
+.REST APIs
+[%collapsible]
+====
+
+The ThoughtSpot 7 Cloud June release includes several new and modified APIs:
+
+.New APIs
+
+* `POST /tspublic/v1/security/share`
++
+Use this API to share ThoughtSpot objects with another user or user group. For more information, see xref:security-api.adoc#share-object[Share objects with another user].
+
+* `POST /tspublic/v1/security/shareviz`
++
+Use this API to share a specific ThoughtSpot visualization with another user or user group. For more information, see xref:security-api.adoc#shareviz[Share a visualization with another user or user group].
+
+* `GET /tspublic/v1/session/login/token`
++
+Use this API to get a login token for a ThoughtSpot user when trusted authentication is enabled. For more information, see xref:session-api.adoc#session-loginToken[Authenticate and log in a user].
+
+* `POST /tspublic/v1/metadata/assigntag`
++
+Use this API to programmatically assign a tag to a ThoughtSpot object such as a pinboard, Answer, table, or Worksheet. For more information, see xref:metadata-api.adoc#assign-tag[Assign tags to metadata objects].
+
+* `POST /tspublic/v1/metadata/details`
++
+Use this API to query metadata details for a specific data object such as a pinboard, Answer, or a Worksheet. For more information, see xref:metadata-api.adoc#metadata-details[Get metadata details].
+
+* `POST /tspublic/v1/metadata/markunmarkfavoritefor`
++
+Use this API to add pinboards and answers to a user's favorites list. For more information, see xref:metadata-api.adoc#set-favorite[Set objects as favorites].
+
+* `DELETE /tspublic/v1/metadata/markunmarkfavoritefor`
++
+Use this API to remove an object from a user's favorites list. For more information, see xref:metadata-api.adoc#del-object-fav[Remove objects from favorites].
+
+* `POST /tspublic/v1/session/homepinboard`
++
+Use this API to set a pinboard as the home pinboard for a user account. For more information, see xref:session-api.adoc#set-home-pinboard[Set a pinboard as a home pinboard].
+
+* `GET /tspublic/v1/session/homepinboard`
++
+Use this API to get the GUID of the pinboard set as a home pinboard. For more information, see xref:session-api.adoc#get-home-pinboard[Get details of the home pinboard].
+
+* `DELETE /tspublic/v1/session/homepinboard`
++
+Use this API to remove the home pinboard. For more information, see xref:session-api.adoc#del-home-pinboard[Remove a home pinboard].
+
+
+.Other API enhancements
+
+The `POST /tspublic/v1/user/updatepreference` API now includes the optional `username` parameter to allow API users to specify the `username` of the ThoughtSpot user whose profile is being modified.
+For more information, see xref:user-api.adoc#updatepreference-api[Update a user profile].
+
+====
+
+
+== Version ts7.may.cl
+
+.Custom actions in the context menu
+[%collapsible]
+====
+You can now add a custom action to the contextual menu to send data or initiate an action from an embedded visualization. The *Customization* > *Actions* page in the *Develop* tab allows you to add a custom action to the contextual menu for visualizations in the *Answers* or *Pinboards* page.
+
+For more information, see xref:customize-actions-menu.adoc[Add custom actions].
+====
+
+.Visual Embed SDK version 1.2.0
+[%collapsible]
+====
+
+[width="100%" cols="1,4"]
+|====
+|[tag greenBackground]#NEW FEATURE# a|+++
SAML authentication
+++
+
+The Visual Embed SDK packages now include the `noRedirect` attribute as an optional parameter for the `SSO` `AuthType`. If you want to display the SAML authentication workflow in a pop-up window, instead of refreshing the application web page to direct users to the SAML login page, you can set the `noRedirect` attribute to `true`.
+
+For more information, see the instructions for embedding xref:full-embed.adoc[ThoughtSpot pages], xref:embed-search.adoc[search], xref:embed-pinboard.adoc[pinboard], and xref:embed-a-viz.adoc[visualizations].
+
+|[tag greenBackground]#NEW FEATURE# a|+++
Visual Embed SDK notification when third-party cookies are disabled
+++
+
+When a user accesses the embedded application from a web browser that has third-party cookies disabled, the Visual Embed SDK emits the `NoCookieAccess` event to notify the developer. Cookies are disabled by default in Safari. Users can enable third-party cookies in Safari’s Preferences setting page or use another web browser.
+To know how to enable this setting by default on Safari for a ThoughtSpot embedded instance, contact ThoughtSpot Support.
+
+|[tag greenBackground]#NEW FEATURE# a|+++
Pinboard actions
+++
+The *More* menu image:./images/icon-more-10px.png[the more options menu] in the embedded Pinboard page now shows the following actions for pinboard and visualizations.
+
+Pinboard::
+* Save
+* Make a copy
+* Add filters
+* Configure filters
+* Present
+* Download as PDF
+* Pinboard info
+* Manage schedules
+
+
+[NOTE]
+Users with edit permissions can view and access the *Save*, *Add filters*, *Configure filters*, and *Manage schedules* actions.
+|[tag greenBackground]#NEW FEATURE# a|+++
Visualization actions
+++
+
+Visualizations on a pinboard:
+
+* Pin
+* Download
+* Edit
+* Present
+* Download as CSV
+* Download as XLSX
+* Download as PDF
+
+[NOTE]
+Users with edit permissions can view and access the *Edit* action. The *Download as CSV*, *Download as XSLX*, and *Download as PDF* actions are available for table visualizations. The *Download* action is available for chart visualizations.
+
+|====
+
+====
+
+.Performance optimization
+[%collapsible]
+====
+This release introduces the following performance improvements for ThoughtSpot embedded applications:
+
+* Faster loading of embedded objects and application pages.
+* Faster loading of preview results in the Playground.
+====
+.REST APIs
+[%collapsible]
+====
+The ThoughtSpot 7 Cloud May release introduces the following REST APIs:
+
+* `*POST* /tspublic/v1/user/updatepreference`
++
+You can use this API to programmatically update a ThoughtSpot user's profile settings such as the email address, locale preference, notification settings, and the preference for revisiting the onboarding experience. For more information, see xref:user-api.adoc#updatepreference-api[User API].
+
+* `*GET* /tspublic/v1/metadata/listas`
++
+You can use this API to get a list of object headers for a ThoughtSpot user or user group. For more information, see xref:metadata-api.adoc#headers-metadata-users[Metadata API].
+====
diff --git a/modules/ROOT/pages/whats-new.adoc b/modules/ROOT/pages/whats-new.adoc
index d24d0b805..1ee092727 100644
--- a/modules/ROOT/pages/whats-new.adoc
+++ b/modules/ROOT/pages/whats-new.adoc
@@ -6,23 +6,116 @@
:page-pageid: whats-new
:page-description: New features and enhancements
-This page lists new features, enhancements, and deprecated functionality in ThoughtSpot Embedded instances.
+This page lists new features, enhancements, and deprecated functionality introduced for ThoughtSpot Embedded instances in 2026. For information about the features introduced in the previous release versions, see xref:whats-new-prev-history.adoc[release history].
-== Version 26.4.0.cl
+// ============================================================
+// VERSION TEMPLATE — copy this block for each new release
+// ============================================================
+//
+//
+// [.version-badge.breaking]#Breaking# /
+// [.version-badge.new]#New# /
+// [.version-badge.deprecated]#Deprecated# /
+// [.version-badge.fixed]#Fixed#
+//
+// *API version string:* `?api-version=YYYY-MM-DD`
+// *Status:* Current / Supported / Deprecated
+// *Affects:* Developers, Administrators, End Users
+// ============================================================
-=== MCP Server with Spotter 3 support for advanced analytics
-ThoughtSpot MCP Server now supports a new version powered by the Spotter 3 engine, bringing advanced analytics including "why" questions, forecasting, and multi-step deep research. Additional capabilities include real-time response streaming, session-based follow-up conversations, and inline chart visualizations within MCP-aware clients such as Claude.
+== May 2026
+**Release version**: ThoughtSpot Cloud 26.5.0.cl +
+*Upgrade notes*: ⚠️Includes breaking changes to Spotter APIs. Refer to the xref:rest-apiv2-changelog.adoc[REST API changelog] for more information. +
+*Recommended SDK versions*: Visual Embed SDK v1.48.0 and later
-=== Theme builder in AI mode
+[.cl-table, cols="2,4", frame=none, grid=none]
+|=====
+a|
+[.cl-label]
+*Version 26.5.0.cl*
+
+a|
+
+[discrete]
+==== Liveboard downloads
+
+Continuous Liveboard PDF export [beta betaBackground]^Beta^::
+In PDF downloads, Liveboard tabs can now be rendered in a single page matching the UI layout. This feature can be enabled by setting `isContinuousLiveboardPDFEnabled` to `true` in the SDK. Setting this flag to `false` returns to the paginated PDF view.
+
+Liveboard download in XLSX and CSV formats::
+Embedded Liveboards can now be downloaded in the PDF, XLlX and CSV file formats. To enable this feature, ensure that the `isLiveboardXLSXCSVDownloadEnabled` parameter is set to `true`.
+
+Excel exports for pivot tables::
+Pivot table visualizations can now be exported to Excel format.
+
+For more information, see xref:embed-pinboard.adoc#_liveboard_download_options[Liveboard download options].
+
+---
+
+[discrete]
+==== Visualization edit interface within the Liveboard view
+
+Users can now edit the underlying query of an answer directly within the Liveboard. When this feature is enabled, the edit button for visualization appears in the answer's floating toolbar when the Liveboard is opened in the edit mode. Clicking the edit button opens the Answer interface preloaded with the answer's current query context. You can make the edits and save the changes without leaving the Liveboard.
+
+---
+
+[discrete]
+==== KPI charts in embedded Liveboards
+
+Embedded Liveboards support advanced controls KPI chart customization. For more information, see link:https://docs.thoughtspot.com/cloud/latest/chart-kpi#advanced[KPI charts].
+
+---
+
+=== Per‑org and per‑user timezone control via variables [beta betaBackground]^Beta^
+
+You can centrally control timezone behavior per org and per user in embedded deployments using the new template variable `ts_user_timezone` and variable APIs.
+
+For multi‑org and multi‑tenant environment, each tenant org and user can be configured independently, guaranteeing isolation and consistency of time‑based analytics across regions. Administrators can reference the timezone variable in formulas to render and filter timestamp data correctly for each embedded user, without separate content per region.
+
+
+[discrete]
+==== Visual Embed SDK
+The Visual Embed SDK version 1.48.0 includes several new features and enhancements. For more information, see the xref:api-changelog.adoc[Visual Embed changelog].
+
+---
+
+[discrete]
+==== REST API v2
+This release introduces new Spotter API endpoints and modifications to the agent conversation APIs, and deprecates legacy agent endpoints. For information about REST API v2 enhancements, see the xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+
+|=====
+
+
+== April 2026
+
+**Release version**: ThoughtSpot Cloud 26.4.0.cl +
+*Upgrade notes*: ⚠️Variable update and delete API and metadata parameterization endpoints are deprecated and replaced with new API endpoints. Refer to xref:rest-apiv2-changelog.adoc#version_26_4_0_cl_april_2026[REST API changelog] and xref:deprecated-features.adoc[Deprecation announcements]. +
+*Recommended SDK versions*: Visual Embed SDK v1.47.0 and later
+
+[.cl-table, cols="2,4", frame=none, grid=none]
+|===
+
+a|
+[.cl-label]
+*Version 26.4.0.cl*
+
+a|
+
+[discrete]
+==== Theme builder in AI mode
The Theme Builder now has an AI mode that enables developers to explore and preview style customizations for their embedded application’s branding using natural language instructions and uploaded brand assets. You can execute style updates such as applying colors directly from a PDF branding guide, updating all button shapes with higher contrast, matching a header to a dark background based on a screenshot, or importing typography and spacing from a JSON file. In the AI mode, Theme builder interprets your intent and applies the changes instantly.
For more information, see xref:theme-builder.adoc[Theme builder].
-=== Webhook integration
+---
+
+
+[discrete]
+==== Webhook integration
In this release version, the following enhancements are introduced in the webhook configuration and delivery status monitoring workflows:
Channel validation::
@@ -34,14 +127,21 @@ Administrators can also monitor the status of a webhook delivery via a `POST /ap
Support for custom HTTP headers in webhook requests::
When configuring or updating a webhook, you can now specify custom headers to include in every outbound request, in addition to the standard HTTP and authentication headers that ThoughtSpot sends. For more information, refer to the xref:webhooks-lb-schedule.adoc#_create_a_webhook[webhook documentation].
-=== Spotter embed enhancements
+---
+
+
+[discrete]
+==== Spotter embed enhancements
You can now customize the appearance and contents of the chat history sidebar panel in Spotter embedding.
You can also customize the branding and logo in the Spotter chat interface.
For more information, see xref:embed-spotter.adoc#_chat_history_panel[Customizing chat history sidebar] and xref:embed-spotter.adoc#_hiding_the_spotter_icon_and_thoughtspot_branding_chat_interface[Hiding logo and brand label in Spotter chat interface].
-=== Liveboard enhancements
+---
+
+[discrete]
+==== Liveboard enhancements
The following enhancements are introduced in Liveboard export and filtering workflows.
Embedding a personalized Liveboard view::
@@ -56,7 +156,11 @@ The rolling date filters with the **Last ** and **Next *
Liveboard PNG export::
The PNG export workflow in the `/api/rest/2.0/report/liveboard` REST API is enhanced to provide high-resolution PNG files. The legacy PNG workflow is deprecated in 26.4.0.cl. For more information about breaking changes and deprecation guidelines, see xref:deprecated-features.adoc[Deprecation announcements]. For information about the new PNG download workflow, see xref:data-report-v2-api.adoc#_liveboard_report_api[Liveboard report API documentation].
-=== Full app embedding
+---
+
+
+[discrete]
+==== Full app embedding
In full application embedded deployments with the V3 navigation and home page experience, the default list page experience is set to ListPage v3 experience.
The ListPage V3 experience provides a refreshed list layout and styling, including the following enhancements:
@@ -67,7 +171,11 @@ The ListPage V3 experience provides a refreshed list layout and styling, includi
For more information, see xref:full-app-customize.adoc#_customize_list_page_experience[List page customization].
-=== Variable API enhancements
+---
+
+
+[discrete]
+==== Variable API
The variable REST API provides new API endpoints for the following bulk operations:
* Bulk deletion:
@@ -82,12 +190,20 @@ The `/api/rest/2.0/template/variables/update-values` and `/api/rest/2.0/template
For more information, see xref:variables.adoc[Variables documentation].
-=== Metadata parameterization
+---
+
+
+[discrete]
+==== Metadata parameterization
You can now parameterize multiple properties of metadata objects using `POST /api/rest/2.0/metadata/parameterize-fields`. The legacy endpoint `/api/rest/2.0/metadata/parameterize` is deprecated in 26.4.0.cl and later versions, and is replaced with the new endpoint to allow updating multiple fields in a single API request.
For more information, see xref:metadata-parameterization.adoc[Metadata parameterization documentation].
-=== Collections [beta betaBackground]^Beta^
+---
+
+
+[discrete]
+==== Collections [beta betaBackground]^Beta^
ThoughtSpot embedded users can now use REST APIs v2 to organize different ThoughtSpot objects into organizational containers called *Collections*. These objects can be Liveboards, Answers, data models, tables, and even other Collections.
For more information, see xref:collections.adoc[Collections].
@@ -96,21 +212,44 @@ For more information, see xref:collections.adoc[Collections].
====
These APIs are currently in beta and turned off by default on ThoughtSpot instances. To enable this feature on your instance, contact ThoughtSpot Support.
====
+---
-=== Visual Embed SDK
+[discrete]
+==== Visual Embed SDK
For information about the new features and enhancements introduced in Visual Embed SDK version 1.46.0, see the xref:api-changelog.adoc[Visual Embed changelog].
-=== REST API v2
+
+[discrete]
+==== REST API v2
For information about REST API v2 enhancements, see the xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-== Version 26.3.0.cl
+---
+|===
+
+== March 2026
+
+**Release version**: ThoughtSpot Cloud 26.3.0.cl +
+*Upgrade notes*: ⚠️Includes feature deprecations. Refer to xref:rest-apiv2-changelog.adoc#_custom_access_token_api[REST API changelog] and xref:deprecated-features.adoc[Deprecation announcements]. +
+*Recommended SDK versions*: Visual Embed SDK v1.46.0 and later
+
+[.cl-table, cols="2,4", frame=none, grid=none]
+|===
-=== ThoughtSpot integration with Amazon S3 storage for webhook delivery
+a|
+[.cl-label]
+*Version 26.3.0.cl*
+
+a|
+[discrete]
+==== Amazon S3 storage destination for webhook delivery
You can now configure ThoughtSpot to deliver webhook payloads and attachments directly into your own Amazon S3 storage using secure AWS cross-account access. To enable this integration, your AWS administrator must create an IAM role with S3 permissions and trust policy, and then register a webhook in ThoughtSpot to deliver the payloads and attachments directly to your S3 bucket.
For more information, see xref:webhooks-s3-storage.adoc[Amazon S3 storage integration for webhook delivery].
-=== Host event enhancements for context-aware routing
+---
+
+[discrete]
+==== Host event enhancements for context-aware routing
HostEvents in the Visual Embed SDK are enhanced to improve event routing and context targeting in ThoughtSpot embedded applications.
@@ -118,7 +257,10 @@ Developers can use the page context framework in the SDK to route host events to
For more information, see xref:events-context-aware-routing.adoc[Context-based execution of host events].
-=== JWT-based ABAC implementation
+---
+
+[discrete]
+==== JWT-based ABAC implementation
The legacy JWT-based approach that uses `filter_rules` and `parameter_values` to implement Attribute-Based Access Control (ABAC) is deprecated.
As part of this deprecation, the following changes have been introduced to the custom authentication token API workflow and REST API Playground:
@@ -131,7 +273,10 @@ Existing ABAC implementations that use `filter_rules` will continue to function
For new deployments, use ABAC via RLS with custom variables and pass data security attributes through the `variable_values` property in the custom access token, and define your RLS rules based on those variables. For more information, see xref:abac_rls-variables.adoc[ABAC via RLS].
-=== Spotter coaching access across published Orgs
+---
+
+[discrete]
+==== Spotter coaching access across published Orgs
Starting with the 26.3.0.cl release, ThoughtSpot supports publishing Spotter coaching information to other Orgs. Coaching changes from the primary Org are synchronized with the data models published in secondary Orgs.
Administrators and users with edit access to data models can programmatically control user access to Spotter coaching information using the object privilege REST API endpoint, `/api/rest/2.0/security/metadata/manage-object-privilege`. They can assign `SPOTTER_COACHING_PRIVILEGE` to other users and user groups, allowing access to the coaching information without requiring data model editing or administration privileges.
@@ -140,46 +285,73 @@ Users and groups with `SPOTTER_COACHING_PRIVILEGE` can import and export coachin
For more information, see xref:spotter-apis.adoc#_spotter_coaching_access[Spotter coaching access].
-////
-=== Spotter embed enhancements
-Developers can customize the appearance of the chat history sidebar in the embedded Spotter 3 interface.
+---
-For more information, see xref:embed-spotter.adoc#_chat_history_panel[Spotter embed documentation].
-////
-
-=== Full application embedding
+[discrete]
+==== Full application embedding
The height and aspect ratio of the logo in the top-left corner of the ThoughtSpot application interface have been updated for visual alignment and consistency across pages. This enhancement is available only in the V3 navigation and home page experience.
If you have embedded the full application with the V3 navigation experience, you may notice that the logo appears smaller in the top navigation. This is a design update and does not require any configuration changes to your current embedding implementation. However, we recommend that you review the logo size and appearance, and adjust your custom logo if necessary.
For information about adding a custom logo image, see xref:customize-style.adoc#logo-change[Customize application logo and favicon].
-=== Visual Embed SDK
+---
+
+[discrete]
+==== Visual Embed SDK
For information about the new features and enhancements introduced in Visual Embed SDK version 1.46.0, see the xref:api-changelog.adoc[Visual Embed changelog].
-=== REST API v2
+---
+
+[discrete]
+==== REST API v2
For information about REST API v2 enhancements, see the xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-== Version 26.2.0.cl
+---
+
+|===
+
+== February 2026
+**Release version**: ThoughtSpot Cloud 26.2.0.cl +
+*Upgrade notes*: ⚠️Includes API parameter deprecations. Refer to xref:rest-apiv2-changelog.adoc[REST API changelog] and xref:deprecated-features.adoc[Deprecation announcements]. +
+*Recommended SDK versions*: Visual Embed SDK v1.45.0 and later
-=== SpotterCode extension for IDEs [earlyAccess eaBackground]#Early Access#
+
+[.cl-table, cols="2,4", frame=none, grid=none]
+|===
+a|
+[.cl-label]
+*Version 26.2.0.cl*
+
+a|
+[discrete]
+==== SpotterCode extension for IDEs [earlyAccess eaBackground]#Early Access#
ThoughtSpot introduces SpotterCode, an AI-powered Model Context Protocol (MCP) extension for Integrated Development Environments (IDEs) such as Cursor, Visual Studio Code, and Claude Code. When integrated, SpotterCode enables the AI agent in the IDE to access ThoughtSpot SDKs and API documentation resources and provide in-context coding assistance to developers embedding ThoughtSpot content within their applications.
SpotterCode is available as an Early Access feature and can be integrated with development environments that support MCP servers and tools. For more information, see xref:spottercode.adoc[SpotterCode], xref:spottercode-integration.adoc[Integrating SpotterCode in IDEs], and xref:spottercode-prompt-guide.adoc[SpotterCode prompting guide].
-=== Spotter 3 experience [earlyAccess eaBackground]#Early Access#
+---
+
+[discrete]
+==== Spotter 3 experience [earlyAccess eaBackground]#Early Access#
You can now embed the Spotter 3 experience, which introduces several new capabilities, agentic analytics, and enhanced user experience. Spotter 3 is an Early Access feature and is disabled by default on ThoughtSpot embedded instances.
For more information, see xref:embed-ai-analytics.adoc[Embed AI Search and Analytics] and xref:embed-spotter.adoc[Spotter embedding documentation].
-=== Rate limits for REST APIs
+---
+
+[discrete]
+==== Rate limits for REST APIs
To prevent excessive requests from reaching application servers and ensure API stability and service quality for REST API users, ThoughtSpot enforces rate limits on public API requests per client IP. These limits are applied globally at the cluster level for all public API requests, including calls to both REST API v1 and v2 endpoints.
//Administrators can adjust these limits for their ThoughtSpot deployments as needed.
For more information, see xref:about-rest-apis.adoc#_rate_limits_for_api_requests[Rate limits for REST APIs].
-=== Security settings via REST APIs
+---
+
+[discrete]
+==== Security settings via REST APIs
Security settings that ensure data security and a seamless embedded user experience can now be configured through REST APIs v2. Administrators and developers can configure allowlists for:
* Content Security Policy (CSP)
@@ -189,2613 +361,118 @@ Security settings that ensure data security and a seamless embedded user experie
For more information, see xref:security-settings.adoc[Security Settings].
-=== WebSocket support for external tools
+---
+
+[discrete]
+==== WebSocket support for external tools
ThoughtSpot supports secure WebSocket (`wss://`) endpoints for external tool script integrations, for example, tools that open WebSocket connections from the browser.
To allow a WebSocket host, add the corresponding `wss://` URL to both your CSP allowlists. Only hosts explicitly listed with the `wss://` protocol are permitted. Existing `https://` entries in the allowlists remain unchanged and continue to function as expected.
For more information, see xref:3rd-party-script.adoc#_allow_websocket_endpoints[External tools and script integration].
-=== Visual Embed SDK
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.45.0, see the xref:api-changelog.adoc[Visual Embed changelog].
-
-=== REST API v2
-For information about REST API v2 enhancements, see the xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-
-== Version 10.15.0.cl
-
-.Theme Builder
-[%collapsible]
-====
-Theme Builder is now generally available (GA) and will be rolled out to all ThoughtSpot instances in customer deployments over the next few weeks.
-
-When this feature is enabled on your instance, you can access it from the *Develop* page in ThoughtSpot and use it to customize styles and UX themes directly within the product.
-
-For more information, see xref:theme-builder.adoc[Theme Builder].
-====
-
-.V3 navigation and home page experience
-[%collapsible]
-====
-The new V3 navigation and home page experience is now generally available (GA) and can be enabled on ThoughtSpot embedded instances.
-
-The default UI experience in full application embedding remains the classic (V1) experience until further notice. Developers embedding the full ThoughtSpot application can enable the V3 experience in their applications by setting the appropriate configuration options in their embed code.
-
-For more information, see xref:full-app-customize.adoc[Customizing full application embedding].
-====
-
-.Formula variables in RLS rules
-[%collapsible]
-====
-You can now create formula variables using the Variable REST API and use these variables in RLS rules for a specific data context and in ABAC token requests to dynamically assign security attributes to users.
-
-For more information, see xref:abac_rls-variables.adoc[ABAC via RLS with variables].
-====
-.Spotter APIs
-[%collapsible]
-====
-ThoughtSpot introduces new REST APIs for the following Spotter workflows:
-//* To get data source suggestions based on a user's query
-* To send queries to a conversation session with the Spotter agent
-* To set natural language (NL) instructions on a model to coach the Spotter system
-* To fetch NL instructions configured on a model
-
-For more information, see xref:spotter-apis.adoc[Spotter APIs].
-====
-.Embed events and parameters to intercept API calls
-[%collapsible]
-====
-You can now intercept API calls from the embedded ThoughtSpot application using the `interceptUrls` attribute in the Visual Embed SDK. This feature lets you control API requests in your embedding application and use embed events to modify, block, or handle requests before they are sent to the backend. For more information, see xref:api-intercept.adoc[Intercept API calls and search requests].
-====
-.Icon customization enhancements
-[%collapsible]
-====
-You can now replace or customize the chart switcher toggle and icons in the Charts drawer on an Answer or visualization page using SVG sprites. Previously, these icons were fixed to ThoughtSpot defaults and were not configurable. In the new version, these icons are available as SVG components and can be replaced by developers through the xref:customize-icons.adoc[icon customization framework] as needed.
-====
-.Mobile Embed SDK
-[%collapsible]
-====
-The SDKs for embedding ThoughtSpot components in mobile apps are now Generally Available (GA). For more information about the SDKs and how to embed a ThoughtSpot component in a mobile app, see xref:mobile-embed.adoc[Mobile embed documentation].
-====
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.44.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API
-[%collapsible]
-====
-For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 10.14.0.cl
-
-.Code based custom actions
-[%collapsible]
-====
-ThoughtSpot now enables developers to define custom action in their embed code through the Visual Embed SDK. This enhancement enables code based customization of actions for Liveboards, Visualizations, Answers, and Spotter. With this functionality, developers can add custom actions that show up as new menu options in one of the following UI elements:
-
-* the primary menu bar
-* the **More** options menu image:./images/icon-more-10px.png[the more options menu]
-* the contextual menu that appears when a user right-clicks on an Answer or visualization +
-
-Key characteristics of code-based custom actions:
-
-* Can be maintained within your codebase to facilitate migration across organizations and clusters.
-* Can have controlled visibility in ThoughtSpot by evaluating conditions within your application logic. This approach enables you to dynamically display or hide custom actions based on specific criteria, ensuring that only relevant actions are presented to users in different contexts.
-* Can be assigned to Liveboards.
-* Can be conditionally displayed based on the presence of a specific column in a visualization.
-
-For more information, see xref:code-based-custom-actions.adoc[Code based custom actions].
-====
-
-.Webhooks for Liveboard schedule events [beta betaBackground]^Beta^
-[%collapsible]
-====
-You can now configure a xref:webhooks-lb-schedule.adoc[webhook for Liveboard schedule events] to automate notifications to external applications. This feature allows you to send Liveboard reports directly to a webhook endpoint and create your own custom emails or workflow.
-
-This feature is currently in beta and is not enabled by default. To enable it on your instance, contact ThoughtSpot Support.
-====
-
-.Template variables for publishing
-[%collapsible]
-====
-The variable APIs include several enhancements to streamline variable creation and update workflows.
-For information about the new enhancements and breaking changes, see xref:rest-apiv2-changelog.adoc#_variable_api_enhancements[REST API changelog] and xref:variables.adoc[Variables documentation].
-====
+---
-.Parameter chip visibility configuration [tag redBackground]#BREAKING CHANGE#
-[%collapsible]
-====
-The `HostEvent.UpdateParameters` event in the Visual Embed SDK now includes the `isVisibleToUser` attribute, which allows you to control the visibility of Parameter chips on embedded ThoughtSpot pages.
-Before this enhancement, the Parameter chip display behavior was inconsistent across embed types when the Parameter values were updated via `HostEvent.UpdateParameters` requests. With the new change, the `isVisibleToUser` attribute in `HostEvent.UpdateParameters` is set to `false` by default for all embed types.
+[discrete]
+==== Visual Embed SDK
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.45.0, see the xref:api-changelog.adoc[Visual Embed changelog].
-With the new enhancement, the embedded pages that previously kept the parameter chip visible after an override via `HostEvent.UpdateParameters` will now hide it unless the `isVisibleToUser` attribute is explicitly set to `true`. +
-This behavior may introduce a breaking change if your current implementation relies on the previous default chip visibility behavior. To retain chip visibility, developers must update their embedding implementation to pass `isVisibleToUser: true` in their `HostEvent.UpdateParameters` requests.
+---
-For more information, see xref:runtime-parameters.adoc#_show_or_hide_parameter_chips_in_embedded_sessions[Runtime Parameter overrides].
-====
-.Pre-rendering enhancements
-[%collapsible]
-====
-Pre-rendering now provides enhanced flexibility and granular control over for rendering embedded ThoughtSpot components. For more information, see xref:prerender.adoc[Pre-rendering ThoughtSpot Embed components].
-====
+[discrete]
+==== REST API v2
+For information about REST API v2 enhancements, see the xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.43.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API
-[%collapsible]
-====
-For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
+---
+|===
-== Version 10.13.0.cl
-.Spotter AI APIs
-[%collapsible]
-====
-ThoughtSpot introduces the following new xref:spotter-apis.adoc[Spotter AI APIs] [beta betaBackground]^Beta^, to provide contextual and agentic capabilities for integration with external clients and custom AI applications:
+== January 2026
-* `/api/rest/2.0/ai/agent/conversation/create`
-//* `/api/rest/2.0/ai/data-source-suggestions`
-* `/api/rest/2.0/ai/relevant-questions/`
-* `/api/rest/2.0/ai/agent/converse/sse`
+**Release version**: ThoughtSpot Cloud 10.15.0.cl +
+*Upgrade notes*: No breaking changes. +
+*Recommended SDK versions*: Visual Embed SDK v1.44.0 and later
-These APIs are designed to build context with each interaction, orchestrate reasoning, and expose tools and skills for natural language analytics.
-For more information, see xref:spotter-apis.adoc[Spotter AI APIs].
+[.cl-table, cols="2,4", frame=none, grid=none]
+|===
+a|
+[.cl-label]
+*Version 10.15.0.cl*
-////
-With the introduction of these APIs, the following legacy API endpoints will be deprecated:
+a|
+[discrete]
+==== Theme Builder
+Theme Builder is now generally available (GA) and will be rolled out to all ThoughtSpot instances in customer deployments over the next few weeks.
-* `POST /api/rest/2.0/ai/conversation/create`
-* `POST /api/rest/2.0/ai/conversation/{conversation_identifier}/converse`
-* `POST /api/rest/2.0/ai/analytical-questions`
+When this feature is enabled on your instance, you can access it from the *Develop* page in ThoughtSpot and use it to customize styles and UX themes directly within the product.
-The above-listed AI endpoints will be available in the Playground until further notice. However, we recommend using the new APIs for better context management, extensibility, and integration options.
-////
-====
+For more information, see xref:theme-builder.adoc[Theme Builder].
-.Support for runtime overrides in Spotter embed
-[%collapsible]
-====
-You can apply runtime filters and parameter overrides to Spotter sessions and interactions using the Visual Embed SDK. When these overrides are configured in the SDK, they are applied to the data used for Spotter queries, and the generated answers in these sessions will reflect the applied overrides.
+---
-The Visual Embed SDK Playground for Spotter embedding includes an option to set runtime overrides. You can test and preview the results before updating your embed code.
+[discrete]
+==== V3 navigation and home page experience
-For more information, see xref:runtime-filters.adoc[Runtime filters] and xref:runtime-parameters.adoc[Runtime Parameters].
-====
+The new V3 navigation and home page experience is now generally available (GA) and can be enabled on ThoughtSpot embedded instances.
-.Full application embed experience
-[%collapsible]
-====
-* The new experience with a sliding navigation panel and modular home page is now available as an Early Access feature for ThoughtSpot embedded application users.
-+
-The new experience introduces a left navigation panel with a persona-based app selector and a modular home page with customizable components. This feature is turned off by default on ThoughtSpot. If this feature is enabled on your instance, you can enable it in full application embed using the `discoveryExperience` SDK property.
-+
-For more information, see xref:full-app-customize.adoc[V3 navigation and home page experience].
-
-* List pages, such as Answers and Liveboards, now include enhanced sorting and filtering capabilities. These pages also allow users to organize, find, and personalize content. Developers can customize the visibility of columns in their embeds by configuring the xref:AppViewConfig.adoc#_hiddenlistcolumns[`hiddenListColumns`] property in the SDK.
-+
-For more information, see xref:full-app-customize.adoc#_hide_columns_on_list_pages_new_experience[Hide columns on List pages].
-====
+The default UI experience in full application embedding remains the classic (V1) experience until further notice. Developers embedding the full ThoughtSpot application can enable the V3 experience in their applications by setting the appropriate configuration options in their embed code.
-.Worksheet deprecation and removal
-[%collapsible]
-====
-Worksheets are replaced with Models, and all application workflows will require you to use Models. If you are importing worksheet TMLs, the import operation may fail with an error, requiring users to convert Worksheets to Models. Please update your CI/CD and Git workflows to use Model TMLs instead of Worksheets.
+For more information, see xref:full-app-customize.adoc[Customizing full application embedding].
-For more information, see xref:deprecated-features.adoc#_worksheet_deprecation_and_removal[Worksheet deprecation].
-====
+---
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.42.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
+[discrete]
+==== Formula variables in RLS rules
-.REST API
-[%collapsible]
-====
-For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
+You can now create formula variables using the Variable REST API and use these variables in RLS rules for a specific data context and in ABAC token requests to dynamically assign security attributes to users.
-== Version 10.12.0.cl
+For more information, see xref:abac_rls-variables.adoc[ABAC via RLS with variables].
-.Liveboard grouping and styling [beta betaBackground]^Beta^
-[%collapsible]
-====
-You can now create a visual group of Answers and note tiles on an embedded Liveboard and customize the look and feel of the Liveboard, groups, and visualizations using the new styling panel.
+---
-The Liveboard styling and grouping feature is disabled by default on embedded apps. To enable this feature on your embed, set `isLiveboardStylingAndGroupingEnabled` to `true` in the SDK and contact ThoughtSpot Support.
+[discrete]
+==== Spotter APIs
-[NOTE]
-The `isLiveboardStylingAndGrouping` attribute is now replaced with `isLiveboardMasterpiecesEnabled`.
+ThoughtSpot introduces new REST APIs for the following Spotter workflows:
-When this feature is enabled, you can use the following CSS variables in the Visual Embed SDK to style your Liveboard elements:
+* To send queries to a conversation session with the Spotter agent
+* To set natural language (NL) instructions on a model to coach the Spotter system
+* To fetch NL instructions configured on a model
-* `--ts-var-liveboard-layout-background`
-* `--ts-var-liveboard-group-background`
-* `--ts-var-liveboard-group-title-font-color`
-* `--ts-var-liveboard-group-border-color`
-* `--ts-var-liveboard-group-description-font-color`
-* `--ts-var-liveboard-group-tile-title-font-color`
-* `--ts-var-liveboard-group-tile-description-font-color`
+For more information, see xref:spotter-apis.adoc[Spotter APIs].
-For more information, see xref:customize-css-styles.adoc#grp-style[CSS variables reference].
-====
-.Lazy loading of visualizations on a Liveboard
-[%collapsible]
-====
-To optimize initial load time, you can now enable lazy loading of Liveboard visualizations using the `lazyLoadingForFullHeight` parameter. When both `fullHeight` and `lazyLoadingForFullHeight` attributes are set to `true`, visualizations in the embedded Liveboard are loaded incrementally as the user scrolls, rather than all at once on initial load. For more information, see xref:lazy-loading-fullheight.adoc[Lazy loading of Liveboard visualizations].
-====
+---
-.Spotter embed enhancements
-[%collapsible]
-====
-Spotter coaching::
-Your application users can now coach Spotter based on an ongoing conversation.
-The *Add to coaching* feature is turned off by default on ThoughtSpot instances. To enable this feature, contact your administrator.
+[discrete]
+==== Embed events and parameters to intercept API calls
+You can now intercept API calls from the embedded ThoughtSpot application using the `interceptUrls` attribute in the Visual Embed SDK. This feature lets you control API requests in your embedding application and use embed events to modify, block, or handle requests before they are sent to the backend. For more information, see xref:api-intercept.adoc[Intercept API calls and search requests].
-Spotter Agent embedding::
-To embed Spotter Agent in a React app, the SDK provides a React component and the `useSpotterAgent` custom React hook. For more information, see xref:embed-ts-react-app.adoc#_embed_spotter_agent_in_your_own_app[Embed Spotter Agent in your React app].
+---
-For information about the other SDK enhancements, see xref:_visual_embed_changelog[Visual Embed Changelog].
-====
+[discrete]
+==== Icon customization enhancements
-.Full application embed
-[%collapsible]
-====
-In full application embed, developers can now enable the new navigation panel and home page experience. The new experience also organizes the application menu into separate persona-based contextual sections. The new interface also provides a slider to allow users to view or hide the left navigation panel.
+You can now replace or customize the chart switcher toggle and icons in the Charts drawer on an Answer or visualization page using SVG sprites. Previously, these icons were fixed to ThoughtSpot defaults and were not configurable. In the new version, these icons are available as SVG components and can be replaced by developers through the xref:customize-icons.adoc[icon customization framework] as needed.
-The new navigation experience is disabled by default and is available for Early Access. To enable this feature on your instance, contact your ThoughtSpot administrator and then configure the xref:AppViewConfig.adoc#_discoveryexperience[`discovery experience`] property in the SDK.
-====
+---
-.REST API
-[%collapsible]
-====
[discrete]
-==== Connection configuration APIs
-ThoughtSpot now supports multiple configurations per data Connection. This feature allows data engineers to define and manage several distinct Connection configurations under a single data Connection object in ThoughtSpot. This feature is available only for Snowflake, Databricks, and BigQuery Cloud Data Warehouses (CDW) connections.
+==== Mobile Embed SDK
+The SDKs for embedding ThoughtSpot components in mobile apps are now Generally Available (GA). For more information about the SDKs and how to embed a ThoughtSpot component in a mobile app, see xref:mobile-embed.adoc[Mobile embed documentation].
-For more information, see xref:connection-config.adoc[Connection Configuration].
+---
[discrete]
-<<<<<<< HEAD
+==== Visual Embed SDK
+For information about the new features and enhancements introduced in Visual Embed SDK version 1.44.0, see xref:api-changelog.adoc[Visual Embed changelog].
==== Custom calendar APIs
-=======
-==== REST API
-For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
->>>>>>> 7c10f998 (whats new and css edits)
-You can now create and manage custom calendars for a given Connection object. For more information, see the API documentation in the REST API v2 Playground. For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
+---
[discrete]
-==== Other enhancements
-For information about other REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.41.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-== Version 10.11.0.cl
-
-.Spotter embed enhancements
-[%collapsible]
-====
-Spotter embed now supports a comprehensive set of embed and host events that enable interaction between the embedded Spotter component and the host application.
-
-Developers can use these events to:
-
-* Listen for key Spotter user interactions and system events, such as downloads, edits, visual changes, and Spotter-specific query responses, by registering handlers for embed events.
-* Trigger specific host events from the application to programmatically control actions such as starting a search, resetting the conversation, saving, downloading, and adding Spotter-generated Answers to a Liveboard.
-
-For a complete list of events, see the following pages:
-
-* xref:api-changelog.adoc[Visual Embed SDK changelog]
-* xref:EmbedEvent.adoc[EmbedEvent]
-* xref:HostEvent.adoc[HostEvent]
-====
-
-.Primary action configuration for Liveboard visualizations
-[%collapsible]
-====
-You can now override the action assigned to the primary button that appears on visualization tiles of an embedded Liveboard. The `primaryAction` parameter in the Visual Embed SDK allows developers to set that primary action for the embedded Liveboard visualizations.
-
-For more information, see xref:embed-actions.adoc#_override_default_primary_actions[Override default primary action].
-====
-
-.Enhancements to the API response format for Liveboards
-[%collapsible]
-====
-The `liveboard_reponse_version` parameter in search metadata (`/api/rest/2.0/metadata/search`) REST API request now allows you to retrieve details of Liveboard tabs, visualizations, and filters in a structured format.
-
-For more information, see xref:rest-api-v2-metadata-search.adoc#_response_format_for_liveboards[Response format for Liveboard objects].
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.40.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
+==== REST API
For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 10.10.0.cl
-.Email customization per Org [beta betaBackground]^Beta^
-[%collapsible]
-====
-ThoughtSpot embedded users can now customize their automated email notifications for each Org through REST APIs v2. You can customize features such as the company logo, style, and fonts, visibility of components in the template, and ThoughtSpot-specific content in notification emails, thus ensuring a consistent brand experience.
-
-For more information, see xref:customize-email-apis.adoc[Customize email template].
-
-[NOTE]
-These APIs are currently in beta and turned off by default on ThoughtSpot instances. To enable this feature on your instance, contact ThoughtSpot Support.
-====
-
-.Publishing content to Orgs [beta betaBackground]^Beta^
-
-[%collapsible]
-====
-The publishing feature enables administrators to publish objects from the Primary Org to other Orgs within a multi-tenant instance. This feature simplifies the deployment process for ThoughtSpot administrators, especially when the same object needs to be made available to multiple Orgs within an instance. It also eliminates the need to create duplicate copies of the object, thereby optimizing memory usage.
-
-The publishing feature includes a set of REST APIs that ThoughtSpot administrators can use to create and assign variables, parameterize properties of underlying data objects such as Connections and Tables per Org, and publish objects from the Primary Org to other Orgs on their instance. For more information, see xref:publishing-overview.adoc[Publishing content to Orgs].
-
-[NOTE]
-The publishing feature is in beta and turned off by default on ThoughtSpot instances. To enable this feature on your instance, contact ThoughtSpot Support.
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.39.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 10.9.0.cl
-
-.String IDs for customizing text strings
-[%collapsible]
-====
-You can now customize a specific occurrence of a text string in the ThoughtSpot UI using string IDs. String IDs allow you to selectively and precisely override the visible text strings in the UI and prevent unintended text changes.
-
-For more information, see xref:customize-text-strings.adoc[Customize text strings].
-====
-.Mobile embed SDKs
-[%collapsible]
-====
-ThoughtSpot provides the following new SDKs to embed ThoughtSpot in mobile apps:
-
-* link:https://github.com/thoughtspot/flutter-embed-sdk[Flutter Embed SDK, window=_blank] [beta betaBackground]^Beta^ to embed ThoughtSpot content in a Flutter app
-* link:https://github.com/thoughtspot/swift-embed-sdk[Swift Embed SDK, window=_blank] [beta betaBackground]^Beta^ to embed ThoughtSpot content in an iOS native app
-* link:https://github.com/thoughtspot/android-embed-sdk[Android Embed SDK, window=_blank] [beta betaBackground]^Beta^ to embed ThoughtSpot content in an Android native app
-
-For more information and quickstart guides, see xref:mobile-embed.adoc[Mobile embed documentation].
-====
-.Spotter embed components
-[%collapsible]
-====
-The following Spotter embed components are now deprecated and replaced with new components:
-
-* `ConversationEmbed` +
-Replaced with `SpotterEmbed`
-* `ConversationViewConfig` +
-Replaced with `SpotterEmbedViewConfig`
-* `BodylessConversation` +
-Replaced with `SpotterAgentEmbed`
-* `BodylessConversationViewConfig` +
-Replaced with `SpotterAgentEmbedViewConfig`
-
-[discrete]
-==== Impact on Spotter embed deployments
-The new Spotter embed components are available for use with the Visual Embed SDK v1.38.0 and later.
-The `ConversationEmbed`, `ConversationViewConfig`, `BodylessConversation`, and `BodylessConversationViewConfig` components are deprecated in Visual Embed SDK v1.38.0 and later versions.
-The old component names will be visible in the code panel of the Visual Embed Playground on ThoughtSpot instances with 10.9.0.cl or earlier. The component names in the Playground will be updated in an upcoming version.
-
-[discrete]
-==== Recommended action
-The Spotter embed component changes do not break your existing Spotter embed implementation. Your implementation with the old component names will continue to function until further notice. However, ThoughtSpot recommends transitioning to the new names as early as you can, to allow sufficient time for testing your implementation with the updated names.
-
-For Spotter embed documentation and code samples with new components, see xref:embed-spotter.adoc[Embed Spotter].
-====
-.Ability to control the visibility of columns in full app embedding
-[%collapsible]
-====
-You can now show or hide the following columns on the *Liveboards*, and *Answers* list pages in full application embeds:
-
-* `Favorite`
-* `Author`
-* `Last modified`
-* `Tags`
-* `Share`
-
-For more information, see xref:full-app-customize.adoc#_hide_columns_on_list_pages_new_experience[Customize full application embedding].
-====
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.38.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API
-[%collapsible]
-====
-For information about REST API v2 enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-.REST API Java SDK
-[%collapsible]
-====
-The REST API Java SDK enables developers to interact programmatically with ThoughtSpot REST APIs from Java applications. It provides a client library with Java methods and classes that map to API endpoints, handle authentication, send API requests, and allow creating and modifying ThoughtSpot resources and objects.
-
-For information about how to install and use the SDK, see xref:rest-api-java-sdk.adoc[Java SDK for REST APIs].
-====
-
-== Version 10.8.0.cl
-
-.React Native SDK to embed ThoughtSpot in a mobile app [beta betaBackground]^Beta^
-[%collapsible]
-====
-Developers can now embed ThoughtSpot Analytics in their mobile apps using the React Native Embed SDK [beta betaBackground]^Beta^. With the React Native Embed SDK, developers can use native resources and a single codebase to build their mobile app with embedded ThoughtSpot content for both *iOS* and *Android* platforms.
-
-In the initial release, the SDK supports embedding a Liveboard component and customizing the embedded view. For more information, see xref:mobilesdk-quick-start.adoc[React Native SDK quick start guide].
-====
-.External tools and custom script integration
-[%collapsible]
-====
-You can now integrate third-party tools and execute custom scripts within your embed. This feature is disabled by default on ThoughtSpot instances. When enabled, you can use this feature to integrate your preferred analytics and product-guide tools such as Pendo, LogRocket, and Mixpanel into your ThoughtSpot embed.
-
-While you can inject custom Javascript into your embeds, it is essential to consider the associated security risks and vulnerabilities, such as Cross-site scripting (XSS). Before contacting Support to enable this feature on your instance, assess the potential security risks to your application environment and review your organization's security guidelines. We recommend that you sanitize user data before rendering and ensure that your environment runs scripts from trusted domains only. For more information, see xref:3rd-party-script.adoc[Integrate third-party tools and scripts].
-====
-.Recommended action for deployments that use pendoTrackingKey
-[%collapsible]
-====
-If you are using the xref:EmbedConfig.adoc#_pendotrackingkey[pendoTrackingKey] setting in the Visual Embed SDK, note that ThoughtSpot will deprecate this attribute six months after the 10.8.0.cl release. While you can continue using `pendoTrackingKey` until its deprecation, we recommend using the xref:3rd-party-script.adoc[external tools integration] feature to integrate your preferred tool for analytics and product guides. For additional information or migration assistance, contact ThoughtSpot Support.
-====
-.Help menu and information center changes
-[%collapsible]
-====
-In the 10.8.0.cl release, ThoughtSpot introduces a unified help and support experience that will eventually replace the information center panel generated by Pendo.
-The new information panel provides access to ThoughtSpot documentation and support and also allows you to add custom links. This feature will be enabled gradually on ThoughtSpot instances.
-
-This change will affect your instance if you have embedded the full ThoughtSpot experience with the top navigation bar and Help (?) icon, using `showPrimaryNavbar: true` and `disableProfileAndHelp: false` settings in the Visual Embed SDK.
-
-Customer environments currently using the legacy information center during embedded sessions will continue to do so for the next few months to minimize disruption. Your ThoughtSpot Customer Success team will contact you and assist you in migrating to the new experience.
-
-To facilitate testing and the rollout of the new information center, ThoughtSpot provides the xref:AppViewConfig.adoc#_enablependohelp[enablePendoHelp] SDK flag. By default, the `enablePendoHelp` is set to `true` to ensure that your embedded sessions use the legacy information center generated by Pendo. To enable the new experience, you need to set `enablePendoHelp` to `false`.
-====
-.Column name localization [beta betaBackground]^Beta^
-[%collapsible]
-====
-ThoughtSpot now supports column name and description aliases in a Worksheet or Model, which can be used for localizing the Search and Answer interfaces. This feature is disabled by default on ThoughtSpot instances. To enable this feature, contact ThoughtSpot support.
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.37.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 10.6.0.cl
-
-.Spotter embed enhancements
-[%collapsible]
-====
-Spotter is enabled on ThoughtSpot instances by default and is now generally available for embedding in your applications and chatbot.
-
-This release also introduces several enhancements to Spotter embed:
-
-* xref:embed-spotter.adoc#configControls[Configuration controls in the SDK] to disable or hide the data source, and show or hide sample questions
-* xref:embed-spotter.adoc#SpotterCSS[Customization controls for CSS overrides], xref:embed-spotter.adoc#spotterMenuActions[action IDs] for menu customization on the Spotter page.
-* Additional options in the xref:developer-playground.adoc#playground-spotter[Spotter Playground experience], which allow users to explore the customization settings available for Spotter.
-
-For more information, see xref:embed-spotter.adoc[Embed Spotter].
-====
-.Theme builder for ThoughtSpot interface customization [beta betaBackground]^Beta^
-[%collapsible]
-====
-ThoughtSpot now offers link:https://developers.thoughtspot.com/docs/theme-builder[Theme Builder, window=_blank] [beta betaBackground]^Beta^, a graphical representation of CSS controls and themes to assist developers with the CSS customization framework. Theme Builder allows you to explore and preview the CSS customization options available with the Visual Embed SDK to customize the look and feel of the ThoughtSpot application interface.
-
-Developers embedding ThoughtSpot can preview the customization options in Theme Builder for various embed components, including Liveboard, Visualizations, Search page, and the full application experience. Additionally, you can view and download the default CSS variables in JSON format and upload a JSON file containing custom values for these CSS variables.
-
-For more information, see xref:theme-builder.adoc[Theme Builder].
-====
-.Multi-Factor authentication and REST API behavior
-[%collapsible]
-====
-ThoughtSpot now supports Multi-Factor authentication (MFA) [beta betaBackground]^Beta^ for environments using local authentication with IAMv2. MFA is in beta and disabled by default on ThoughtSpot instances. When enabled on a ThoughtSpot instance, administrators can enable MFA for all local users authenticating to ThoughtSpot with `username` and `password`.
-
-[tag redBackground]#BREAKING CHANGE#
-
-When MFA is enabled on your ThoughtSpot instance, using basic authentication in REST API calls to the following API endpoints will result in an error:
-
-* `POST /api/rest/2.0/auth/session/login`
-* `POST /api/rest/2.0/auth/token/object`
-* `POST /api/rest/2.0/auth/token/full`
-* `POST /api/rest/2.0/auth/token/custom`
-* `POST /tspublic/v1/session/login`
-
-When MFA is enabled on a ThoughtSpot instance, local authentication users cannot log in with their `username` and `password` and are prompted to enable MFA when they try to log in via UI. Setting up MFA via APIs is not supported.
-
-If you are using REST APIs with basic authentication, ThoughtSpot recommends updating your application environment to use `username` and `secret_key` to generate authentication token. To stay security compliant and avoid breaking changes, before activating MFA for your users, we recommend that you enable *Trusted Authentication* on your instance and set up your embed and REST API environments to use token-based authentication. For more information and assistance, contact ThoughtSpot Support.
-====
-.Liveboard enhancements
-[%collapsible]
-====
-[discrete]
-==== Compact Liveboard header [earlyAccess eaBackground]#Early Access#
-
-Developers embedding ThoughtSpot Liveboards can now enable the Compact Liveboard feature for their application users. When enabled, this feature optimizes Liveboard header space, moves the tabs panel to the top of the header, and maximizes the visibility of the charts and tables on the Liveboard.
-
-Compact Liveboard header is disabled by default. To enable this feature, set `isLiveboardCompactHeaderEnabled` to `true` in the SDK.
-
-[discrete]
-==== Show only relevant filters and Parameters on Liveboards
-
-By default, Liveboards display all filters and parameters, including those that are not applicable to the visualizations in a tab. On embedded Liveboards, developers can control the visibility of filters and Parameters for visualizations in a tab using the `hideirrelevantchipsinliveboardtabs` property in the SDK.
-
-For more information about filters for Liveboard tabs, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-filters#_apply_filters_to_specific_visualizations_or_tabs[Apply filters to specific visualizations or tabs].
-====
-.Worksheet to Model conversion
-[%collapsible]
-====
-You can now convert a Worksheet to a Model via a REST API POST call to the
-+++/api/rest/2.0/metadata/worksheets/convert+++ endpoint.
-
-ThoughtSpot recommends migrating your Worksheet data to Models, because Worksheets are deprecated in ThoughtSpot and will be removed from the product in 10.10.0.cl release.
-====
-.ThoughtSpot Enterprise Org enablement
-[%collapsible]
-====
-Starting with ThoughtSpot Cloud 10.6.0.cl release, all ThoughtSpot Enterprise instances will gradually be enabled with Orgs. Your environment will remain a single-tenant instance until you create Orgs. When the Orgs feature is enabled on your instance, you can switch to a single-tenant mode anytime by deleting all user-created Orgs and using only the default Primary Org.
-====
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.36.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 10.5.0.cl
-
-.Default search experience on embedded ThoughtSpot Home page
-[%collapsible]
-====
-If your ThoughtSpot instance is upgraded from 10.1.0.cl to 10.5.0.cl, the Natural Language Search interface will be the default search experience on the embedded ThoughtSpot Home page. The split search experience, which was introduced in 10.3.0.cl, will be turned off by default on these instances. For applications embedding full ThoughtSpot experience, the `isUnifiedSearchExperienceEnabled` property will be set to `true` in the Visual Embed SDK. Your application users can continue to use the unified experience until it is deprecated. However, developers can choose to disable the unified search experience and customize the Home page search experience for their application users.
-
-On instances upgraded from 10.3.0.cl or 10.4.0.cl to 10.5.0.cl, Object Search will be the default search experience on the embedded ThoughtSpot Home page. The unified search experience will be disabled by default and the `isUnifiedSearchExperienceEnabled` property in the Visual Embed SDK will be set to `false`. If required, developers can switch to AI Search experience by setting the `homePageSearchBarMode` property to `aiAnswer`.
-
-For more information, see xref:full-app-customize.adoc#_search_experience_on_home_page[Home page search experience customization].
-====
-.Support for partitioned cookies
-[%collapsible]
-====
-With most web browsers blocking third-party cookies, cookies will no longer be shared across the ThoughtSpot
-embedded pages and the host application, or other tabs in the browser. If your embed no longer functions without the use of third-party cookies, consider using one of the following options:
-
-* Update your implementation to use cookieless authentication; for example, `AuthType.EmbeddedSSO` or `AuthType.TrustedAuthTokenCookieless` (Recommended)
-* Customize the domain of your ThoughtSpot instance to match the domain of your host application. +
-For more information, see xref:custom-domain-configuration.adoc[Custom domain configuration].
-* Enable partitioned cookies on your ThoughtSpot instance. +
-If your implementation relies on cookies or if you are using `AuthType.None` in your development and test environments, ThoughtSpot administrators have the option to enable partitioned cookies on their instance. With partitioned cookies, you can restrict cookie sharing between different sites and thus prevent cross-site tracking.
-+
-On browsers that support partitioned cookies, the session cookie will persist in the ThoughtSpot app after a successful login. When using the `AuthType.None` embed authentication method in development or test environments with partitioned cookies, users must log in to their ThoughtSpot instance using basic authentication for seamless access to the embed.
-+
-[NOTE]
-Safari blocks all third-party cookies and does not support partitioned cookies. ThoughtSpot recommends switching to a Web browser that supports partitioned cookies or using cookieless authentication.
-
-For more information, see xref:security-settings.adoc#_enable_partitioned_cookies[Security Settings].
-====
-
-.ABAC via tokens implementation changes
-[%collapsible]
-====
-The ABAC via tokens feature is GA in 10.5.0.cl. Several changes have been introduced since the ThoughtSpot 10.4.0.cl release to improve the ABAC configuration workflows:
-
-* The `user_parameters` property in `auth/token/full` and `auth/token/object` APIs used for the xref:abac-user-parameters-beta.adoc[beta implementation of ABAC] was deprecated in 10.4.0.cl.
-* Starting from 10.4.0.cl, administrators are advised to xref:abac-user-parameters.adoc[use the `/api/rest/2.0/auth/token/custom` API endpoint] to define security attributes for ABAC implementation.
-
-If you have implemented ABAC using `auth/token/full` or `auth/token/object` API endpoints and your cluster is upgraded to 10.4.0.cl or 10.5.0.cl, you can migrate your implementation to start using the `/api/rest/2.0/auth/token/custom` API endpoint. For more information, refer to xref:jwt-migration.adoc[ABAC migration guide].
-====
-.Orgs context for custom links
-[%collapsible]
-====
-Starting with ThoughtSpot Cloud 10.5.0.cl release, developers embedding ThoughtSpot in their application can include the Org context in ThoughtSpot URLs using custom link settings.
-//For instance, being able to seamlessly access content from a different Org, while being logged in another Org.
-
-This feature is turned off by default. To enable this feature on your ThoughtSpot instance, contact link:https://community.thoughtspot.com/customers/s/contactsupport[ThoughSpot Support, window=_blank]. For more information, see xref:orgs.adoc[Orgs context for sharing links].
-====
-
-.Migration to IAMv2
-[%collapsible]
-====
-All new ThoughtSpot application instances are enabled with enhanced Identity and Access Management (IAMv2). The existing ThoughtSpot embedded instances will be migrated to IAMv2 during the maintenance windows.
-
-* To ensure a seamless migration, review and follow the link:https://docs.thoughtspot.com/cloud/latest/okta-iam#_before_migrating_to_iam_v2[steps in the ThoughtSpot product documentation, window=_blank].
-* To understand changes to the API endpoints with this upgrade, see xref:api-user-management.adoc[User migration to IAMv2]
-* For more information, see link:https://docs.thoughtspot.com/cloud/latest/okta-iam[Identity and Access Management V2, window=_blank].
-====
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.35.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-== Version 10.4.0.cl
-
-.Spotter AI for conversational analytics
-[%collapsible]
-====
-ThoughtSpot Spotter [beta betaBackground]^Beta^ enables users to find insights from their data through a conversational interface powered by Generative AI. Spotter functions as your AI Analyst and allows your application users to start a conversation, ask follow-up questions on the results generated by ThoughtSpot, and get the data they need.
-
-For more information, see the following pages:
-
-* xref:embed-spotter.adoc#_embed_spotter_using_visual_embed_sdk[Embed Spotter in your app] +
-* xref:spotter-apis.adoc[Generate Answers from AI APIs]
-* xref:spotter-in-custom-chatbot.adoc[Spotter tutorials]
-
-[NOTE]
-The Spotter feature is in beta and disabled by default on ThoughtSpot Embedded instances. To enable this feature on your instance, contact ThoughtSpot Support.
-====
-
-.ABAC token generation enhancements
-[%collapsible]
-====
-To generate a token with custom rules, attributes, and filter conditions for Attribute-Based Access Control (ABAC) [beta betaBackground]^Beta^, you can use the `/api/rest/2.0/auth/token/custom` API endpoint instead of the `user_parameters` property in `/api/rest/2.0/auth/token/full` and `/api/rest/2.0/auth/token/object` APIs.
-
-For more information, see xref:authentication.adoc#_get_tokens_with_custom_rules_and_filter_conditions[Get tokens with custom rules and filter conditions].
-====
-
-.Visual Embed Playground enhancements
-[%collapsible]
-====
-The Visual Embed Playground provides several checkboxes and customization settings for ThoughtSpot embed components. You can use these checkboxes to customize your embedded view, view results instantly, and copy code.
-
-For more information, see xref:developer-playground.adoc[Visual Embed Playground].
-====
-.Models
-[%collapsible]
-====
-Models are now available on ThoughtSpot embedded instances. ThoughtSpot recommends using Models as data source objects for Answers and Liveboards instead of Worksheets from 10.4.0.cl release onwards.
-
-Worksheets are deprecated in 10.4.0.cl and will be removed from ThoughtSpot in an upcoming release. If you are embedding full ThoughtSpot application or the Data Workspace page in your app, you will notice that the Worksheet creation option is disabled by default. However, existing Worksheets continue to be available and editable. To enable Worksheet creation on your instance, contact ThoughtSpot Support.
-====
-.Orgs enablement
-[%collapsible]
-====
-Starting with ThoughtSpot Cloud 10.4.0.cl release, Orgs will be enabled by default on all new ThoughtSpot instances. Your environment remains a single-tenant instance until you create Orgs.
-If the Orgs feature is enabled on your instance, you can switch to a single-tenant mode anytime by deleting the Orgs and using just the Primary Org.
-
-For more information, see xref:orgs.adoc[Multi-tenancy with Orgs].
-====
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.34.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-.Feature deprecations
-[%collapsible]
-====
-The Search Assist feature for Worksheets and the **Enable Search Assist** checkbox in Search Embed Playground are removed from ThoughtSpot in 10.4.0.cl. If your embedding application uses the `enableSearchAssist` property, you may want to update your deployment.
-
-For more information, see xref:deprecated-features.adoc#_search_assist[Deprecated features].
-====
-
-== Version 10.3.0.cl
-
-.Natural language search and object search
-[%collapsible]
-====
-Starting from the ThoughtSpot 10.3.0.cl release, the **Home** page does not provide a combined search experience with Natural Language Search and Object Search. As a result, Object Search will become the default search experience on the **Home** page, and Natural Language Search will be disabled by default.
-
-If you are embedding the **Home** page of ThoughtSpot application in your app, and you want to retain both the object Search and Natural Language Search experience for your users, you can customize the search type in the Visual Embed SDK. For more information, see xref:full-app-customize.adoc#_customize_search_experience[Search experience customization].
-====
-
-.Selective user access
-[%collapsible]
-====
-With selective user access, you can allow users without the administrator or developer privilege to securely access the non-embedded pages.
-
-For more information, see xref:selective-user-access.adoc[User access to non-embedded content].
-====
-
-.Liveboard experience enhancements
-[%collapsible]
-====
-You can now customize the width of the Liveboard breakpoint on an embedded instance. To enable it, you must set the `enable2ColumnLayout` property to `true`.
-
-For more information, see xref:embed-pinboard.adoc#_redefine_liveboard_breakpoint_widths[Redefine Liveboard breakpoint widths].
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.33.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-.Feature deprecations
-[%collapsible]
-====
-In the 10.3.0.cl release, the application background customization option on the **Admin** > **Style customization** and **Develop** > **Customizations** > **Styles** is deprecated. For more information, see xref:deprecated-features.adoc#_application_background_customization_via_ui[Application background customization].
-====
-
-== Version 10.1.0.cl
-
-.Customization of the new Data Panel experience
-[%collapsible]
-====
-The CSS customization framework now supports customizing the look and feel of the new Data Panel experience. For more information, see xref:embed-search.adoc#_data_panel_experience_in_the_embedded_search_page[Embed Search] and xref:css-customization.adoc[CSS customization framework].
-====
-
-.UI changes in the Liveboard and Answers list pages
-[%collapsible]
-====
-If you have embedded full application experience with **Liveboards** and **Answers** listing pages, note the following UI changes:
-
-* The *Edit TML*, *Export TML*, and *Import TML* actions are no longer available on the *Liveboards* and *Answers* listing pages. You can use the TML menu actions on the individual Liveboard and Answer pages, or the import and export TML options available on the **Data Workspace** > **Utilities** page.
-* To add new tags or assign a tag to an object, users can use the **Edit tags** button on the **Liveboards** and **Answers** pages. However, users cannot rename or delete a tag.
-====
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.32.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-.Feature deprecations
-[%collapsible]
-====
-In 10.1.0.cl release, the following features are deprecated and removed from the UI:
-
-* Classic experience mode for Liveboards, SpotIQ, and Answers. For more information, see xref:deprecated-features.adoc#_classic_experience_for_liveboards_answers_and_spotiq[Deprecation announcements].
-* Page title customization setting in the **Admin** > **Style customization** and **Develop** > **Customizations** > **Styles** page. For more information, see xref:deprecated-features.adoc#_page_title_customization[Deprecation announcements].
-====
-
-== Version 10.0.0.cl
-
-.Customize number, currency, and date format
-[%collapsible]
-====
-You can now customize the number, date, and currency format displayed on embedded pages.
-
-For more information, see xref:locale-setting.adoc#_set_locale_in_the_sdk[Set locale].
-====
-.Git integration
-[%collapsible]
-====
-If xref:roles.adoc[RBAC] is enabled on your instance, ensure that the Version Control API users have the `Can manage version control` (`CAN_MANAGE_VERSION_CONTROL`) Role privilege.
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.31.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information on REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-.Feature deprecations
-[%collapsible]
-====
-For information about deprecated features, see xref:deprecated-features.adoc[Deprecation announcements].
-====
-
-== Version 9.12.5.cl
-
-.New home page and navigation [earlyAccess eaBackground]#Early Access#
-[%collapsible]
-====
-The new navigation and Home page experience is now available for ThoughtSpot users.
-
-ThoughtSpot administrators can enable this feature on their application instance on the **Admin** page. If the new navigation and Home page experience is enabled on your instance, users can turn on the New Experience mode on their *Profile* settings page.
-
-On embedding apps, the new navigation and Home page experience is disabled by default. To enable it, you must set the `modularHomeExperience` property to `true` in the `AppEmbed` component.
-
-The new navigation and Home page experience introduces the following notable changes:
-
-* The top navigation menu bar is replaced with an app selector image:./images/app_switcher.png[the app switcher menu] that allows users to switch between different apps.
-* The **Insights** module presents a redesigned Home page with modular content and a left navigation panel. Users can navigate to Liveboards, Answers, SpotIQ Analysis, and Monitor Subscriptions pages from the Home page by using the left navigation menu options.
-
-For more information, see xref:full-app-customize.adoc[Customize full application embedding].
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.30.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 9.12.0.cl
-
-.SSO authentication with IAMv2
-[%collapsible]
-====
-ThoughtSpot now supports managing user authentication through IAMv2 on embedded instances. With this feature, administrators can set up SAML and OIDC authentication with Identity providers such as Okta, Google, and so on. You can also map Identity Provider (IDP) attributes on the ThoughtSpot Admin page when setting up OIDC or SAML authentication on your instance.
-
-IAMv2 is turned off by default. To enable it on your instance, contact ThoughtSpot Support.
-
-For more information, see xref:configure-saml.adoc#IAMv2[SAML SSO authentication] and xref:configure-oidc.adoc#IAMv2[OpenID Connect authentication].
-====
-
-.OIDC authentication on Orgs-enabled clusters
-[%collapsible]
-====
-ThoughtSpot now supports Orgs through OpenID Connect (OIDC) authentication on embedded instances. With Org mapping, the IdP will have the ability to assign users to specific Orgs when they log in via OIDC authentication. You need administrator privileges to enable Org mapping on the cluster.
-
-For more information, see xref:orgs.adoc#_oidc_authentication[Multi-tenancy with Orgs] and xref:configure-oidc.adoc#orgMapping[OpenID Connect authentication].
-====
-
-.Ask Sage [beta betaBackground]^Beta^
-[%collapsible]
-====
-ThoughtSpot application users can now ask follow-up questions and seek clarifications about visualizations and Answers generated using natural language search. The **Ask Sage** action on Liveboard visualizations and **Ask a follow-up** action search results page allow you to start a conversation with the AI analyst, ask successive questions, and refine the Answer retrieved from a Natural Language Search query.
-
-The **Ask Sage** feature is turned off by default. To enable this feature on your instance, contact ThoughtSpot Support. To enable or disable this feature for embedded application users, use the `enableAskSage` attribute.
-====
-
-.Liveboard UI changes
-[%collapsible]
-====
-The following TML menu actions are now grouped under the *TML* sub-menu of the **More** image:./images/icon-more-10px.png[the more options menu]menu.
-
-* Export TML
-* Edit TML
-* Update TML
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.29.x, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-
-== Version 9.10.5.cl
-
-.Row-level security via tokens [beta betaBackground]^Beta^
-[%collapsible]
-====
-You can now implement Row-Level Security (RLS) and Attribute-Based Access Control (ABAC) via tokens for ThoughtSpot embedded application users. You can now configure your authentication process in the SDK to assign security attributes for any user during session creation.
-
-For more information, see xref:abac-user-parameters.adoc[ABAC via token].
-
-[NOTE]
-ABAC via tokens is supported only with the Trusted Authentication method.
-====
-
-.AI Highlights [earlyAccess eaBackground]#Early Access#
-
-[%collapsible]
-====
-You can now get quick insights on how top metrics have changed in your Liveboard via AI Highlights.
-
-* Users with administration privileges can enable AI Highlights at the cluster level on the **Admin** page.
-* When AI Highlights is enabled, the AI highlights image:./images/ai-highlights.png[AI Highlights icon] icon appears on the Liveboard header and the **Edit** button moves to the **More** menu image:./images/icon-more-10px.png[the more options menu].
-* You can hide this feature on your embedded instance by adding `Action.AIHighlights` to the `hiddenActions` array in the SDK.
-
-For more information, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-ai-highlights[AI Highlights, window=_blank].
-====
-
-.Granular Roles for data management
-[%collapsible]
-====
-If the RBAC is enabled on your ThoughtSpot instance, administrators can use the following Roles for granular access control and data management:
-
-* `CAN_MANAGE_CUSTOM_CALENDAR`
-* `CAN_CREATE_OR_EDIT_CONNECTIONS`
-* `CAN_MANAGE_WORKSHEET_VIEWS_TABLES`
-
-For more information, see xref:roles.adoc[Role-based access control].
-
-[NOTE]
-The RBAC feature is in beta and turned off by default. To enable this feature, contact ThoughtSpot Support.
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.29.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-
-== Version 9.10.0.cl
-
-.Integration with Vercel projects
-[%collapsible]
-====
-You can now integrate your ThoughtSpot instance with a Vercel project. If you are using Vercel to build and maintain your embedding application, you can install ThoughtSpot analytics integration, connect to ThoughtSpot data, and embed content in your app seamlessly.
-
-For more information, see xref:vercel-int.adoc[Vercel integration].
-====
-
-.CSS variables for custom styling
-[%collapsible]
-====
-The following custom CSS variables are deprecated and not supported from 9.10.0.cl onwards:
-
-* `--ts-var-sage-bar-img-url`
-* `--ts-var-sage-bar-img-color`
-* `--ts-var-sage-bar-img-visibility`
-====
-
-.Security settings for non-embedded instances
-[%collapsible]
-====
-The **Security Settings** page in the **Develop** tab now allows any ThoughtSpot user with developer or admin privileges to modify CSP settings for image, font, and style import.
-
-For more information, see xref:security-settings.adoc[Security Settings].
-====
-.Support for Sage coach
-[%collapsible]
-====
-In full application embedding, you can now review user feedback on the natural language search queries on the **Data** page.
-//For more information, see link:https://docs.thoughtspot.com/cloud/latest/sage-coach[Sage Coach, window=_blank].
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.28.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 9.8.0.cl
-
-.Support for Natural Language Search embedding
-[%collapsible]
-====
-You can now embed ThoughtSpot Search with Natural Language Search capabilities using `SageEmbed` SDK package. Natural Language Search allows your application users to search for data using natural language query strings. This feature also provides AI-suggested sample questions and popular queries to assist users in their data search operations.
-
-Using `SageEmbed`, you can embed the ThoughtSpot Search interface with Natural Language Search components in your app and also customize the search experience as per your requirements.
-
-For more information, see xref:embed-nls.adoc[Embed Natural Language Search].
-====
-
-.Embed Playground enhancements
-[%collapsible]
-====
-The Visual Embed playground now allows you to explore Natural Language Search embedding options and Search page customization capabilities. For more information, see xref:developer-playground.adoc#playground-nls-search[Natural Language Search].
-====
-
-.Git integration enhancements
-[%collapsible]
-====
-The **Deploy Commit** Version Control API now provides the `VALIDATE_ONLY` option to validate TML imports to the destination environment. If your destination environment has TML content that has been modified or is different from the content on the main branch, you can run the validation before deploying changes to the destination environment.
-
-For more information, see xref:version_control.adoc#_deploy_commits[Deploy commits].
-====
-
-.CSS variables for Natural Language Search interface customization
-[%collapsible]
-====
-To customize Natural Language Search interface, you can use the following variables in your custom CSS:
-
-* `--ts-var-sage-bar-header-background-color`
-* `--ts-var-source-selector-background-color`
-* `--ts-var-sage-search-box-font-color`
-* `--ts-var-sage-search-box-background-color`
-* `--ts-var-sage-embed-background-color`
-* `--ts-var-sage-seed-questions-background`
-* `--ts-var-sage-seed-questions-font-color`
-* `--ts-var-sage-seed-questions-hover-background`
-* `--ts-var-sage-bar-img-url`
-* `--ts-var-sage-bar-img-color`
-* `--ts-var-sage-bar-img-visibility`
-
-For mor information, see xref:css-customization.adoc#_natural_language_search_interface[Customize CSS].
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.27.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-
-== Version 9.7.0.cl
-
-.Git integration and version control
-[%collapsible]
-====
-The Git integration feature and Version Control APIs are GA and enabled by default on ThoughtSpot. This version also includes several enhancements to the Version Control APIs.
-For more information, see xref:rest-apiv2-changelog.adoc#_version_control_apis[REST API v2 Changelog] and xref:version_control.adoc[Git integration and version control].
-====
-
-.Custom styles
-[%collapsible]
-====
-You can now customize icon sprites and add custom text strings. For more information, see xref:css-customization.adoc#_customize_text_strings[Customize text strings] and xref:css-customization.adoc#_customize_icons[Customize icons].
-====
-
-.Liveboard experience
-[%collapsible]
-====
-Personalized Liveboard Views [tag purpleBackground]#Early Access#::
-
-Embedding application users can now create a personalized version of Liveboard with their changes. The personalized Liveboard view inherits any changes made to the master Liveboard, including changes made to pinned visualizations, tabs, filter chips, and re-ordering.
-+
-This feature is disabled by default and can be enabled by administrators. For more information, see link:https://docs.thoughtspot.com/cloud/latest/personalized-liveboard-views[ThoughtSpot Product Documentation].
-
-Embedding in note tiles::
-You can now embed interactive content such as videos in an iFrame on a Liveboard Note tile. For more information, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-notes#embed[ThoughtSpot Product Documentation].
-
-Liveboard customization::
-You can now customize Liveboard headers, show or hide Liveboard users, tabs, description text, and Liveboard title.
-
-For more information, see xref:api-changelog.adoc#_version_1_26_0_november_2023[Visual Embed SDK Changelog] and xref:LiveboardViewConfig.adoc[SDK documentation].
-====
-
-.Search experience
-[%collapsible]
-====
-You can now enable the new data panel experience on the embedded Search page in the SDK. The new data panel experience is turned off by default on embedded ThoughtSpot instances.
-
-For more information, see xref:embed-search.adoc#_data_panel_experience_in_the_embedded_search_page[Embed ThoughtSpot Search].
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.26.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-
-== Version 9.6.0.cl
-.Playground enhancements
-[%collapsible]
-====
-The 9.6.0.cl release adds the following features to the Visual Embed Playground:
-
-* Liveboard tab selection +
-The Playground page for Liveboard embedding now shows the tab selection drop-down, which allows users to set the default tab view on an embedded Liveboard.
-
-* Use host event checkbox +
-+
-On selecting the *Use host event* checkbox, the code panel in the Playground displays the code snippet to try out host events. You can use this code snippet to register a host event and trigger an action using the *Try Event* button in the Playground.
-====
-
-.Home page experience in Full application embedding mode
-[%collapsible]
-====
-If you are embedding the full ThoughtSpot experience with the ThoughtSpot Sage feature, the Home page allows you to use AI-generated search answers. To enable AI-assisted search on your instance, contact ThoughtSpot Support.
-====
-
-.Role-Based Access Control [beta betaBackground]^Beta^
-[%collapsible]
-====
-The role-based access control (RBAC) feature allows administrators to create a role in the UI or via REST API calls and assign a set of privileges. With the RBAC feature, you can assign granular permissions and control user access to ThoughtSpot features and application workflows. For more information, see xref:roles.adoc[Role-based Access Control].
-
-The RBAC feature is turned off by default. To enable this feature, contact ThoughtSpot Support.
-====
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.25.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 9.5.0.cl
-
-.Webhooks for KPI monitor alerts [beta betaBackground]^Beta^
-[%collapsible]
-====
-ThoughtSpot administrators and developers can now create a Webhook to send KPI monitor alerts to the REST endpoint of an external application. The Webhooks feature is turned off by default. To enable this feature on your instance, contact ThoughtSpot Support.
-
-For more information, see xref:webhooks.adoc[Webhooks for KPI Monitor alerts].
-====
-
-.Version control and Git integration [beta betaBackground]^Beta^
-[%collapsible]
-====
-The Git integration feature now supports pushing commits and publishing content to Org-based deployment environments. If your ThoughtSpot cluster has Orgs and multi-tenancy enabled, you can create `dev` and `prod` environments on the same ThoughtSpot instance and connect these environments to your GitHub repository.
-
-For more information, see xref:version_control.adoc[Git integration and version control].
-====
-
-.SDK library to embed AI-powered ThoughtSpot Search experience [beta betaBackground]^Beta^
-[%collapsible]
-====
-The Visual Embed SDK provides a new JavaScript library to embed the Search page with AI-powered features such as natural language search and AI-suggested answers. To view the AI-suggested answers, make sure the AI search support is enabled on the data source or worksheet used for searching data.
-
-//ThoughtSpot does not display AI-suggested search responses if the xref:search-assist-tse.adoc[Search Assist] feature is enabled.
-
-For more information, see xref:SageEmbed.adoc[SageEmbed SDK reference].
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.24.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 9.4.0.cl
-
-.Version control and Git integration [beta betaBackground]^Beta^
-[%collapsible]
-====
-GUID mapping::
-
-If a TML file on your source environment contains GUIDs that don't match the GUIDs on your destination environment, the version control APIs can now automatically handle the mapping of GUIDs when deploying the TML content.
-
-+
-For more information, see xref:version_control.adoc#_guid_mapping[Git integration and version control].
-
-Folder structure changes [tag redBackground]#BREAKING CHANGE#::
-
-The folder structure of the TML objects in the Git repository is modified in 9.4.0.cl. In earlier releases, the TML objects were stored in the object directory of the `primary` root folder, for example `primary/liveboard`. Starting from 9.4.0.cl, the TML objects will be stored in the object folder at the root level. ThoughtSpot will not migrate your existing TML files from `primary/` to the new folder structure. You must move these files to the respective object directory at the root level.
-
-File naming convention [tag redBackground]#BREAKING CHANGE#::
-Starting from 9.4.0.cl, the TML files pushed to a Git branch from a ThoughtSpot instance are named in the
-`..tml` format. The earlier releases used the `..tml` naming convention for TML files. This change may break your current setup. We recommend that you reconfigure the Git connection on your ThoughtSpot instance and start using the version control feature from scratch.
-====
-
-.Security settings enhancements for Orgs
-[%collapsible]
-====
-
-CORS settings per Org::
-
-On multi-tenant clusters with Orgs, developers can now add a list of CORS hosts at the Org level. For more information, see xref:security-settings.adoc#cors-hosts[Security Settings].
-
-Block user access to non-embedded application pages::
-
-ThoughtSpot administrators and developers can now enable the **Block non-embed full app access** feature at the Org level.
-
-For more information, see xref:security-settings.adoc#_block_access_to_non_embedded_thoughtspot_pages[Security Settings].
-====
-
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.23.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-
-== Version 9.3.0.cl
-
-.Support for cookieless authentication
-[%collapsible]
-====
-Developers can now enable cookieless authentication when embedding ThoughtSpot in their applications. The cookieless authentication method allows using a bearer token instead of session cookies when users interact with embedded content or initiate API requests. If the embedded content does not load from the same domain as your embedding application, and your Web browser does not allow third-party cookies, you can use Cookieless authentication in the Trusted authentication mode.
-
-For more information, see xref:embed-authentication.adoc#trusted-auth-embed[Trusted authentication].
-====
-
-.Idle sensing and APIs for managing cluster states
-[%collapsible]
-====
-ThoughtSpot Cloud clusters support idle sensing in embedded deployments. With idle sensing enabled on your embedded ThoughtSpot instance, your instance becomes inactive if there is no active user session detected for a period of 120 minutes. You can restart an inactive cluster using API when required.
-
-For more information, see xref:tse-eco-mode.adoc[Manage your cluster state].
-====
-
-.Per-Org style customization
-[%collapsible]
-====
-The *Develop* tab now allows customizing UI styles and layout at the Org level. To enable this feature on your multi-tenant instance, contact ThoughtSpot support.
-
-For more information, see xref:style-customization.adoc#_custom_styles_for_orgs_on_multi_tenant_clusters[Custom styles for Orgs on multi-tenant clusters].
-====
-
-.Version control and Git integration via REST API [beta betaBackground]^Beta^
-[%collapsible]
-====
-You can now connect your ThoughtSpot instance to a Git repository and push commits from your application instance to a Git branch via REST API. With the Git integration [beta betaBackground]^Beta^ feature, ThoughtSpot provides the ability to integrate your application environment with Git workflows and deploy commits from a development instance to a production cluster.
-
-For more information, see xref:version_control.adoc[Version control with Git integration].
-====
-
-.Visual Embed Playground enhancements
-
-[%collapsible]
-====
-The Visual Embed developer Playground now includes a *Try* button in the preview panel. The *Try* button is attached to an event handler. You can register a host event and click *Try* to trigger an action on the embedded page in the Playground.
-
-For more information, see xref:embed-events.adoc[Events reference].
-====
-
-.Visual Embed SDK
-
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK versions 1.22.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 9.2.0.cl
-
-.Per-Org secret key and tokens for Trusted authentication
-
-[%collapsible]
-====
-ThoughtSpot now supports generating secret keys per Org. Org administrators can generate a secret key for trusted authentication in their Org context and allow their Org users to obtain authentication tokens using this secret key.
-
-Starting from 9.2.0.cl, Org users require Org-specific authentication tokens issued for their user accounts when switching between Orgs. When generating an authentication token via REST API, make sure to request separate tokens for each Org context.
-
-For more information, see xref:trusted-authentication.adoc#trusted-auth-enable[Trusted authentication].
-====
-
-.Custom styles
-
-[%collapsible]
-====
-The 9.2.0.cl release introduces the following new variables for custom styling of the ThoughtSpot Search page:
-
-* `--ts-var-search-auto-complete-font-color`
-* `--ts-var-search-auto-complete-subtext-font-color`
-* `--ts-var-answer-edit-panel-background-color`
-
-For more information, see xref:css-customization.adoc#_search_bar_and_data_panel[Customize CSS].
-====
-
-.GraphQL playground [beta betaBackground]^Beta^
-[%collapsible]
-====
-The *Develop* tab in the ThoughtSpot UI introduces the GraphQL playground to allow users to interact with GraphQL endpoints and run query and mutation operations. To enable this feature on your instance, contact ThoughtSpot Support.
-
-For more information, see xref:graphql-playground.adoc[GraphQL Playground].
-====
-.Runtime Parameter overrides
-[%collapsible]
-====
-Embedded application users can now create Worksheet and Answer Parameters to optimize data queries. You can also adjust values and apply overrides at runtime on a Liveboard or Answer either via REST API or by appending Parameters to the query URL in the UI.
-
-For more information, see xref:runtime-parameters.adoc[Runtime Parameter overrides].
-====
-.Link customization
-[%collapsible]
-====
-You can now customize the navigation links in your app using the *Generic link* option in the *Develop* > *Customization* > *Link settings* page.
-
-For more information, see xref:customize-links.adoc#_customize_link_format[Customize links].
-====
-.Cross filters on Liveboard visualizations [earlyAccess eaBackground]#Early Access#
-[%collapsible]
-====
-ThoughtSpot now supports brushing and linking of visualizations on a Liveboard using cross filters. Cross filters allow you to present a coordinated view of a Liveboard by applying filters across all visualizations based on the current selection.
-
-[NOTE]
-The Cross filters feature is turned off by default. To enable this feature on your instance, contact your ThoughtSpot administrator.
-
-To hide or disable the cross filter feature on an embedded instance, use the `Action.CrossFilter` and `Action.RemoveCrossFilter` parameters in the SDK. For more information, see xref:embed-actions.adoc[Show or hide menu items] and xref:Action.adoc[Action reference].
-[discrete]
-=== Contextual menu behavior
-
-By default, the contextual menu in ThoughtSpot application pages is set as right-click pop-up menu. Starting from 9.2.0.cl, you can set the contextual menu to trigger on left-click.
-
-To trigger the contextual menu on left-click or right-click on an embedded app, you can use the `contextMenuTrigger` property in the Visual Embed SDK. In the following example, the contextual menu is configured to trigger on left-click.
-
-----
-contextMenuTrigger: "left-click"
-----
-
-----
-contextMenuTrigger: ContextMenuTriggerOptions.LEFT_CLICK
-----
-
-When set as right-click menu (default behavior)::
-The contextual menu opens on right-click. If you want to monitor right-click actions and listen to the right-click events on a chart or table, use `EmbedEvent.VizPointRightClick` event. For more information, see link:https://developers.thoughtspot.com/docs/Enumeration_EmbedEvent#_vizpointrightclick[VizPointRightClick].
-
-When set as left-click menu::
-The contextual menu opens on left-click. If your app is already using `EmbedEvent.VizPointClick` to listen to left-click events on a visualization, the `VizPointClick` event will be triggered whenever a user clicks on an action in the contextual menu. If you are using `EmbedEvent.VizPointClick` to trigger actions such as updating runtime filters on a Liveboard visualization, the click events from left-click contextual menu may impact your app’s current workflow.
-
-+
-We recommend using a development environment to test your customizations before rolling them out on production servers. For more information, contact ThoughtSpot Support.
-====
-.Note tiles on Liveboards [earlyAccess eaBackground]#Early Access#
-[%collapsible]
-====
-In the new Liveboard experience mode, you can now add Note tiles with custom text, images, and links. This feature is turned off by default and can be enabled by ThoughtSpot administrators.
-
-For more information, see xref:embed-pinboard.adoc#noteTiles[Note tiles].
-====
-.Visual Embed SDK
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK versions 1.20.0 and 1.21.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog] and xref:rest-apiv2-changelog.adoc[REST API v2.0 changelog].
-====
-
-== Version 9.0.0.cl
-
-.New Liveboard experience
-[%collapsible]
-====
-The xref:embed-pinboard.adoc#lbv2[new Liveboard experience] is now Generally Available (GA) on embedded instances and is enabled by default.
-====
-
-.New CSS variables for custom styling
-[%collapsible]
-====
-The CSS customization feature supports new variables to customize the look and feel of the following UI elements:
-
-* Search bar and navigation panel
-* Search suggestion panel
-* Dialogs
-
-For more information, see xref:css-customization.adoc[Customize CSS].
-====
-.REST API v2.0 endpoints and Playground
-[%collapsible]
-====
-Starting with 9.0.0.cl, the REST API v2 [beta betaBackground]^Beta^ API endpoints are deprecated and removed from the REST API v2 Playground. A set of new endpoints is now generally available (GA) on all ThoughtSpot instances.
-
-The new REST API v2.0 endpoints introduce several improvements to the request and response structure and let you perform more tasks in a single API call. For example, you can create a new user, map the user to groups and Orgs, set home Liveboards for the user, and assign privileges in a single API request.
-
-[div announcementBlock]
---
-* All REST API v2 [beta betaBackground]^Beta^ endpoints are deprecated, but remain functional until further notice. The REST API SDK that was available with REST API v2 [beta betaBackground]^Beta^ version is no longer supported. +
-ThoughtSpot does not recommend using REST API v2 [beta betaBackground]^Beta^ endpoints for production use cases. For more information, see xref:deprecated-features.adoc#_deprecation_of_rest_v2_api[Deprecation announcements].
-* The new REST API v2.0 endpoints are not an extension of the REST API v2 [beta betaBackground]^Beta^ endpoints. The resource categories, base path, endpoint URIs, and the structure of API requests and responses are different from those of the REST API v2 [beta betaBackground]^Beta^ version.
-* Some API operations such as the CRUD operations for data connections and passing runtime filters on Liveboard visualizations are not available in the initial release. For more information, see xref:rest-api-v1v2-comparison.adoc[REST API v1 and v2.0 comparison] and xref:rest-api-v2-reference.adoc[REST API v2.0 reference].
-* For Org CRUD operations in production environments, ThoughtSpot recommends using xref:org-manage-api.adoc[REST API v1 endpoints].
---
-====
-
-.Early Access features
-[%collapsible]
-====
-Starting from 9.0.0.cl, ThoughtSpot allows its administrators to turn on Early Access features from the Admin portal. Early Access features are qualified by ThoughSpot for customer use but are not enabled by default on ThoughtSpot instances until the features are GA.
-
-The 9.0.0.cl release introduces the following Early Access features:
-
-* Custom maps
-+
-Allows uploading map files (TopoJSON) to configure custom regions and visualize data on these regions. For more information, see link:https://docs.thoughtspot.com/cloud/latest/geomaps-custom[Upload custom geo maps, window=_blank].
-
-* Mandatory filters
-+
-Allows setting certain filters as mandatory on a Liveboard. For more information, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-filters-mandatory[Mandatory Liveboard filter, window=_blank].
-
-* Chart configuration experience
-+
-Allows making multiple edits to a chart configuration and applying all changes at once. For more information, see link:https://docs.thoughtspot.com/cloud/latest/chart-x-axis[Reorder labels on the axis or legend, window=_blank].
-
-* Chart data labels
-+
-Allows displaying data labels in a lighter color on charts with a dark background. For more information, see link:https://docs.thoughtspot.com/cloud/latest/chart-data-labels[Show data labels, window=_blank].
-====
-
-.Visual Embed SDK version 1.19.0
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.19.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog].
-====
-
-== Version 8.10.0.cl
-
-.Ability to embed only the Search bar in an app [beta betaBackground]^Beta^
-[%collapsible]
-====
-You can now embed the ThoughtSpot search bar component in your app. For example, if you are using Google Sheets for data analysis, you can embed the ThoughtSpot search bar and let your users search data from a specific data source. The embedded Search bar allows passing search tokens and modifying search options. You can also retrieve the search results as raw data and let your host application render it in the format you want.
-
-For more information, see xref:embed-searchbar.adoc[Embed ThoughtSpot search bar].
-====
-
-.Advanced style customization with custom CSS
-[%collapsible]
-====
-The CSS customization feature supports new variables to customize the look and feel of the following UI elements:
-
-* Search data button in the navigation panel
-* Font type and text style of search tokens
-* Data panel on the Search and saved Answer pages
-* Filter chips on Liveboard, visualizations, and Answer pages
-* Menu components
-* X-axis and Y-axis titles and labels on charts
-
-For more information, see xref:css-customization.adoc[Customize CSS].
-====
-
-.CSP allowlist for font, image and stylesheet sources
-[%collapsible]
-====
-You can now enable CSP overrides for font, stylesheet, and image sources in ThoughtSpot UI. If you want to load fonts, stylesheets, images, or favicons from an external source, add the source URLs to the CSP allowlist on the *Security Settings* page.
-
-For more information, see xref:security-settings.adoc#_add_trusted_domains_for_font_css_and_image_import[Security Settings].
-====
-
-.Multi-tenancy with Orgs
-[%collapsible]
-====
-You can now set up your ThoughtSpot Cloud instance as a multi-tenant cluster and partition it into logical and isolated workspaces called *Orgs*. Each Org can have its own users, groups, and metadata, and stay independent of and invisible to other Orgs configured on the same application instance.
-
-For more information, see xref:orgs.adoc[Multi-tenancy with Orgs].
-====
-
-.Visual Embed SDK version 1.18.0
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.18.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
-====
-
-== Version 8.9.0.cl
-
-.Improvements to authentication methods and AuthType enums in the SDK
-[%collapsible]
-====
-The following changes are introduced in the Visual Embed SDK to improve the authentication framework and options for embedded application users:
-
-* New auth type enum for embedded SSO authentication
-+
-The `AuthType.EmbeddedSSO` enum allows you to enable SSO login on embedded instances. This authentication method allows you to use your current SAML IdP or OpenID Connect configuration and redirect users to the IdP for authentication within the embedded iFrame.
-
-* Changes to the existing `AuthType` enums: +
-** `AuthType.SAML` is renamed as `AuthType.SAMLRedirect` +
-** `AuthType.OIDC` is renamed as `AuthType.OIDCRedirect` +
-** `AuthType.AuthServer` is renamed to `AuthType.TrustedAuthToken` +
-
-For more information, see xref:embed-authentication.adoc[Authentication].
-====
-
-.Just-in-time user creation and dynamic privilege assignment
-[%collapsible]
-====
-Starting from 8.9.0.cl, the xref:session-api.adoc#session-authToken[/tspublic/v1/session/auth/token] endpoint supports just-in-time provisioning of users. If the user specified in the API request does not exist in the ThoughtSpot system, you can set the `autocreate` property to `true` to add the user to ThoughtSpot and assign the user to `groups`.
-====
-.Advanced style customization [beta betaBackground]^Beta^
-[%collapsible]
-====
-ThoughtSpot now allows you to override style specifications of the embedded UI pages and elements with custom CSS. Custom CSS provides granular control over the design elements and lets you modify the properties of these elements
-to match the look and feel of your host application.
-
-To help users visualize and preview the CSS overrides, the *Visual Embed* playground will include the *Apply custom styles* checkbox, which allows you to explore the variables available for customization.
-
-For more information, see xref:style-customization.adoc[Customize styles and layout] and xref:css-customization.adoc[Customize CSS using SDK].
-
-====
-.Visual Embed SDK version 1.17.0
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.17.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API
-[%collapsible]
-====
-For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
-====
-
-== Version 8.8.0.cl
-.Custom tile size for visualizations on a Liveboard (New Liveboard experience only)
-[%collapsible]
-====
-ThoughtSpot users can now customize the tile size of a visualization on a Liveboard. In the earlier versions, ThoughtSpot allowed resizing visualizations using predefined layout options available in the *More* menu image:./images/icon-more-10px.png[the more options menu]. With custom tile size, users can now change the size of a visualization just by clicking and dragging the tile to the desired size.
-
-This feature is in beta and disabled by default on all Thoughtspot instances. To enable this feature on your instance, contact ThoughtSpot Support.
-====
-.Visual Embed SDK version 1.16.0
-[%collapsible]
-====
-For information about the new features and enhancements introduced in Visual Embed SDK version 1.16.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-.REST API v1
-[%collapsible]
-====
-For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
-====
-.Bug fixes and improvements
-[%collapsible]
-====
-Bug fixes and new improvements in embedded user experience. +
-For more information, see xref:fixed-issues.adoc[Fixed issues].
-====
-
-== Version 8.7.0.cl
-
-.Liveboard tabs
-[%collapsible]
-====
-The new Liveboard experience[beta betaBackground]^Beta^ now supports organizing visualizations in tabs. Users with edit access to a Liveboard can add, edit, and move visualizations to tabs on a Liveboard. On embedded ThoughtSpot instances, developers can set a specific tab as an active tab using the Visual Embed SDK.
-
-This feature is available only on deployments that have the new Liveboard experience enabled. For more information, see xref:embed-pinboard.adoc#_liveboard_tabs[Customize Liveboard tabs].
-
-[IMPORTANT]
-The new Liveboard experience is in BETA on embedded ThoughtSpot instances. This feature is turned off by default on embedded ThoughtSpot instances.
-====
-.Visual Embed SDK version 1.15.0
-[%collapsible]
-====
-For information about the new features and enhancements in the Visual Embed SDK version 1.15.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API v1
-[%collapsible]
-====
-For information about REST API v1 enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
-====
-
-.REST API v2 [beta betaBackground]^Beta^
-[%collapsible]
-====
-The REST API v2 [beta betaBackground]^Beta^ feature will be deprecated in 8.10.0.cl and replaced with the new v2.0 API endpoints. For more information, see xref:deprecated-features.adoc[Deprecation announcements].
-====
-
-== Version 8.6.0.cl
-
-.Liveboard new experience [beta betaBackground]^Beta^
-[%collapsible]
-====
-The new Liveboard experience is now available on embedded ThoughtSpot instances. In addition to the existing Liveboard features, the new experience introduces several notable changes to the *Liveboard* page:
-
-Liveboard editing::
-To edit a Liveboard, users must switch to the edit mode by clicking the *Edit* button on the Liveboard page.
-The edit mode allows you to edit the Liveboard title and description text, apply filters, copy the Liveboard, modify the layout of the visualization tiles, delete a visualization, and so on.
-
-Liveboard filters::
-* The Liveboard filter configuration options are available on a single modal.
-* When a user creates a copy of a Liveboard, the filters applied to its visualizations are also copied.
-
-Other features and enhancements::
-* The *Add filters* action is placed in the primary menu bar and can be viewed only when a Liveboard is in edit mode. Only users with edit access to the Liveboard can apply filters.
-* The *Undo*, *Redo*, and *Reset* actions for visualizations.
-* The *Liveboard Info* action label in the More image:./images/icon-more-10px.png[the more options menu] menu is renamed to *Show Liveboard details*.
-* The *Schedule* action is placed in the More image:./images/icon-more-10px.png[the more options menu] menu.
-* Improved visualization Explore experience.
-
-Deprecated features::
-The following features are *_not_* available with the new Liveboard experience:
-* The *Copy embed link* and *Copy link* menu actions in the More image:./images/icon-more-10px.png[the more options menu] menu of a Liveboard
-* The edit title icon on visualization tiles
-* The *Share* button on visualizations
-
-For more information about the new Liveboard experience, see link:https://docs.thoughtspot.com/cloud/latest/liveboard-experience-new[New Liveboard experience, window=_blank].
-
-[discrete]
-==== New Liveboard experience rollout on embedded instances
-
-The new Liveboard experience is currently available in BETA on embedded ThoughtSpot instances. The new liveboard experience will be rolled out on embedded instances in phases:
-
-In ThoughtSpot Cloud 8.6.0.cl::
-
-The new Liveboard experience is turned off by default on embedded ThoughtSpot instances. If you are using the Visual Embed SDK to embed ThoughtSpot, you can xref:embed-pinboard.adoc#lbv2[set the `liveboardV2` parameter] in the SDK package to `true` and enable the new experience globally for all users on your instance. +
-
-+
-ThoughtSpot users with administrator privileges can also link:https://docs.thoughtspot.com/cloud/latest/liveboard-experience-new[turn on the new Liveboard experience, window=_blank] at the cluster level.
-
-In later releases::
-The new Liveboard Experience will be turned on by default for all embed application users. To switch to the classic experience, you can set the `liveboardV2` parameter to `false` in the SDK, or change the Liveboard experience preference in the `Admin` tab of the ThoughtSpot UI.
-
-[NOTE]
-The Liveboard experience setting in the SDK takes precedence over the cluster-level settings in the *Admin* tab.
-
-[discrete]
-==== Actions and Events in the SDK
-If you have enabled the new Liveboard experience on your instance, you can use the `Action` and `Event` enumeration members available in the SDK package to customize an embedded object and improve interactivity.
-
-For example, to disable the *Delete* action for a visualization object on the Liveboard, you can use the `Action.Remove` enum. Similarly, you can trigger events such as `VizPointClick` on visualizations in an embedded Liveboard.
-
-====
-
-.Visual Embed SDK version 1.14.0
-[%collapsible]
-====
-For information about the new features and enhancements in the Visual Embed SDK version 1.14.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API
-[%collapsible]
-====
-For information about REST API enhancements, see xref:rest-apiv1-changelog.adoc[REST API changelog].
-====
-
-== Version 8.5.0.cl
-
-.Search Assist support for embedded instances
-[%collapsible]
-====
-Your application users can now access sample search walkthrough lessons created using Search Assist on embedded ThoughtSpot instances. If the Search Assist feature is enabled in the SDK, and the Search Assist lessons are created on the Worksheet, users can view sample search questions and follow the actions in the walkthrough to get answers.
-
-//For more information, see xref:search-assist-tse.adoc[Enable Search Assist, window=_blank].
-====
-
-.Visual Embed SDK 1.13.0
-[%collapsible]
-====
-For information about the new features and enhancements in the Visual Embed SDK version 1.13.0, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.ThoughtSpot UI
-[%collapsible]
-====
-The new Data workspace is Generally Available (GA) in 8.5.0.cl on ThoughtSpot instances. For more information about the new Data tab, SpotApps, and other related features, see link:https://docs.thoughtspot.com/cloud/latest/notes[ThoughtSpot product documentation].
-
-[IMPORTANT]
-While some customizable actions from the Visual Embed SDK will be honored from within an embedded instance of the new Data workspace page, full support of this page in embedded ThoughtSpot instances is planned for a future release. If you are actively embedding and customizing the `Data` tab for your application and wish to retain the legacy `Data` tab, contact ThoughtSpot Support.
-
-====
-
-== Version 8.4.0.cl
-
-.Link customization
-[%collapsible]
-====
-This release allows query parameters in the Liveboard, saved Answer, and visualization URLs that are customized for an embedded ThoughtSpot instance. For example, you can customize the *Unsubscribe* link sent in email notifications for KPI charts by adding `{ts-query-params}` to the visualization URL, and thus allow users to unsubscribe from KPI threshold alerts at any time.
-
-For more information, see xref:customize-links.adoc[Customize links].
-====
-
-.Visual Embed SDK 1.12.0
-
-[%collapsible]
-====
-The Visual Embed SDK version 1.12.0 introduces new events. For more information, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API v2 [beta betaBackground]^Beta^
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-||
-|[tag greenBackground]#NEW ENDPOINTS# a| This release introduces the following new REST API v2 [beta betaBackground]^Beta^ endpoints: +
-
-* Data +
-** `*GET* /tspublic/rest/v2/data/answer/querysql` +
-** `*GET* /tspublic/rest/v2/data/liveboard/querysql`
-* Admin
-** `*PUT* /tspublic/rest/v2/admin/assignauthor`
-|[tag redBackground]#BREAKING CHANGES# a| * The method names for the following endpoints will be changed in the SDK. +
-** `/tspublic/rest/v2/user/addgroup` +
-** `/tspublic/rest/v2/user/removegroup` +
-* The `/tspublic/rest/v2/admin/changeowner` endpoint will be renamed as `/tspublic/rest/v2/admin/changeauthor`.
-|====
-====
-
-== Version 8.3.0.cl
-
-.Visual Embed SDK 1.11.0
-[%collapsible]
-====
-The Visual Embed SDK version 1.11.0 introduces several new events for embedded components. For more information, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API v2 [beta betaBackground]^Beta^
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-||
-|[tag greenBackground]#NEW ENDPOINTS# a| The following REST API v2 [beta betaBackground]^Beta^ endpoints are now available:
-
-* Connection endpoints +
-** `GET /tspublic/rest/v2/connection/database` +
-** `POST /tspublic/rest/v2/connection/table` +
-** `POST /tspublic/rest/v2/connection/tablecoloumn` +
-* Report endpoint +
-** `POST /tspublic/rest/v2/report/liveboard` +
-* Security endpoints +
-** `POST /tspublic/rest/v2/security/share/tsobject` +
-** `POST /tspublic/rest/v2/security/share/visualization` +
-** `GET /tspublic/rest/v2/security/permission/tsobject` +
-** `GET /tspublic/rest/v2/security/permission/principal` +
-** `POST /tspublic/rest/v2/security/permission/tsobject/search` +
-** `POST /tspublic/rest/v2/security/permission/principal/search` +
-* Custom action endpoints +
-** `GET /tspublic/rest/v2/customaction` +
-** `POST /tspublic/rest/v2/customaction/create` +
-** `PUT /tspublic/rest/v2/customaction/update` +
-** `DELETE /tspublic/rest/v2/customaction/delete` +
-** `POST /tspublic/rest/v2/customaction/search` +
-** `GET /tspublic/rest/v2/customaction/association` +
-** `DELETE /tspublic/rest/v2/customactions/association/delete`
-
-|[tag orangeBackground]#MODIFIED# a|
-* The `x-requested-by` header is not mandatory for API requests to the REST API v2 [beta betaBackground]^Beta^ endpoints.
-* The `createdBy` attribute in the `/tspublic/rest/v2/metadata/header/search` API is renamed to `author`.
-* The attributes with the `boolean` data type in the API endpoints are changed to `string` data type. If a boolean attribute was set as `true` in your existing setup, the value will be changed to `"true"`.
-|[tag redBackground]#BREAKING CHANGES# a|
-
-* Note the change in HTTP request method for the following REST API v2 [beta betaBackground]^Beta^ endpoints: +
-** `**PUT** /tspublic/rest/v2/metadata/tag/assign` +
-** `**PUT** /tspublic/rest/v2/metadata/tag/unassign` +
-** `**PUT** /tspublic/rest/v2/metadata/favorite/assign` +
-** `**PUT** /tspublic/rest/v2/metadata/favorite/unassign` +
-** `**PUT** /tspublic/rest/v2/metadata/homeliveboard/assign` +
-** `**PUT** /tspublic/rest/v2/metadata/homeliveboard/unassign` +
-* In the REST API SDK [beta betaBackground]^Beta^, the classes corresponding to enumerations used for string fields such as the `type` field in metadata API, are renamed. If you are using the REST API SDK in your environments, make sure the class names are updated.
-|[tag redBackground]#REMOVED# a| The `ownedBy` attribute is removed from the `/tspublic/rest/v2/metadata/header/search` API endpoint.
-|====
-====
-
-== Version 8.2.0.cl
-
-////
-=== Custom actions
-[width="100%" cols="1,4"]
-|====
-||
-|[tag greenBackground]#NEW FEATURE# a| +++
App actions for Slack integration
+++
-
-ThoughtSpot introduces app actions[beta betaBackground]^Beta^ to support seamless integration with third-party business apps such as Slack. Your application users can now connect ThoughtSpot with their Slack workspaces and deliver insights directly to Slack channels.
-
-Users with developer or admin privileges can create an app action for Slack[beta betaBackground]^Beta^ in the Developer portal and add it as a menu action on visualizations and saved answers. On clicking this action, ThoughtSpot users can initiate the Slack integration workflow and send data to their Slack channels without leaving the ThoughtSpot UI.
-
-For more information, see xref:app-actions.adoc[App actions] and xref:push-data-to-slack.adoc[Push data to a Slack workspace].
-|====
-////
-
-.Visual Embed SDK 1.10.x
-[%collapsible]
-====
-The Visual Embed SDK version 1.10.x introduces new attributes and bug fixes. For more information, see xref:api-changelog.adoc[Visual Embed changelog].
-====
-
-.REST API v1
-[%collapsible]
-====
-New endpoints for data connection queries. For more information, see xref:rest-apiv1-changelog.adoc[REST API v1 changelog].
-====
-
-.REST API v2 [beta betaBackground]^Beta^
-
-[%collapsible]
-====
-Starting from 8.2.0.cl release, the xref:rest-api-v2.adoc[REST API Playground and SDK] [beta betaBackground]^Beta^ feature is enabled by default on ThoughtSpot instances.
-
-The 8.2.0.cl release also introduces the following features:
-
-Endpoint URL path::
-The REST API v2 [beta betaBackground]^Beta^ endpoint URL path is changed from `/api/rest/v2` to `/tspublic/rest/v2/`. For example, the `GET /api/rest/v2/connection` endpoint is now available as `GET /tspublic/rest/v2/connection`.
-
-Trusted authentication::
-If trusted authentication is enabled on your instance, you can now obtain a login token to authenticate to ThoughtSpot and authorize your API requests.
-
-For more information, see xref:authentication.adoc#trustedAuthToken[REST API v2 authentication].
-
-SDK for .NET clients::
-ThoughtSpot provides the .NET SDK to allow developers to interact with REST APIs from .NET applications. You can download the SDK from NuGet Package Manager and install it using the NuGet GUI. For more information, see xref:rest-api-sdk-libraries.adoc[REST API SDK and client libraries].
-
-New API endpoints::
-
-* `GET /tspublic/rest/v2/admin/configuration`
-* `GET /tspublic/rest/v2/admin/configuration/overrides`
-* `PUT /tspublic/rest/v2/admin/configuration/update`
-* `PUT /tspublic/rest/v2/admin/resetpassword`
-* `PUT /tspublic/rest/v2/admin/syncprincipal`
-* `PUT /tspublic/rest/v2/admin/changeowner`
-* `PUT /tspublic/rest/v2/user/changepassword`
-* `POST /tspublic/rest/v2/data/search`
-* `POST /tspublic/rest/v2/data/answer`
-* `POST /tspublic/rest/v2/data/liveboard`
-* `POST /tspublic/rest/v2/report/answer`
-* `GET /tspublic/rest/v2/logs/events`
-
-//For more information, see xref:rest-api-v2-reference-beta.adoc[REST API v2 Reference].
-
-====
-
-== Version 8.1.0.cl
-
-.Visual Embed SDK version 1.9.x
-[%collapsible]
-====
-The Visual Embed SDK version 1.9.x introduces new action enumerations, events, and attributes. For more information, see xref:api-changelog.adoc[Visual Embed Changelog].
-====
-
-.REST API v2 [beta betaBackground]^Beta^
-[%collapsible]
-====
-The following REST API v2 endpoints are now available on instances on which the REST API v2 Playground and SDK feature is enabled.
-
-* `GET /api/rest/v2/connection`
-* `POST /api/rest/v2/connection/create`
-* `PUT /api/rest/v2/connection/update`
-* `DELETE /api/rest/v2/connection/delete`
-* `PUT /api/rest/v2/connection/addtable`
-* `PUT /api/rest/v2/connection/removetable`
-* `POST /api/rest/v2/connection/search`
-* `DELETE /api/rest/v2/metadata/delete`
-* `GET /api/rest/v2/metadata/header`
-
-The REST API v2 Playground and SDK is a limited availability feature and is in beta.
-
-For more information, see xref:rest-api-v2.adoc[REST API v2] and xref:rest-api-v2-reference.adoc[REST API v2 Reference].
-====
-
-
-== Version 8.0.0.cl
-
-.Visual Embed SDK version 1.8.x
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-||
-|[tag redBackground]#BREAKING CHANGE# | +++
Auto login
+++
-
-The `autoLogin` attribute is now set as `false` by default. This attribute is used in the `init` method to automatically re-login a user when a user session expires.
-|[tag greenBackground]#NEW FEATURE# | +++
Authentication
+++
-
-The `init` method now returns an `authPromise` that resolves when the authentication is completed.
-|====
-
-====
-
-
-.Embed application
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# a| +++
OpenID Connect authentication
+++
-
-ThoughtSpot now supports OpenID Connect (OIDC) authentication framework on embedded instances. Your application users can now authenticate to an authorization server at your OpenID provider and access embedded ThoughtSpot content using their SSO credentials.
-
-For more information, see xref:configure-oidc.adoc[OpenID Connect authentication].
-
-|[tag redBackground]#REMOVED# a| +++
Follow button
+++
-
-If you have embedded the full ThoughtSpot application, you will notice that the *Follow* button on the Liveboards page is removed. You can now schedule email notifications using the **Schedule** feature and follow Liveboard updates.
-|====
-====
-
-
-.Visual Embed SDK 1.7.0
-
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-
-|[tag greenBackground]#NEW FEATURE# |+++
OIDC AuthType
+++
-
-The SDK supports the `OIDC` `authType` in `init` calls. If you want your application users to authenticate to an OpenID provider and use their SSO credentials to access the embedded ThoughtSpot content, you can enable the `OIDC` authentication type in the SDK.
-
-For more information, see xref:embed-authentication#oidc-auth.adoc[Authentication and security attributes].
-|[tag greenBackground]#NEW FEATURE# a|+++
Embed events
+++
-
-The SDK includes the following new event:
-
-* `RouteChange`
-
-For more information, see xref:embed-events.adoc[Events reference].
-
-|====
-====
-
-.REST API Playground and SDK [beta betaBackground]^Beta^
-
-[%collapsible]
-====
-
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# a| +++
REST API Playground and SDK
+++
-
-ThoughtSpot introduces the v2 [beta betaBackground]^Beta^ version of REST API endpoints and an interactive Playground to explore the API request and response workflows.
-
-The API Playground offers several distinct features, such as an interactive code panel, a catalog of resource-oriented endpoint URLs, language-specific SDK and client libraries, code samples, and API reference documentation.
-
-You can use any standards-compliant HTTP client or use the Playground to make an API call. If you want to construct your queries and process API responses programmatically, you can download the SDK and client libraries in the programming language of your choice and integrate them with your applications.
-
-The REST API Playground and SDK is a limited availability feature and is in beta. To preview this feature, visit link:https://try-everywhere.thoughtspot.cloud/v2/#/everywhere/api/rest/playgroundV2[ThoughtSpot Live Playground, window=_blank]. To enable this feature on your ThoughtSpot instance, contact ThoughtSpot Support.
-
-For more information, see xref:rest-api-v2.adoc[REST API v2].
-|====
-====
-
-
-== Version ts8.nov.cl
-
-.Developer portal
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-|[tag orangeBackground]#CHANGE NOTICE# a| +++
Pinboards are now Liveboards!
+++
-
-Effective from the ThoughtSpot 8 November Cloud release, ThoughtSpot pinboards are rebranded as Liveboards and optimized for live analytics in cloud deployments. Along with granular insights, Liveboards offer interactive data analytics experience with enhanced capabilities.
-
-As part of rebranding, we have made some terminology changes in the ThoughtSpot UI and Developer portal. We are in the process of rolling out terminology changes across all ThoughtSpot interfaces, platforms, and information artifacts. During this period, your environment may show some instances of `pinboard` based on the rebranding rollout stage. In some cases, we may even continue to use the legacy terminology for backward compatibility, and to ensure that your existing integrations work seamlessly. For more information, see xref:terminology-update.adoc[Terminology changes].
-|====
-====
-
-
-.Custom actions
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# a| +++
Custom action association to user groups
+++
-
-ThoughtSpot now allows you to restrict a custom action's availability to specific user groups. Developers can associate a custom action to one or several user groups in the Developer portal and allow only authorized users to view and access the custom action on a Worksheet, Answer, or visualization.
-
-For more information, see xref:customize-actions-menu.adoc#access-control[Custom actions] and xref:custom-actions-url.adoc[Configure a custom URL action].
-|====
-====
-
-.User access
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# |ThoughtSpot now supports restricting embed user access to the non-embedded ThoughtSpot application instance. By default, all embedded ThoughtSpot users can navigate to and log in to the non-embedded ThoughtSpot application instance.
-If you want to allow only users with administrator or developer privileges to access the non-embedded ThoughtSpot application instance, contact ThoughtSpot Support.
-|====
-====
-
-
-.Visual Embed SDK version 1.6.x
-[%collapsible]
-====
-
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# a|+++
Visible actions
+++
-
-You can now configure a set of ThoughtSpot UI actions as visible actions and display these actions in the embedded UI. If your embedded instance requires only a few actions, you can use the `visibleActions` API to show only these actions in the embedded ThoughtSpot UI.
-
-For more information, see xref:embed-actions.adoc[Show or hide UI actions].
-
-|[tag orangeBackground]#MODIFIED# | +++
Terminology changes
+++
-
-The SDK library and object parameter names are modified to rebrand pinboards as Liveboards. For a complete list of changes, see xref:terminology-update.adoc#sdk-changes[Terminology changes].
-
-|[tag greenBackground]#NEW FEATURE# a|+++
Embed events
+++
-
-The SDK supports the following new events:
-
-* `DialogOpen`
-* `DialogClose`
-
-For more information, see xref:embed-events.adoc[Events reference].
-
-|====
-====
-
-.REST API
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# a|`POST /tspublic/v1/session/login/token`
-
-This API allows you to send the login token and user information in the request body. For more information, see the xref:session-api.adoc#session-loginToken[REST API reference page].
-
-|[tag orangeBackground]#MODIFIED# a| The `/tspublic/v1/connection/create` and `/tspublic/v1/connection/update` endpoints now allow configuring and modifying a connection without importing tables.
-
-For more information, see xref:connections-api.adoc[Data connection APIs].
-|[tag orangeBackground]#MODIFIED#|You can now filter metadata objects by author GUIDs using the `authorguid` attribute in the `/tspublic/v1/metadata/list` endpoint.
-
-For more information, see xref:metadata-api.adoc#metadata-list[Get a list of metadata objects].
-|====
-
-====
-
-.ThoughtSpot application UI
-[%collapsible]
-====
-
-To make it easier for users to find new insights, the **Search data** functionality is moved from the search bar toggle on the **Home** page to the **Search data** button in the main navigation bar.
-
-Note that if you are embedding the full application without the navigation bar, your application users may not be able to access the **Search data** button. If you must include the Search bar toggle on the **Home** page, contact ThoughtSpot Support to restore this feature on your cluster.
-
-image:./images/search-toggle.png[Search toggle, width=auto]
-
-image:./images/search-data-btn.png[Search data button, width=auto]
-
-====
-
-== Version ts7.oct.cl
-
-.Custom actions
-[%collapsible]
-====
-
-[width="100%" cols="1,4"]
-|====
-|[tag orangeBackground]#MODIFIED# a|+++
Custom actions feature availability
+++
-
-Starting from ThoughtSpot 7 Cloud October release, you _do not_ require a separate license to create or manage custom actions. The *Custom action* feature is unlocked on all clusters that have a valid ThoughtSpot Enterprise Cloud service subscription. ThoughtSpot Cloud service users with Developer or Admin privileges can access the *Custom actions* feature in the *Develop* tab.
-
-|[tag redBackground]#REMOVED# a|+++
The Only allow in context menu checkbox
+++
-
-The *Only allow in context menu* checkbox in the custom action creation dialog is removed from the UI. This checkbox was available in previous releases to allow developers to set a custom action to appear only in the contextual menu on pinboard visualizations, charts, or tables.
-
-If you have created custom actions with the *Only allow in context menu* setting enabled on your instance, note these custom action workflow changes:
-
-* If you have a *Global* custom action with the *Only allow in context menu* setting enabled, the configuration setting _is not_ preserved and the action is placed in the **More** image:./images/icon-more-10px.png[the more options menu] menu instead of the contextual menu.
-+
-You can xref:custom-actions-edit.adoc[modify the position of this action] by using the *Edit* option in the *Custom actions* panel on a visualization or search results page.
-
-* If you have a *Local* custom action with the *Only allow in context menu* setting enabled and the action is already assigned to a Worksheet, visualization, chart, or table, the configuration setting _is_ preserved and the custom action shows up in the contextual menu.
-
-* If you have a *Local* custom action with the *Only allow in context menu* setting enabled, but it is not assigned to a Worksheet, visualization, chart, or table, the action will not be available as a menu item or button. You must add the action to a visualization, chart, or table, and configure its position as required. For more information, see xref:custom-actions-viz.adoc[Add a custom action to a visualization] and xref:custom-actions-worksheet.adoc[Add custom actions to a Worksheet].
-
-|====
-====
-
-.Visual Embed SDK version 1.5.0
-
-[%collapsible]
-====
-
-The ThoughtSpot 7 Cloud October release introduces the Visual Embed SDK version 1.5.0, which includes the following new features and enhancements.
-
-[width="100%" cols="1,4"]
-|====
-||
-|[tag greenBackground]#NEW FEATURE# | +++
Render embedded objects in queue
+++
-
-The SDK now supports rendering embedded objects in a queue. If you have multiple embedded objects, you can enable the `queueMultiRenders` parameter to queue your embedded objects and render them one after another. This feature helps in decreasing the load on the web browsers and improving your application loading experience. By default, this attribute is set to `false`.
-
-|[tag greenBackground]#NEW FEATURE# a|+++
Liveboard embed
+++
-
-The `pinboardEmbed` package includes the `defaultHeight` attribute that sets a minimum height for embedded objects on a pinboard page and the corresponding visualization pages that a user can navigate to.
-
-For more information, see xref:embed-search.adoc[Embed a pinboard].
-
-|[tag greenBackground]#NEW FEATURE# a|+++
Embed events
+++
-
-The SDK EmbedEvent library includes the following new events:
-
-* `VizPointDoubleClick`
-* `Drilldown`
-* `SetVisibleVizs`
-
-For more information, see xref:embed-events.adoc[Events reference].
-
-|====
-====
-
-.REST APIs
-[%collapsible]
-====
-The ThoughtSpot 7 Cloud October release includes the following new REST API endpoints. For more information about these APIs, see xref:rest-api-reference.adoc[REST API Reference].
-
-* `POST /tspublic/v1/group/{groupid}/users`
-* `GET /tspublic/v1/group/{groupid}/users`
-* `DELETE /tspublic/v1/group/{groupid}/users`
-* `PUT /tspublic/v1/user/email`
-* `POST /tspublic/v1/user/{userid}/groups`
-* `GET /tspublic/v1/user/{userid}/groups`
-* `PUT /tspublic/v1/user/{userid}/groups`
-* `DELETE /tspublic/v1/user/{userid}/groups`
-====
-
-
-== Version ts7.sep.cl
-
-.Licensing
-[%collapsible]
-====
-
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# a| +++
+++New ThoughtSpot license for embedded analytics +++
+++
-
-ThoughtSpot introduces the ThoughtSpot Embedded Edition license that grants access to Developer portal, Playground, customization workflows, Visual Embed SDK, and REST APIs. If you have a ThoughtSpot Enterprise Cloud Service subscription and you want to avail the benefits of ThoughtSpot Embedded analytics, you can now request for a license upgrade.
-
-The new licensing model introduces several notable changes in the ThoughtSpot Developer portal:
-
-* On clusters that _do not_ have the ThoughtSpot Embedded Edition license, the ThoughtSpot Developer Portal displays a locked icon next to the customization menu actions. When you click the locked icon, the UI prompts you to sign up for a free trial or upgrade your license.
-* The ThoughtSpot Enterprise Cloud service subscribers can either start a 30-day free trial or initiate a license upgrade from the UI.
-* Free trial users can initiate a license upgrade request by clicking **Upgrade Now** at any time during the evaluation period, or when the trial expires.
-* If you click *Upgrade* or **Upgrade Now**, ThoughtSpot opens the Live Chat Support widget. You can start a conversation with the Sales personnel to initiate the license upgrade.
-
-For more information about the licensing model and upgrade process, see xref:get-started-tse.adoc[Get started with embedded analytics].
-|====
-
-====
-
-.Developer portal enhancements
-[%collapsible]
-====
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# a| +++
+++Developer Playground enhancements+++
+++
-
-* The *Full app* Playground page includes the *Hide profile and help* checkbox to provide a preview of the `disableHelpAndProfile` function that can hide the Help and Profile icons in the ThoughtSpot navigation bar.
-
-* The *Full Height* checkbox in *Pinboard* Playground provides a preview of the `fullHeight` attribute that can dynamically resize the embedded pinboard frame according to the height of the pinboard.
-
-For more information, see xref:developer-playground.adoc[Developer Playground].
-|====
-
-====
-
-.Visual Embed SDK version 1.4.0
-
-[%collapsible]
-====
-The ThoughtSpot 7 Cloud September release introduces the Visual Embed SDK version 1.4.0, which includes the following new features and enhancements.
-
-[width="100%" cols="1,4"]
-|====
-||
-|[tag greenBackground]#NEW FEATURE# a|+++
+++Prefetch API+++
+++
-
-The `prefetch` API fetches static resources from a given URL before your application loads. Web browsers can then cache the prefetched resources locally and serve them from a user's local disk. You can use this API to load the embedded objects faster and improve your application response time.
-
-For more information, see xref:prefetch-and-cache.adoc[Prefetch static resources].
-
-|[tag greenBackground]#NEW FEATURE# a|+++
+++In-app page navigation+++
+++
-
-The `navigateToPage` method in the SDK lets you provide quick and direct access to a specific pinboard, saved Answer, or an application page. You can add a custom menu action or button in your application UI that calls the `navigateToPage` method and leads your users to the page specified in the `path` parameter.
-
-For more information, see xref:page-navigation.adoc[Add a custom action for in-app navigation].
-
-|[tag greenBackground]#NEW FEATURE# a|+++
+++Full application embedding+++
+++
-
-The `appEmbed` SDK package includes the following new attributes:
-
-* The `disableProfileAndHelp` attribute to show or hide the `Help (?)` and the user profile menu in the navigation bar of your embedded app.
-
-* The `hideObjects` attribute to hide specific objects from a user's page view.
-
-For more information, see xref:full-embed.adoc[Embed full application].
-
-|[tag greenBackground]#NEW FEATURE# |+++
+++Search embed +++
+++
-
-The `searchEmbed` package includes the `forceTable` attribute that sets tabular view as the default format for presenting search data. You can use set this attribute to `true` to force search results to appear in the table view.
-
-For more information, see xref:embed-search.adoc[Embed ThoughtSpot search].
-
-|[tag redBackground]#REMOVED# |
-
-The `searchQuery` parameter is no longer supported and is removed from the `searchEmbed` SDK package.
-|[tag greenBackground]#NEW FEATURE# a|+++
+++Embed events +++
+++
-The SDK EmbedEvent library includes the following events:
-
-* `QueryChanged`
-* `AuthExpire`
-
-For more information, see xref:embed-events.adoc[Subscribe to Events].
-|====
-
-====
-
-.REST APIs
-
-[%collapsible]
-====
-
-The ThoughtSpot 7 Cloud September release includes the following new endpoints and modifications to the REST APIs. For more information, see xref:rest-api-reference.adoc[REST API Reference].
-
-.New APIs
-
-* `POST /tspublic/v1/connection/create`
-* `POST /tspublic/v1/connection/update`
-* `POST /tspublic/v1/connection/export`
-* `POST /tspublic/v1/connection/delete`
-* `POST /tspublic/v1/metadata/unassigntag`
-* `GET /tspublic/v1/metadata/list`
-* `GET /tspublic/v1/security/metadata/permissions`
-* `GET /tspublic/v1/security/metadata/{id}/permissions`
-* `GET /tspublic/v1/security/effectivepermissionbulk`
-* `GET /tspublic/v1/session/info`
-* `POST /tspublic/v1/user/activate`
-* `POST /tspublic/v1/user/inactivate`
-* `POST /tspublic/v1/user/session/invalidate`
-* `POST /tspublic/v1/user/resetpassword`
-* `PUT /tspublic/v1/group/{groupid}/users`
-* `POST /tspublic/v1/group/{groupid}/groups`
-* `PUT /tspublic/v1/group/{groupid}/groups`
-* `GET /tspublic/v1/group/{groupid}/groups`
-* `POST /tspublic/v1/group/addmemberships`
-* `POST /tspublic/v1/group/removememberships`
-* `DELETE /tspublic/v1/group/{groupid}/groups`
-
-
-.Modified APIs
-
-* `POST /tspublic/v1/metadata/assigntag`
-
-====
-
-== Version ts7.aug.cl
-
-.Custom actions
-[%collapsible]
-====
-
-[width="100%" cols="1,4"]
-|====
-||
-|[tag greenBackground]#NEW FEATURE# a| +++
Custom actions for worksheets
+++
-
-The Worksheet pages now include a `Custom actions` tab that shows the custom actions created in the Developer portal. ThoughtSpot users can add these actions to a Worksheet and place them as primary actions or menu items in the new visualizations built from that Worksheet.
-
-This feature is available to all ThoughtSpot users who have edit privileges to a Worksheet.
-
-For more information, see xref:custom-actions-worksheet.adoc[Add custom actions to a Worksheet].
-
-|[tag greenBackground]#NEW FEATURE# a| +++
Query parameters for URL-based custom actions
+++
-
-The Developer portal now allows you to add arbitrary key-value pairs as query parameters for a URL action. If a URL endpoint requires specific information, such as the database details or data object attributes, you can add a key-value pair of these attributes when creating a custom action. When the custom action workflow is triggered, these attributes are passed as query parameters in `GET` requests to get the data payload from ThoughtSpot.
-
-For more information, see xref:custom-actions-url.adoc[Configure a custom URL action].
-|====
-
-====
-
-.Visual Embed SDK version 1.3.1
-
-[%collapsible]
-====
-The ThoughtSpot 7 Cloud August release supports Visual Embed SDK version 1.3.1, which includes the following features and enhancements.
-
-[width="100%" cols="1,4"]
-|====
-||
-|[tag greenBackground]#NEW FEATURE# a| +++
searchOptions
+++
-
-The `searchEmbed` SDK package introduces the `searchOptions` parameter for setting search tokens. The `searchOptions` parameter includes the following attributes:
-
-* `searchTokenString`
-+
-A TML query string to define search tokens.
-
-* `executeSearch`
-+
-When set to `true`, it executes search and shows the search results.
-
-For more information, see xref:embed-search.adoc#search-query[Embed ThoughtSpot search].
-
-|[tag redBackground]#DEPRECATED# a| +++
searchQuery
+++
-
-The `searchQuery` parameter in the `searchEmbed` SDK package is deprecated in the Visual Embed SDK version 1.3.1. Instead, you can use the `searchOptions` parameter to define the search token string.
-
-For more information about `searchOptions`, see xref:embed-search.adoc#search-query[Embed ThoughtSpot search].
-
-|[tag greenBackground]#NEW FEATURE# a| +++
autoLogin
+++
-
-The SDK now supports logging in users automatically after a user session has expired.
-
-For more information, see xref:embed-authentication.adoc#embed-session-sec[Embed user authentication].
-
-|[tag greenBackground]#NEW FEATURE# a| +++
shouldEncodeUrlQueryParams
+++
-
-You can now convert query parameters in the ThoughtSpot generated URLs to base64-encoded format. You can enable this attribute to secure your cluster from cross-site scripting attacks.
-|[tag redBackground]#BREAKING CHANGE# a| +++
Data structure changes in custom action response payloads
+++
-
-* The data structure passed in the custom action response for search now shows as `payload.data.embedAnswerData` instead of `payload.data.columnsAndData`.
-
-* The Answer payload for custom actions includes the following metadata:
-
-** `reportBookmetadata`
-+
-Includes visualization metadata attributes such as description, object header metadata, author details, timestamp of the Answer creation, and modification.
-
-** user data
-+
-Includes user information such as username, GUID of the user, and email address.
-
-To view a sample response payload, see xref:callback-response-payload.adoc#search-data-payload[Custom action response payload].
-
-|[tag greenBackground]#NEW FEATURE# a| +++
preventPinboardFilterRemoval
+++
-
-The `pinboardEmbed` SDK package now includes the `preventPinboardFilterRemoval` attribute. You can use this attribute to disable the filter removal action and thus prevent users from removing the filter chips added on a pinboard page.
-
-For more information, see xref:embed-pinboard.adoc[Embed a pinboard] and xref:embed-a-viz.adoc[Embed a visualization].
-|[tag greenBackground]#NEW FEATURE# a| +++
suppressNoCookieAccessAlert
+++
-
-You can now set custom alerts for `noCookieAccess` events. By default, the SDK triggers a `noCookieAccess` event and generates an alert when a user's browser blocks third-party cookies. The `suppressNoCookieAccessAlert` allows you to disable this alert.
-
-|[tag greenBackground]#NEW FEATURE# a| +++
Support for fetching callback custom action payload in batches
+++
-
-The Visual Embed SDK now supports processing data in batches for callback custom action responses.
-The callback custom action event in the SDK package supports defining `batchSize` and `offset` values to paginate the Answer payload and send the records in batches.
-
-For more information, see xref:push-data-to-external-app.adoc#large-dataset[Callback custom action workflow].
-|====
-
-====
-
-.REST APIs
-[%collapsible]
-====
-
-The ThoughtSpot 7 Cloud August release introduces several new APIs to xref:user-api.adoc[manage users], xref:group-api.adoc[user groups], xref:admin-api.adoc[cluster configuration], xref:dependency-apis.adoc[object dependencies], and so on.
-
-For a complete list of APIs, see xref:rest-api-reference.adoc[REST API Reference].
-
-====
-
-
-== Version ts7.jun.cl
-
-.Custom actions
-[%collapsible]
-====
-
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# a|+++
Global and local custom actions
+++
-
-The ThoughtSpot developer portal now supports configuring a custom action as a __global__ or __local__ action. This feature allows you to determine and control the placement of custom actions in the ThoughtSpot UI. Developers can now choose to create a custom action that will appear on all visualizations, or a specific custom action that can be added to a visualization by a ThoughtSpot user. The custom actions panel in the visualization page allows ThoughtSpot users to view the available custom actions and add an action to any visualization.
-
-For example, if you want an action that triggers a callback into your parent app, which would then post its data to Slack, you might want to add a custom action globally to all visualizations. Similarly, if you want to send the data obtained from a specific visualization to a URL, you can associate a custom action locally to that visualization.
-
-For more information, see xref:customize-actions-menu.adoc[Custom actions] and xref:custom-actions-viz.adoc[Add a custom action to a specific visualization].
-
-|[tag greenBackground]#NEW FEATURE# a|+++
Authentication schemes for custom actions
+++
-
-You can now apply an authentication scheme for a custom action that triggers a data payload to a specific URL target. If an action requires your users to authenticate to send data to a URL, you can specify the authentication method and authorization attributes when creating a custom action in the Developer portal.
-ThoughtSpot will use this information to send the required attributes in the `Authorization` headers to the URL endpoint configured in the custom action.
-
-|[tag greenBackground]#NEW FEATURE# a|
-+++
Custom action position settings
+++
-
-ThoughtSpot users with edit privileges can now define or modify the position of a custom action on visualization pages. When a developer creates a custom action in the Developer portal, ThoughtSpot adds a menu item to the **More** image:./images/icon-more-10px.png[the more options menu] menu by default. ThoughtSpot users can change this to a context menu action or a primary action at any time.
-
-If your application instance requires an action that sends only a single row of data from charts or tables, developers can configure a custom action and restrict it to only the contextual menu. If this setting is enabled on a custom action, ThoughtSpot users cannot modify this action on a visualization page.
-
-For more information, see xref:custom-actions-viz.adoc[Add a custom action to a specific visualization].
-|====
-
-====
-
-.Custom link format for embedded instances
-[%collapsible]
-====
-
-ThoughtSpot generates links to access objects, such as pinboards, visualizations, and answers, when a user shares an object with another user or follows a pinboard to receive periodic notifications. If you have embedded ThoughtSpot in your application, you might want to generate these links in the format that preserves your host application context.
-
-For embedded instances, ThoughtSpot now allows you to customize the format of these links in the Developer portal. The *Link Settings* page in the Developer portal allows you to customize the link format for various resource URLs and the *unsubscribe* link sent in email notifications.
-
-For more information, see xref:customize-links.adoc[Customize links].
-====
-
-.REST APIs
-[%collapsible]
-====
-
-The ThoughtSpot 7 Cloud June release includes several new and modified APIs:
-
-.New APIs
-
-* `POST /tspublic/v1/security/share`
-+
-Use this API to share ThoughtSpot objects with another user or user group. For more information, see xref:security-api.adoc#share-object[Share objects with another user].
-
-* `POST /tspublic/v1/security/shareviz`
-+
-Use this API to share a specific ThoughtSpot visualization with another user or user group. For more information, see xref:security-api.adoc#shareviz[Share a visualization with another user or user group].
-
-* `GET /tspublic/v1/session/login/token`
-+
-Use this API to get a login token for a ThoughtSpot user when trusted authentication is enabled. For more information, see xref:session-api.adoc#session-loginToken[Authenticate and log in a user].
-
-* `POST /tspublic/v1/metadata/assigntag`
-+
-Use this API to programmatically assign a tag to a ThoughtSpot object such as a pinboard, Answer, table, or Worksheet. For more information, see xref:metadata-api.adoc#assign-tag[Assign tags to metadata objects].
-
-* `POST /tspublic/v1/metadata/details`
-+
-Use this API to query metadata details for a specific data object such as a pinboard, Answer, or a Worksheet. For more information, see xref:metadata-api.adoc#metadata-details[Get metadata details].
-
-* `POST /tspublic/v1/metadata/markunmarkfavoritefor`
-+
-Use this API to add pinboards and answers to a user's favorites list. For more information, see xref:metadata-api.adoc#set-favorite[Set objects as favorites].
-
-* `DELETE /tspublic/v1/metadata/markunmarkfavoritefor`
-+
-Use this API to remove an object from a user's favorites list. For more information, see xref:metadata-api.adoc#del-object-fav[Remove objects from favorites].
-
-* `POST /tspublic/v1/session/homepinboard`
-+
-Use this API to set a pinboard as the home pinboard for a user account. For more information, see xref:session-api.adoc#set-home-pinboard[Set a pinboard as a home pinboard].
-
-* `GET /tspublic/v1/session/homepinboard`
-+
-Use this API to get the GUID of the pinboard set as a home pinboard. For more information, see xref:session-api.adoc#get-home-pinboard[Get details of the home pinboard].
-
-* `DELETE /tspublic/v1/session/homepinboard`
-+
-Use this API to remove the home pinboard. For more information, see xref:session-api.adoc#del-home-pinboard[Remove a home pinboard].
-
-
-.Other API enhancements
-
-The `POST /tspublic/v1/user/updatepreference` API now includes the optional `username` parameter to allow API users to specify the `username` of the ThoughtSpot user whose profile is being modified.
-For more information, see xref:user-api.adoc#updatepreference-api[Update a user profile].
-
-====
-
-
-== Version ts7.may.cl
-
-.Custom actions in the context menu
-[%collapsible]
-====
-You can now add a custom action to the contextual menu to send data or initiate an action from an embedded visualization. The *Customization* > *Actions* page in the *Develop* tab allows you to add a custom action to the contextual menu for visualizations in the *Answers* or *Pinboards* page.
-
-For more information, see xref:customize-actions-menu.adoc[Add custom actions].
-====
-
-.Visual Embed SDK version 1.2.0
-[%collapsible]
-====
-
-[width="100%" cols="1,4"]
-|====
-|[tag greenBackground]#NEW FEATURE# a|+++
SAML authentication
+++
-
-The Visual Embed SDK packages now include the `noRedirect` attribute as an optional parameter for the `SSO` `AuthType`. If you want to display the SAML authentication workflow in a pop-up window, instead of refreshing the application web page to direct users to the SAML login page, you can set the `noRedirect` attribute to `true`.
-
-For more information, see the instructions for embedding xref:full-embed.adoc[ThoughtSpot pages], xref:embed-search.adoc[search], xref:embed-pinboard.adoc[pinboard], and xref:embed-a-viz.adoc[visualizations].
-
-|[tag greenBackground]#NEW FEATURE# a|+++
Visual Embed SDK notification when third-party cookies are disabled
+++
-
-When a user accesses the embedded application from a web browser that has third-party cookies disabled, the Visual Embed SDK emits the `NoCookieAccess` event to notify the developer. Cookies are disabled by default in Safari. Users can enable third-party cookies in Safari’s Preferences setting page or use another web browser.
-To know how to enable this setting by default on Safari for a ThoughtSpot embedded instance, contact ThoughtSpot Support.
-
-|[tag greenBackground]#NEW FEATURE# a|+++
Pinboard actions
+++
-The *More* menu image:./images/icon-more-10px.png[the more options menu] in the embedded Pinboard page now shows the following actions for pinboard and visualizations.
-
-Pinboard::
-* Save
-* Make a copy
-* Add filters
-* Configure filters
-* Present
-* Download as PDF
-* Pinboard info
-* Manage schedules
-
-
-[NOTE]
-Users with edit permissions can view and access the *Save*, *Add filters*, *Configure filters*, and *Manage schedules* actions.
-|[tag greenBackground]#NEW FEATURE# a|+++