diff --git a/.snyk b/.snyk new file mode 100644 index 000000000..83aa8f48e --- /dev/null +++ b/.snyk @@ -0,0 +1,10 @@ +# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. +version: v1.25.1 +# ignores vulnerabilities until expiry date; change duration by modifying expiry date +ignore: + 'snyk:lic:npm:vercel:analytics:MPL-2.0': + - '*': + reason: 'MPL-2.0 license is acceptable for our use case' + expires: 2025-07-26T20:33:41.647Z + created: 2024-03-27T20:33:41.649Z +patch: {} \ No newline at end of file diff --git a/modules/ROOT/pages/abac-user-parameters-beta.adoc b/modules/ROOT/pages/abac-user-parameters-beta.adoc index 345224a66..e84315547 100644 --- a/modules/ROOT/pages/abac-user-parameters-beta.adoc +++ b/modules/ROOT/pages/abac-user-parameters-beta.adoc @@ -6,16 +6,12 @@ :page-pageid: abac-user-parameters-beta :page-description: Attribute-based access control pattern can be achieved via user parameters sent in the login token -Row-level security (RLS) using Attribute-Based Access Control (ABAC) via tokens in versions 10.3.0.cl and earlier is a __Beta__ implementation. - -This article describes the best practices to implement ABAC via tokens in a pre-10.4.0.cl environment. - -If your ThoughtSpot instance is on 10.4.0.cl or later, please refer to the xref:abac-user-parameters.adoc[GA documentation]. If you have implemented the beta version of the ABAC and your ThoughtSpot instance is running 10.4.0.cl or later, refer to the instructions in the xref:jwt-migration[migration guide] and update your implementation to use the `auth/token/custom` API endpoint for ABAC token generation. +This article describes the best practices to implement Row-level security (RLS) using Attribute-Based Access Control (ABAC) in a pre-10.4.0.cl environment. If your ThoughtSpot instance is on 10.4.0.cl or later, please refer to the xref:abac-user-parameters.adoc[GA documentation]. [IMPORTANT] ==== [#beta-warning] -As this feature directly impacts data security in your environment, ThoughtSpot does not support its use in a Production environment until it becomes Generally Available. ThoughtSpot is working on improvements in the upcoming releases that will change some of the best practices recommended in this article and result in the needed re-work of your deployment's security architecture. To understand the RLS best practices for your use case and deployment timelines, and to get these features enabled on your ThoughtSpot instances, contact ThoughtSpot Support. +As this feature directly impacts data security, it's disabled by default on ThoughtSpot instances. With the GA rollout, ThoughtSpot recommends switching your workflow to the `auth/token/custom` API endpoint. For more information, see the xref:jwt-migration[migration guide]. ==== == Overview diff --git a/modules/ROOT/pages/abac-user-parameters.adoc b/modules/ROOT/pages/abac-user-parameters.adoc index 0ad4f286e..5ce8cd7ec 100644 --- a/modules/ROOT/pages/abac-user-parameters.adoc +++ b/modules/ROOT/pages/abac-user-parameters.adoc @@ -12,7 +12,7 @@ This article provides a detailed overview of the ABAC implementation via tokens [IMPORTANT] ==== -To enable the ABAC via tokens feature on your instance, contact ThoughtSpot Support. +The ABAC feature is disabled by default on ThoughtSpot instances. To enable this feature on your instance, contact ThoughtSpot Support. ==== @@ -30,6 +30,12 @@ Several features within ThoughtSpot, such as autocompletion in Search on values + You must turn off indexing for any field that needs to be restricted by RLS when using ABAC via tokens for RLS, or also include an RLS Rule on fields that must also be filtered for the Indexing system. ++ +[NOTE] +==== +ABAC rules are not supported on Liveboards with AI Highlights and Change Analysis features, and on the Answers generated from Spotter. +==== + Mandatory token filters:: When setting filter rules within the token, you must place the `is_mandatory_token_filter: true` property on every column in a Worksheet or Model where a filter rule is expected. This will deny any access to data if a user has not been assigned values for the expected set of fields. diff --git a/modules/ROOT/pages/api-changelog.adoc b/modules/ROOT/pages/api-changelog.adoc index 34cb245bd..3e7d2d262 100644 --- a/modules/ROOT/pages/api-changelog.adoc +++ b/modules/ROOT/pages/api-changelog.adoc @@ -8,6 +8,51 @@ 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.38.0, June 2025 + +[width="100%" cols="1,4"] +|==== +|[tag greenBackground]#NEW FEATURE# a| *String IDs for text customization* + +Developers can now customize a specific occurrence of a visible text string in the ThoughtSpot UI using the `stringIDs` object in the customization interface. + +To locate the string IDs, SDK provides the `exposeTranslationIds` attribute. By setting `exposeTranslationIds` to `true` in the Playground, you can find the string ID of the UI text and use it in your customization code. + +Additionally, the SDK provides the `StringIDsUrl` attribute to allow using a JSON file with string IDs and custom strings to override the visible text in the UI. + +For more information, see xref:customize-text-strings.adoc[Customize text strings]. + +|[tag greenBackground]#NEW FEATURE# a| *Hide columns on list pages* + + +In full app embedding, you can now hide the following columns on the *Liveboards* and *Answers* listing pages using the `hiddenListColumns` array: + +* *Author* + +`hiddenListColumns: [ListPageColumns.Author]` +* *Favorite* + +`hiddenListColumns: [ListPageColumns.Favourite]` +* *Last modified* + +`hiddenListColumns: [ListPageColumns.DateSort]` +* *Tags* + +`hiddenListColumns: [ListPageColumns.Tags]` +* *Share* + +`hiddenListColumns: [ListPageColumns.Share]` + + +For more information, see xref:full-app-customize.adoc#_hide_columns_on_list_pages_new_experience[Customize full application embed]. + +|[tag greenBackground]#NEW FEATURE# a| *Spotter embed components with new names* + +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` + +The deprecated components with old names in the existing Spotter embed implementations will continue to function until further notice. +For more information, see xref:whats-new.adoc#_spotter_embed_components[What's new] and xref:embed-spotter.adoc[Spotter embed documentation]. +|==== == Version 1.37.0, April 2025 @@ -138,9 +183,9 @@ For more information, see xref:full-app-customize.adoc#_search_components[Search |==== |[tag greenBackground]#NEW FEATURE# a| You can now embed the following ThoughtSpot Spotter components in your app: -* `ConversationEmbed` + +* `SpotterEmbed` + Embeds Spotter conversation interface in your app -* `BodylessConversation` + +* `SpotterAgentEmbed` + Creates a conversation component without the body, which can be integrated into chatbots or other conversational apps. For more information, see xref:embed-spotter.adoc[Embed Spotter] and xref:spotter-in-custom-chatbot.adoc[Integrate Spotter into your chatbot]. diff --git a/modules/ROOT/pages/common/nav.adoc b/modules/ROOT/pages/common/nav.adoc index 0b055f6ad..8a14e8230 100644 --- a/modules/ROOT/pages/common/nav.adoc +++ b/modules/ROOT/pages/common/nav.adoc @@ -73,8 +73,12 @@ **** link:{{navprefix}}/search-embed[Embed Search] **** link:{{navprefix}}/embed-searchbar[Embed search bar] *** link:{{navprefix}}/react-app-embed[Embed with React components] -** Embed ThoughtSpot in a mobile app -*** link:{{navprefix}}/embed-ts-mobile-react-native[Embed using React Native SDK ^Beta^] +** link:{{navprefix}}/mobile-embed[Embed ThoughtSpot in a mobile app] +*** link:{{navprefix}}/embed-ts-mobile-react-native[React Native SDK ^Beta^] +*** link:{{navprefix}}/embed-ts-flutter[Flutter embed SDK ^Beta^] +*** link:{{navprefix}}/embed-ts-swift[Swift Embed SDK ^Beta^] +*** link:{{navprefix}}/embed-ts-android[Android Embed SDK ^Beta^] + ** Customize and integrate *** link:{{navprefix}}/style-customization[Customize UX and styles] **** link:{{navprefix}}/customize-style[Customize basic styles] @@ -82,7 +86,7 @@ ***** 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 ^Beta^] +***** link:{{navprefix}}/theme-builder-doc[Theme builder ^Beta^] *** link:{{navprefix}}/filters-overview[Filters overview] **** link:{{navprefix}}/runtime-overrides[Runtime overrides] @@ -91,23 +95,20 @@ *** link:{{navprefix}}/action-config[Customize menus] **** link:{{navprefix}}/actions[Action IDs in the SDK] - -*** Events and custom actions -**** link:{{navprefix}}/events-app-integration[Events and app interactions] -**** link:{{navprefix}}/custom-action-intro[Custom actions] -***** link:{{navprefix}}/customize-actions[Create and manage custom 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 worksheet] +*** link:{{navprefix}}/events-app-integration[Events and app interactions] +*** link:{{navprefix}}/custom-action-intro[Custom actions] +**** link:{{navprefix}}/customize-actions[Create and manage custom actions] ***** link:{{navprefix}}/custom-action-url[URL actions] ***** link:{{navprefix}}/custom-action-callback[Callback actions] ***** link:{{navprefix}}/custom-action-payload[Callback response payload] - -*** link:{{navprefix}}/in-app-navigation[Create dynamic menus and navigation] +**** 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 worksheet] *** 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}}/in-app-navigation[Create dynamic menus and navigation] ** link:{{navprefix}}/VisualEmbedSdk[Visual Embed SDK Reference] include::generated/typedoc/CustomSideNav.adoc[] *** Custom styles @@ -175,6 +176,7 @@ include::generated/typedoc/CustomSideNav.adoc[] *** 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] diff --git a/modules/ROOT/pages/custom-actions.adoc b/modules/ROOT/pages/custom-actions.adoc index 0f77a7504..7b867ef23 100644 --- a/modules/ROOT/pages/custom-actions.adoc +++ b/modules/ROOT/pages/custom-actions.adoc @@ -6,12 +6,12 @@ ThoughtSpot provides a set of standard menu commands and buttons, controlled via xref:embed-actions.adoc[actions]. -Custom actions add a new menu item to one of the following UI elements: +Custom actions add a new menu item to one of the following UI elements in an Answer or Liveboard visualization: * the primary menu bar -* the **More** menu image:./images/icon-more-10px.png[the more options menu] +* 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 + -+ + [NOTE] ==== The link:https://developers.thoughtspot.com/docs/Enumeration_EmbedEvent#_vizpointclick[VizPointClick HostEvent] behaves in the same way as a context menu custom action, but fires immediately on a click rather than from the right-click context menu. @@ -36,4 +36,3 @@ After a custom action has been created, there are several options for assigning Pass data and metadata from ThoughtSpot to the embedding page as an event. * xref:custom-actions-url.adoc[URL actions] + POST data directly to a specific web page or API endpoint destination. - diff --git a/modules/ROOT/pages/customize-actions-menu.adoc b/modules/ROOT/pages/customize-actions-menu.adoc index 067d162d2..89bb38f3a 100644 --- a/modules/ROOT/pages/customize-actions-menu.adoc +++ b/modules/ROOT/pages/customize-actions-menu.adoc @@ -24,30 +24,22 @@ The custom actions feature in ThoughtSpot allows users to push data to external To view the *Custom actions* page, go to *Develop* > *Customizations* > *Custom actions*. -The *Custom actions* page displays the **Create action** button, and the *Overview* and *Actions* tabs. +The following options are available on *Custom actions* page: +* *Overview* tab + +The default view which shows the possible locations for custom actions placement in the ThoughtSpot UI. +* *Actions* tab + +Lists the custom actions and allows you to edit and delete a custom action. +* **Create action** button to add a custom action. + +Developers can create a xref:custom-actions-url.adoc[URL action] to send data from an Answer or visualization to a target URL, or a xref:custom-actions-callback.adoc[callback action] to trigger a callback event to the parent application and then pushes the Answer or visualization data in a response payload. -=== Create action - -The *Create action* button allows you to create the following types of actions: - -//// -App actions:: -An xref:app-actions.adoc[app action] connects a ThoughtSpot instance to an external app and pushes data to a user's business workspace; for example, Slack. -//// - -Callback actions:: -A xref:custom-actions-callback.adoc[callback action] triggers a callback event to the parent application and then pushes the Answer or visualization data in a response payload. - -URL actions:: -A xref:custom-actions-url.adoc[URL action] sends data from an Answer or visualization to a specific URL in a `POST` request. +=== Global and local actions Developers or administrators can set a custom action as a global or local action. Global actions:: By default, a global action appears as a menu action in the **More** image:./images/icon-more-10px.png[the more options menu]menu on all visualizations. - + Authorized users can edit the position of a global action on a visualization or saved Answer by using the edit icon in the *Custom actions* panel. @@ -61,21 +53,20 @@ Any user with edit access to a visualization or worksheet can assign a local act User access control:: For granular access control, developers can restrict a custom action's availability to a specific group. The **Show advanced availability** setting in the custom action creation page allows you to associate a custom action to one or several groups. -[NOTE] -==== -In embedded ThoughtSpot instances, developers can also use the `visibleActions`, `hiddenActions`, and `disabledActions` properties to xref:embed-actions.adoc[show, hide, and disable a custom action]. -==== - +=== Custom action placement in the UI + +A custom action can be set as a primary button or as a menu item in the **More** image:./images/icon-more-10px.png[the more options menu] menu or the contextual menu on an Answer or visualization. -=== Overview +By default, the custom actions are added as menu items in the **More** options menu, unless they are explicitly set as *Primary* or *Context Menu* actions. If you want to send only a single row of data instead of the entire data set obtained from a visualization in a custom action payload, you can place the custom action in the contextual menu. -The *Overview* tab shows the possible locations for placing a custom action in the ThoughtSpot UI. You can add a custom action in the primary menu bar, or as a menu action in the **More** image:./images/icon-more-10px.png[the more options menu] menu or the contextual menu that appears when a user right-clicks on an Answer or Liveboard visualization. +[NOTE] +==== +You can only assign one custom action as a primary button on a visualization or Answer. -By default, ThoughtSpot adds all custom actions to the **More** image:./images/icon-more-10px.png[the more options menu] menu. If you want to send only a single row of data instead of the entire data set obtained from a visualization, you can place the custom action in the contextual menu. To change the position of an existing custom action, click the custom action icon image:./images/custom-action-icon.png[custom action icon] on a saved Answer page, and then click the edit icon next to the custom action in the *Custom action* panel. +// Outside of the custom actions framework, the SDK provides the `primaryAction` parameter, which allows setting a specific menu action from the system-defined actions list as a primary button on Liveboard visualizations. If a `primaryAction` is already assigned to a visualization, consider whether it is necessary to add your custom action as a primary button and how it might affect user experience. +==== -=== Actions +=== Disable or hide a custom action -The *Actions* tab lists the actions created on your ThoughtSpot instance. +To disable, show or hide a custom action, specify the custom action ID in the `disabledActions`, `visibleActions` or `hiddenActions` array. For more information, see xref:embed-actions.adoc[show, hide, and disable a custom action]. -* To edit an action, go to **More** image:./images/icon-more-10px.png[the more options menu] menu > **Edit**. -* To delete an action, click **More** image:./images/icon-more-10px.png[the more options menu] menu > **Delete**. diff --git a/modules/ROOT/pages/customize-text-strings.adoc b/modules/ROOT/pages/customize-text-strings.adoc index 9f71776cb..d9b70bc88 100644 --- a/modules/ROOT/pages/customize-text-strings.adoc +++ b/modules/ROOT/pages/customize-text-strings.adoc @@ -6,40 +6,216 @@ :page-pageid: customize-text :page-description: Customize text strings on ThoughtSpot application interface -You can customize text strings on the ThoughtSpot application interface via `customizations` object in the SDK. +You can customize text strings on the ThoughtSpot application interface using the `customizations` object in the SDK. -== Example +== Overview + +The customization framework in the Visual Embed SDK provides the following attributes and objects to override the text strings in the UI: + +* xref:customize-text-strings.adoc##stringIdOverrides[stringIDs] + +The `stringIDs` object allows overriding specific occurrences of the UI text. It overrides only the UI text mapped to the string ID specified in your code and can be used for precise, granular, and controlled overrides. + +* xref:customize-text-strings.adoc#stringIdUrlOverrides[stringIDsUrl] + +The `stringIDsUrl` object allows loading string IDs with text overrides from a JSON file hosted on a remote server. Before applying overrides via `stringIDsUrl`, you must add the domain name of the server that hosts the JSON file to CSP and CORS allowlists in ThoughtSpot. + +* xref:customize-text-strings.adoc#_override_common_keywords_and_text_using_strings[strings] + +The `strings` object overrides the UI text by matching the visible string. It replaces all occurrences of strings and substrings in the UI. If the overrides are not applied carefully, this method might introduce unintended changes to the UI text. + +You can use any of these attributes or a combination of all three methods to apply text overrides. + +If both `strings` and `stringIDs` properties are set to replace the same string, the text defined in the `stringIDs` override will take precedence. + +[IMPORTANT] +==== +* You can customize only the system-generated text in the UI. User-created text such as object names, titles, or description text are not customizable. +* The strings and substrings in the ThoughtSpot UI are case-sensitive. +* Before applying the overrides, sanitize the JSON file and your string ID definitions to ensure that there is no malicious script or code that can potentially break your implementation. +* Ensure that only ThoughtSpot users with administrator or developer privilege are allowed to use the `exposeTranslationIDs` attribute and access the internal string IDs. +==== + +[#stringIdOverrides] +== Using string IDs for overrides + +The `stringIDs` object overrides only the UI text mapped to the string ID specified in your code, therefore can be used for precise, granular, and controlled overrides with no unintended changes. + +For string ID overrides, the ID of the text string is required. To view the strings, you can use the `exposeTranslationIDs` attribute in the SDK. + +[#locateStringID] +=== Find the string IDs +To find string IDs for the UI text, use the Visual Embed Playground on your instance: + +. In the *Visual Embed Playground*, select the embed type and object. +. Set the `exposeTranslationIDs` attribute to `true` in the code panel. ++ +[source,JavaScript] +---- +exposeTranslationIDs: true +---- +. Click *Run*. ++ +When the page is rendered, the UI text is presented in the `` format. For example, the Liveboard button on the Home page appears as ``. + +. Note the string IDs of the text that you want to override. + ++ +[.widthAuto] +[.bordered] +image::./images/stringIds.png[String IDs] + + +=== Customize the UI text mapped to string IDs + +To customize the text mapped to a string ID, use the `stringIDs: { "": "" }` format: + +[source,JavaScript] +---- + customizations: { + content: { + stringIDs: { + // Change "Liveboards" on the Home page to "Dashboards" + "Facet.objectType.pinboards":"Dashboards", + // Change "Answers" on the Home page to "Reports" + "Facet.objectType.answers": "Reports", + // Change `Spotter` on the Spotter page to "dataAnalyzer" + "convassist.spotter.askSpotter": "dataAnalyzer" + }, + }, + } +---- + +Some string IDs in the ThoughtSpot UI include placeholders for dynamic content such as object names and variables, which will be substituted with actual names during runtime. + +For example, in the following strings, `{answerName}` and `{currentRowCount}` are placeholders for the Answer object name and row count respectively, which will be replaced with actual values. + +`'" + "a3.selectColumns": "Choose dimensions for '{answerName}'", + // String ID with variable text. Example, "" + "answer.table.footer.infiniteMsg": "Showing {currentRowCount} of {totalRowCount} rows" + }, + // Optionally, load additional stringID overrides from a JSON file hosted on a remote sever + stringIDsUrl: "https://cdn.jsdelivr.net/gh/thoughtspot/custom-content-demo/string-ids.json" + } } - } +}); ---- diff --git a/modules/ROOT/pages/data-report-v2-api.adoc b/modules/ROOT/pages/data-report-v2-api.adoc index 88fa664fa..42cbb14b7 100644 --- a/modules/ROOT/pages/data-report-v2-api.adoc +++ b/modules/ROOT/pages/data-report-v2-api.adoc @@ -195,6 +195,10 @@ To download a Liveboard report via `/api/rest/2.0/report/liveboard` API, you nee In the `POST` request body, specify the GUID or name of the Liveboard as `metadata_identifier`. To download reports with specific visualizations, add GUIDs or names of the visualizations in the `visualization_identifiers`. +To download visualizations from a specific Liveboard tab, specify the name or GUID of the tab in the `tab_identifiers` parameter. + +To download a personalized view of the Liveboard, specify the view name in the `personalised_view_identifier` attribute. + [IMPORTANT] ==== * The downloadable file returned in API response file is extensionless. You need to rename the downloaded file by typing in the relevant extension. @@ -203,7 +207,11 @@ In the `POST` request body, specify the GUID or name of the Liveboard as `metada ==== The default `file_format` is PDF. 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. -You can also download the report in PNG format. For PNG, you can include cover page and filters. +You can also download the report in PNG format. For PNG downloads, you can include cover page, filters, and define + +* `image_resolution` +* `image_scale` +* `include_header` ==== Example [source,cURL] diff --git a/modules/ROOT/pages/developer-playground.adoc b/modules/ROOT/pages/developer-playground.adoc index f21887e96..47bfa6898 100644 --- a/modules/ROOT/pages/developer-playground.adoc +++ b/modules/ROOT/pages/developer-playground.adoc @@ -435,7 +435,7 @@ For more information about the configuration settings and parameters, see the fo * xref:SearchViewConfig.adoc[SearchViewConfig] * xref:SageViewConfig.adoc[SageViewConfig] -* xref:BodylessConversationViewConfig.adoc[BodylessConversationViewConfig] +* xref:SpotterAgentEmbedViewConfig.adoc[SpotterAgentEmbedViewConfig] * xref:LiveboardViewConfig[LiveboardViewConfig] * xref:AppViewConfig.adoc[AppViewConfig] diff --git a/modules/ROOT/pages/embed-action-ref.adoc b/modules/ROOT/pages/embed-action-ref.adoc index d69ab41a2..49042ceb1 100644 --- a/modules/ROOT/pages/embed-action-ref.adoc +++ b/modules/ROOT/pages/embed-action-ref.adoc @@ -241,24 +241,24 @@ The following action IDs are available for the Spotter component: [options='header'] |===== |Action string in SDK| Required SDK library|Action label in the UI -|xref:Action.adoc#_previewdataspotter[`Action.PreviewDataSpotter`] | `ConversationEmbed` + +|xref:Action.adoc#_previewdataspotter[`Action.PreviewDataSpotter`] | `SpotterEmbed` + `AppEmbed` |*Preview data* action on the Spotter conversation panel. Shows the underlying data used for Spotter queries. -|xref:Action.adoc#_resetspotterchat[`Action.ResetSpotterChat`] |`ConversationEmbed` + +|xref:Action.adoc#_resetspotterchat[`Action.ResetSpotterChat`] |`SpotterEmbed` + `AppEmbed` | *Preview data* action on the Spotter conversation panel. Shows the underlying data used for Spotter queries. -|xref:Action.adoc#_editpreviousprompt[`Action.EditPreviousPrompt`] |`ConversationEmbed` + +|xref:Action.adoc#_editpreviousprompt[`Action.EditPreviousPrompt`] |`SpotterEmbed` + `AppEmbed` | The edit icon on the Spotter prompt panel. Allows editing the prompt sent to Spotter. -|xref:xref:Action.adoc#_deletepreviousprompt[`Action.DeletePreviousPrompt`] |`ConversationEmbed` + +|xref:xref:Action.adoc#_deletepreviousprompt[`Action.DeletePreviousPrompt`] |`SpotterEmbed` + `AppEmbed` | The delete icon on the Spotter prompt panel. Allows deleting the prompt sent to Spotter. -|xref:xref:Action.adoc#_spotterfeedback[`Action.SpotterFeedback`] |`ConversationEmbed` + +|xref:xref:Action.adoc#_spotterfeedback[`Action.SpotterFeedback`] |`SpotterEmbed` + `AppEmbed` | The Spotter feedback widget in the generated Answer. Allows sending feedback about the response received from Spotter. |===== -For information about the action IDs available for Answers generated from Spotter (`ConversationEmbed`), see xref:embed-action-ref#answer-actions[Answers]. +For information about the action IDs available for Answers generated from Spotter (`SpotterEmbed`), see xref:embed-action-ref#answer-actions[Answers]. [#answer-actions] == Answers @@ -268,38 +268,38 @@ The following actions are available on saved Answers and the Answers generated b [options='header'] |===== |Action string in SDK| Required SDK library|Action label in the UI -|xref:Action.adoc#_choosedatasources[`Action.ChooseDataSources`]| `ConversationEmbed` + +|xref:Action.adoc#_choosedatasources[`Action.ChooseDataSources`]| `SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `SearchBarEmbed` + `AppEmbed`|The *Choose sources* option in the Search page and Spotter conversation panel. + Allows selecting data sources to query data. + -|xref:Action.adoc#_addformula[`Action.AddFormula`]| `ConversationEmbed` + +|xref:Action.adoc#_addformula[`Action.AddFormula`]| `SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `SearchBarEmbed` + `AppEmbed`| *Create formula* option on the data panel of an Answer page + Allows adding formulas to a search query. + -|xref:Action.adoc#_addparameter[`Action.AddParameter`]|`ConversationEmbed` + +|xref:Action.adoc#_addparameter[`Action.AddParameter`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed`| *Add Parameters* option in the data panel on a Search page + Allows adding parameters to an Answer. -|xref:Action.adoc#_answerchartswitcher[`Action.AnswerChartSwitcher`]|`ConversationEmbed` + +|xref:Action.adoc#_answerchartswitcher[`Action.AnswerChartSwitcher`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` | Chart toggle icon + Allows switching to the table or chart mode. -|xref:Action.adoc#_edit[`Action.Edit`]| `ConversationEmbed` + +|xref:Action.adoc#_edit[`Action.Edit`]| `SpotterEmbed` + `AppEmbed` | *Edit* action on charts and tables generated from a Spotter query. Opens a table or chart in the edit mode. -|xref:Action.adoc#_pin[`Action.Pin`]| `ConversationEmbed` + +|xref:Action.adoc#_pin[`Action.Pin`]| `SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` | *Pin* action on the visualization generated from a Spotter query. Allows adding a visualization generated from Spotter to a Liveboard. -|xref:Action.adoc#_save[`Action.Save`]| `ConversationEmbed` + +|xref:Action.adoc#_save[`Action.Save`]| `SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` | *Save* action on the visualization generated from a Spotter query @@ -320,7 +320,7 @@ Allows generating SpotIQ analyses. Available as a primary button and contextual `AppEmbed`|*Share* + Allows you to share an Answer with another user or group. -|xref:Action.adoc#_querydetailsbuttons[`Action.QueryDetailsButtons`]| `ConversationEmbed` + +|xref:Action.adoc#_querydetailsbuttons[`Action.QueryDetailsButtons`]| `SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` @@ -329,7 +329,7 @@ a|The *Query visualizer* and *Query SQL* buttons in *Query details* on the Answe * The *Query visualizer* button displays the tables and filters used in a search query. + * The *Query SQL* button displays the SQL statements used in a search query to fetch data. + -|xref:Action.adoc#_download[`Action.Download`]|`ConversationEmbed` + +|xref:Action.adoc#_download[`Action.Download`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` a|*Download* + @@ -345,28 +345,28 @@ If you are using Visual Embed SDK version 1.21.0 or later to embed Liveboard, Se ** `Action.DownloadAsXlsx` + ** `Action.DownloadAsPng` -|xref:Action.adoc#_downloadascsv[`Action.DownloadAsCsv`]|`ConversationEmbed` + +|xref:Action.adoc#_downloadascsv[`Action.DownloadAsCsv`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` |*Download* > *CSV* + Downloads the answer data in the CSV file format. -|xref:Action.adoc#_downloadasxlsx[`Action.DownloadAsXLSX`]|`ConversationEmbed` + +|xref:Action.adoc#_downloadasxlsx[`Action.DownloadAsXLSX`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` | *Download* > *XLSX* + Downloads the answer data in the XLSX file format. -|xref:Action.adoc#_downloadaspdf[`Action.DownloadAsPdf`]|`ConversationEmbed` + +|xref:Action.adoc#_downloadaspdf[`Action.DownloadAsPdf`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` |*Download* > *PDF* + Downloads the answer data as a PDF file. Available only for tables. -|xref:Action.adoc#_downloadaspng[`Action.DownloadAsPng`]|`ConversationEmbed` + +|xref:Action.adoc#_downloadaspng[`Action.DownloadAsPng`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` |*Download* > *PNG* + Downloads the chart as a PNG file. Available only for charts. -|xref:Action.adoc#_showunderlyingdata[`Action.ShowUnderlyingData`]|`ConversationEmbed` + +|xref:Action.adoc#_showunderlyingdata[`Action.ShowUnderlyingData`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed`|*Show underlying data* + @@ -385,7 +385,7 @@ Allows creating a sync to send data to external business apps such as Slack, Sal `SearchEmbed` + `AppEmbed`| The *Manage pipelines* action in the **More** actions menu. + Allows managing data sync pipelines to external business apps set as sync destinations in ThoughtSpot. -|xref:Action.adoc#_exporttml[`Action.ExportTML`]|`ConversationEmbed` + +|xref:Action.adoc#_exporttml[`Action.ExportTML`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` | *Export TML* + @@ -405,24 +405,24 @@ The following actions are available in the contextual menu of an Answer: [options='header'] |===== |Action string in SDK| Required SDK library|Action label in the UI -|xref:Action.adoc#_drillexclude[`Action.DrillExclude`]|`ConversationEmbed` + +|xref:Action.adoc#_drillexclude[`Action.DrillExclude`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed`|*Exclude* + Allows you to exclude a specific data point when drilling down on an Answer. -|xref:Action.adoc#_drillinclude[`Action.DrillInclude`]|`ConversationEmbed` + +|xref:Action.adoc#_drillinclude[`Action.DrillInclude`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` |*Include* + Allows you to include a specific data point during drill down on an Answer. -|xref:Action.adoc#_drilldown[`Action.DrillDown`]|`ConversationEmbed` + +|xref:Action.adoc#_drilldown[`Action.DrillDown`]|`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed` |*Drill down* + Allows you to drill down the data for additional details and granular information. Available as a contextual menu action. -|xref:Action.adoc#_copytoclipboard[`Action.CopyToClipboard`] |`ConversationEmbed` + +|xref:Action.adoc#_copytoclipboard[`Action.CopyToClipboard`] |`SpotterEmbed` + `SageEmbed` + `SearchEmbed` + `AppEmbed`|*Copy to clipboard* + diff --git a/modules/ROOT/pages/embed-spotter.adoc b/modules/ROOT/pages/embed-spotter.adoc index 12d9f7f20..88c04cbb8 100644 --- a/modules/ROOT/pages/embed-spotter.adoc +++ b/modules/ROOT/pages/embed-spotter.adoc @@ -4,50 +4,41 @@ :page-title: Embed Spotter :page-pageid: embed-spotter -:page-description: You can use the ConversationEmbed SDK library to embed Conversational analytics experience in your application. +:page-description: You can use the SpotterEmbed SDK library to embed Conversational analytics experience in your application. -ThoughtSpot supports Natural Language Search queries and AI-generated Answers. With ThoughtSpot Spotter, this experience is further enhanced to a full conversational interface that users can interact with, ask follow-up questions, and get insights. +ThoughtSpot supports Natural Language Search queries and AI-generated Answers. With ThoughtSpot Spotter, this experience is further enhanced to provide a conversational interface for users to query data, ask follow-up questions, and get insights. Visual Embed SDK offers several options to seamlessly embed conversational analytics within your applications and customize the interface and experience as per your organization's branding guidelines. -To integrate Spotter capabilities into your application environment, the following components are available: +To integrate Spotter capabilities into other apps, ThoughtSpot provides the following components: -* `ConversationEmbed` + -Allows embedding the full Spotter interface with a conversation panel and body. -* `BodylessConversation` + -Allows integrating xref:spotter-in-custom-chatbot.adoc[Spotter capabilities into a chatbot]. +* To embed the full Spotter interface with a conversation panel that allows natural language text strings, data source selection, and interactions with AI generated Answers, use the `SpotterEmbed` component. + -Additionally, you can also use xref:spotter-apis.adoc[REST APIs to create a conversation session, ask follow-up questions, and generate Answers]. +* To integrate Spotter Agent capabilities in a chatbot, use the `SpotterAgentEmbed` component. + -This article describes how to embed Spotter with a conversation panel and body in your app. - -=== Spotter components - -The `ConversationEmbed` package adds the following components to your embedding application: - -* A conversation panel and prompt button to interact with Spotter. -* The data source selector that allows application users to select a data source for Spotter analysis. -* The *Preview data* button to allow users to preview the data source used for Spotter analysis. -* The *Reset* button to reset the ongoing conversation. +[NOTE] +==== +The `ConversationEmbed` and `BodylessConversation` components are deprecated and replaced with `SpotterEmbed` and `SpotterAgentEmbed` respectively in Visual Embed SDK v1.38.0 and later. +==== -After a conversation session is created, the interface shows the prompt panels, charts and tables, Spotter feedback widget, and menu actions to *Pin*, *Save*, *Modify*, or *Download* the result. +This article describes how to embed the Spotter interface using the `SpotterEmbed` component. For information about how to integrate Spotter Agent capabilities without body in a chatbot, see xref:spotter-in-custom-chatbot.adoc[Integrate Spotter into your chatbot]. == Before you begin Before you begin, check the following: * Spotter is enabled on your ThoughtSpot instance. -* Your environment has Visual Embed SDK v1.33.1 or later version. +* You have access to the latest version of the Visual Embed SDK or at least v1.33.1. == Import the SDK package -Import the `ConversationEmbed` SDK library to your application environment: +Import the `SpotterEmbed` SDK library to your application environment: **npm** [source,JavaScript] ---- import { - ConversationEmbed, + SpotterEmbed, AuthType, init, prefetch, @@ -60,7 +51,7 @@ from '@thoughtspot/visual-embed-sdk'; ----