Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
dd8b673
changelog and other edits
ShashiSubramanya Nov 5, 2025
f36578f
link fix
ShashiSubramanya Nov 5, 2025
d431ce6
formatting fixes
ShashiSubramanya Nov 6, 2025
ea4c385
version drop-down check
ShashiSubramanya Nov 6, 2025
c1ae911
removed beta for theme builder
rani2655 Nov 6, 2025
a8fd73a
spotter api rel version update
ShashiSubramanya Nov 7, 2025
14e71b6
spotter api fixes
ShashiSubramanya Nov 7, 2025
8283284
spotter api edits
ShashiSubramanya Nov 7, 2025
6a8e1a9
SCAL-281833 correct header logo
shivam-kumar-ts Nov 7, 2025
ea28cb5
Merge pull request #377 from thoughtspot/SCAL-281833
shivam-kumar-ts Nov 10, 2025
75d0d99
updates6
rani2655 Nov 10, 2025
fae70b4
Merge pull request #375 from thoughtspot/CBCA-updates
rani2655 Nov 10, 2025
492736b
Merge pull request #378 from thoughtspot/email-custom
rani2655 Nov 10, 2025
e787848
updates fir GUID
rani2655 Nov 11, 2025
388b16b
SCAL-282347
ShashiSubramanya Nov 12, 2025
1c7724b
formatting fix
ShashiSubramanya Nov 12, 2025
8ca39bf
webhook note
ShashiSubramanya Nov 12, 2025
08be4b2
obejct id update
rani2655 Nov 13, 2025
f20fa5e
Merge pull request #380 from thoughtspot/cbca-guid
rani2655 Nov 13, 2025
a478d32
minor changes
rani2655 Nov 14, 2025
6698468
search data note
ShashiSubramanya Nov 17, 2025
9831c1d
param fix
ShashiSubramanya Nov 19, 2025
20a69d8
edited example
rani2655 Nov 25, 2025
19090c6
Merge pull request #381 from thoughtspot/cbca-guid
rani2655 Nov 25, 2025
8d1424b
SCAL-286769 Update Discord invite link in onboarding guide and header
shivam-kumar-ts Dec 9, 2025
ba655db
SCAL-286769 Update Discord invite link in header
shivam-kumar-ts Dec 9, 2025
1b272dc
Merge pull request #384 from thoughtspot/SCAL-286769
shivam-kumar-ts Dec 11, 2025
43c849c
cluster upgrade updates and 10.15 url setup
ShashiSubramanya Dec 11, 2025
f6a73c2
typo fixes and other edits
ShashiSubramanya Dec 11, 2025
a218e7b
10.15 doc link update
ShashiSubramanya Dec 11, 2025
345a59d
reference and example updates
ShashiSubramanya Dec 13, 2025
276cfa0
Update spotter-apis.adoc
ShashiSubramanya Dec 13, 2025
7af20f4
cluster upgrade edits
ShashiSubramanya Dec 16, 2025
cb82b32
typo fixes
ShashiSubramanya Dec 16, 2025
bfab58e
Typo fix
ShashiSubramanya Dec 16, 2025
ffb6168
nav and title update
ShashiSubramanya Dec 6, 2025
d1d8beb
full app embed fixes
ShashiSubramanya Dec 17, 2025
ed29a50
edits
ShashiSubramanya Dec 17, 2025
0f861a6
10.15 links and other fixes
ShashiSubramanya Dec 17, 2025
f50e613
nav fix
ShashiSubramanya Dec 6, 2025
6180bc4
scal-SCAL-287754 fixes
ShashiSubramanya Dec 17, 2025
8820503
version fix
ShashiSubramanya Dec 17, 2025
ee89d08
changelog and quick start guide fix
ShashiSubramanya Dec 17, 2025
85d533a
onboarding guide fix
ShashiSubramanya Dec 17, 2025
c462005
Merge branch 'release' into main
ShashiSubramanya Dec 17, 2025
75cdb5b
code sample updates to get started
ShashiSubramanya Dec 17, 2025
cc85fbc
typo fixes
ShashiSubramanya Dec 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions modules/ROOT/pages/api-changelog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,34 @@

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.44.x, January 2026

[width="100%" cols="1,4"]
|====

|[tag redBackground]#DEPRECATED# |**`defaultHeight` replaced with `minimumHeight` ** +

The `defaultHeight` parameter is deprecated in Visual Embed SDK v1.44.2 and later.
To set the minimum height of the embed container for ThoughtSpot components such as a Liveboard, use the `minimumHeight` attribute instead.

|[tag greenBackground]#NEW FEATURE# a| *Intercepting API calls* +
The SDK provides the following attributes to intercept API calls and handle interception via events and custom workflows:

//* `enableApiIntercept` +
//When set to true, enables the feature on your ThoughtSpot embed.
* `interceptUrls` +
Allows configuring which API calls to intercept.
* `interceptTimeout` +
Sets the timeout duration for handling interception.
* `isOnBeforeGetVizDataInterceptEnabled` +
When set to true, it enables the use of `EmbedEvent.OnBeforeGetVizDataIntercept` event to emit and intercept search execution calls initiated by the users and implement custom logic or workflow to allow or restrict search execution.
* `EmbedEvent.ApiIntercept` +
Emits when an API call matching the conditions defined in `interceptUrls` is detected.

For more information, see xref:api-intercept.adoc[Intercept API calls and search requests].
|====


== Version 1.43.0, November 2025
[width="100%" cols="1,4"]
|====
Expand Down
1 change: 0 additions & 1 deletion modules/ROOT/pages/common/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -255,4 +255,3 @@ include::generated/typedoc/CustomSideNav.adoc[]
** link:https://training.thoughtspot.com/page/developer[Training resources, window=_blank]
** link:https://docs.thoughtspot.com[Product Documentation, window=_blank]
** link:{{navprefix}}/rest-apiv2-beta-reference[REST API v2 ^Beta^ Reference (Deprecated)]

738 changes: 449 additions & 289 deletions modules/ROOT/pages/full-app-customize.adoc

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion modules/ROOT/pages/full-embed.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ const appEmbed = new AppEmbed(
appEmbed.render();
----

For customizing speicific components, you can include the xref:AppViewConfig.adoc[View configuration properties] available for full application embedding in the SDK.
For customizing specific components, you can include the xref:AppViewConfig.adoc[View configuration properties] available for full application embedding in the SDK.

You may also want to import the xref:https://developers.thoughtspot.com/docs/Enumeration[Enumeration] objects and use the enums that represent values for the configuration properties in your code. For example, to show, hide, or disable specific menu actions, you may want to import the `Action` object and include the enumerated members representing specific menu actions in the `visibleActions`, `disabledActions`, or `hiddenActions` array.

Expand Down
88 changes: 47 additions & 41 deletions modules/ROOT/pages/getting-started.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -41,57 +41,47 @@ For more information, see xref:user-roles.adoc[Developer access].

The Visual Embed SDK is available for installation as a Node Package Manager (NPM) package. The latest version of the Visual Embed SDK is available at link:https://www.npmjs.com/package/@thoughtspot/visual-embed-sdk[https://www.npmjs.com/package/@thoughtspot/visual-embed-sdk, window=_blank].

////
To get started with embedding, install the SDK:

[source,console]
----
npm install @thoughtspot/visual-embed-sdk
----
////

=== Import embed package
=== Import the embed package

The SDK is written in TypeScript and is also provided both as ES Module (ESM) and Universal Module Definition (UMD) modules, allowing you to use it in a variety of environments.
The SDK is written in TypeScript and is also provided both as ES Module (ESM) and Universal Module Definition (UMD) modules, allowing you to use it in a variety of environments.

Import one of the following modules into your app:

* **LiveboardEmbed** +
Use the **LiveboardEmbed** component to xref:embed-a-viz.adoc[embed a single visualization] or a full Liveboard with multiple visualizations:
To xref:embed-a-viz.adoc[embed a single visualization] or a xref:embed-pinboard.adoc[full Liveboard with multiple visualizations].


* **SpotterEmbed** +
To embed xref:embed-ai-analytics.adoc[embed Spotter AI search and analytics].

+
++++
<a href="?pageid=embed-liveboard" id="preview-in-playground" target="_blank">Embed a Liveboard</a>
++++

////
* **SageEmbed** +
Use the `SageEmbed` package to embed Natural Language Search interface.

+
++++
<a href="?pageid=embed-nls" id="preview-in-playground" target="_blank">Embed Natural Language Search</a>
++++

////
* **AppEmbed** +
Use the `AppEmbed` library to embed full ThoughtSpot application in your app.

+
++++
<a href="?pageid=full-embed" id="preview-in-playground" target="_blank">Embed full ThoughtSpot application</a>
++++
To xref:full-embed.adoc[embed full ThoughtSpot application] experience or specific application pages.

* **SearchEmbed** +
Use the `SearchEmbed` package to embed the ThoughtSpot search page with a pre-selected data source.
+
++++
<a href="?pageid=search-embed" id="preview-in-playground" target="_blank">Embed Search page</a>
++++
To xref:embed-search.adoc[embed ThoughtSpot Search page] with a pre-selected data source.

* **SearchBarEmbed** +
Use the `SearchBarEmbed` component to embed only the ThoughtSpot Search bar and data panel.

+
++++
<a href="?pageid=embed-searchbar" id="preview-in-playground" target="_blank">Embed Search bar</a>
++++
To xref:embed-searchbar.adoc[embed only the ThoughtSpot Search bar] and data panel.

==== Example

Expand Down Expand Up @@ -183,30 +173,38 @@ import {
HostEvent
} from '@thoughtspot/visual-embed-sdk';

// Create a new LiveboardEmbed instance, targeting the DOM element with id 'container'.

const lb = new LiveboardEmbed('#container', {
// Set the frame size to 100% width and height
frameParams: {
width: '100%',
height: '100%',
},
liveboardId: '<%=liveboardGUID%>',
runtimeFilters: [],
liveboardId: '<%=liveboardGUID%>', // ID of the Liveboard
runtimeFilters: [{
columnName: 'Color',
operator: RuntimeFilterOp.EQ,
values: ['red'],
}, ],
});
// [Optional]: Register event listeners.

// [Optional]: Register an event listener for the LiveboardRendered event.
// This allows you to execute custom logic when the Liveboard has finished rendering.
lb.on(EmbedEvent.LiveboardRendered, (e) => {
/* handler */
});

// Do not forget to call render.
// Render the embedded Liveboard inside the specified container.
// This step is required to display the Liveboard in your application.
lb.render();

// [Optional]: Trigger events on the lb
lb.trigger(HostEvent.UpdateRuntimeFilters, [
{
columnName: 'col1',
operator: RuntimeFilterOp.EQ,
values: ['val1'],
},
]);
// Programmatically trigger a HostEvent to update runtime filters on the embedded Liveboard.
lb.trigger(HostEvent.UpdateRuntimeFilters, [{
columnName: 'Color',
operator: RuntimeFilterOp.EQ,
values: ['amber'],
}, ]);
----

`#container` is a selector for the DOM node which the code assumes is already attached to DOM. The SDK will render the ThoughtSpot component inside this container element.
Expand All @@ -216,24 +214,32 @@ ThoughtSpot provides React components for embedding Search, Liveboard, and the f

[source,TypeScript]
----
// Import the LiveboardEmbed React component from the ThoughtSpot Visual Embed SDK
import { LiveboardEmbed } from '@thoughtspot/visual-embed-sdk/react';

const App = () => {
// Create a ref to interact with the embedded Liveboard instance
const embedRef = useEmbedRef();

// Event handler called when the Liveboard has finished rendering
const onLiveboardRendered = () => {
// Trigger a HostEvent to update runtime filters on the embedded Liveboard
// This filter sets the 'col1' column to only show rows where the value is 'val1'
embedRef.current.trigger(HostEvent.UpdateRuntimeFilters, [
{
columnName: 'col1',
columnName: 'Color',
operator: RuntimeFilterOp.EQ,
values: ['val1'],
values: ['amber'],
},
]);
};

// Render the LiveboardEmbed component with the specified Liveboard ID and event handler
return (
<LiveboardEmbed
ref={embedRef}
liveboardId="<liveboard-guid>"
onLiveboardRendered={onLiveboardRendered}
ref={embedRef} // Attach the ref for programmatic control
liveboardId="<liveboard-guid>" // The GUID of the Liveboard to embed
onLiveboardRendered={onLiveboardRendered} // Register the event handler
/>
);
};
Expand Down
73 changes: 49 additions & 24 deletions modules/ROOT/pages/onboarding-guide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -42,31 +42,42 @@ image::./images/lb-image.png[Liveboard]

If you want to embed other ThoughtSpot components and explore the additional capabilities of the Visual Embed SDK, see the xref:getting-started.adoc[embedding components guide] or the resources listed in the xref:onboarding-guide.adoc#addResources[Explore more] section.

=== Step 1: Install the Visual Embed SDK
=== Step 1: Import the Visual Embed SDK

The latest version of the Visual Embed SDK is available at link:https://www.npmjs.com/package/@thoughtspot/visual-embed-sdk[https://www.npmjs.com/package/@thoughtspot/visual-embed-sdk, window=_blank].

[source,console]
----
npm install @thoughtspot/visual-embed-sdk
----

=== Step 2: Import the SDK into your project
The SDK is written in TypeScript and is also provided both as ES Module (ESM) and Universal Module Definition (UMD) modules, allowing you to use it in a variety of environments.

Import the SDK package into your application environment. Let's import the `LiveboardEmbed` SDK package to embed a Liveboard.
In this example, we'll import the `LiveboardEmbed` SDK package to embed a Liveboard.

**npm**
[source,JavaScript]
----
import {
LiveboardEmbed,
AuthType,
init,
} from '@thoughtspot/visual-embed-sdk';
prefetch,
EmbedEvent
}
from '@thoughtspot/visual-embed-sdk';
----

**ES6**
[source,JavaScript]
----
<script type = 'module'>
import {
LiveboardEmbed,
AuthType,
init,
prefetch
}
from 'https://cdn.jsdelivr.net/npm/@thoughtspot/visual-embed-sdk/dist/tsembed.es.js';
----

[#initSdk]
=== Step 3: Initialize the SDK
=== Step 2: Initialize the SDK

To initialize the SDK, the following information is required:

Expand All @@ -85,32 +96,39 @@ init({

Ensure that you call `init` before `render()`.

=== Step 4: Add the component
=== Step 3: Add the component

Each embedding option requires you to define the properties of the component you want to embed. For example, to embed a Liveboard, you must specify the GUID of the Liveboard.

[source,JavaScript]
----
import {
LiveboardEmbed,
AuthType,
init,
LiveboardEmbed, // Import the class to embed a ThoughtSpot Liveboard
AuthType, // Import authentication type constants
init, // Import the SDK initialization function
} from '@thoughtspot/visual-embed-sdk';

// Initialize the ThoughtSpot Visual Embed SDK with the host and authentication type.

init({
thoughtSpotHost: '<%=tshost%>',
authType: AuthType.None,
thoughtSpotHost: '<%=tshost%>', // Replace <%=tshost%> with your ThoughtSpot instance URL.
authType: AuthType.None, // no authentication (for testing purposes only).
});

// Create a new LiveboardEmbed instance.
// '#container' is the selector for the DOM element where the Liveboard will be rendered.

const lb = new LiveboardEmbed('#container', {
// frameParams sets the iframe width and height to fill the container.
frameParams: {
width: '100%',
height: '100%',
},
liveboardId: '22e79c21-eec4-40bf-997b-7454c6e3a2a5',
liveboardId: '22e79c21-eec4-40bf-997b-7454c6e3a2a5', // GUID of the Liveboard to embed.
});

// Do not forget to call render.
// Render the embedded Liveboard inside the specified container.
// This step is required to display the Liveboard.
lb.render();
----

Expand All @@ -119,19 +137,25 @@ The `#container` in the above example is a selector for the DOM node which the
[NOTE]
====
* If you don't know the GUID of Liveboard, open the Liveboard in the ThoughtSpot UI and copy the GUID from the URL. You can also use the Visual Embed Playground to view the GUID of the Liveboard.
* If you are a free trial user, use `22e79c21-eec4-40bf-997b-7454c6e3a2a5`.
* If you are a free trial user, you can use `22e79c21-eec4-40bf-997b-7454c6e3a2a5`.
====

////
////
React::
[source,TypeScript]
----
// Import the LiveboardEmbed React component from the ThoughtSpot Visual Embed SDK
import { LiveboardEmbed } from '@thoughtspot/visual-embed-sdk/react';

const App = () => {
// Create a ref to interact with the embedded Liveboard instance
const embedRef = useEmbedRef();

// Event handler called when the Liveboard has finished rendering
const onLiveboardRendered = () => {
// Trigger a HostEvent to update runtime filters on the embedded Liveboard
// This filter sets the 'item type' column to only show rows where the value is 'Jackets'
embedRef.current.trigger(HostEvent.UpdateRuntimeFilters, [
{
columnName: 'item type',
Expand All @@ -140,20 +164,21 @@ const App = () => {
},
]);
};

// Render the LiveboardEmbed component with the specified Liveboard ID and event handler
return (
<LiveboardEmbed
ref={embedRef}
liveboardId="22e79c21-eec4-40bf-997b-7454c6e3a2a5"
onLiveboardRendered={onLiveboardRendered}
ref={embedRef} // Attach the ref for programmatic control
liveboardId="22e79c21-eec4-40bf-997b-7454c6e3a2a5" // The GUID of the Liveboard to embed
onLiveboardRendered={onLiveboardRendered} // Register the event handler
/>
);
};
----

For more information about events, see xref:HostEvent.adoc[HostEvent] and xref:EmbedEvent.adoc[EmbedEvent].


=== Step 5: Verify the embedded object
=== Step 4: Verify the embedded object

Load the application page with the embedded object in your app.

Expand Down
3 changes: 3 additions & 0 deletions modules/ROOT/pages/rest-apiv2-changelog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@

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 10.15.0.cl, January 2026
For information about the new features and enhancements introduced in this release, see the link:https://developers.thoughtspot.com/docs/10.15.0.cl?pageid=rest-v2-changelog[10.15.0.cl Developer Documentation].

== Version 10.14.0.cl, November 2025

=== New API endpoints
Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/pages/spotter-apis.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@ The `/api/rest/2.0/ai/agent/converse/sse` API can be used as an integrated tool
|=====
|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.
|`message`|_Array of Strings_. Specify the query text in natural language format. For example, `Sales data for Jackets`, `Top performing products in the west coast`.
|`messages`|_Array of Strings_. Include at least one natural language query. For example, `Sales data for Jackets`, `Top performing products in the west coast`.
|=====

////
Expand Down
Loading
Loading