Users and groups
To provide access to ThoughtSpot content or define privileges, you must add users and groups in ThoughtSpot. You can create user accounts and user groups in the ThoughtSpot UI or via REST API calls.
User creation and updateπ
You can create users and update user profiles using the REST API v2 user endpoints.
While you can delete users, it is preferable to deactivate a user, which maintains the userβs references within the system.
When configuring SAML SSO in ThoughtSpot UI, you can select the Automatically add SAML users to ThoughtSpot upon first authentication option, which will use the values in the SAML assertion to create a user if they do not already exist on ThoughtSpot. ThoughtSpot can also add users to groups sent within the SAML assertion. To enable and configure the SAML group attributes, contact your ThoughtSpot team.
By default, ThoughtSpot sends e-mail messages to a new user and enables onboarding workflows when they log in for the first time, even when you are embedding ThoughtSpot content. To alter this behavior at a system-wide level, you need to Customize the onboarding settings.
The user update API also allows setting onboarding experience values for an individual user. If you need to modify the default behavior beyond the available UI options, contact your ThoughtSpot team.
To specify whether an activation email is sent to a new user, set the trigger_activation_email parameter in the POST /api/rest/2.0/users/create request.
|
Note
|
ThoughtSpot supports local management of users. For initial development and testing purposes, you can create users in ThoughtSpot and manage their profiles locally. However, in large production environments, avoid creating local user profiles to reduce administration overhead. |
Required privilegesπ
To create, edit, or delete users, assign users to groups, transfer objects from one user to another, or activate, deactivate, or log out users, you need administrator privileges (ADMINISTRATION).
If Role-Based Access Control (RBAC) is enabled on your instance, the USER_ADMINISTRATION (Can manage users) privilege is required. On instances with Orgs, this privilege allows managing users only within the Org context of the API request. For more information, see Role-based access control.
User attributesπ
Note the following points about user attributes:
-
Username: The username must be unique. An API request to create a user with a username that already exists returns an error.
-
Account type: The
account_typeattribute indicates how the user was created and how the user authenticates. Valid values are:-
LOCAL_USER: A user created and authenticated locally in ThoughtSpot. This is the default account type. -
LDAP_USER: A user imported from an LDAP server. -
SAML_USER: A user authenticated through SAML SSO. -
OIDC_USER: A user authenticated through OpenID Connect (OIDC). -
REMOTE_USER: A user authenticated by an external system.When users are imported from an external server, such as an LDAP server or an IdP, ThoughtSpot assigns the account type automatically. For example, a user imported from an LDAP server is added as
LDAP_USER.
-
-
Visibility: The
visibilityattribute determines whether other users can share objects with the user. By default, users are set toSHARABLE, which allows other users and groups to share objects with them. To prevent other users from finding the user and sharing objects with them, setvisibilitytoNON_SHARABLE. In multi-tenant deployments, users are commonly set toNON_SHARABLE.
Password resetπ
After you reset a userβs password with the POST /api/rest/2.0/users/reset-password endpoint, you can log the user out of their active sessions by using the POST /api/rest/2.0/users/force-logout endpoint. The user must then log in again with the new password.
User migration to IAMv2π
ThoughtSpot is gradually migrating its users to Identity and Access Management v2 (IAMv2) to provide a more secure login and authentication experience through internal authentication with Okta. The following are some of the important points to note with this upgrade:
-
The
emailattribute is mandatory when creating a user in ThoughtSpot Okta. ThoughtSpot recommends that users provide a valid email address during user creation. -
You must set a password during user creation if you do not want to trigger an activation email.
-
The default value for
account_typewill beOIDC_USER.
Administrators can manage the user account status for all users. For IAMv2 users, the API response for the following APIs will also include SUSPENDED as a user state:
To create a user:
To update user details:
|
Note
|
Updating the username of an SSO user, If you rename an SSO user through the REST API and that user then logs in through the IdP:
To safely update the username of an SSO user:
Both updates must be complete before the userβs next SSO login. The order of the two steps can be reversed β you may update ThoughtSpot first and the IdP second β provided the user does not log in during the interval between the two changes. For SSO users, ThoughtSpot derives email address and display name directly from the IdP. Update these attributes in your IdP only. ThoughtSpot automatically reflects the new values when the user next logs in through SSO. Do not use the REST API or the Admin UI to update the email address or display name of an SSO user. For users who authenticate directly with ThoughtSpot (not through an external IdP), you can update username, email address, and display name using the REST API or Admin UI. No IdP coordination is required for local users. |
For more information, see the following pages:
User group creation and updateπ
Groups can be created via the REST API v2 group endpoints.
To create, edit, or delete groups, you need administrator privileges. If RBAC is enabled on your instance, the GROUP_ADMINISTRATION (Can manage groups) privilege is required. To assign Roles to a group or remove Roles from a group, you need both the GROUP_ADMINISTRATION and ROLE_ADMINISTRATION privileges.
The Group privileges are set directly on groups, either during group creation or via a group update API call.
Group hierarchyπ
ThoughtSpot supports hierarchical groups. You can create a parent group and add other groups to it as sub-groups. For example, you can create a parent group called Site and add your tenant groups to it. Sub-groups inherit the privileges of the parent group.
To add sub-groups to a group or remove sub-groups from it, use the POST /api/rest/2.0/groups/{group_identifier}/update endpoint. Removing a sub-group from a group removes only the association; it does not delete the sub-group from ThoughtSpot.
User association to groupsπ
You can add users to specific groups when creating a user or group via REST API endpoints. When you assign a user to a group, the user inherits the privileges and Roles assigned to that group.
To add users to an existing group or remove users from it, use the POST /api/rest/2.0/groups/{group_identifier}/update endpoint with the user_identifiers parameter and the ADD, REMOVE, or REPLACE operation. To update the groups of a single user, use the POST /api/rest/2.0/users/{user_identifier}/update endpoint with the group_identifiers parameter.
Removing a user from a group removes only the group association; it does not delete the user from ThoughtSpot. To delete a user, use the POST /api/rest/2.0/users/{user_identifier}/delete endpoint.
To get a list of users assigned to a group, use the POST /api/rest/2.0/groups/search endpoint.
Access control (sharing)π
Access to objects is determined by content shared directly to the user or the groups they belong to. It is easier to manage and audit sharing through groups rather than object sharing at the individual user level.
Users can share objects or modify sharing properties through the UI or via an API call to the POST /api/rest/2.0/security/metadata/share endpoint.
Note the following points about sharing objects via REST API:
-
You can share the following types of objects: Liveboards, visualizations, Answers, Models, Views, Connections, and Collections.
-
To share an object, you must have edit access to the object.
-
The
share_modeattribute can be set toREAD_ONLY(Can view),MODIFY(Can edit), orNO_ACCESS. Settingshare_modetoNO_ACCESSremoves any access previously granted to a user or group. -
To send a share notification to the users and groups with whom the object is shared, set
notify_on_sharetotrue. -
To make a shared Liveboard or Answer discoverable, set
has_lenient_discoverabilitytotrue.
To audit access, use the POST /api/rest/2.0/security/metadata/fetch-permissions endpoint to get the users and groups that have access to an object, or the POST /api/rest/2.0/security/principals/fetch-permissions endpoint to get the objects a user or group can access.
For more information and examples, see Access control and sharing.
Sharing a visualizationπ
Note the following points about sharing a visualization:
-
Sharing a visualization implicitly shares the entire Liveboard with the recipient.
-
The object permissions set for a shared visualization also apply to the Liveboard, unless they are overridden by another API request or in the UI.
-
If email notifications for object sharing are enabled, the recipient receives a notification with a link to the shared visualization. Although this link opens the shared visualization, the recipient can also access other visualizations on the Liveboard.
Sharing a Collectionπ
Collections support separate permissions for the Collection and for the objects within it. For more information, see Share a Collection.
Group privilegesπ
Each user group includes a set of privileges for its users. When a user is assigned to a group in ThoughtSpot, the default privileges associated with a group are assigned to its users. The group privileges allow users belonging to a group to perform specific operations and access workflows. If a user belongs to more than one group, they will have the highest level of privileges from all the groups they belong to.
|
Note
|
If a user group belongs to another user group, it inherits privileges from its parent group. |
ThoughtSpot administrators can programmatically assign the following types of privileges to a user group:
-
ADMINISTRATIONAllows users to perform the following functions:
-
Create, edit, and delete users and user groups
-
View and edit access to all data
-
Download a saved answer
-
-
DEVELOPERAllows users to perform the following functions:
-
Access Developer portal
-
Embed ThoughtSpot app or its content in an external application
-
Add custom menu options in the embedded Liveboards and visualizations
-
Re-brand the interface elements of the embedded ThoughtSpot content
-
-
USERDATAUPLOADINGAllows users to upload data to ThoughtSpot.
-
DATADOWNLOADINGAllows users to download ThoughtSpot data from search results and Liveboards.
-
DATAMANAGEMENTAllows users to create worksheets and views. To edit a worksheet or view created and shared by another user, the user must have edit permission to modify the object.
-
SHAREWITHALLAllows users to share objects with other users and user groups.
-
EXPERIMENTALFEATUREPRIVILEGEAllows access to the trial and experimental features that ThoughtSpot makes available to evaluating users and early adopters.
-
JOBSCHEDULINGAllows scheduling and editing Liveboard jobs.
-
RANALYSISAllows invoking R scripts to explore search answers and sharing custom scripts.
-
A3ANALYSISAllows users to generate and access SpotIQ analyses.
-
BYPASSRLSAllows access to the following operations:
-
Create, edit, or delete existing RLS rules
-
Enable or disable Bypass RLS on a worksheet
-
-
SYNCMANAGEMENTAllows setting up secure pipelines to external business apps and sync data using ThoughtSpot Sync.
|
Note
|
ThoughtSpot also has a default group called |
Rolesπ
If Role-Based Access Control (RBAC) is enabled on your instance, administrators can define role privileges and assign them to users via groups. Roles are always scoped to an Org; a role created in one Org cannot be assigned in another.
Role assignment to groups via REST APIπ
When creating or updating a group using the REST API v2 endpoints, use the role_identifiers parameter to assign one or more roles to the group. The parameter accepts an array of role GUIDs or role names. For more information, see:
-
POST /api/rest/2.0/groups/create: includerole_identifiersin the request body. -
POST /api/rest/2.0/groups/{group_identifier}/update: includerole_identifiersto add roles to an existing group.
|
Note
|
Roles must be available before they can be assigned. Use the |
For a complete list of available privileges and role categories, see Role-based access control.