From 78cfa07397877bc0805e2fb73c4b44579da8709a Mon Sep 17 00:00:00 2001 From: Prashant Patil <141843298+yinstardev@users.noreply.github.com> Date: Wed, 5 Nov 2025 16:16:44 +0530 Subject: [PATCH] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 9316 ++++++++++++------------------- 1 file changed, 3470 insertions(+), 5846 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 367af5c4..e94bee62 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -5,14 +5,6 @@ "version": "2.0" }, "x-roles": [ - { - "name": "10.13.0.cl", - "id": "10.13.0.cl", - "tags": [ - "10.13.0.cl" - ], - "description": "Roles for version 10.13.0.cl" - }, { "name": "10.4.0.cl", "id": "10.4.0.cl", @@ -141,14 +133,6 @@ ], "description": "Roles for version 9.5.0.cl" }, - { - "name": "10.14.0.cl", - "id": "10.14.0.cl", - "tags": [ - "10.14.0.cl" - ], - "description": "Roles for version 10.14.0.cl" - }, { "name": "9.7.0.cl", "id": "9.7.0.cl", @@ -160,13 +144,13 @@ ], "tags": [], "paths": { - "/api/rest/2.0/ai/agent/conversation/create": { + "/api/rest/2.0/ai/conversation/create": { "post": { - "operationId": "createAgentConversation", - "description": "Beta Version: 10.13.0.cl or later", + "operationId": "createConversation", + "description": "\nBeta Version: 10.4.0.cl or later\n\nCreates a Conversation object to start an AI-driven conversation based on a specific data model.\n\nRequires at least view access to the metadata object specified in the request.\n\n#### Usage guidelines\n\nThis API requires the `metadata_identifier` parameter to define the context for the conversation.\n\nYou can also specify the tokens to initiate the conversation as shown in this example:\n\n`\"tokens\": \"[tea],[sales],[type]\"`\n\nIf the API request is successful, ThoughtSpot returns the ID of the conversation.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.13.0.cl" + "10.4.0.cl" ], "requestBody": { "content": { @@ -174,26 +158,17 @@ "schema": { "type": "object", "properties": { - "metadata_context": { - "description": "Context for the conversation.", - "allOf": [ - { - "$ref": "#/components/schemas/ContextPayloadV2Input" - } - ] + "metadata_identifier": { + "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the conversation.", + "type": "string" }, - "conversation_settings": { - "description": "Conversation settings.", - "allOf": [ - { - "$ref": "#/components/schemas/ConversationSettingsInput" - } - ] + "tokens": { + "description": "Token string to set the context for the conversation. For example,`[sales],[item type],[state]`.", + "type": "string" } }, "required": [ - "metadata_context", - "conversation_settings" + "metadata_identifier" ] } } @@ -207,7 +182,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AgentConversation" + "$ref": "#/components/schemas/Conversation" } } } @@ -217,7 +192,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AgentConversation" + "$ref": "#/components/schemas/Conversation" } } } @@ -245,13 +220,13 @@ } } }, - "/api/rest/2.0/ai/conversation/create": { + "/api/rest/2.0/ai/analytical-questions": { "post": { - "operationId": "createConversation", - "description": "\nBeta Version: 10.4.0.cl or later\n\nCreates a Conversation object to start an AI-driven conversation based on a specific data model.\n\nRequires at least view access to the metadata object specified in the request.\n\n#### Usage guidelines\n\nThis API requires the `metadata_identifier` parameter to define the context for the conversation.\n\nYou can also specify the tokens to initiate the conversation as shown in this example:\n\n`\"tokens\": \"[tea],[sales],[type]\"`\n\nIf the API request is successful, ThoughtSpot returns the ID of the conversation.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "queryGetDecomposedQuery", + "description": "Beta Version: 10.7.0.cl or later", "tags": [ "AI", - "10.4.0.cl" + "10.7.0.cl" ], "requestBody": { "content": { @@ -259,18 +234,52 @@ "schema": { "type": "object", "properties": { - "metadata_identifier": { - "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the conversation.", - "type": "string" + "answerIds": { + "description": "List of answer unique identifiers (GUIDs) whose data will be used to guide the response.", + "type": "array", + "items": { + "type": "string" + } }, - "tokens": { - "description": "Token string to set the context for the conversation. For example,`[sales],[item type],[state]`.", + "content": { + "description": "User provided content like text data, csv data as a string message to provide context & potentially improve the quality of the response.", + "type": "array", + "items": { + "type": "string" + } + }, + "conversationId": { + "description": "Unique identifier to denote current conversation.", "type": "string" + }, + "liveboardIds": { + "description": "List of liveboard unique identifiers (GUIDs) whose data will be used to guide the response.", + "type": "array", + "items": { + "type": "string" + } + }, + "maxDecomposedQueries": { + "description": "Maximum number of decomposed queries that is allowed in the response, default = 5.", + "type": "integer", + "format": "int32" + }, + "nlsRequest": { + "description": "NLSRequest object containing user query & instructions.", + "allOf": [ + { + "$ref": "#/components/schemas/Input_eureka_NLSRequest" + } + ] + }, + "worksheetIds": { + "description": "List of worksheetIds to provide context for decomposing user query into analytical queries that can be run on them.", + "type": "array", + "items": { + "type": "string" + } } - }, - "required": [ - "metadata_identifier" - ] + } } } }, @@ -283,7 +292,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Conversation" + "$ref": "#/components/schemas/eureka_DecomposeQueryResponse" } } } @@ -293,7 +302,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Conversation" + "$ref": "#/components/schemas/eureka_DecomposeQueryResponse" } } } @@ -321,13 +330,13 @@ } } }, - "/api/rest/2.0/ai/data-source-suggestions": { + "/api/rest/2.0/ai/conversation/{conversation_identifier}/converse": { "post": { - "operationId": "getDataSourceSuggestions", - "description": "\nBeta Version: 10.13.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "sendMessage", + "description": "\nBeta Version: 10.4.0.cl or later\n\nAllows sending a follow-up message to an ongoing conversation within the context of the metadata model.\n\nRequires at least view access to the metadata object specified in the request.\n\n#### Usage guidelines\n\nThe API requires you to specify the `conversation_identifier` in the request path, and a `metadata_identifier` and `message` string in the request body.\n\nIf the API request is successful, ThoughtSpot returns the session ID, tokens used in the conversation, and visualization type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.13.0.cl" + "10.4.0.cl" ], "requestBody": { "content": { @@ -335,27 +344,45 @@ "schema": { "type": "object", "properties": { - "query": { - "description": "User query used to suggest data sources.", + "metadata_identifier": { + "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the conversation.", + "type": "string" + }, + "message": { + "description": "A message string with the follow-up question to continue the conversation.", "type": "string" } }, "required": [ - "query" + "metadata_identifier", + "message" ] } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "conversation_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier of the conversation." + } + ], "responses": { "200": { "description": "Common successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/eureka_DataSourceSuggestionResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseMessage" + } } } } @@ -365,7 +392,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/eureka_DataSourceSuggestionResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseMessage" + } } } } @@ -393,13 +423,13 @@ } } }, - "/api/rest/2.0/ai/relevant-questions/": { + "/api/rest/2.0/ai/answer/create": { "post": { - "operationId": "getRelevantQuestions", - "description": "\nBeta Version: 10.13.0.cl or later\n\nBreaks down a user-submitted query into a series of analytical sub-questions using relevant contextual metadata.\n\nTo use this API, the user must have at least view-level access to the referenced metadata objects.\n\n#### Usage guidelines\n\nTo accurately generate relevant questions, the request must include at least one of the following metadata identifiers within `metadata_context` : `conversation_identifier`, `answer_identifiers`, `liveboard_identifiers`, or `data_source_identifiers`.\n\nYou can further enhance the quality and precision of breakdown by providing additional `ai_context` such as:\n\n- `content`: User provided content like text data, csv data as a string message to provide context & potentially improve the quality of the response.\n- `instructions`: User specific text instructions sent to AI system for processing the query.\n\nAdditional optional parameters include:\n\n- `limit_relevant_questions`: Controls the maximum number of relevant questions returned. Defaults to 5 if not specified.\n- `bypass_cache`: If set to true, forces fresh computation instead of returning cached results.\n\nIf the API request is successful, ThoughtSpot returns a list of relevant analytical queries, each aligned with the user's original question. Each returned question includes the query string, along with the identifier and name of the corresponding data source.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", + "operationId": "singleAnswer", + "description": "\nBeta Version: 10.4.0.cl or later\n\nProcesses a natural language query and returns an AI-generated response based on a specified data model.\n\nRequires at least view access to the metadata object specified in the request.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.13.0.cl" + "10.4.0.cl" ], "requestBody": { "content": { @@ -407,40 +437,18 @@ "schema": { "type": "object", "properties": { - "metadata_context": { - "description": "metadata for the query to enable generation of relevant sub-questions; at least one context identifier is required.", - "allOf": [ - { - "$ref": "#/components/schemas/MetadataContext" - } - ] - }, - "limit_relevant_questions": { - "description": "Maximum number of relevant questions that is allowed in the response, default = 5.", - "type": "integer", - "format": "int32" - }, - "bypass_cache": { - "description": "If true, results are not returned from cache & calculated every time.", - "type": "boolean", - "nullable": true - }, "query": { - "description": "A user query that requires breaking down into smaller, more manageable analytical questions to facilitate better understanding and analysis.", + "description": "A natural language query string to generate the Answer.", "type": "string" }, - "ai_context": { - "description": "Additional context to guide the response.", - "allOf": [ - { - "$ref": "#/components/schemas/AIContext" - } - ] + "metadata_identifier": { + "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the query.", + "type": "string" } }, "required": [ - "metadata_context", - "query" + "query", + "metadata_identifier" ] } } @@ -454,7 +462,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/eureka_GetRelevantQuestionsResponse" + "$ref": "#/components/schemas/ResponseMessage" } } } @@ -464,7 +472,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/eureka_GetRelevantQuestionsResponse" + "$ref": "#/components/schemas/ResponseMessage" } } } @@ -492,96 +500,48 @@ } } }, - "/api/rest/2.0/ai/analytical-questions": { - "post": { - "operationId": "queryGetDecomposedQuery", - "description": "Beta Version: 10.7.0.cl or later", - "deprecated": true, + "/api/rest/2.0/auth/session/user": { + "get": { + "operationId": "getCurrentUserInfo", + "description": "\n Version: 9.0.0.cl or later\n\nRetrieves details of the current user session for the token provided in the request header.\n\nAny ThoughtSpot user can access this endpoint and send an API request. The data returned in the API response varies according to user's privilege and object access permissions.\n\n\n\n#### Endpoint URL\n", "tags": [ - "AI", - "10.7.0.cl" + "Authentication", + "9.0.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "answerIds": { - "description": "List of answer unique identifiers (GUIDs) whose data will be used to guide the response.", - "type": "array", - "items": { - "type": "string" - } - }, - "content": { - "description": "User provided content like text data, csv data as a string message to provide context & potentially improve the quality of the response.", - "type": "array", - "items": { - "type": "string" - } - }, - "conversationId": { - "description": "Unique identifier to denote current conversation.", - "type": "string" - }, - "liveboardIds": { - "description": "List of liveboard unique identifiers (GUIDs) whose data will be used to guide the response.", - "type": "array", - "items": { - "type": "string" - } - }, - "maxDecomposedQueries": { - "description": "Maximum number of decomposed queries that is allowed in the response, default = 5.", - "type": "integer", - "format": "int32" - }, - "nlsRequest": { - "description": "NLSRequest object containing user query & instructions.", - "allOf": [ - { - "$ref": "#/components/schemas/Input_eureka_NLSRequest" - } - ] - }, - "worksheetIds": { - "description": "List of worksheetIds to provide context for decomposing user query into analytical queries that can be run on them.", - "type": "array", - "items": { - "type": "string" - } - } + "parameters": [], + "responses": { + "200": { + "description": "Fetch current session user detail successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" } } } }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Common successful response", + "400": { + "description": "Invalid request.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/eureka_DecomposeQueryResponse" + "$ref": "#/components/schemas/ErrorResponse" } } } }, - "201": { - "description": "Common error response", + "401": { + "description": "Unauthorized access.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/eureka_DecomposeQueryResponse" + "$ref": "#/components/schemas/ErrorResponse" } } } }, - "400": { - "description": "Operation failed", + "403": { + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -591,7 +551,7 @@ } }, "500": { - "description": "Operation failed", + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -603,70 +563,48 @@ } } }, - "/api/rest/2.0/ai/agent/{conversation_identifier}/converse": { - "post": { - "operationId": "sendAgentMessage", - "description": "\nBeta Version: 10.13.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/auth/session/token": { + "get": { + "operationId": "getCurrentUserToken", + "description": "\n Version: 9.4.0.cl or later\n\nRetrieves details of the current session token for the bearer token provided in the request header.\n\nThis API endpoint does not create a new token. Instead, it returns details about the token, including the token string, creation time, expiration time, and the associated user.\n\nUse this endpoint to introspect your current session token, debug authentication issues, or when a frontend application needs session token details.\n\nAny ThoughtSpot user with a valid bearer token can access this endpoint and send an API request\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "AI", - "10.13.0.cl" + "Authentication", + "9.4.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "messages": { - "description": "messages to be sent to the agent", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "messages" - ] + "parameters": [], + "responses": { + "200": { + "description": "Fetching token for current user successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetTokenResponse" + } } } }, - "required": true - }, - "parameters": [ - { - "in": "path", - "name": "conversation_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique identifier for the conversation (used to track context)" - } - ], - "responses": { - "200": { - "description": "Common successful response", + "400": { + "description": "Invalid request.", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/ErrorResponse" } } } }, - "201": { - "description": "Common error response", + "401": { + "description": "Unauthorized access.", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/ErrorResponse" } } } }, - "400": { - "description": "Operation failed", + "403": { + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -676,7 +614,7 @@ } }, "500": { - "description": "Operation failed", + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -688,13 +626,13 @@ } } }, - "/api/rest/2.0/ai/agent/converse/sse": { + "/api/rest/2.0/auth/token/custom": { "post": { - "operationId": "sendAgentMessageStreaming", - "description": "\nBeta Version: 10.13.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nAdditionally, user can specify what tool can be included `conversation_settings` parameter, which supports:\n- `enable_contextual_change_analysis` (default: false)\n- `enable_natural_language_answer_generation` (default: true)\n- `enable_reasoning` (default: false)\n\nIf the request is valid, the API returns a stream of messages in real time, including:\n- `ack`: confirms receipt of the request\n- `text / text-chunk`: content chunks, optionally formatted (e.g., markdown)\n- `answer`: the final structured response with metadata and analytics\n- `error`: if a failure occurs\n- `notification`: notification messages for operation being performed\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n> * The streaming protocol uses Server-Sent Events (SSE)\n\n\n\n#### Endpoint URL\n", + "operationId": "getCustomAccessToken", + "description": "\n Version: 10.4.0.cl or later\n\nGets an authentication token with custom rules and security attributes and creates a full session in ThoughtSpot for a given user. By default, the token obtained from ThoughtSpot remains valid for 5 mins.\n\nTo add a new user and assign privileges during auto creation, you need `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege and edit access to the data source is required.\n\nTo assign security attributes with filter rules and Parameters to the JWT token, you'll need administrator privileges and edit access to the data source (Worksheet or Model). If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege and edit access to the data source is required.\n\n#### Usage guidelines\n\nYou can generate the token for a user by providing a `username` and `password`, or by using the cluster’s `secret_key`.\n\nTo generate a `secret_key` on your cluster, the administrator must enable [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable) in the **Develop** > **Customizations** > **Security Settings** page.\n\n**Note**: When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n\nIf Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\n##### Attribute-Based Access Control (ABAC) with tokens\n\nTo implement Attribute-Based Access Control (ABAC) and assign security entitlements to users during session creation, you can generate a token with custom filtering rules and Parameters in the `filter_rules` and `parameter_values` array respectively. These attributes can be configured to persist on a specific set of objects for user sessions initiated using the token. Once defined, the rules are added to the user's `access_control_properties` object, after which all sessions will use the persisted values.\n\nSpecify the object type as `LOGICAL_TABLE`. The `LIVEBOARD` and `ANSWER` object types are not supported.\n\nFor more information, see [ABAC via tokens Documentation](https://developers.thoughtspot.com/docs/api-authv2#_get_tokens_with_custom_rules_and_filter_conditions).\n\n##### Just-in-time provisioning\n\nFor just-in-time user creation and provisioning, define the following attributes:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `groups`\n\nSet `auto_create` to `true` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true` in the API request, the user properties such as the display name, email, Org and group assignment will not be updated with new values.\n\nFor more information, see [Just-in-time provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning).\n\n##### Important point to note\nAll options in the token creation APIs that define access to the content in ThoughtSpot will do so during the token creation and not when the token is being used for authentication. For example, `auto_create:true` will create the user when the authentication token is created. Persist options such as `APPEND`, `REPLACE`, `RESET` will persist security parameters on the user profile when the token is created, while Persist option `NONE` will not persist anything but will be honoured in the session.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "AI", - "10.13.0.cl" + "Authentication", + "10.4.0.cl" ], "requestBody": { "content": { @@ -702,21 +640,86 @@ "schema": { "type": "object", "properties": { - "conversation_identifier": { - "description": "Unique identifier for the conversation (used to track context)", + "username": { + "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", + "type": "string" + }, + "password": { + "description": "Password of the user account", + "default": "", + "type": "string" + }, + "secret_key": { + "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", + "default": "", + "type": "string" + }, + "validity_time_in_sec": { + "description": "Token validity duration in seconds", + "default": 300, + "type": "integer", + "format": "int32" + }, + "org_identifier": { + "description": "ID or name of the Org context to log in to. If the Org ID or name is not specified but a secret key is provided, the user will be logged into the Org associated with the secret key. If neither the Org ID/name nor the secret key is provided, the user will be logged into the Org context from their previous login session.", "type": "string" }, - "messages": { - "description": "messages to be sent to the agent", + "persist_option": { + "description": "Indicates whether the specified attributes should be persisted or not.", + "type": "string", + "enum": [ + "REPLACE", + "APPEND", + "NONE", + "RESET" + ] + }, + "filter_rules": { + "description": "Filter rules.", "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/FilterRules" + } + }, + "parameter_values": { + "description": "Parameter values.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ParameterValues" + } + }, + "objects": { + "description": "Objects on which the filter rules and parameters values should be applied to", + "type": "array", + "items": { + "$ref": "#/components/schemas/TokenAccessScopeObject" + } + }, + "email": { + "description": "(just-in-time (JIT) provisioning)Email address of the user. Specify this attribute when creating a new user.", + "type": "string" + }, + "display_name": { + "description": "(just-in-time (JIT) provisioning) Indicates display name of the user. Specify this attribute when creating a new user.", + "type": "string" + }, + "groups": { + "description": "(just-in-time (JIT) provisioning) ID or name of the groups to which the newly created user belongs. Specify this attribute when creating a new user.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Group_Object" } + }, + "auto_create": { + "description": " Creates a new user if the specified username does not exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required.
Version: 10.5.0.cl or later", + "default": true, + "type": "boolean", + "nullable": true } }, "required": [ - "conversation_identifier", - "messages" + "username", + "persist_option" ] } } @@ -726,27 +729,37 @@ "parameters": [], "responses": { "200": { - "description": "Common successful response", + "description": "ABAC token creation was successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SendAgentMessageResponse" + "$ref": "#/components/schemas/AccessToken" } } } }, - "201": { - "description": "Common error response", + "400": { + "description": "Invalid request. This could be due to missing or incorrect parameters.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SendAgentMessageResponse" + "$ref": "#/components/schemas/ErrorResponse" } } } }, - "400": { - "description": "Operation failed", + "401": { + "description": "Unauthorized access. The request could not be authenticated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access. The user does not have permission to access this resource.", "content": { "application/json": { "schema": { @@ -756,7 +769,7 @@ } }, "500": { - "description": "Operation failed", + "description": "An unexpected error occurred on the server.", "content": { "application/json": { "schema": { @@ -765,16 +778,17 @@ } } } - } + }, + "security": [] } }, - "/api/rest/2.0/ai/conversation/{conversation_identifier}/converse": { + "/api/rest/2.0/auth/token/full": { "post": { - "operationId": "sendMessage", - "description": "\nBeta Version: 10.4.0.cl or later\n\nAllows sending a follow-up message to an ongoing conversation within the context of the metadata model.\n\nRequires at least view access to the metadata object specified in the request.\n\n#### Usage guidelines\n\nThe API requires you to specify the `conversation_identifier` in the request path, and a `metadata_identifier` and `message` string in the request body.\n\nIf the API request is successful, ThoughtSpot returns the session ID, tokens used in the conversation, and visualization type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "getFullAccessToken", + "description": "\n Version: 9.0.0.cl or later\n\nGets an authentication token and creates a full session in ThoughtSpot for a given user. By default, the token obtained from ThoughtSpot remains valid for 5 mins.\n\nYou can generate the token for a user by providing a `username` and `password`, or by using the cluster’s `secret_key` (for [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable)).\n\nTo generate a `secret_key` on your cluster, the administrator must enable **Trusted authentication** in the **Develop** > **Customizations** > **Security Settings** page. For more information, see [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable).\n\n**Note**: When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n\nIf Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\n#### Just-in-time provisioning\n\nFor just-in-time user creation and provisioning, define the following attributes:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `group_identifiers`\n\nSet `auto_create` to `True` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true`, the API call will update user properties like display name, email and group assignment.\n\nFor more information, see [Just-in-time provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning).\n\nTo add a new user and assign privileges, you need `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege is required.\n\n#### Important point to note\nAll options in the token creation APIs changing the content in ThoughtSpot will do so during the token creation and not when the token is being used for authentication. For example, `auto_create:true` will create the user when the authentication token is created.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "AI", - "10.4.0.cl" + "Authentication", + "9.0.0.cl" ], "requestBody": { "content": { @@ -782,64 +796,85 @@ "schema": { "type": "object", "properties": { - "metadata_identifier": { - "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the conversation.", + "username": { + "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", "type": "string" }, - "message": { - "description": "A message string with the follow-up question to continue the conversation.", + "password": { + "description": "Password of the user account", + "default": "", + "type": "string" + }, + "secret_key": { + "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", + "default": "", + "type": "string" + }, + "validity_time_in_sec": { + "description": "Token validity duration in seconds", + "default": 300, + "type": "integer", + "format": "int32" + }, + "org_id": { + "description": "ID of the Org context to log in to. If the Org ID is not specified and secret key is provided then user will be logged into the org corresponding to the secret key, and if secret key is not provided then user will be logged in to the Org context of their previous login session.", + "type": "integer", + "format": "int32" + }, + "email": { + "description": "Email address of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", + "type": "string" + }, + "display_name": { + "description": "Indicates display name of the user. Use this parameter to provision a user just-in-time (JIT).", "type": "string" + }, + "auto_create": { + "description": " Creates a new user if the specified username does not already exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. ", + "default": false, + "type": "boolean", + "nullable": true + }, + "group_identifiers": { + "description": "ID or name of the groups to which the newly created user belongs. Use this parameter to provision a user just-in-time (JIT).", + "type": "array", + "items": { + "type": "string" + } } }, "required": [ - "metadata_identifier", - "message" + "username" ] } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "conversation_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique identifier of the conversation." - } - ], + "parameters": [], "responses": { "200": { - "description": "Common successful response", + "description": "Bearer auth token creation successful.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResponseMessage" - } + "$ref": "#/components/schemas/Token" } } } }, - "201": { - "description": "Common error response", + "400": { + "description": "Invalid request.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResponseMessage" - } + "$ref": "#/components/schemas/ErrorResponse" } } } }, - "400": { - "description": "Operation failed", + "401": { + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -848,8 +883,8 @@ } } }, - "500": { - "description": "Operation failed", + "403": { + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -857,17 +892,28 @@ } } } - } - } - } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [] + } }, - "/api/rest/2.0/ai/answer/create": { + "/api/rest/2.0/auth/token/object": { "post": { - "operationId": "singleAnswer", - "description": "\nBeta Version: 10.4.0.cl or later\n\nProcesses a natural language query and returns an AI-generated response based on a specified data model.\n\nRequires at least view access to the metadata object specified in the request.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "getObjectAccessToken", + "description": "\n Version: 9.0.0.cl or later\n\nGets an authentication token that provides access to a specific metadata object. By default, the token obtained from ThoughtSpot remains valid for 5 mins.\n\nYou can generate the token for a user by providing a `username` and `password`, or by using the cluster’s `secret key` (for [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable)).\n\nTo generate a `secret_key` on your cluster, the administrator must enable **Trusted authentication** in the **Develop** > **Customizations** > **Security Settings** page.\n\n**Note**: When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n\nIf Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\n#### Just-in-time provisioning\n\nFor just-in-time user creation and provisioning, define the following attributes:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `group_identifiers`\n\nSet `auto_create` to `True` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true`, the API call will update user properties like display name, email and group assignment.\n\nFor more information, see [Just-in-time provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning).\n\nTo add a new user and assign privileges, you need `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege is required.\n\n#### Important point to note\nAll options in the token creation APIs changing the content in ThoughtSpot will do so during the token creation and not when the token is being used for authentication. For example, `auto_create:true` will create the user when the authentication token is created.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "AI", - "10.4.0.cl" + "Authentication", + "9.0.0.cl" ], "requestBody": { "content": { @@ -875,18 +921,59 @@ "schema": { "type": "object", "properties": { - "query": { - "description": "A natural language query string to generate the Answer.", + "username": { + "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", "type": "string" }, - "metadata_identifier": { - "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the query.", + "object_id": { + "description": "GUID of the ThoughtSpot metadata object that the user can access. The bearer will only have access to the object specified in the API request.", "type": "string" + }, + "password": { + "description": "Password of the user account", + "default": "", + "type": "string" + }, + "secret_key": { + "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", + "default": "", + "type": "string" + }, + "validity_time_in_sec": { + "description": "Token validity duration in seconds", + "default": 300, + "type": "integer", + "format": "int32" + }, + "org_id": { + "description": "ID of the Org context to log in to. If the Org ID is not specified and secret key is provided then user will be logged into the org corresponding to the secret key, and if secret key is not provided then user will be logged in to the Org context of their previous login session.", + "type": "integer", + "format": "int32" + }, + "email": { + "description": "Email address of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", + "type": "string" + }, + "display_name": { + "description": "Display name of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", + "type": "string" + }, + "auto_create": { + "description": " Creates a new user if the specified username does not exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. ", + "default": false, + "type": "boolean", + "nullable": true + }, + "group_identifiers": { + "description": "Unique ID or name of the groups to which you want to assign the new user. You can specify this attribute to dynamically assign privileges during just-in-time (JIT) provisioning.", + "type": "array", + "items": { + "type": "string" + } } }, "required": [ - "query", - "metadata_identifier" + "username" ] } } @@ -896,27 +983,37 @@ "parameters": [], "responses": { "200": { - "description": "Common successful response", + "description": "Bearer auth token creation successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResponseMessage" + "$ref": "#/components/schemas/Token" } } } }, - "201": { - "description": "Common error response", + "400": { + "description": "Invalid request.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResponseMessage" + "$ref": "#/components/schemas/ErrorResponse" } } } }, - "400": { - "description": "Operation failed", + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -926,7 +1023,7 @@ } }, "500": { - "description": "Operation failed", + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -935,29 +1032,53 @@ } } } - } + }, + "security": [] } }, - "/api/rest/2.0/auth/session/user": { - "get": { - "operationId": "getCurrentUserInfo", - "description": "\n Version: 9.0.0.cl or later\n\nRetrieves details of the current user session for the token provided in the request header.\n\nAny ThoughtSpot user can access this endpoint and send an API request. The data returned in the API response varies according to user's privilege and object access permissions.\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/auth/session/login": { + "post": { + "operationId": "login", + "description": "\n Version: 9.0.0.cl or later\n\nCreates a login session for a ThoughtSpot user with Basic authentication.\n\nIn Basic authentication method, REST clients log in to ThoughtSpot using `username` and `password` attributes. On a multi-tenant cluster with Orgs, users can pass the ID of the Org in the API request to log in to a specific Org context.\n\n**Note**: If Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. Contact ThoughtSpot Support for assistance.\n\nA successful login returns a session cookie that can be used in your subsequent API requests.\n\n\n\n#### Endpoint URL\n", "tags": [ "Authentication", "9.0.0.cl" ], - "parameters": [], - "responses": { - "200": { - "description": "Fetch current session user detail successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/User" + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "description": "Username of the ThoughtSpot user", + "type": "string" + }, + "password": { + "description": "Password of the user account", + "type": "string" + }, + "org_identifier": { + "description": "ID of the Org context to log in to. If Org ID is not specified, the user will be logged in to the Org context of their previous login session.", + "type": "string" + }, + "remember_me": { + "description": "A flag to remember the user session. When set to true, a session cookie is created and used in subsequent API requests.", + "default": false, + "type": "boolean", + "nullable": true + } } } } }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "User login successful." + }, "400": { "description": "Invalid request.", "content": { @@ -1001,26 +1122,93 @@ } } }, - "/api/rest/2.0/auth/session/token": { - "get": { - "operationId": "getCurrentUserToken", - "description": "\n Version: 9.4.0.cl or later\n\nRetrieves details of the current session token for the bearer token provided in the request header.\n\nThis API endpoint does not create a new token. Instead, it returns details about the token, including the token string, creation time, expiration time, and the associated user.\n\nUse this endpoint to introspect your current session token, debug authentication issues, or when a frontend application needs session token details.\n\nAny ThoughtSpot user with a valid bearer token can access this endpoint and send an API request\n\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/auth/session/logout": { + "post": { + "operationId": "logout", + "description": "\n Version: 9.0.0.cl or later\n\n\nLogs out a user from their current session.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Authentication", - "9.4.0.cl" + "9.0.0.cl" ], "parameters": [], "responses": { - "200": { - "description": "Fetching token for current user successful.", + "204": { + "description": "User logout successful." + }, + "400": { + "description": "Invalid request.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetTokenResponse" + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" } } } }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/auth/token/revoke": { + "post": { + "operationId": "revokeToken", + "description": "\n Version: 9.0.0.cl or later\n\n\nRevokes the authentication token issued for current user session.\n\nThe token of your current session expires when you make a call to the `/api/rest/2.0/auth/token/revoke` endpoint.\nthe users will not be able to access ThoughtSpot objects until a new token is obtained.\n\nTo restart your session, request for a new token from ThoughtSpot. See [Get Full Access Token](#/http/api-endpoints/authentication/get-full-access-token).\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Authentication", + "9.0.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "user_identifier": { + "type": "string" + }, + "token": { + "type": "string" + } + } + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Token successfully revoked." + }, "400": { "description": "Invalid request.", "content": { @@ -1064,13 +1252,13 @@ } } }, - "/api/rest/2.0/auth/token/custom": { + "/api/rest/2.0/auth/token/validate": { "post": { - "operationId": "getCustomAccessToken", - "description": "\n Version: 10.4.0.cl or later\n\nGets an authentication token with custom rules and security attributes and creates a full session in ThoughtSpot for a given user. By default, the token obtained from ThoughtSpot remains valid for 5 mins.\n\nTo add a new user and assign privileges during auto creation, you need `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege and edit access to the data source is required.\n\nTo assign security attributes with filter rules and Parameters to the JWT token, you'll need administrator privileges and edit access to the data source (Worksheet or Model). If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege and edit access to the data source is required.\n\n#### Usage guidelines\n\nYou can generate the token for a user by providing a `username` and `password`, or by using the cluster’s `secret_key`.\n\nTo generate a `secret_key` on your cluster, the administrator must enable [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable) in the **Develop** > **Customizations** > **Security Settings** page.\n\n**Note**: When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n\nIf Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\n##### Attribute-Based Access Control (ABAC) with tokens\n\nTo implement Attribute-Based Access Control (ABAC) and assign security entitlements to users during session creation, you can generate a token with custom filtering rules and Parameters in the `filter_rules` and `parameter_values` array respectively. These attributes can be configured to persist on a specific set of objects for user sessions initiated using the token. Once defined, the rules are added to the user's `access_control_properties` object, after which all sessions will use the persisted values.\n\nSpecify the object type as `LOGICAL_TABLE`. \n\nFor more information, see [ABAC via tokens Documentation](https://developers.thoughtspot.com/docs/api-authv2#_get_tokens_with_custom_rules_and_filter_conditions).\n\n##### Just-in-time provisioning\n\nFor just-in-time user creation and provisioning, define the following attributes:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `groups`\n\nSet `auto_create` to `true` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true` in the API request, the user properties such as the display name, email, Org and group assignment will not be updated with new values. If `auto_create` is set to `true`, it won't create formula variables and hence won't be applicable for `variable_values`.\n\nFor more information, see [Just-in-time provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning).\n\n##### Important point to note\nAll options in the token creation APIs that define access to the content in ThoughtSpot will do so during the token creation and not when the token is being used for authentication. For example, `auto_create:true` will create the user when the authentication token is created. Persist options such as `APPEND`, `REPLACE`, `RESET` will persist security parameters on the user profile when the token is created, while Persist option `NONE` will not persist anything but will be honoured in the session.\n\n##### Formula Variables\nBefore using variables_values, variables must be created using Create Variable API with type as Formula_Variable (/api/rest/2.0/template/variables/create)\nThe persist_option RESET and NONE cannot be used when variable_values are provided in the request.\nIf you are working with variable_values, you must use other (APPEND, REPLACE) supported modes.\nIf you want to use RESET or NONE, do not pass any variable_values. In such cases, variable_values will remain unaffected.\nWhen using object_id with variable_values, models are supported. \n\n\n\n#### Endpoint URL\n", + "operationId": "validateToken", + "description": "\n Version: 9.12.0.cl or later\n\n\nValidates the authentication token specified in the API request.\n\nIf your token is not valid, [Get a new token](#/http/api-endpoints/authentication/get-full-access-token).\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Authentication", - "10.4.0.cl" + "9.12.0.cl" ], "requestBody": { "content": { @@ -1078,86 +1266,12 @@ "schema": { "type": "object", "properties": { - "username": { - "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", - "type": "string" - }, - "password": { - "description": "Password of the user account", - "default": "", - "type": "string" - }, - "secret_key": { - "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", - "default": "", + "token": { "type": "string" - }, - "validity_time_in_sec": { - "description": "Token validity duration in seconds", - "default": 300, - "type": "integer", - "format": "int32" - }, - "org_identifier": { - "description": "ID or name of the Org context to log in to. If the Org ID or name is not specified but a secret key is provided, the user will be logged into the Org associated with the secret key. If neither the Org ID/name nor the secret key is provided, the user will be logged into the Org context from their previous login session.", - "type": "string" - }, - "persist_option": { - "description": "Indicates whether the specified attributes should be persisted or not.", - "type": "string", - "enum": [ - "REPLACE", - "APPEND", - "NONE", - "RESET" - ] - }, - "filter_rules": { - "description": "Filter rules.", - "type": "array", - "items": { - "$ref": "#/components/schemas/FilterRules" - } - }, - "parameter_values": { - "description": "Parameter values.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ParameterValues" - } - }, - "objects": { - "description": "Objects on which the filter rules and parameters values should be applied to", - "type": "array", - "items": { - "$ref": "#/components/schemas/TokenAccessScopeObject" - } - }, - "email": { - "description": "(just-in-time (JIT) provisioning)Email address of the user. Specify this attribute when creating a new user.", - "type": "string" - }, - "display_name": { - "description": "(just-in-time (JIT) provisioning) Indicates display name of the user. Specify this attribute when creating a new user.", - "type": "string" - }, - "groups": { - "description": "(just-in-time (JIT) provisioning) ID or name of the groups to which the newly created user belongs. Specify this attribute when creating a new user.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Group_Object" - } - }, - "auto_create": { - "description": " Creates a new user if the specified username does not exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required.
Version: 10.5.0.cl or later", - "default": true, - "type": "boolean", - "nullable": true } }, "required": [ - "username", - "persist_option" + "token" ] } } @@ -1167,17 +1281,17 @@ "parameters": [], "responses": { "200": { - "description": "ABAC token creation was successful.", + "description": "Token validation successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccessToken" + "$ref": "#/components/schemas/TokenValidationResponse" } } } }, "400": { - "description": "Invalid request. This could be due to missing or incorrect parameters.", + "description": "Invalid request.", "content": { "application/json": { "schema": { @@ -1187,7 +1301,7 @@ } }, "401": { - "description": "Unauthorized access. The request could not be authenticated.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -1197,7 +1311,7 @@ } }, "403": { - "description": "Forbidden access. The user does not have permission to access this resource.", + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -1207,7 +1321,7 @@ } }, "500": { - "description": "An unexpected error occurred on the server.", + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -1216,17 +1330,16 @@ } } } - }, - "security": [] + } } }, - "/api/rest/2.0/auth/token/full": { + "/api/rest/2.0/connection-configurations/search": { "post": { - "operationId": "getFullAccessToken", - "description": "\n Version: 9.0.0.cl or later\n\nGets an authentication token and creates a full session in ThoughtSpot for a given user. By default, the token obtained from ThoughtSpot remains valid for 5 mins.\n\nYou can generate the token for a user by providing a `username` and `password`, or by using the cluster’s `secret_key` (for [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable)).\n\nTo generate a `secret_key` on your cluster, the administrator must enable **Trusted authentication** in the **Develop** > **Customizations** > **Security Settings** page. For more information, see [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable).\n\n**Note**: When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n\nIf Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\n#### Just-in-time provisioning\n\nFor just-in-time user creation and provisioning, define the following attributes:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `group_identifiers`\n\nSet `auto_create` to `True` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true`, the API call will update user properties like display name, email and group assignment.\n\nFor more information, see [Just-in-time provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning).\n\nTo add a new user and assign privileges, you need `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege is required.\n\n#### Important point to note\nAll options in the token creation APIs changing the content in ThoughtSpot will do so during the token creation and not when the token is being used for authentication. For example, `auto_create:true` will create the user when the authentication token is created.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "connectionConfigurationSearch", + "description": "\n Version: 10.12.0.cl or later\n\nGets connection configuration objects.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n* To get a list of all configurations available in the ThoughtSpot system, send the API request with only the connection name or GUID in the request body.\n* To fetch details of a configuration object, specify the configuration object name or GUID.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Authentication", - "9.0.0.cl" + "Connection Configurations", + "10.12.0.cl" ], "requestBody": { "content": { @@ -1234,55 +1347,26 @@ "schema": { "type": "object", "properties": { - "username": { - "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", - "type": "string" - }, - "password": { - "description": "Password of the user account", - "default": "", - "type": "string" - }, - "secret_key": { - "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", - "default": "", - "type": "string" - }, - "validity_time_in_sec": { - "description": "Token validity duration in seconds", - "default": 300, - "type": "integer", - "format": "int32" - }, - "org_id": { - "description": "ID of the Org context to log in to. If the Org ID is not specified and secret key is provided then user will be logged into the org corresponding to the secret key, and if secret key is not provided then user will be logged in to the Org context of their previous login session.", - "type": "integer", - "format": "int32" - }, - "email": { - "description": "Email address of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", + "connection_identifier": { + "description": "Unique ID or name of the connection.", "type": "string" }, - "display_name": { - "description": "Indicates display name of the user. Use this parameter to provision a user just-in-time (JIT).", + "configuration_identifier": { + "description": "Unique ID or name of the configuration.", "type": "string" }, - "auto_create": { - "description": " Creates a new user if the specified username does not already exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. ", - "default": false, - "type": "boolean", - "nullable": true - }, - "group_identifiers": { - "description": "ID or name of the groups to which the newly created user belongs. Use this parameter to provision a user just-in-time (JIT).", - "type": "array", - "items": { - "type": "string" - } + "policy_type": { + "description": "Type of policy.", + "type": "string", + "enum": [ + "NO_POLICY", + "PRINCIPALS", + "PROCESSES" + ] } }, "required": [ - "username" + "connection_identifier" ] } } @@ -1292,11 +1376,14 @@ "parameters": [], "responses": { "200": { - "description": "Bearer auth token creation successful.", + "description": "Configuration fetched successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Token" + "type": "array", + "items": { + "$ref": "#/components/schemas/ConnectionConfigurationResponse" + } } } } @@ -1341,17 +1428,16 @@ } } } - }, - "security": [] + } } }, - "/api/rest/2.0/auth/token/object": { + "/api/rest/2.0/connection-configurations/create": { "post": { - "operationId": "getObjectAccessToken", - "description": "\n Version: 9.0.0.cl or later\n\nGets an authentication token that provides access to a specific metadata object. By default, the token obtained from ThoughtSpot remains valid for 5 mins.\n\nYou can generate the token for a user by providing a `username` and `password`, or by using the cluster’s `secret key` (for [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable)).\n\nTo generate a `secret_key` on your cluster, the administrator must enable **Trusted authentication** in the **Develop** > **Customizations** > **Security Settings** page.\n\n**Note**: When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n\nIf Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\n#### Just-in-time provisioning\n\nFor just-in-time user creation and provisioning, define the following attributes:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `group_identifiers`\n\nSet `auto_create` to `True` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true`, the API call will update user properties like display name, email and group assignment.\n\nFor more information, see [Just-in-time provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning).\n\nTo add a new user and assign privileges, you need `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege is required.\n\n#### Important point to note\nAll options in the token creation APIs changing the content in ThoughtSpot will do so during the token creation and not when the token is being used for authentication. For example, `auto_create:true` will create the user when the authentication token is created.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createConnectionConfiguration", + "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Authentication", - "9.0.0.cl" + "Connection Configurations", + "10.12.0.cl" ], "requestBody": { "content": { @@ -1359,59 +1445,66 @@ "schema": { "type": "object", "properties": { - "username": { - "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", - "type": "string" - }, - "object_id": { - "description": "GUID of the ThoughtSpot metadata object that the user can access. The bearer will only have access to the object specified in the API request.", + "name": { + "description": "Unique name for the configuration.", "type": "string" }, - "password": { - "description": "Password of the user account", - "default": "", + "description": { + "description": "Description of the configuration.", "type": "string" }, - "secret_key": { - "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", - "default": "", + "connection_identifier": { + "description": "Unique ID or name of the connection.", "type": "string" }, - "validity_time_in_sec": { - "description": "Token validity duration in seconds", - "default": 300, - "type": "integer", - "format": "int32" - }, - "org_id": { - "description": "ID of the Org context to log in to. If the Org ID is not specified and secret key is provided then user will be logged into the org corresponding to the secret key, and if secret key is not provided then user will be logged in to the Org context of their previous login session.", - "type": "integer", - "format": "int32" - }, - "email": { - "description": "Email address of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", - "type": "string" + "authentication_type": { + "description": "Type of authentication used for the connection.", + "default": "SERVICE_ACCOUNT", + "type": "string", + "enum": [ + "SERVICE_ACCOUNT", + "KEY_PAIR", + "PERSONAL_ACCESS_TOKEN", + "OAUTH_WITH_SERVICE_PRINCIPAL" + ] }, - "display_name": { - "description": "Display name of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", - "type": "string" + "configuration": { + "description": "Configuration properties in JSON.", + "type": "object" }, - "auto_create": { - "description": " Creates a new user if the specified username does not exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. ", - "default": false, - "type": "boolean", - "nullable": true + "policy_type": { + "description": "Type of policy.", + "default": "NO_POLICY", + "type": "string", + "enum": [ + "NO_POLICY", + "PRINCIPALS", + "PROCESSES" + ] }, - "group_identifiers": { - "description": "Unique ID or name of the groups to which you want to assign the new user. You can specify this attribute to dynamically assign privileges during just-in-time (JIT) provisioning.", + "policy_principals": { + "description": "Unique ID or name of the User and User Groups.", "type": "array", "items": { "type": "string" } + }, + "policy_processes": { + "description": "Action that the query performed on the data warehouse, such as SAGE_INDEXING and ROW_COUNT_STATS.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "SAGE_INDEXING", + "ROW_COUNT_STATS" + ] + } } }, "required": [ - "username" + "name", + "connection_identifier", + "configuration" ] } } @@ -1421,11 +1514,11 @@ "parameters": [], "responses": { "200": { - "description": "Bearer auth token creation successful.", + "description": "Connection configuration successfully created.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Token" + "$ref": "#/components/schemas/ConnectionConfigurationResponse" } } } @@ -1470,17 +1563,16 @@ } } } - }, - "security": [] + } } }, - "/api/rest/2.0/auth/session/login": { + "/api/rest/2.0/connection-configurations/delete": { "post": { - "operationId": "login", - "description": "\n Version: 9.0.0.cl or later\n\nCreates a login session for a ThoughtSpot user with Basic authentication.\n\nIn Basic authentication method, REST clients log in to ThoughtSpot using `username` and `password` attributes. On a multi-tenant cluster with Orgs, users can pass the ID of the Org in the API request to log in to a specific Org context.\n\n**Note**: If Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. Contact ThoughtSpot Support for assistance.\n\nA successful login returns a session cookie that can be used in your subsequent API requests.\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteConnectionConfiguration", + "description": "\n Version: 10.12.0.cl or later\n\nDeletes connection configuration objects.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Authentication", - "9.0.0.cl" + "Connection Configurations", + "10.12.0.cl" ], "requestBody": { "content": { @@ -1488,25 +1580,19 @@ "schema": { "type": "object", "properties": { - "username": { - "description": "Username of the ThoughtSpot user", - "type": "string" - }, - "password": { - "description": "Password of the user account", + "configuration_identifier": { + "description": "Unique ID or name of the configuration.", "type": "string" }, - "org_identifier": { - "description": "ID of the Org context to log in to. If Org ID is not specified, the user will be logged in to the Org context of their previous login session.", + "connection_identifier": { + "description": "Unique ID or name of the connection.", "type": "string" - }, - "remember_me": { - "description": "A flag to remember the user session. When set to true, a session cookie is created and used in subsequent API requests.", - "default": false, - "type": "boolean", - "nullable": true } - } + }, + "required": [ + "configuration_identifier", + "connection_identifier" + ] } } }, @@ -1515,7 +1601,7 @@ "parameters": [], "responses": { "204": { - "description": "User login successful." + "description": "Connection Configurations successfully deleted." }, "400": { "description": "Invalid request.", @@ -1560,18 +1646,106 @@ } } }, - "/api/rest/2.0/auth/session/logout": { + "/api/rest/2.0/connection-configurations/{configuration_identifier}/update": { "post": { - "operationId": "logout", - "description": "\n Version: 9.0.0.cl or later\n\n\nLogs out a user from their current session.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateConnectionConfiguration", + "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n \n\n\n\n#### Endpoint URL\n", "tags": [ - "Authentication", - "9.0.0.cl" + "Connection Configurations", + "10.12.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" + }, + "name": { + "description": "Name of the configuration to update.", + "type": "string" + }, + "description": { + "description": "Description of the configuration.", + "type": "string" + }, + "authentication_type": { + "description": "Type of authentication.", + "type": "string", + "enum": [ + "SERVICE_ACCOUNT", + "OAUTH", + "OAUTH_WITH_SERVICE_PRINCIPAL", + "EXTOAUTH", + "KEY_PAIR", + "EXTOAUTH_WITH_PKCE", + "OAUTH_WITH_PKCE", + "PERSONAL_ACCESS_TOKEN" + ] + }, + "configuration": { + "description": "Configuration properties in JSON.", + "type": "object" + }, + "policy_type": { + "description": "Type of policy.", + "type": "string", + "enum": [ + "NO_POLICY", + "PRINCIPALS", + "PROCESSES" + ] + }, + "policy_principals": { + "description": "Unique ID or name of the User and User Groups.", + "type": "array", + "items": { + "type": "string" + } + }, + "policy_processes": { + "description": "Action that the query performed on the data warehouse, such as SAGE_INDEXING and ROW_COUNT_STATS.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "SAGE_INDEXING", + "ROW_COUNT_STATS" + ] + } + }, + "disable": { + "description": "Indicates whether the configuration enable/disable.", + "default": false, + "type": "boolean", + "nullable": true + } + }, + "required": [ + "connection_identifier" + ] + } + } + }, + "required": true + }, + "parameters": [ + { + "in": "path", + "name": "configuration_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the configuration." + } ], - "parameters": [], "responses": { "204": { - "description": "User logout successful." + "description": "Connection configuration successfully updated." }, "400": { "description": "Invalid request.", @@ -1616,13 +1790,13 @@ } } }, - "/api/rest/2.0/auth/token/revoke": { + "/api/rest/2.0/connection/create": { "post": { - "operationId": "revokeToken", - "description": "\n Version: 9.0.0.cl or later\n\n\nRevokes the authentication token issued for current user session.\n\nThe token of your current session expires when you make a call to the `/api/rest/2.0/auth/token/revoke` endpoint.\nthe users will not be able to access ThoughtSpot objects until a new token is obtained.\n\nTo restart your session, request for a new token from ThoughtSpot. See [Get Full Access Token](#/http/api-endpoints/authentication/get-full-access-token).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createConnection", + "description": "\n Version: 9.2.0.cl or later\n\nCreates a connection to a data warehouse for live query services. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Create a connection without tables\n\nTo create a connection without tables:\n\n1. Pass these parameters in your API request.\n * Name of the connection.\n * Type of the data warehouse to connect to.\n * A JSON map of configuration attributes in `data_warehouse_config`. The following example shows the configuration attributes for a SnowFlake connection:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n\n ]\n }\n ```\n2. Set `validate` to `false`.\n\n#### Create a connection with tables\n\nTo create a connection with tables:\n\n1. Pass these parameters in your API request.\n * Name of the connection.\n * Type of the data warehouse to connect to.\n * A JSON map of configuration attributes, database details, and table properties in `data_warehouse_config` as shown in the following example:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n {\n \"name\":\"AllDatatypes\",\n \"isAutoCreated\":false,\n \"schemas\":[\n {\n \"name\":\"alldatatypes\",\n \"tables\":[\n {\n \"name\":\"allDatatypes\",\n \"type\":\"TABLE\",\n \"description\":\"\",\n \"selected\":true,\n \"linked\":true,\n \"columns\":[\n {\n \"name\":\"CNUMBER\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n },\n {\n \"name\":\"CDECIMAL\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ```\n2. Set `validate` to `true`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Authentication", - "9.0.0.cl" + "Connections", + "9.2.0.cl" ], "requestBody": { "content": { @@ -1630,13 +1804,69 @@ "schema": { "type": "object", "properties": { - "user_identifier": { + "name": { + "description": "Unique name for the connection.", "type": "string" }, - "token": { + "description": { + "description": "Description of the connection.", "type": "string" + }, + "data_warehouse_type": { + "description": "Type of the data warehouse.", + "type": "string", + "enum": [ + "SNOWFLAKE", + "AMAZON_REDSHIFT", + "GOOGLE_BIGQUERY", + "AZURE_SYNAPSE", + "TERADATA", + "SAP_HANA", + "STARBURST", + "ORACLE_ADW", + "DATABRICKS", + "DENODO", + "DREMIO", + "TRINO", + "PRESTO", + "POSTGRES", + "SQLSERVER", + "MYSQL", + "GENERIC_JDBC", + "AMAZON_RDS_POSTGRESQL", + "AMAZON_AURORA_POSTGRESQL", + "AMAZON_RDS_MYSQL", + "AMAZON_AURORA_MYSQL", + "LOOKER", + "AMAZON_ATHENA", + "SINGLESTORE", + "GCP_SQLSERVER", + "GCP_ALLOYDB_POSTGRESQL", + "GCP_POSTGRESQL", + "GCP_MYSQL", + "MODE", + "GOOGLE_SHEETS", + "FALCON", + "FALCON_ONPREM", + "CLICKHOUSE" + ] + }, + "data_warehouse_config": { + "description": "Connection configuration attributes in JSON format. To create a connection with tables, include table attributes. See the documentation above for sample JSON.", + "type": "object" + }, + "validate": { + "description": "Validates the connection metadata if tables are included. If you are creating a connection without tables, specify `false`.", + "default": true, + "type": "boolean", + "nullable": true } - } + }, + "required": [ + "name", + "data_warehouse_type", + "data_warehouse_config" + ] } } }, @@ -1644,8 +1874,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Token successfully revoked." + "200": { + "description": "Connection to the datasource successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateConnectionResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -1690,13 +1927,14 @@ } } }, - "/api/rest/2.0/auth/token/validate": { + "/api/rest/2.0/connection/delete": { "post": { - "operationId": "validateToken", - "description": "\n Version: 9.12.0.cl or later\n\n\nValidates the authentication token specified in the API request.\n\nIf your token is not valid, [Get a new token](#/http/api-endpoints/authentication/get-full-access-token).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteConnection", + "description": "\n Version: 9.2.0.cl or later\n\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Delete Connection V2](#/http/api-endpoints/connections/delete-connection-v2) endpoint to delete your connection objects. \n\n#### Usage guidelines\n\nDeletes a connection object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n**Note**: If a connection has dependent objects, make sure you remove its associations before the delete operation.\n\n\n\n#### Endpoint URL\n", + "deprecated": true, "tags": [ - "Authentication", - "9.12.0.cl" + "Connections", + "9.2.0.cl" ], "requestBody": { "content": { @@ -1704,12 +1942,13 @@ "schema": { "type": "object", "properties": { - "token": { + "connection_identifier": { + "description": "Unique ID or name of the connection.", "type": "string" } }, "required": [ - "token" + "connection_identifier" ] } } @@ -1718,15 +1957,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Token validation successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TokenValidationResponse" - } - } - } + "204": { + "description": "Connection successfully deleted." }, "400": { "description": "Invalid request.", @@ -1771,60 +2003,28 @@ } } }, - "/api/rest/2.0/connection-configurations/search": { + "/api/rest/2.0/connections/{connection_identifier}/delete": { "post": { - "operationId": "connectionConfigurationSearch", - "description": "\n Version: 10.12.0.cl or later\n\nGets connection configuration objects.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n* To get a list of all configurations available in the ThoughtSpot system, send the API request with only the connection name or GUID in the request body.\n* To fetch details of a configuration object, specify the configuration object name or GUID.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteConnectionV2", + "description": "\n Version: 10.4.0.cl or later\n\nDeletes a connection object.\n\n**Note**: If a connection has dependent objects, make sure you remove its associations before the delete operation.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connection Configurations", - "10.12.0.cl" + "Connections", + "10.4.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the connection." + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - }, - "configuration_identifier": { - "description": "Unique ID or name of the configuration.", - "type": "string" - }, - "policy_type": { - "description": "Type of policy.", - "type": "string", - "enum": [ - "NO_POLICY", - "PRINCIPALS", - "PROCESSES" - ] - } - }, - "required": [ - "connection_identifier" - ] - } - } - }, - "required": true - }, - "parameters": [], "responses": { - "200": { - "description": "Configuration fetched successfully.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ConnectionConfigurationResponse" - } - } - } - } + "204": { + "description": "Connection successfully deleted." }, "400": { "description": "Invalid request.", @@ -1869,97 +2069,30 @@ } } }, - "/api/rest/2.0/connection-configurations/create": { + "/api/rest/2.0/connections/download-connection-metadata-changes/{connection_identifier}": { "post": { - "operationId": "createConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "downloadConnectionMetadataChanges", + "description": "\n Version: 9.9.0.cl or later\n\nExports the difference in connection metadata between CDW and ThoughtSpot\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required: \n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\nTo download the connection metadata difference between ThoughtSpot and CDW, pass the connection GUID as `connection_identifier` in the API request.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connection Configurations", - "10.12.0.cl" + "Connections", + "9.9.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "GUID of the connection" + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Unique name for the configuration.", - "type": "string" - }, - "description": { - "description": "Description of the configuration.", - "type": "string" - }, - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - }, - "authentication_type": { - "description": "Type of authentication used for the connection.", - "default": "SERVICE_ACCOUNT", - "type": "string", - "enum": [ - "SERVICE_ACCOUNT", - "KEY_PAIR", - "PERSONAL_ACCESS_TOKEN", - "OAUTH_WITH_SERVICE_PRINCIPAL", - "OAUTH_CLIENT_CREDENTIALS" - ] - }, - "configuration": { - "description": "Configuration properties in JSON.", - "type": "object" - }, - "policy_type": { - "description": "Type of policy.", - "default": "NO_POLICY", - "type": "string", - "enum": [ - "NO_POLICY", - "PRINCIPALS", - "PROCESSES" - ] - }, - "policy_principals": { - "description": "Unique ID or name of the User and User Groups.", - "type": "array", - "items": { - "type": "string" - } - }, - "policy_processes": { - "description": "Action that the query performed on the data warehouse, such as SAGE_INDEXING and ROW_COUNT_STATS.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "SAGE_INDEXING", - "ROW_COUNT_STATS" - ] - } - } - }, - "required": [ - "name", - "connection_identifier", - "configuration" - ] - } - } - }, - "required": true - }, - "parameters": [], "responses": { "200": { - "description": "Connection configuration successfully created.", + "description": "Export metadata changes.", "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConnectionConfigurationResponse" - } - } + "application/octet-stream": {} } }, "400": { @@ -2005,43 +2138,36 @@ } } }, - "/api/rest/2.0/connection-configurations/delete": { + "/api/rest/2.0/connections/fetch-connection-diff-status/{connection_identifier}": { "post": { - "operationId": "deleteConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nDeletes connection configuration objects.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchConnectionDiffStatus", + "description": "\n Version: 9.9.0.cl or later\n\nValidates the difference in connection metadata between CDW and ThoughtSpot.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\nReturns a boolean indicating whether there is any difference between the connection metadata at ThoughtSpot and CDW.\n\nTo get the connection metadata difference status, pass the connection GUID as `connection_identifier` in the API request.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connection Configurations", - "10.12.0.cl" + "Connections", + "9.9.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "configuration_identifier": { - "description": "Unique ID or name of the configuration.", - "type": "string" - }, - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - } - }, - "required": [ - "configuration_identifier", - "connection_identifier" - ] + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "GUID of the connection" + } + ], + "responses": { + "200": { + "description": "true/false", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FetchConnectionDiffStatusResponse" + } } } }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Connection Configurations successfully deleted." - }, "400": { "description": "Invalid request.", "content": { @@ -2085,13 +2211,13 @@ } } }, - "/api/rest/2.0/connection-configurations/{configuration_identifier}/update": { + "/api/rest/2.0/connection/search": { "post": { - "operationId": "updateConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n \n\n\n\n#### Endpoint URL\n", + "operationId": "searchConnection", + "description": "\n Version: 9.2.0.cl or later\n\nGets connection objects.\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n- To get a list of all connections available in the ThoughtSpot system, send the API request without any attributes in the request body.\n- To get the connection objects for a specific type of data warehouse, specify the type in `data_warehouse_types`.\n- To fetch details of a connection object, specify the connection object GUID or name. The `name_pattern` attribute allows passing partial text with `%` for a wildcard match.\n- To get details of the database, schemas, tables, or columns from a data connection object, specify `data_warehouse_object_type`.\n- To get a specific database, schema, table, or column from a connection object, define the object type in `data_warehouse_object_type` and object properties in the `data_warehouse_objects` array. For example, to search for a column, you must pass the database, schema, and table names in the API request.\n Note that in the following example, object properties are set in a hierarchical order (`database` > `schema` > `table` > `column`).\n\n```\n{\n \"connections\": [\n {\n \"identifier\": \"b9d1f2ef-fa65-4a4b-994e-30fa2d57b0c2\",\n \"data_warehouse_objects\": [\n {\n \"database\": \"NEBULADEV\",\n \"schema\": \"INFORMATION_SCHEMA\",\n \"table\": \"APPLICABLE_ROLES\",\n \"column\": \"ROLE_NAME\"\n }\n ]\n }\n ],\n \"data_warehouse_object_type\": \"COLUMN\"\n}\n```\n\n- To fetch data by `configuration`, specify `data_warehouse_object_type`. For example, to fetch columns from the `DEVELOPMENT` database, specify the `data_warehouse_object_type` as `DATABASE` and define the `configuration` string as `{\"database\":\"DEVELOPMENT\"}`. To get column data for a specific table, specify the table, for example,`{\"database\":\"RETAILAPPAREL\",\"table\":\"PIPES\"}`.\n- To query connections by `authentication_type`, specify `data_warehouse_object_type`. Supported values for `authentication_type` are:\n - `SERVICE_ACCOUNT`: For connections that require service account credentials to authenticate to the Cloud Data Warehouse and fetch data.\n - `OAUTH`: For connections that require OAuth credentials to authenticate to the Cloud Data Warehouse and fetch data. Teradata, Oracle, and Presto Cloud Data Warehouses do not support the OAuth authentication type.\n - `IAM`: For connections that have the IAM OAuth set up. This authentication type is supported on Amazon Redshift connections only.\n - `EXTOAUTH`: For connections that have External OAuth set up. ThoughtSpot supports external [OAuth with Microsoft Azure Active Directory (AD)](https://docs.thoughtspot.com/cloud/latest/ connections-snowflake-azure-ad-oauth) and [Okta for Snowflake data connections](https://docs.thoughtspot.com/cloud/latest/connections-snowflake-okta-oauth).\n - `KEY_PAIR`: For connections that require Key Pair account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n - `OAUTH_WITH_PKCE`: For connections that require OAuth with PKCE account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake, Starburst, Databricks, Denodo connections only.\n - `EXTOAUTH_WITH_PKCE`: For connections that require External OAuth With PKCE account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n - `OAUTH_WITH_PEZ`: For connections that require OAuth With PEZ account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Amazon Redshift connections only.\n - `OAUTH_WITH_SERVICE_PRINCIPAL`: For connections that require OAuth With Service Principal account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Databricks connections only.\n - `PERSONAL_ACCESS_TOKEN`: For connections that require Personal Access Token account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Databricks connections only.\n - `OAUTH_CLIENT_CREDENTIALS`: For connections that require OAuth Client Credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n- To include more details about connection objects in the API response, set `include_details` to `true`.\n- You can also sort the output by field names and filter connections by tags.\n\n**NOTE**: When filtering connection records by parameters other than `data_warehouse_types` or `tag_identifiers`, ensure that you set `record_size` to `-1` and `record_offset` to `0` for precise results.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connection Configurations", - "10.12.0.cl" + "Connections", + "9.2.0.cl" ], "requestBody": { "content": { @@ -2099,93 +2225,144 @@ "schema": { "type": "object", "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - }, - "name": { - "description": "Name of the configuration to update.", - "type": "string" - }, - "description": { - "description": "Description of the configuration.", - "type": "string" - }, - "authentication_type": { - "description": "Type of authentication.", - "type": "string", - "enum": [ - "SERVICE_ACCOUNT", - "OAUTH", - "OAUTH_WITH_SERVICE_PRINCIPAL", - "EXTOAUTH", - "KEY_PAIR", - "EXTOAUTH_WITH_PKCE", - "OAUTH_WITH_PKCE", - "PERSONAL_ACCESS_TOKEN", - "OAUTH_CLIENT_CREDENTIALS" - ] + "connections": { + "description": "List of connections and name pattern", + "type": "array", + "items": { + "$ref": "#/components/schemas/ConnectionInput" + } }, - "configuration": { - "description": "Configuration properties in JSON.", - "type": "object" - }, - "policy_type": { - "description": "Type of policy.", - "type": "string", - "enum": [ - "NO_POLICY", - "PRINCIPALS", - "PROCESSES" - ] - }, - "policy_principals": { - "description": "Unique ID or name of the User and User Groups.", + "data_warehouse_types": { + "description": "Array of types of data warehouse defined for the connection.", "type": "array", "items": { - "type": "string" + "type": "string", + "enum": [ + "SNOWFLAKE", + "AMAZON_REDSHIFT", + "GOOGLE_BIGQUERY", + "AZURE_SYNAPSE", + "TERADATA", + "SAP_HANA", + "STARBURST", + "ORACLE_ADW", + "DATABRICKS", + "DENODO", + "DREMIO", + "TRINO", + "PRESTO", + "POSTGRES", + "SQLSERVER", + "MYSQL", + "GENERIC_JDBC", + "AMAZON_RDS_POSTGRESQL", + "AMAZON_AURORA_POSTGRESQL", + "AMAZON_RDS_MYSQL", + "AMAZON_AURORA_MYSQL", + "LOOKER", + "AMAZON_ATHENA", + "SINGLESTORE", + "GCP_SQLSERVER", + "GCP_ALLOYDB_POSTGRESQL", + "GCP_POSTGRESQL", + "GCP_MYSQL", + "MODE", + "GOOGLE_SHEETS", + "FALCON", + "FALCON_ONPREM", + "CLICKHOUSE" + ] } }, - "policy_processes": { - "description": "Action that the query performed on the data warehouse, such as SAGE_INDEXING and ROW_COUNT_STATS.", + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included.", + "default": 10, + "type": "integer", + "format": "int32" + }, + "tag_identifiers": { + "description": "Unique ID or name of tags.", "type": "array", "items": { - "type": "string", - "enum": [ - "SAGE_INDEXING", - "ROW_COUNT_STATS" - ] + "type": "string" } }, - "disable": { - "description": "Indicates whether the configuration enable/disable.", + "data_warehouse_object_type": { + "description": "Data warehouse object type.", + "type": "string", + "enum": [ + "DATABASE", + "SCHEMA", + "TABLE", + "COLUMN" + ] + }, + "sort_options": { + "description": "Sort options.", + "allOf": [ + { + "$ref": "#/components/schemas/SortOptionInput" + } + ] + }, + "include_details": { + "description": "Indicates whether to include complete details of the connection objects.", + "type": "boolean", + "nullable": true + }, + "configuration": { + "description": "Configuration values. If empty we are fetching configuration from datasource based on given connection id. If required you can provide config details to fetch specific details. Example input: {}, {\"warehouse\":\"SMALL_WH\",\"database\":\"DEVELOPMENT\"}. This is only applicable when data_warehouse_object_type is selected.", + "type": "object" + }, + "authentication_type": { + "description": "List of authentication types to fetch data_ware_house_objects from external Data warehouse. This is only applicable when data_warehouse_object_type is selected.", + "default": "SERVICE_ACCOUNT", + "type": "string", + "enum": [ + "SERVICE_ACCOUNT", + "OAUTH", + "IAM", + "EXTOAUTH", + "OAUTH_WITH_SERVICE_PRINCIPAL", + "PERSONAL_ACCESS_TOKEN", + "KEY_PAIR", + "OAUTH_WITH_PKCE", + "EXTOAUTH_WITH_PKCE", + "OAUTH_WITH_PEZ" + ] + }, + "show_resolved_parameters": { + "description": "
Version: 10.9.0.cl or later
\n\nIndicates whether to show resolved parameterised values.", "default": false, "type": "boolean", "nullable": true } - }, - "required": [ - "connection_identifier" - ] + } } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "configuration_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the configuration." - } - ], + "parameters": [], "responses": { - "204": { - "description": "Connection configuration successfully updated." + "200": { + "description": "List of connections to the datasource.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchConnectionResponse" + } + } + } + } }, "400": { "description": "Invalid request.", @@ -2230,10 +2407,11 @@ } } }, - "/api/rest/2.0/connection/create": { + "/api/rest/2.0/connection/update": { "post": { - "operationId": "createConnection", - "description": "\n Version: 9.2.0.cl or later\n\nCreates a connection to a data warehouse for live query services. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Create a connection without tables\n\nTo create a connection without tables:\n\n1. Pass these parameters in your API request.\n * Name of the connection.\n * Type of the data warehouse to connect to.\n * A JSON map of configuration attributes in `data_warehouse_config`. The following example shows the configuration attributes for a SnowFlake connection:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n\n ]\n }\n ```\n2. Set `validate` to `false`.\n\n#### Create a connection with tables\n\nTo create a connection with tables:\n\n1. Pass these parameters in your API request.\n * Name of the connection.\n * Type of the data warehouse to connect to.\n * A JSON map of configuration attributes, database details, and table properties in `data_warehouse_config` as shown in the following example:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n {\n \"name\":\"AllDatatypes\",\n \"isAutoCreated\":false,\n \"schemas\":[\n {\n \"name\":\"alldatatypes\",\n \"tables\":[\n {\n \"name\":\"allDatatypes\",\n \"type\":\"TABLE\",\n \"description\":\"\",\n \"selected\":true,\n \"linked\":true,\n \"columns\":[\n {\n \"name\":\"CNUMBER\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n },\n {\n \"name\":\"CDECIMAL\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ```\n2. Set `validate` to `true`.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateConnection", + "description": "\n Version: 9.2.0.cl or later\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Update connection V2](#/http/api-endpoints/connections/update-connection-v2) endpoint to update your connection objects.\n\n#### Usage guidelines\n\nUpdates a connection object. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n\n\n\n#### Endpoint URL\n", + "deprecated": true, "tags": [ "Connections", "9.2.0.cl" @@ -2244,68 +2422,31 @@ "schema": { "type": "object", "properties": { + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" + }, "name": { - "description": "Unique name for the connection.", + "description": "Updated name of the connection.", "type": "string" }, "description": { - "description": "Description of the connection.", + "description": "Updated description of the connection.", "type": "string" }, - "data_warehouse_type": { - "description": "Type of the data warehouse.", - "type": "string", - "enum": [ - "SNOWFLAKE", - "AMAZON_REDSHIFT", - "GOOGLE_BIGQUERY", - "AZURE_SYNAPSE", - "TERADATA", - "SAP_HANA", - "STARBURST", - "ORACLE_ADW", - "DATABRICKS", - "DENODO", - "DREMIO", - "TRINO", - "PRESTO", - "POSTGRES", - "SQLSERVER", - "MYSQL", - "GENERIC_JDBC", - "AMAZON_RDS_POSTGRESQL", - "AMAZON_AURORA_POSTGRESQL", - "AMAZON_RDS_MYSQL", - "AMAZON_AURORA_MYSQL", - "LOOKER", - "AMAZON_ATHENA", - "SINGLESTORE", - "GCP_SQLSERVER", - "GCP_ALLOYDB_POSTGRESQL", - "GCP_POSTGRESQL", - "GCP_MYSQL", - "MODE", - "GOOGLE_SHEETS", - "FALCON", - "FALCON_ONPREM", - "CLICKHOUSE" - ] - }, "data_warehouse_config": { - "description": "Connection configuration attributes in JSON format. To create a connection with tables, include table attributes. See the documentation above for sample JSON.", + "description": "Configuration of the data warehouse in JSON.", "type": "object" }, "validate": { - "description": "Validates the connection metadata if tables are included. If you are creating a connection without tables, specify `false`.", + "description": "Indicates whether to validate the connection details.", "default": true, "type": "boolean", "nullable": true } }, "required": [ - "name", - "data_warehouse_type", - "data_warehouse_config" + "connection_identifier" ] } } @@ -2314,15 +2455,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Connection to the datasource successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateConnectionResponse" - } - } - } + "204": { + "description": "Connection successfully updated." }, "400": { "description": "Invalid request.", @@ -2367,14 +2501,13 @@ } } }, - "/api/rest/2.0/connection/delete": { + "/api/rest/2.0/connections/{connection_identifier}/update": { "post": { - "operationId": "deleteConnection", - "description": "\n Version: 9.2.0.cl or later\n\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Delete Connection V2](#/http/api-endpoints/connections/delete-connection-v2) endpoint to delete your connection objects. \n\n#### Usage guidelines\n\nDeletes a connection object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n**Note**: If a connection has dependent objects, make sure you remove its associations before the delete operation.\n\n\n\n#### Endpoint URL\n", - "deprecated": true, + "operationId": "updateConnectionV2", + "description": "\n Version: 10.4.0.cl or later\n\nUpdates a connection object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n \n **NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n * A JSON map of configuration attributes, database details, and table properties in `data_warehouse_config` as shown in the following example:\n\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n {\n \"name\":\"AllDatatypes\",\n \"isAutoCreated\":false,\n \"schemas\":[\n {\n \"name\":\"alldatatypes\",\n \"tables\":[\n {\n \"name\":\"allDatatypes\",\n \"type\":\"TABLE\",\n \"description\":\"\",\n \"selected\":true,\n \"linked\":true,\n \"columns\":[\n {\n \"name\":\"CNUMBER\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n },\n {\n \"name\":\"CDECIMAL\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ```\n\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n **NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n * A JSON map of configuration attributes in `data_warehouse_config`. The following example shows the configuration attributes for a Snowflake connection:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n\n ]\n }\n ```\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connections", - "9.2.0.cl" + "10.4.0.cl" ], "requestBody": { "content": { @@ -2382,23 +2515,44 @@ "schema": { "type": "object", "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", + "name": { + "description": "Updated name of the connection.", + "type": "string" + }, + "description": { + "description": "Updated description of the connection.", "type": "string" + }, + "data_warehouse_config": { + "description": "Configuration of the data warehouse in JSON.", + "type": "object" + }, + "validate": { + "description": "Indicates whether to validate the connection details.", + "default": true, + "type": "boolean", + "nullable": true } - }, - "required": [ - "connection_identifier" - ] + } } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the connection." + } + ], "responses": { "204": { - "description": "Connection successfully deleted." + "description": "Connection successfully updated." }, "400": { "description": "Invalid request.", @@ -2443,28 +2597,93 @@ } } }, - "/api/rest/2.0/connections/{connection_identifier}/delete": { + "/api/rest/2.0/customization/custom-actions": { "post": { - "operationId": "deleteConnectionV2", - "description": "\n Version: 10.4.0.cl or later\n\nDeletes a connection object.\n\n**Note**: If a connection has dependent objects, make sure you remove its associations before the delete operation.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createCustomAction", + "description": "\n Version: 9.6.0.cl or later\n\nCreates a custom action that appears as a menu action on a saved Answer or Liveboard visualization.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n#### Usage Guidelines\n\nThe API lets you create the following types of custom actions:\n\n* URL-based action \n Allows pushing data to an external URL.\n* Callback action \n Triggers a callback to the host application and initiates a response payload on an embedded ThoughtSpot instance.\n\nBy default, custom actions are visible to only administrator or developer users. To make a custom action available to other users, and specify the groups in `group_identifiers`.\n\nBy default, the custom action is set as a _global_ action on all visualizations and saved Answers. To assign a custom action to specific Liveboard visualization, saved Answer, or Worksheet, set `visibility` to `false` in `default_action_config` property and specify the GUID or name of the object in `associate_metadata`.\n\nFor more information, see [Custom actions](https://developers.thoughtspot.com/docs/custom-action-intro).\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "10.4.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "connection_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the connection." - } + "Custom Action", + "9.6.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "description": "Name of the custom action. The custom action name must be unique.", + "type": "string" + }, + "action_details": { + "description": "Action details includes `Type` and Configuration data for Custom Actions, either Callback or URL is required.", + "allOf": [ + { + "$ref": "#/components/schemas/Action_Details_Input_Create" + } + ] + }, + "associate_metadata": { + "description": "Metadata objects to which the custom action needs to be associated.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Associate_Metadata_Input_Create" + } + }, + "default_action_config": { + "description": "Default Custom action configuration. This includes if the custom action is available on all visualizations. By default, a custom action is added to all visualizations and Answers.", + "allOf": [ + { + "$ref": "#/components/schemas/Default_Action_Config_Input_Create" + } + ] + }, + "group_identifiers": { + "description": "Unique ID or name of the groups that can view and access the custom action.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "action_details" + ] + } + } + }, + "required": true + }, + "parameters": [], "responses": { - "204": { - "description": "Connection successfully deleted." + "200": { + "description": "Custom action created successfully.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseCustomAction" + }, + "examples": { + "example_1": { + "value": { + "action_details": { + "CALLBACK": { + "reference": "customaction" + } + }, + "default_action_config": { + "visibility": true + }, + "id": "3d3cad0f-e57b-4faa-8e24-da596c727ee0", + "metadata_association": [], + "name": "customactionsample", + "user_groups": [] + } + } + } + } + } }, "400": { "description": "Invalid request.", @@ -2509,31 +2728,28 @@ } } }, - "/api/rest/2.0/connections/download-connection-metadata-changes/{connection_identifier}": { + "/api/rest/2.0/customization/custom-actions/{custom_action_identifier}/delete": { "post": { - "operationId": "downloadConnectionMetadataChanges", - "description": "\n Version: 9.9.0.cl or later\n\nExports the difference in connection metadata between CDW and ThoughtSpot\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required: \n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\nTo download the connection metadata difference between ThoughtSpot and CDW, pass the connection GUID as `connection_identifier` in the API request.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteCustomAction", + "description": "\n Version: 9.6.0.cl or later\n\nRemoves the custom action specified in the API request.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "9.9.0.cl" + "Custom Action", + "9.6.0.cl" ], "parameters": [ { "in": "path", - "name": "connection_identifier", + "name": "custom_action_identifier", "required": true, "schema": { "type": "string" }, - "description": "GUID of the connection" + "description": "Unique ID or name of the custom action." } ], "responses": { - "200": { - "description": "Export metadata changes.", - "content": { - "application/octet-stream": {} - } + "204": { + "description": "Custom action is successfully deleted." }, "400": { "description": "Invalid request.", @@ -2578,32 +2794,98 @@ } } }, - "/api/rest/2.0/connections/fetch-connection-diff-status/{connection_identifier}": { + "/api/rest/2.0/customization/custom-actions/search": { "post": { - "operationId": "fetchConnectionDiffStatus", - "description": "\n Version: 9.9.0.cl or later\n\nValidates the difference in connection metadata between CDW and ThoughtSpot.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\nReturns a boolean indicating whether there is any difference between the connection metadata at ThoughtSpot and CDW.\n\nTo get the connection metadata difference status, pass the connection GUID as `connection_identifier` in the API request.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchCustomActions", + "description": "\n Version: 9.6.0.cl or later\n\nGets custom actions configured on the cluster.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "9.9.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "connection_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "GUID of the connection" - } + "Custom Action", + "9.6.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "custom_action_identifier": { + "description": "Name or ID of the custom action.", + "type": "string" + }, + "name_pattern": { + "description": "A pattern to match case-insensitive name of the custom-action object.", + "type": "string" + }, + "default_action_config": { + "description": "Default Custom action configuration. This includes if the custom action is available on all visualizations. By default, a custom action is added to all visualizations and Answers.", + "allOf": [ + { + "$ref": "#/components/schemas/Default_Action_Config_Search_Input" + } + ] + }, + "include_group_associations": { + "description": "When set to true, returns the associated groups for a custom action.", + "default": false, + "type": "boolean", + "nullable": true + }, + "include_metadata_associations": { + "description": "When set to true, returns the associated metadata for a custom action.", + "default": false, + "type": "boolean", + "nullable": true + }, + "metadata": { + "description": "Search with a given metadata identifier.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomActionMetadataTypeInput" + } + }, + "type": { + "description": "Filter the action objects based on type", + "type": "string", + "enum": [ + "CALLBACK", + "URL" + ] + } + } + } + } + }, + "required": true + }, + "parameters": [], "responses": { "200": { - "description": "true/false", + "description": "Custom action search is successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FetchConnectionDiffStatusResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseCustomAction" + } + }, + "examples": { + "example_1": { + "value": [ + { + "action_details": { + "CALLBACK": { + "reference": "LEDE" + } + }, + "default_action_config": { + "visibility": true + }, + "id": "c59262df-cf9e-4947-96fa-52d494688797", + "name": "LEDE" + } + ] + } } } } @@ -2651,13 +2933,13 @@ } } }, - "/api/rest/2.0/connection/search": { + "/api/rest/2.0/customization/custom-actions/{custom_action_identifier}/update": { "post": { - "operationId": "searchConnection", - "description": "\n Version: 9.2.0.cl or later\n\nGets connection objects.\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n- To get a list of all connections available in the ThoughtSpot system, send the API request without any attributes in the request body.\n- To get the connection objects for a specific type of data warehouse, specify the type in `data_warehouse_types`.\n- To fetch details of a connection object, specify the connection object GUID or name. The `name_pattern` attribute allows passing partial text with `%` for a wildcard match.\n- To get details of the database, schemas, tables, or columns from a data connection object, specify `data_warehouse_object_type`.\n- To get a specific database, schema, table, or column from a connection object, define the object type in `data_warehouse_object_type` and object properties in the `data_warehouse_objects` array. For example, to search for a column, you must pass the database, schema, and table names in the API request.\n Note that in the following example, object properties are set in a hierarchical order (`database` > `schema` > `table` > `column`).\n\n```\n{\n \"connections\": [\n {\n \"identifier\": \"b9d1f2ef-fa65-4a4b-994e-30fa2d57b0c2\",\n \"data_warehouse_objects\": [\n {\n \"database\": \"NEBULADEV\",\n \"schema\": \"INFORMATION_SCHEMA\",\n \"table\": \"APPLICABLE_ROLES\",\n \"column\": \"ROLE_NAME\"\n }\n ]\n }\n ],\n \"data_warehouse_object_type\": \"COLUMN\"\n}\n```\n\n- To fetch data by `configuration`, specify `data_warehouse_object_type`. For example, to fetch columns from the `DEVELOPMENT` database, specify the `data_warehouse_object_type` as `DATABASE` and define the `configuration` string as `{\"database\":\"DEVELOPMENT\"}`. To get column data for a specific table, specify the table, for example,`{\"database\":\"RETAILAPPAREL\",\"table\":\"PIPES\"}`.\n- To query connections by `authentication_type`, specify `data_warehouse_object_type`. Supported values for `authentication_type` are:\n - `SERVICE_ACCOUNT`: For connections that require service account credentials to authenticate to the Cloud Data Warehouse and fetch data.\n - `OAUTH`: For connections that require OAuth credentials to authenticate to the Cloud Data Warehouse and fetch data. Teradata, Oracle, and Presto Cloud Data Warehouses do not support the OAuth authentication type.\n - `IAM`: For connections that have the IAM OAuth set up. This authentication type is supported on Amazon Redshift connections only.\n - `EXTOAUTH`: For connections that have External OAuth set up. ThoughtSpot supports external [OAuth with Microsoft Azure Active Directory (AD)](https://docs.thoughtspot.com/cloud/latest/ connections-snowflake-azure-ad-oauth) and [Okta for Snowflake data connections](https://docs.thoughtspot.com/cloud/latest/connections-snowflake-okta-oauth).\n - `KEY_PAIR`: For connections that require Key Pair account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n - `OAUTH_WITH_PKCE`: For connections that require OAuth with PKCE account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake, Starburst, Databricks, Denodo connections only.\n - `EXTOAUTH_WITH_PKCE`: For connections that require External OAuth With PKCE account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n - `OAUTH_WITH_PEZ`: For connections that require OAuth With PEZ account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Amazon Redshift connections only.\n - `OAUTH_WITH_SERVICE_PRINCIPAL`: For connections that require OAuth With Service Principal account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Databricks connections only.\n - `PERSONAL_ACCESS_TOKEN`: For connections that require Personal Access Token account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Databricks connections only.\n - `OAUTH_CLIENT_CREDENTIALS`: For connections that require OAuth Client Credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n- To include more details about connection objects in the API response, set `include_details` to `true`.\n- You can also sort the output by field names and filter connections by tags.\n\n**NOTE**: When filtering connection records by parameters other than `data_warehouse_types` or `tag_identifiers`, ensure that you set `record_size` to `-1` and `record_offset` to `0` for precise results.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateCustomAction", + "description": "\n Version: 9.6.0.cl or later\n\nUpdates a custom action.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n#### Usage Guidelines\n\nThe API allows you to modify the following properties:\n\n* Name of the custom action\n* Action availability to groups\n* Association to metadata objects\n* Authentication settings for a URL-based action\n\nFor more information, see [Custom actions](https://developers.thoughtspot.com/docs/custom-action-intro).\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "9.2.0.cl" + "Custom Action", + "9.6.0.cl" ], "requestBody": { "content": { @@ -2665,124 +2947,48 @@ "schema": { "type": "object", "properties": { - "connections": { - "description": "List of connections and name pattern", - "type": "array", - "items": { - "$ref": "#/components/schemas/ConnectionInput" - } - }, - "data_warehouse_types": { - "description": "Array of types of data warehouse defined for the connection.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "SNOWFLAKE", - "AMAZON_REDSHIFT", - "GOOGLE_BIGQUERY", - "AZURE_SYNAPSE", - "TERADATA", - "SAP_HANA", - "STARBURST", - "ORACLE_ADW", - "DATABRICKS", - "DENODO", - "DREMIO", - "TRINO", - "PRESTO", - "POSTGRES", - "SQLSERVER", - "MYSQL", - "GENERIC_JDBC", - "AMAZON_RDS_POSTGRESQL", - "AMAZON_AURORA_POSTGRESQL", - "AMAZON_RDS_MYSQL", - "AMAZON_AURORA_MYSQL", - "LOOKER", - "AMAZON_ATHENA", - "SINGLESTORE", - "GCP_SQLSERVER", - "GCP_ALLOYDB_POSTGRESQL", - "GCP_POSTGRESQL", - "GCP_MYSQL", - "MODE", - "GOOGLE_SHEETS", - "FALCON", - "FALCON_ONPREM", - "CLICKHOUSE" - ] - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included.", - "default": 10, - "type": "integer", - "format": "int32" + "action_details": { + "description": "Action details includes `Type` and Configuration for Custom Actions, either Callback or URL is required.", + "allOf": [ + { + "$ref": "#/components/schemas/Action_Details_Input" + } + ] }, - "tag_identifiers": { - "description": "Unique ID or name of tags.", + "associate_metadata": { + "description": "Metadata objects to which the custom action needs to be associated.", "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/Associate_Metadata_Input" } }, - "data_warehouse_object_type": { - "description": "Data warehouse object type.", - "type": "string", - "enum": [ - "DATABASE", - "SCHEMA", - "TABLE", - "COLUMN" - ] - }, - "sort_options": { - "description": "Sort options.", + "default_action_config": { + "description": "Default Custom action configuration. This includes if the custom action available on visualizations and Answers. By default, a custom action is added to all visualizations and Answers.", "allOf": [ { - "$ref": "#/components/schemas/SortOptionInput" + "$ref": "#/components/schemas/Default_Action_Config_Input" } ] }, - "include_details": { - "description": "Indicates whether to include complete details of the connection objects.", - "type": "boolean", - "nullable": true + "group_identifiers": { + "description": "Unique ID or name of the groups that can view and access the custom action.", + "type": "array", + "items": { + "type": "string" + } }, - "configuration": { - "description": "Configuration values. If empty we are fetching configuration from datasource based on given connection id. If required you can provide config details to fetch specific details. Example input: {}, {\"warehouse\":\"SMALL_WH\",\"database\":\"DEVELOPMENT\"}. This is only applicable when data_warehouse_object_type is selected.", - "type": "object" + "name": { + "description": "Name of the custom action. The custom action name must be unique.", + "type": "string" }, - "authentication_type": { - "description": "List of authentication types to fetch data_ware_house_objects from external Data warehouse. This is only applicable when data_warehouse_object_type is selected.", - "default": "SERVICE_ACCOUNT", + "operation": { + "description": "Type of update operation. Default operation type is ADD", + "default": "ADD", "type": "string", "enum": [ - "SERVICE_ACCOUNT", - "OAUTH", - "IAM", - "EXTOAUTH", - "OAUTH_WITH_SERVICE_PRINCIPAL", - "PERSONAL_ACCESS_TOKEN", - "KEY_PAIR", - "OAUTH_WITH_PKCE", - "EXTOAUTH_WITH_PKCE", - "OAUTH_WITH_PEZ", - "OAUTH_CLIENT_CREDENTIALS" + "ADD", + "REMOVE" ] - }, - "show_resolved_parameters": { - "description": "
Version: 10.9.0.cl or later
\n\nIndicates whether to show resolved parameterised values.", - "default": false, - "type": "boolean", - "nullable": true } } } @@ -2790,20 +2996,20 @@ }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "custom_action_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the custom action." + } + ], "responses": { - "200": { - "description": "List of connections to the datasource.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SearchConnectionResponse" - } - } - } - } + "204": { + "description": "Custom action updated successfully." }, "400": { "description": "Invalid request.", @@ -2848,14 +3054,13 @@ } } }, - "/api/rest/2.0/connection/update": { + "/api/rest/2.0/calendars/create": { "post": { - "operationId": "updateConnection", - "description": "\n Version: 9.2.0.cl or later\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Update connection V2](#/http/api-endpoints/connections/update-connection-v2) endpoint to update your connection objects.\n\n#### Usage guidelines\n\nUpdates a connection object. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n\n\n\n#### Endpoint URL\n", - "deprecated": true, + "operationId": "createCalendar", + "description": "\n Version: 10.12.0.cl or later\n\nCreates a new [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n\n#### Usage guidelines\n\nYou can create a custom calendar from scratch or an existing Table in ThoughtSpot. For both methods of calendar creation, the following parameters are required:\n\n* Name of the custom calendar.\n* Calendar creation method. To create a calendar from an existing table, specify the method:\n\n - `FROM_EXISTING_TABLE` - Creates calendar from the table reference provided in the API request.\n - `FROM_INPUT_PARAMS` - Creates a calendar from the parameters defined in the API request.\n\n* Connection ID and Table name\n* Database and schema name attributes:\n For most Cloud Data Warehouse (CDW) connectors, both `database_name` and `schema_name` attributes are required. \n However, the attribute requirements are conditional and vary based on the connector type and its metadata structure. For example, for connectors such as Teradata, MySQL, SingleSore, Amazon Aurora MySQL, Amazon RDS MySQL, Oracle, and GCP_MYSQL, the `schema_name` is required, whereas the `database_name` attribute is not.\n Similarly, connectors such as ClickHouse require you to specify the `database_name` and the schema specification in such cases is optional.\n\n**NOTE**: If you are creating a calendar from an existing table, ensure that the referenced table matches the required DDL for custom calendars. If the schema does not match, the API returns an error.\n\n##### Calendar type\nThe API allows you to create the following types of calendars:\n\n* `MONTH_OFFSET`. The default calendar type. A `MONTH_OFFSET` calendar is offset by a few months from the standard calendar months (January to December) and the year begins with the month defined in the request. For example, if the `month_offset` value is set as `April`, the calendar year begins in April.\n\n* `4-4-5`. Each quarter in the calendar will include two 4-week months followed by one 5-week month.\n* `4-5-4`. Each quarter in the calendar will include two 4-week months with a 5-week month between.\n* `5-4-4`. Each quarter begins with a 5-week month, followed by two 4-week months.\n\nTo start and end the calendar on a specific date, specify the dates in the `MM/DD/YYYY` format. For `MONTH_OFFSET` calendars, ensure that the `start_date` matches the month specified in the `month_offset` attribute.\n\nYou can also set the starting day of the week and customize the prefixes for year and quarter labels.\n\n#### Examples\n\nTo create a calendar from an existing table:\n\n```\n{\n \"name\": \"MyCustomCalendar1\",\n \"table_reference\": {\n \"connection_identifier\": \"4db8ea22-2ff4-4224-b05a-26674717e468\",\n \"table_name\": \"MyCalendarTable\",\n \"database_name\": \"RETAILAPPAREL\",\n \"schema_name\": \"PUBLIC\"\n },\n \"creation_method\": \"FROM_EXISTING_TABLE\",\n}\n```\n\nTo create a calendar from scratch:\n\n```\n{\n \"name\": \"MyCustomCalendar1\",\n \"table_reference\": {\n \"connection_identifier\": \"4db8ea22-2ff4-4224-b05a-26674717e468\",\n \"table_name\": \"MyCalendarTable\",\n \"database_name\": \"RETAILAPPAREL\",\n \"schema_name\": \"PUBLIC\"\n },\n \"creation_method\": \"FROM_INPUT_PARAMS\",\n \"calendar_type\": \"MONTH_OFFSET\",\n \"month_offset\": \"April\",\n \"start_day_of_week\": \"Monday\",\n \"quarter_name_prefix\": \"Q\",\n \"year_name_prefix\": \"FY\",\n \"start_date\": \"04/01/2025\",\n \"end_date\": \"04/31/2025\"\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "9.2.0.cl" + "Custom Calendars", + "10.12.0.cl" ], "requestBody": { "content": { @@ -2863,31 +3068,93 @@ "schema": { "type": "object", "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", + "name": { + "description": "Name of the custom calendar.", "type": "string" }, - "name": { - "description": "Updated name of the connection.", + "creation_method": { + "description": "Type of create operation.", + "type": "string", + "enum": [ + "FROM_INPUT_PARAMS", + "FROM_EXISTING_TABLE" + ] + }, + "table_reference": { + "description": "Table reference containing connection identifier and table details in this format: `{\"connection_identifier\":\"conn1\", \"database_name\":\"db1\", \"schema_name\":\"sc1\", \"table_name\":\"tb1\"}`. The given table will be created if `creation_method` is set as `FROM_INPUT_PARAMS`.", + "allOf": [ + { + "$ref": "#/components/schemas/ExternalTableInput" + } + ] + }, + "start_date": { + "description": "Start date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `creation_method` is set as `FROM_INPUT_PARAMS`.", "type": "string" }, - "description": { - "description": "Updated description of the connection.", + "end_date": { + "description": "End date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `creation_method` is set as `FROM_INPUT_PARAMS`.", "type": "string" }, - "data_warehouse_config": { - "description": "Configuration of the data warehouse in JSON.", - "type": "object" + "calendar_type": { + "description": "Type of the calendar.", + "default": "MONTH_OFFSET", + "type": "string", + "enum": [ + "MONTH_OFFSET", + "FOUR_FOUR_FIVE", + "FOUR_FIVE_FOUR", + "FIVE_FOUR_FOUR" + ] }, - "validate": { - "description": "Indicates whether to validate the connection details.", - "default": true, - "type": "boolean", - "nullable": true + "month_offset": { + "description": "Specify the month in which the fiscal or custom calendar year should start. For example, if you set `month_offset` to \"April\", the custom calendar will treat \"April\" as the first month of the year, and the related attributes such as quarters and start date will be based on this offset. The default value is `January`, which represents the standard calendar year (January to December).", + "default": "January", + "type": "string", + "enum": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] + }, + "start_day_of_week": { + "description": "Specify the starting day of the week.", + "default": "Sunday", + "type": "string", + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] + }, + "quarter_name_prefix": { + "description": "Prefix to add before the quarter.", + "default": "", + "type": "string" + }, + "year_name_prefix": { + "description": "Prefix to add before the year.", + "default": "", + "type": "string" } }, "required": [ - "connection_identifier" + "name", + "creation_method", + "table_reference" ] } } @@ -2896,15 +3163,22 @@ }, "parameters": [], "responses": { - "204": { - "description": "Connection successfully updated." - }, - "400": { - "description": "Invalid request.", + "200": { + "description": "Custom calendar created successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/CalendarResponse" + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" } } } @@ -2942,58 +3216,28 @@ } } }, - "/api/rest/2.0/connections/{connection_identifier}/update": { + "/api/rest/2.0/calendars/{calendar_identifier}/delete": { "post": { - "operationId": "updateConnectionV2", - "description": "\n Version: 10.4.0.cl or later\n\nUpdates a connection object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n \n **NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n * A JSON map of configuration attributes, database details, and table properties in `data_warehouse_config` as shown in the following example:\n * This is an example of updating a single table in a empty connection:\n \n ```\n {\n \"authenticationType\": \"SERVICE_ACCOUNT\",\n \"externalDatabases\": [\n {\n \"name\": \"DEVELOPMENT\",\n \"isAutoCreated\": false,\n \"schemas\": [\n {\n \"name\": \"TS_dataset\",\n \"tables\": [\n {\n \"name\": \"DEMORENAME\",\n \"type\": \"TABLE\",\n \"description\": \"\",\n \"selected\": true,\n \"linked\": true,\n \"gid\": 0,\n \"datasetId\": \"-1\",\n \"subType\": \"\",\n \"reportId\": \"\",\n \"viewId\": \"\",\n \"columns\": [\n {\n \"name\": \"Col1\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col2\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col3\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col312\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col4\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n }\n ],\n \"relationships\": []\n }\n ]\n }\n ]\n }\n ],\n \"configuration\": {\n \"password\": \"\",\n \"database\": \"DEVELOPMENT\",\n \"role\": \"DEV\",\n \"accountName\": \"thoughtspot_partner\",\n \"warehouse\": \"DEMO_WH\",\n \"user\": \"DEV_USER\"\n }\n }\n ```\n \n* This is an example of updating a single table in an existing connection with tables:\n \n ```\n {\n \"authenticationType\": \"SERVICE_ACCOUNT\",\n \"externalDatabases\": [\n {\n \"name\": \"DEVELOPMENT\",\n \"isAutoCreated\": false,\n \"schemas\": [\n {\n \"name\": \"TS_dataset\",\n \"tables\": [\n {\n \"name\": \"CUSTOMER\",\n \"type\": \"TABLE\",\n \"description\": \"\",\n \"selected\": true,\n \"linked\": true,\n \"gid\": 0,\n \"datasetId\": \"-1\",\n \"subType\": \"\",\n \"reportId\": \"\",\n \"viewId\": \"\",\n \"columns\": [],\n \"relationships\": []\n },\n {\n \"name\": \"tpch5k_falcon_default_schema_users\",\n \"type\": \"TABLE\",\n \"description\": \"\",\n \"selected\": true,\n \"linked\": true,\n \"gid\": 0,\n \"datasetId\": \"-1\",\n \"subType\": \"\",\n \"reportId\": \"\",\n \"viewId\": \"\",\n \"columns\": [\n {\n \"name\": \"user_id\",\n \"type\": \"INT64\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"product_id\",\n \"type\": \"INT64\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"user_cost\",\n \"type\": \"INT64\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n }\n ],\n \"relationships\": []\n }\n ]\n }\n ]\n }\n ],\n \"configuration\": {\n \"password\": \"\",\n \"database\": \"DEVELOPMENT\",\n \"role\": \"DEV\",\n \"accountName\": \"thoughtspot_partner\",\n \"warehouse\": \"DEMO_WH\",\n \"user\": \"DEV_USER\"\n }\n }\n ```\n\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n **NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n * A JSON map of configuration attributes in `data_warehouse_config`. The following example shows the configuration attributes for a Snowflake connection:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n\n ]\n }\n ```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteCalendar", + "description": "\n Version: 10.12.0.cl or later\n\nDeletes a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\nTo delete a custom calendar, specify the calendar ID as a path parameter in the request URL. \n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "10.4.0.cl" + "Custom Calendars", + "10.12.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Updated name of the connection.", - "type": "string" - }, - "description": { - "description": "Updated description of the connection.", - "type": "string" - }, - "data_warehouse_config": { - "description": "Configuration of the data warehouse in JSON.", - "type": "object" - }, - "validate": { - "description": "Indicates whether to validate the connection details.", - "default": true, - "type": "boolean", - "nullable": true - } - } - } - } - }, - "required": true - }, "parameters": [ { "in": "path", - "name": "connection_identifier", + "name": "calendar_identifier", "required": true, "schema": { "type": "string" }, - "description": "Unique ID or name of the connection." + "description": "Unique ID or name of the Calendar." } ], "responses": { "204": { - "description": "Connection successfully updated." + "description": "Custom calendar successfully deleted." }, "400": { "description": "Invalid request.", @@ -3038,13 +3282,13 @@ } } }, - "/api/rest/2.0/customization/custom-actions": { + "/api/rest/2.0/calendars/generate-csv": { "post": { - "operationId": "createCustomAction", - "description": "\n Version: 9.6.0.cl or later\n\nCreates a custom action that appears as a menu action on a saved Answer or Liveboard visualization.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n#### Usage Guidelines\n\nThe API lets you create the following types of custom actions:\n\n* URL-based action \n Allows pushing data to an external URL.\n* Callback action \n Triggers a callback to the host application and initiates a response payload on an embedded ThoughtSpot instance.\n\nBy default, custom actions are visible to only administrator or developer users. To make a custom action available to other users, and specify the groups in `group_identifiers`.\n\nBy default, the custom action is set as a _global_ action on all visualizations and saved Answers. To assign a custom action to specific Liveboard visualization, saved Answer, or Worksheet, set `visibility` to `false` in `default_action_config` property and specify the GUID or name of the object in `associate_metadata`.\n\nFor more information, see [Custom actions](https://developers.thoughtspot.com/docs/custom-action-intro).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "generateCSV", + "description": "\n Version: 10.12.0.cl or later\n\nExports a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal) in the CSV format.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nUse this API to download a custom calendar in the CSV file format. In your API request, specify the following parameters.\n\n* Start and end date of the calendar. For \"month offset\" calendars, the start date must match the month defined in the `month_offset` attribute.\n\nYou can also specify optional parameters such as the starting day of the week and prefixes for the quarter and year labels.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Action", - "9.6.0.cl" + "Custom Calendars", + "10.12.0.cl" ], "requestBody": { "content": { @@ -3052,44 +3296,70 @@ "schema": { "type": "object", "properties": { - "name": { - "description": "Name of the custom action. The custom action name must be unique.", + "start_date": { + "description": "Start date for the calendar in `MM/dd/yyyy` format.", "type": "string" }, - "action_details": { - "description": "Action details includes `Type` and Configuration data for Custom Actions, either Callback or URL is required.", - "allOf": [ - { - "$ref": "#/components/schemas/Action_Details_Input_Create" - } + "end_date": { + "description": "End date for the calendar in `MM/dd/yyyy` format.", + "type": "string" + }, + "calendar_type": { + "description": "Type of the calendar.", + "default": "MONTH_OFFSET", + "type": "string", + "enum": [ + "MONTH_OFFSET", + "FOUR_FOUR_FIVE", + "FOUR_FIVE_FOUR", + "FIVE_FOUR_FOUR" ] }, - "associate_metadata": { - "description": "Metadata objects to which the custom action needs to be associated.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Associate_Metadata_Input_Create" - } + "month_offset": { + "description": "Month offset to start calendar from `January`.", + "default": "January", + "type": "string", + "enum": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] }, - "default_action_config": { - "description": "Default Custom action configuration. This includes if the custom action is available on all visualizations. By default, a custom action is added to all visualizations and Answers.", - "allOf": [ - { - "$ref": "#/components/schemas/Default_Action_Config_Input_Create" - } + "start_day_of_week": { + "description": "Specify the starting day of the week.", + "default": "Sunday", + "type": "string", + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" ] }, - "group_identifiers": { - "description": "Unique ID or name of the groups that can view and access the custom action.", - "type": "array", - "items": { - "type": "string" - } + "quarter_name_prefix": { + "description": "Prefix to add before the quarter.", + "type": "string" + }, + "year_name_prefix": { + "description": "Prefix to add before the year.", + "type": "string" } }, "required": [ - "name", - "action_details" + "start_date", + "end_date" ] } } @@ -3099,29 +3369,11 @@ "parameters": [], "responses": { "200": { - "description": "Custom action created successfully.", + "description": "Generate custom calendar data based on specifications, as a CSV file.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResponseCustomAction" - }, - "examples": { - "example_1": { - "value": { - "action_details": { - "CALLBACK": { - "reference": "customaction" - } - }, - "default_action_config": { - "visibility": true - }, - "id": "3d3cad0f-e57b-4faa-8e24-da596c727ee0", - "metadata_association": [], - "name": "customactionsample", - "user_groups": [] - } - } + "type": "object" } } } @@ -3169,28 +3421,68 @@ } } }, - "/api/rest/2.0/customization/custom-actions/{custom_action_identifier}/delete": { + "/api/rest/2.0/calendars/search": { "post": { - "operationId": "deleteCustomAction", - "description": "\n Version: 9.6.0.cl or later\n\nRemoves the custom action specified in the API request.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchCalendars", + "description": "\n Version: 10.12.0.cl or later\n\nGets a list of [custom calendars](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nBy default, the API returns a list of custom calendars for all connection objects. To retrieve custom calendar details for a particular connection, specify the connection ID. You can also use other search parameters such as `name_pattern` and `sort_options` as search filters.\n\nThe `name_pattern` parameter filters and returns only those objects that match the specified pattern. Use `%` as a wildcard for pattern matching.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Action", - "9.6.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "custom_action_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the custom action." - } + "Custom Calendars", + "10.12.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" + }, + "name_pattern": { + "description": "Pattern to match for calendar names (use '%' for wildcard match).", + "type": "string" + }, + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included.", + "default": 10, + "type": "integer", + "format": "int32" + }, + "sort_options": { + "description": "Sort options.", + "allOf": [ + { + "$ref": "#/components/schemas/SortOption" + } + ] + } + } + } + } + }, + "required": true + }, + "parameters": [], "responses": { - "204": { - "description": "Custom action is successfully deleted." + "200": { + "description": "Custom calendar fetched successfully.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CalendarResponse" + } + } + } + } }, "400": { "description": "Invalid request.", @@ -3235,13 +3527,13 @@ } } }, - "/api/rest/2.0/customization/custom-actions/search": { + "/api/rest/2.0/calendars/{calendar_identifier}/update": { "post": { - "operationId": "searchCustomActions", - "description": "\n Version: 9.6.0.cl or later\n\nGets custom actions configured on the cluster.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateCalendar", + "description": "\n Version: 10.12.0.cl or later\n\nUpdates the properties of a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nYou can update the properties of a calendar using one of the following methods:\n* `FROM_INPUT_PARAMS` to update the calendar properties with the values defined in the API request.\n* `FROM_EXISTING_TABLE` Creates a calendar from the parameters defined in the API request.\n\nTo update a custom calendar, specify the calendar ID as a path parameter in the request URL and the following parameters in the request body: \n\n* Connection ID and Table name\n* Database and schema name attributes:\n For most Cloud Data Warehouse (CDW) connectors, both `database_name` and `schema_name` attributes are required. \n However, the attribute requirements are conditional and vary based on the connector type and its metadata structure. For example, for connectors such as Teradata, MySQL, SingleSore, Amazon Aurora MySQL, Amazon RDS MySQL, Oracle, and GCP_MYSQL, the `schema_name` is required, whereas the `database_name` attribute is not.\n Similarly, connectors such as ClickHouse require you to specify the `database_name` and the schema specification in such cases is optional.\n\nThe API allows you to modify the calendar type, month offset value, start and end date, starting day of the week, and prefixes assigned to the year and quarter labels. \n\n#### Examples\n\nUpdate a custom calendar using an existing Table in ThoughtSpot:\n\n```\n{\n \"update_method\": \"FROM_EXISTING_TABLE\",\n \"table_reference\": {\n \"connection_identifier\": \"Connection1\",\n \"database_name\": \"db1\",\n \"table_name\": \"custom_calendar_2025\",\n \"schame_name\": \"schemaVar\"\n }\n}\n```\n\nUpdate a custom calendar with the attributes defined in the API request:\n\n```\n{\n \"update_method\": \"FROM_INPUT_PARAMS\",\n \"table_reference\": {\n \"connection_identifier\": \"Connection1\",\n \"database_name\": \"db1\",\n \"table_name\": \"custom_calendar_2025\",\n \"schame_name\": \"schemaVar\"\n },\n \"month_offset\": \"August\",\n \"start_day_of_week\": \"Monday\",\n \"start_date\": \"08/01/2025\",\n \"end_date\": \"07/31/2026\"\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Action", - "9.6.0.cl" + "Custom Calendars", + "10.12.0.cl" ], "requestBody": { "content": { @@ -3249,87 +3541,108 @@ "schema": { "type": "object", "properties": { - "custom_action_identifier": { - "description": "Name or ID of the custom action.", - "type": "string" - }, - "name_pattern": { - "description": "A pattern to match case-insensitive name of the custom-action object.", - "type": "string" + "update_method": { + "description": "Type of update operation.", + "default": "FROM_INPUT_PARAMS", + "type": "string", + "enum": [ + "FROM_INPUT_PARAMS", + "FROM_EXISTING_TABLE" + ] }, - "default_action_config": { - "description": "Default Custom action configuration. This includes if the custom action is available on all visualizations. By default, a custom action is added to all visualizations and Answers.", + "table_reference": { + "description": "Table reference containing connection identifier and table details in this format: `{\"connection_identifier\":\"conn1\", \"database_name\":\"db1\", \"schema_name\":\"sc1\", \"table_name\":\"tb1\"}`.", "allOf": [ { - "$ref": "#/components/schemas/Default_Action_Config_Search_Input" + "$ref": "#/components/schemas/ExternalTableInput" } ] }, - "include_group_associations": { - "description": "When set to true, returns the associated groups for a custom action.", - "default": false, - "type": "boolean", - "nullable": true + "start_date": { + "description": "Start date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `update_method` is set as `FROM_INPUT_PARAMS`.", + "type": "string" }, - "include_metadata_associations": { - "description": "When set to true, returns the associated metadata for a custom action.", - "default": false, - "type": "boolean", - "nullable": true + "end_date": { + "description": "End date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `update_method` is set as `FROM_INPUT_PARAMS`.", + "type": "string" }, - "metadata": { - "description": "Search with a given metadata identifier.", - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomActionMetadataTypeInput" - } + "calendar_type": { + "description": "Type of the calendar.", + "default": "MONTH_OFFSET", + "type": "string", + "enum": [ + "MONTH_OFFSET", + "FOUR_FOUR_FIVE", + "FOUR_FIVE_FOUR", + "FIVE_FOUR_FOUR" + ] }, - "type": { - "description": "Filter the action objects based on type", + "month_offset": { + "description": "Specify the month in which the fiscal or custom calendar year should start. For example, if you set `month_offset` to \"April\", the custom calendar will treat \"April\" as the first month of the year, and the related attributes such as quarters and start date will be based on this offset. The default value is `January`, which represents the standard calendar year (January to December).", + "default": "January", "type": "string", "enum": [ - "CALLBACK", - "URL" + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] + }, + "start_day_of_week": { + "description": "Specify the starting day of the week", + "default": "Sunday", + "type": "string", + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" ] + }, + "quarter_name_prefix": { + "description": "Prefix to add before the quarter.", + "default": "", + "type": "string" + }, + "year_name_prefix": { + "description": "Prefix to add before the year.", + "default": "", + "type": "string" } - } + }, + "required": [ + "table_reference" + ] } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "calendar_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique Id or name of the calendar." + } + ], "responses": { - "200": { - "description": "Custom action search is successful.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResponseCustomAction" - } - }, - "examples": { - "example_1": { - "value": [ - { - "action_details": { - "CALLBACK": { - "reference": "LEDE" - } - }, - "default_action_config": { - "visibility": true - }, - "id": "c59262df-cf9e-4947-96fa-52d494688797", - "name": "LEDE" - } - ] - } - } - } - } + "204": { + "description": "Custom calendar updated successfully." }, "400": { "description": "Invalid request.", @@ -3374,13 +3687,13 @@ } } }, - "/api/rest/2.0/customization/custom-actions/{custom_action_identifier}/update": { + "/api/rest/2.0/metadata/answer/data": { "post": { - "operationId": "updateCustomAction", - "description": "\n Version: 9.6.0.cl or later\n\nUpdates a custom action.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n#### Usage Guidelines\n\nThe API allows you to modify the following properties:\n\n* Name of the custom action\n* Action availability to groups\n* Association to metadata objects\n* Authentication settings for a URL-based action\n\nFor more information, see [Custom actions](https://developers.thoughtspot.com/docs/custom-action-intro).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchAnswerData", + "description": "\n Version: 9.0.0.cl or later\n\nFetches data from a saved Answer.\n\nRequires at least view access to the saved Answer.\n\nThe `record_size` attribute determines the number of records to retrieve in an API call. For more information about pagination, record size, and maximum row limit, see [Pagination and record size settings](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_pagination_settings_for_data_and_report_apis).\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Action", - "9.6.0.cl" + "Data", + "9.0.0.cl" ], "requestBody": { "content": { @@ -3388,69 +3701,63 @@ "schema": { "type": "object", "properties": { - "action_details": { - "description": "Action details includes `Type` and Configuration for Custom Actions, either Callback or URL is required.", - "allOf": [ - { - "$ref": "#/components/schemas/Action_Details_Input" - } + "metadata_identifier": { + "description": "GUID or name of the Answer.", + "type": "string" + }, + "data_format": { + "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", + "default": "COMPACT", + "type": "string", + "enum": [ + "FULL", + "COMPACT" ] }, - "associate_metadata": { - "description": "Metadata objects to which the custom action needs to be associated.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Associate_Metadata_Input" - } + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" }, - "default_action_config": { - "description": "Default Custom action configuration. This includes if the custom action available on visualizations and Answers. By default, a custom action is added to all visualizations and Answers.", - "allOf": [ - { - "$ref": "#/components/schemas/Default_Action_Config_Input" - } - ] + "record_size": { + "description": "The number of records to include in a batch.", + "default": 10, + "type": "integer", + "format": "int32" }, - "group_identifiers": { - "description": "Unique ID or name of the groups that can view and access the custom action.", - "type": "array", - "items": { - "type": "string" - } + "runtime_filter": { + "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", + "type": "object" }, - "name": { - "description": "Name of the custom action. The custom action name must be unique.", - "type": "string" + "runtime_sort": { + "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", + "type": "object" }, - "operation": { - "description": "Type of update operation. Default operation type is ADD", - "default": "ADD", - "type": "string", - "enum": [ - "ADD", - "REMOVE" - ] + "runtime_param_override": { + "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", + "type": "object" } - } + }, + "required": [ + "metadata_identifier" + ] } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "custom_action_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the custom action." - } - ], + "parameters": [], "responses": { - "204": { - "description": "Custom action updated successfully." + "200": { + "description": "Fetching data of specified metadata object is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnswerDataResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -3495,13 +3802,13 @@ } } }, - "/api/rest/2.0/calendars/create": { + "/api/rest/2.0/metadata/liveboard/data": { "post": { - "operationId": "createCalendar", - "description": "\n Version: 10.12.0.cl or later\n\nCreates a new [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n\n#### Usage guidelines\n\nYou can create a custom calendar from scratch or an existing Table in ThoughtSpot. For both methods of calendar creation, the following parameters are required:\n\n* Name of the custom calendar.\n* Calendar creation method. To create a calendar from an existing table, specify the method:\n\n - `FROM_EXISTING_TABLE` - Creates calendar from the table reference provided in the API request.\n - `FROM_INPUT_PARAMS` - Creates a calendar from the parameters defined in the API request.\n\n* Connection ID and Table name\n* Database and schema name attributes:\n For most Cloud Data Warehouse (CDW) connectors, both `database_name` and `schema_name` attributes are required. \n However, the attribute requirements are conditional and vary based on the connector type and its metadata structure. For example, for connectors such as Teradata, MySQL, SingleSore, Amazon Aurora MySQL, Amazon RDS MySQL, Oracle, and GCP_MYSQL, the `schema_name` is required, whereas the `database_name` attribute is not.\n Similarly, connectors such as ClickHouse require you to specify the `database_name` and the schema specification in such cases is optional.\n\n**NOTE**: If you are creating a calendar from an existing table, ensure that the referenced table matches the required DDL for custom calendars. If the schema does not match, the API returns an error.\n\n##### Calendar type\nThe API allows you to create the following types of calendars:\n\n* `MONTH_OFFSET`. The default calendar type. A `MONTH_OFFSET` calendar is offset by a few months from the standard calendar months (January to December) and the year begins with the month defined in the request. For example, if the `month_offset` value is set as `April`, the calendar year begins in April.\n\n* `4-4-5`. Each quarter in the calendar will include two 4-week months followed by one 5-week month.\n* `4-5-4`. Each quarter in the calendar will include two 4-week months with a 5-week month between.\n* `5-4-4`. Each quarter begins with a 5-week month, followed by two 4-week months.\n\nTo start and end the calendar on a specific date, specify the dates in the `MM/DD/YYYY` format. For `MONTH_OFFSET` calendars, ensure that the `start_date` matches the month specified in the `month_offset` attribute.\n\nYou can also set the starting day of the week and customize the prefixes for year and quarter labels.\n\n#### Examples\n\nTo create a calendar from an existing table:\n\n```\n{\n \"name\": \"MyCustomCalendar1\",\n \"table_reference\": {\n \"connection_identifier\": \"4db8ea22-2ff4-4224-b05a-26674717e468\",\n \"table_name\": \"MyCalendarTable\",\n \"database_name\": \"RETAILAPPAREL\",\n \"schema_name\": \"PUBLIC\"\n },\n \"creation_method\": \"FROM_EXISTING_TABLE\",\n}\n```\n\nTo create a calendar from scratch:\n\n```\n{\n \"name\": \"MyCustomCalendar1\",\n \"table_reference\": {\n \"connection_identifier\": \"4db8ea22-2ff4-4224-b05a-26674717e468\",\n \"table_name\": \"MyCalendarTable\",\n \"database_name\": \"RETAILAPPAREL\",\n \"schema_name\": \"PUBLIC\"\n },\n \"creation_method\": \"FROM_INPUT_PARAMS\",\n \"calendar_type\": \"MONTH_OFFSET\",\n \"month_offset\": \"April\",\n \"start_day_of_week\": \"Monday\",\n \"quarter_name_prefix\": \"Q\",\n \"year_name_prefix\": \"FY\",\n \"start_date\": \"04/01/2025\",\n \"end_date\": \"04/31/2025\"\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchLiveboardData", + "description": "\n Version: 9.0.0.cl or later\n\nGets data from a Liveboard object and its visualization. \n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To get data for specific visualizations, add the GUIDs or names of the visualizations in the API request.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes. If the new Liveboard experience mode, the transient content includes ad hoc changes to visualizations such as sorting, toggling of legends, and data drill down.\n\nFor more information, and see [Liveboard data API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_fetch_liveboard_data_api).\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Calendars", - "10.12.0.cl" + "Data", + "9.0.0.cl" ], "requestBody": { "content": { @@ -3509,93 +3816,57 @@ "schema": { "type": "object", "properties": { - "name": { - "description": "Name of the custom calendar.", + "metadata_identifier": { + "description": "GUID or name of the Liveboard.", "type": "string" }, - "creation_method": { - "description": "Type of create operation.", - "type": "string", - "enum": [ - "FROM_INPUT_PARAMS", - "FROM_EXISTING_TABLE" - ] - }, - "table_reference": { - "description": "Table reference containing connection identifier and table details in this format: `{\"connection_identifier\":\"conn1\", \"database_name\":\"db1\", \"schema_name\":\"sc1\", \"table_name\":\"tb1\"}`. The given table will be created if `creation_method` is set as `FROM_INPUT_PARAMS`.", - "allOf": [ - { - "$ref": "#/components/schemas/ExternalTableInput" - } - ] - }, - "start_date": { - "description": "Start date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `creation_method` is set as `FROM_INPUT_PARAMS`.", - "type": "string" + "visualization_identifiers": { + "description": "GUIDs or names of the visualizations on the Liveboard.", + "type": "array", + "items": { + "type": "string" + } }, - "end_date": { - "description": "End date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `creation_method` is set as `FROM_INPUT_PARAMS`.", + "transient_content": { + "description": "Transient content of the Liveboard.", "type": "string" }, - "calendar_type": { - "description": "Type of the calendar.", - "default": "MONTH_OFFSET", + "data_format": { + "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", + "default": "COMPACT", "type": "string", "enum": [ - "MONTH_OFFSET", - "FOUR_FOUR_FIVE", - "FOUR_FIVE_FOUR", - "FIVE_FOUR_FOUR" + "FULL", + "COMPACT" ] }, - "month_offset": { - "description": "Specify the month in which the fiscal or custom calendar year should start. For example, if you set `month_offset` to \"April\", the custom calendar will treat \"April\" as the first month of the year, and the related attributes such as quarters and start date will be based on this offset. The default value is `January`, which represents the standard calendar year (January to December).", - "default": "January", - "type": "string", - "enum": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ] + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" }, - "start_day_of_week": { - "description": "Specify the starting day of the week.", - "default": "Sunday", - "type": "string", - "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] + "record_size": { + "description": "The number of records to include in a batch.", + "default": 10, + "type": "integer", + "format": "int32" }, - "quarter_name_prefix": { - "description": "Prefix to add before the quarter.", - "default": "", - "type": "string" + "runtime_filter": { + "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", + "type": "object" }, - "year_name_prefix": { - "description": "Prefix to add before the year.", - "default": "", - "type": "string" + "runtime_sort": { + "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", + "type": "object" + }, + "runtime_param_override": { + "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", + "type": "object" } }, "required": [ - "name", - "creation_method", - "table_reference" + "metadata_identifier" ] } } @@ -3605,11 +3876,11 @@ "parameters": [], "responses": { "200": { - "description": "Custom calendar created successfully.", + "description": "Fetching data of specified metadata object is successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CalendarResponse" + "$ref": "#/components/schemas/LiveboardDataResponse" } } } @@ -3657,28 +3928,82 @@ } } }, - "/api/rest/2.0/calendars/{calendar_identifier}/delete": { + "/api/rest/2.0/searchdata": { "post": { - "operationId": "deleteCalendar", - "description": "\n Version: 10.12.0.cl or later\n\nDeletes a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\nTo delete a custom calendar, specify the calendar ID as a path parameter in the request URL. \n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchData", + "description": "\n Version: 9.0.0.cl or later\n\nGenerates an Answer from a given data source.\n\nRequires at least view access to the data source object (Worksheet or View).\n\n#### Usage guidelines\n\nTo search data, specify the data source GUID in `logical_table_identifier`. The data source can be a Worksheet, View, Table, or SQL view.\n\nPass search tokens in the `query_string` attribute in the API request as shown in the following example:\n\n```\n{\n \"query_string\": \"[sales] by [store]\",\n \"logical_table_identifier\": \"cd252e5c-b552-49a8-821d-3eadaa049cca\",\n}\n```\n\nFor more information about the `query_string` format and data source attribute, see [Search data API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_data_api). \n\nThe `record_size` attribute determines the number of records to retrieve in an API call. For more information about pagination, record size, and maximum row limit, see [Pagination and record size settings](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_pagination_settings_for_data_and_report_api). \n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Calendars", - "10.12.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "calendar_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the Calendar." - } + "Data", + "9.0.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query_string": { + "description": "Query string with search tokens. For example, [Sales][Region]. See [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_data_api)", + "type": "string" + }, + "logical_table_identifier": { + "description": "GUID of the data source object, such as a Worksheet, View, or Table. You can find the GUID of a data object from the UI or via API. See [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_query) for more details.", + "type": "string" + }, + "data_format": { + "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", + "default": "COMPACT", + "type": "string", + "enum": [ + "FULL", + "COMPACT" + ] + }, + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records to include in a batch.", + "default": 10, + "type": "integer", + "format": "int32" + }, + "runtime_filter": { + "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", + "type": "object" + }, + "runtime_sort": { + "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", + "type": "object" + }, + "runtime_param_override": { + "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", + "type": "object" + } + }, + "required": [ + "query_string", + "logical_table_identifier" + ] + } + } + }, + "required": true + }, + "parameters": [], "responses": { - "204": { - "description": "Custom calendar successfully deleted." + "200": { + "description": "Fetching data of specified metadata object is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchDataResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -3723,13 +4048,13 @@ } } }, - "/api/rest/2.0/calendars/generate-csv": { + "/api/rest/2.0/dbt/dbt-connection": { "post": { - "operationId": "generateCSV", - "description": "\n Version: 10.12.0.cl or later\n\nExports a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal) in the CSV format.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nUse this API to download a custom calendar in the CSV file format. In your API request, specify the following parameters.\n\n* Start and end date of the calendar. For \"month offset\" calendars, the start date must match the month defined in the `month_offset` attribute.\n\nYou can also specify optional parameters such as the starting day of the week and prefixes for the quarter and year labels.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "dbtConnection", + "description": "\n Version: 9.9.0.cl or later\n\nCreates a DBT connection object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About create DBT connection\nDBT connection in ThoughtSpot is used by the user to define DBT credentials for cloud . The API needs embrace connection, embrace database name, DBT url, import type, DBT account identifier, DBT project identifier, DBT access token and environment details (or) embrace connection, embrace database name, import type, file_content to create a connection object. To know more about DBT, see ThoughtSpot Product Documentation.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Calendars", - "10.12.0.cl" + "DBT", + "9.9.0.cl" ], "requestBody": { "content": { @@ -3737,70 +4062,56 @@ "schema": { "type": "object", "properties": { - "start_date": { - "description": "Start date for the calendar in `MM/dd/yyyy` format.", + "connection_name": { + "description": "Name of the connection.", "type": "string" }, - "end_date": { - "description": "End date for the calendar in `MM/dd/yyyy` format.", + "database_name": { + "description": "Name of the Database.", "type": "string" }, - "calendar_type": { - "description": "Type of the calendar.", - "default": "MONTH_OFFSET", + "import_type": { + "description": "Mention type of Import", + "default": "DBT_CLOUD", "type": "string", "enum": [ - "MONTH_OFFSET", - "FOUR_FOUR_FIVE", - "FOUR_FIVE_FOUR", - "FIVE_FOUR_FOUR" + "DBT_CLOUD", + "ZIP_FILE" ] }, - "month_offset": { - "description": "Month offset to start calendar from `January`.", - "default": "January", - "type": "string", - "enum": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ] + "access_token": { + "description": "Access token is mandatory when Import_Type is DBT_CLOUD.", + "type": "string" }, - "start_day_of_week": { - "description": "Specify the starting day of the week.", - "default": "Sunday", - "type": "string", - "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] + "dbt_url": { + "description": "DBT URL is mandatory when Import_Type is DBT_CLOUD.", + "type": "string" }, - "quarter_name_prefix": { - "description": "Prefix to add before the quarter.", + "account_id": { + "description": "Account ID is mandatory when Import_Type is DBT_CLOUD", "type": "string" }, - "year_name_prefix": { - "description": "Prefix to add before the year.", + "project_id": { + "description": "Project ID is mandatory when Import_Type is DBT_CLOUD", + "type": "string" + }, + "dbt_env_id": { + "description": "DBT Environment ID\"", + "type": "string" + }, + "project_name": { + "description": "Name of the project", "type": "string" + }, + "file_content": { + "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is Mandatory when Import Type is 'ZIP_FILE'", + "type": "string", + "format": "binary" } }, "required": [ - "start_date", - "end_date" + "connection_name", + "database_name" ] } } @@ -3810,7 +4121,7 @@ "parameters": [], "responses": { "200": { - "description": "Generate custom calendar data based on specifications, as a CSV file.", + "description": "Succesfully created DBT Connection.", "content": { "application/json": { "schema": { @@ -3862,13 +4173,13 @@ } } }, - "/api/rest/2.0/calendars/search": { + "/api/rest/2.0/dbt/generate-sync-tml": { "post": { - "operationId": "searchCalendars", - "description": "\n Version: 10.12.0.cl or later\n\nGets a list of [custom calendars](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nBy default, the API returns a list of custom calendars for all connection objects. To retrieve custom calendar details for a particular connection, specify the connection ID. You can also use other search parameters such as `name_pattern` and `sort_options` as search filters.\n\nThe `name_pattern` parameter filters and returns only those objects that match the specified pattern. Use `%` as a wildcard for pattern matching.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "dbtGenerateSyncTml", + "description": "\n Version: 9.9.0.cl or later\n\nResynchronize the existing list of models, tables, worksheet tml’s and import them to Thoughtspot based on the DBT connection object.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Calendars", - "10.12.0.cl" + "DBT", + "9.9.0.cl" ], "requestBody": { "content": { @@ -3876,35 +4187,19 @@ "schema": { "type": "object", "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - }, - "name_pattern": { - "description": "Pattern to match for calendar names (use '%' for wildcard match).", + "dbt_connection_identifier": { + "description": "Unique ID of the DBT connection.", "type": "string" }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "sort_options": { - "description": "Sort options.", - "allOf": [ - { - "$ref": "#/components/schemas/SortOption" - } - ] + "file_content": { + "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is mandatory if the connection was created with import_type ‘ZIP_FILE’", + "type": "string", + "format": "binary" } - } + }, + "required": [ + "dbt_connection_identifier" + ] } } }, @@ -3913,14 +4208,11 @@ "parameters": [], "responses": { "200": { - "description": "Custom calendar fetched successfully.", + "description": "Sync Table and Worksheet TML's are successfully generated.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CalendarResponse" - } + "type": "object" } } } @@ -3968,13 +4260,13 @@ } } }, - "/api/rest/2.0/calendars/{calendar_identifier}/update": { + "/api/rest/2.0/dbt/generate-tml": { "post": { - "operationId": "updateCalendar", - "description": "\n Version: 10.12.0.cl or later\n\nUpdates the properties of a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nYou can update the properties of a calendar using one of the following methods:\n* `FROM_INPUT_PARAMS` to update the calendar properties with the values defined in the API request.\n* `FROM_EXISTING_TABLE` Creates a calendar from the parameters defined in the API request.\n\nTo update a custom calendar, specify the calendar ID as a path parameter in the request URL and the following parameters in the request body: \n\n* Connection ID and Table name\n* Database and schema name attributes:\n For most Cloud Data Warehouse (CDW) connectors, both `database_name` and `schema_name` attributes are required. \n However, the attribute requirements are conditional and vary based on the connector type and its metadata structure. For example, for connectors such as Teradata, MySQL, SingleSore, Amazon Aurora MySQL, Amazon RDS MySQL, Oracle, and GCP_MYSQL, the `schema_name` is required, whereas the `database_name` attribute is not.\n Similarly, connectors such as ClickHouse require you to specify the `database_name` and the schema specification in such cases is optional.\n\nThe API allows you to modify the calendar type, month offset value, start and end date, starting day of the week, and prefixes assigned to the year and quarter labels. \n\n#### Examples\n\nUpdate a custom calendar using an existing Table in ThoughtSpot:\n\n```\n{\n \"update_method\": \"FROM_EXISTING_TABLE\",\n \"table_reference\": {\n \"connection_identifier\": \"Connection1\",\n \"database_name\": \"db1\",\n \"table_name\": \"custom_calendar_2025\",\n \"schame_name\": \"schemaVar\"\n }\n}\n```\n\nUpdate a custom calendar with the attributes defined in the API request:\n\n```\n{\n \"update_method\": \"FROM_INPUT_PARAMS\",\n \"table_reference\": {\n \"connection_identifier\": \"Connection1\",\n \"database_name\": \"db1\",\n \"table_name\": \"custom_calendar_2025\",\n \"schame_name\": \"schemaVar\"\n },\n \"month_offset\": \"August\",\n \"start_day_of_week\": \"Monday\",\n \"start_date\": \"08/01/2025\",\n \"end_date\": \"07/31/2026\"\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "dbtGenerateTml", + "description": "\n Version: 9.9.0.cl or later\n\nGenerate required table and worksheet and import them.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About generate TML\nModels and Worksheets to be imported can be selected by the user as part of the API.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Calendars", - "10.12.0.cl" + "DBT", + "9.9.0.cl" ], "requestBody": { "content": { @@ -3982,108 +4274,59 @@ "schema": { "type": "object", "properties": { - "update_method": { - "description": "Type of update operation.", - "default": "FROM_INPUT_PARAMS", - "type": "string", - "enum": [ - "FROM_INPUT_PARAMS", - "FROM_EXISTING_TABLE" - ] - }, - "table_reference": { - "description": "Table reference containing connection identifier and table details in this format: `{\"connection_identifier\":\"conn1\", \"database_name\":\"db1\", \"schema_name\":\"sc1\", \"table_name\":\"tb1\"}`.", - "allOf": [ - { - "$ref": "#/components/schemas/ExternalTableInput" - } - ] - }, - "start_date": { - "description": "Start date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `update_method` is set as `FROM_INPUT_PARAMS`.", + "dbt_connection_identifier": { + "description": "Unique ID of the DBT connection.", "type": "string" }, - "end_date": { - "description": "End date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `update_method` is set as `FROM_INPUT_PARAMS`.", - "type": "string" + "model_tables": { + "description": "List of Models and their respective Tables", + "type": "array", + "items": { + "$ref": "#/components/schemas/ModelTableList" + } }, - "calendar_type": { - "description": "Type of the calendar.", - "default": "MONTH_OFFSET", + "import_worksheets": { + "description": "Mention the worksheet tmls to import", "type": "string", "enum": [ - "MONTH_OFFSET", - "FOUR_FOUR_FIVE", - "FOUR_FIVE_FOUR", - "FIVE_FOUR_FOUR" + "ALL", + "NONE", + "SELECTED" ] }, - "month_offset": { - "description": "Specify the month in which the fiscal or custom calendar year should start. For example, if you set `month_offset` to \"April\", the custom calendar will treat \"April\" as the first month of the year, and the related attributes such as quarters and start date will be based on this offset. The default value is `January`, which represents the standard calendar year (January to December).", - "default": "January", - "type": "string", - "enum": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ] + "worksheets": { + "description": "List of worksheets is mandatory when import_Worksheets is type SELECTED", + "type": "array", + "items": { + "type": "string" + } }, - "start_day_of_week": { - "description": "Specify the starting day of the week", - "default": "Sunday", + "file_content": { + "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is mandatory if the connection was created with import_type ‘ZIP_FILE’", "type": "string", - "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] - }, - "quarter_name_prefix": { - "description": "Prefix to add before the quarter.", - "default": "", - "type": "string" - }, - "year_name_prefix": { - "description": "Prefix to add before the year.", - "default": "", - "type": "string" + "format": "binary" } }, "required": [ - "table_reference" + "dbt_connection_identifier", + "import_worksheets" ] } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "calendar_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique Id or name of the calendar." - } - ], + "parameters": [], "responses": { - "204": { - "description": "Custom calendar updated successfully." + "200": { + "description": "Required Table and Worksheet TML's are successfully generated.", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } }, "400": { "description": "Invalid request.", @@ -4128,74 +4371,25 @@ } } }, - "/api/rest/2.0/metadata/answer/data": { + "/api/rest/2.0/dbt/search": { "post": { - "operationId": "fetchAnswerData", - "description": "\n Version: 9.0.0.cl or later\n\nFetches data from a saved Answer.\n\nRequires at least view access to the saved Answer.\n\nThe `record_size` attribute determines the number of records to retrieve in an API call. For more information about pagination, record size, and maximum row limit, see [Pagination and record size settings](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_pagination_settings_for_data_and_report_apis).\n\n\n\n#### Endpoint URL\n", + "operationId": "dbtSearch", + "description": "\n Version: 9.9.0.cl or later\n\nGets a list of DBT connection objects by user and organization, available on the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About search DBT connection\nTo get details of a specific DBT connection identifier, database connection identifier, database connection name, database name, project name, project identifier, environment identifier , import type and author.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Data", - "9.0.0.cl" + "DBT", + "9.9.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "GUID or name of the Answer.", - "type": "string" - }, - "data_format": { - "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", - "default": "COMPACT", - "type": "string", - "enum": [ - "FULL", - "COMPACT" - ] - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records to include in a batch.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "runtime_filter": { - "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", - "type": "object" - }, - "runtime_sort": { - "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", - "type": "object" - }, - "runtime_param_override": { - "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", - "type": "object" - } - }, - "required": [ - "metadata_identifier" - ] - } - } - }, - "required": true - }, "parameters": [], "responses": { "200": { - "description": "Fetching data of specified metadata object is successful.", + "description": "Retrieved list of DBT connections successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AnswerDataResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/DbtSearchResponse" + } } } } @@ -4243,88 +4437,28 @@ } } }, - "/api/rest/2.0/metadata/liveboard/data": { + "/api/rest/2.0/dbt/{dbt_connection_identifier}/delete": { "post": { - "operationId": "fetchLiveboardData", - "description": "\n Version: 9.0.0.cl or later\n\nGets data from a Liveboard object and its visualization. \n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To get data for specific visualizations, add the GUIDs or names of the visualizations in the API request.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes. If the new Liveboard experience mode, the transient content includes ad hoc changes to visualizations such as sorting, toggling of legends, and data drill down.\n\nFor more information, and see [Liveboard data API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_fetch_liveboard_data_api).\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteDbtConnection", + "description": "\n Version: 9.9.0.cl or later\n\nRemoves the specified DBT connection object from the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Data", - "9.0.0.cl" + "DBT", + "9.9.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "dbt_connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID of the DBT Connection." + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "GUID or name of the Liveboard.", - "type": "string" - }, - "visualization_identifiers": { - "description": "GUIDs or names of the visualizations on the Liveboard.", - "type": "array", - "items": { - "type": "string" - } - }, - "transient_content": { - "description": "Transient content of the Liveboard.", - "type": "string" - }, - "data_format": { - "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", - "default": "COMPACT", - "type": "string", - "enum": [ - "FULL", - "COMPACT" - ] - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records to include in a batch.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "runtime_filter": { - "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", - "type": "object" - }, - "runtime_sort": { - "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", - "type": "object" - }, - "runtime_param_override": { - "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", - "type": "object" - } - }, - "required": [ - "metadata_identifier" - ] - } - } - }, - "required": true - }, - "parameters": [], "responses": { - "200": { - "description": "Fetching data of specified metadata object is successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LiveboardDataResponse" - } - } - } + "204": { + "description": "DBT Connection successfully deleted." }, "400": { "description": "Invalid request.", @@ -4369,13 +4503,13 @@ } } }, - "/api/rest/2.0/searchdata": { + "/api/rest/2.0/dbt/update-dbt-connection": { "post": { - "operationId": "searchData", - "description": "\n Version: 9.0.0.cl or later\n\nGenerates an Answer from a given data source.\n\nRequires at least view access to the data source object (Worksheet or View).\n\n#### Usage guidelines\n\nTo search data, specify the data source GUID in `logical_table_identifier`. The data source can be a Worksheet, View, Table, or SQL view.\n\nPass search tokens in the `query_string` attribute in the API request as shown in the following example:\n\n```\n{\n \"query_string\": \"[sales] by [store]\",\n \"logical_table_identifier\": \"cd252e5c-b552-49a8-821d-3eadaa049cca\",\n}\n```\n\nFor more information about the `query_string` format and data source attribute, see [Search data API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_data_api). \n\nThe `record_size` attribute determines the number of records to retrieve in an API call. For more information about pagination, record size, and maximum row limit, see [Pagination and record size settings](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_pagination_settings_for_data_and_report_api). \n\n\n\n#### Endpoint URL\n", + "operationId": "updateDbtConnection", + "description": "\n Version: 9.9.0.cl or later\n\nUpdates a DBT connection object.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data ThoughtSpot**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About update DBT connection\nYou can modify DBT connection object properties such as embrace connection name, embrace database name, import type, account identifier, access token, project identifier and environment (or) embrace connection, embrace database name, import type, file_content settings.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Data", - "9.0.0.cl" + "DBT", + "9.9.0.cl" ], "requestBody": { "content": { @@ -4383,51 +4517,59 @@ "schema": { "type": "object", "properties": { - "query_string": { - "description": "Query string with search tokens. For example, [Sales][Region]. See [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_data_api)", + "dbt_connection_identifier": { + "description": "Unique ID of the DBT Connection.", "type": "string" }, - "logical_table_identifier": { - "description": "GUID of the data source object, such as a Worksheet, View, or Table. You can find the GUID of a data object from the UI or via API. See [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_query) for more details.", + "connection_name": { + "description": "Name of the connection.", "type": "string" }, - "data_format": { - "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", - "default": "COMPACT", + "database_name": { + "description": "Name of the Database.", + "type": "string" + }, + "import_type": { + "description": "Mention type of Import", + "default": "DBT_CLOUD", "type": "string", "enum": [ - "FULL", - "COMPACT" + "DBT_CLOUD", + "ZIP_FILE" ] }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" + "access_token": { + "description": "Access token is mandatory when Import_Type is DBT_CLOUD.", + "type": "string" }, - "record_size": { - "description": "The number of records to include in a batch.", - "default": 10, - "type": "integer", - "format": "int32" + "dbt_url": { + "description": "DBT URL is mandatory when Import_Type is DBT_CLOUD.", + "type": "string" }, - "runtime_filter": { - "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", - "type": "object" + "account_id": { + "description": "Account ID is mandatory when Import_Type is DBT_CLOUD", + "type": "string" }, - "runtime_sort": { - "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", - "type": "object" + "project_id": { + "description": "Project ID is mandatory when Import_Type is DBT_CLOUD", + "type": "string" }, - "runtime_param_override": { - "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", - "type": "object" + "dbt_env_id": { + "description": "DBT Environment ID\"", + "type": "string" + }, + "project_name": { + "description": "Name of the project", + "type": "string" + }, + "file_content": { + "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is Mandatory when Import Type is 'ZIP_FILE'", + "type": "string", + "format": "binary" } }, "required": [ - "query_string", - "logical_table_identifier" + "dbt_connection_identifier" ] } } @@ -4437,11 +4579,11 @@ "parameters": [], "responses": { "200": { - "description": "Fetching data of specified metadata object is successful.", + "description": "DBT Connection successfully updated.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SearchDataResponse" + "type": "object" } } } @@ -4489,70 +4631,35 @@ } } }, - "/api/rest/2.0/dbt/dbt-connection": { + "/api/rest/2.0/customization/email": { "post": { - "operationId": "dbtConnection", - "description": "\n Version: 9.9.0.cl or later\n\nCreates a DBT connection object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About create DBT connection\nDBT connection in ThoughtSpot is used by the user to define DBT credentials for cloud . The API needs embrace connection, embrace database name, DBT url, import type, DBT account identifier, DBT project identifier, DBT access token and environment details (or) embrace connection, embrace database name, import type, file_content to create a connection object. To know more about DBT, see ThoughtSpot Product Documentation.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createEmailCustomization", + "description": "\nBeta Version: 10.10.0.cl or later\n\nCreates a customization configuration for the notification email.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\nTo create a custom configuration pass these parameters in your API request:\n\n- A JSON map of configuration attributes `template_properties`. The following example shows a sample set of customization configuration:\n\n```\n{\n {\n \"ctaButtonBgColor\": \"#444DEA\",\n \"ctaTextFontColor\": \"#FFFFFF\",\n \"primaryBgColor\": \"#D3DEF0\",\n \"hideMobileAppNudge\": false,\n \"fontFamily\" : \"\",\n \"hideProductName\" : false,\n \"hideFooterPhone\" : false,\n \"hideFooterAddress\" : false,\n \"hidePrivacyPolicy\" : false,\n \"hideManageNotification\" : false,\n \"hideTsVocabularyDefinitions\": false,\n \"hideNotificationStatus\" : false,\n \"hideErrorMessage\": false,\n \"hideUnsubscribeLink\" : false,\n \"hideModifyAlert\": false,\n \"textTransform\": \"\",\n \"replacementValueForLiveboard\": \"LB dashboard\",\n \"replacementValueForAnswer\": \"Answer dashboard\",\n \"replacementValueForSpotIQ\": \"SpotIQ dashboard\",\n \"logoUrl\":\"\",\n \"productName\":\"ThoughtSpot\",\n \"footerPhone\":\"(800) 508-7008\",\n \"footerAddress\":\"444 Castro St, Suite 1000 Mountain View, CA 94041\"\n }\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" + "Email Customization", + "10.10.0.cl" ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { "type": "object", "properties": { - "connection_name": { - "description": "Name of the connection.", - "type": "string" - }, - "database_name": { - "description": "Name of the Database.", - "type": "string" - }, - "import_type": { - "description": "Mention type of Import", - "default": "DBT_CLOUD", - "type": "string", - "enum": [ - "DBT_CLOUD", - "ZIP_FILE" + "template_properties": { + "description": "Email customization configuration as key value pair", + "allOf": [ + { + "$ref": "#/components/schemas/Template_Properties_Input_Create" + } ] }, - "access_token": { - "description": "Access token is mandatory when Import_Type is DBT_CLOUD.", - "type": "string" - }, - "dbt_url": { - "description": "DBT URL is mandatory when Import_Type is DBT_CLOUD.", - "type": "string" - }, - "account_id": { - "description": "Account ID is mandatory when Import_Type is DBT_CLOUD", + "org_identifier": { + "description": "Unique ID or name of org
Version: 10.12.0.cl or later", "type": "string" - }, - "project_id": { - "description": "Project ID is mandatory when Import_Type is DBT_CLOUD", - "type": "string" - }, - "dbt_env_id": { - "description": "DBT Environment ID\"", - "type": "string" - }, - "project_name": { - "description": "Name of the project", - "type": "string" - }, - "file_content": { - "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is Mandatory when Import Type is 'ZIP_FILE'", - "type": "string", - "format": "binary" } }, "required": [ - "connection_name", - "database_name" + "template_properties" ] } } @@ -4562,11 +4669,11 @@ "parameters": [], "responses": { "200": { - "description": "Succesfully created DBT Connection.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/CreateEmailCustomizationResponse" } } } @@ -4581,7 +4688,7 @@ } } }, - "401": { + "403": { "description": "Unauthorized access.", "content": { "application/json": { @@ -4591,8 +4698,55 @@ } } }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/customization/email/{template_identifier}/delete": { + "post": { + "operationId": "deleteEmailCustomization", + "description": "\nBeta Version: 10.10.0.cl or later\n\nDeletes the configuration for the email customization.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\n- Call the search API endpoint to get the `template_identifier` from the response.\n- Use that `template_identifier` as a parameter in this API request.\n\n\n\n\n#### Endpoint URL\n", + "deprecated": true, + "tags": [ + "Email Customization", + "10.10.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "template_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the email customization." + } + ], + "responses": { + "204": { + "description": "Email Customization configuration successfully deleted." + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -4614,33 +4768,28 @@ } } }, - "/api/rest/2.0/dbt/generate-sync-tml": { + "/api/rest/2.0/customization/email/delete": { "post": { - "operationId": "dbtGenerateSyncTml", - "description": "\n Version: 9.9.0.cl or later\n\nResynchronize the existing list of models, tables, worksheet tml’s and import them to Thoughtspot based on the DBT connection object.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteOrgEmailCustomization", + "description": "\nBeta Version: 10.12.0.cl or later\n\nDeletes the configuration for the email customization.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\n- Call the search API endpoint to get the `org_identifier` from the response.\n- Use that `org_identifier` as a parameter in this API request.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" + "Email Customization", + "10.12.0.cl" ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { "type": "object", "properties": { - "dbt_connection_identifier": { - "description": "Unique ID of the DBT connection.", - "type": "string" - }, - "file_content": { - "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is mandatory if the connection was created with import_type ‘ZIP_FILE’", - "type": "string", - "format": "binary" + "org_identifiers": { + "description": "Unique identifier of the organization.", + "type": "array", + "items": { + "type": "string" + } } - }, - "required": [ - "dbt_connection_identifier" - ] + } } } }, @@ -4648,15 +4797,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Sync Table and Worksheet TML's are successfully generated.", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } + "204": { + "description": "Email Customization configuration successfully deleted." }, "400": { "description": "Invalid request.", @@ -4679,7 +4821,7 @@ } }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -4701,54 +4843,28 @@ } } }, - "/api/rest/2.0/dbt/generate-tml": { + "/api/rest/2.0/customization/email/search": { "post": { - "operationId": "dbtGenerateTml", - "description": "\n Version: 9.9.0.cl or later\n\nGenerate required table and worksheet and import them.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About generate TML\nModels and Worksheets to be imported can be selected by the user as part of the API.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchEmailCustomization", + "description": "\nBeta Version: 10.10.0.cl or later\n\nSearch the email customization configuration if any set for the ThoughtSpot system.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" + "Email Customization", + "10.10.0.cl" ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { "type": "object", "properties": { - "dbt_connection_identifier": { - "description": "Unique ID of the DBT connection.", - "type": "string" - }, - "model_tables": { - "description": "List of Models and their respective Tables\nExample: '[{\"model_name\": \"model_name\", \"tables\": [\"table_name\"]}]'", - "type": "string", - "format": "json" - }, - "import_worksheets": { - "description": "Mention the worksheet tmls to import", - "type": "string", - "enum": [ - "ALL", - "NONE", - "SELECTED" - ] - }, - "worksheets": { - "description": "List of worksheets is mandatory when import_Worksheets is type SELECTED\nExample: [\"worksheet_name\"]", - "type": "string", - "format": "json" - }, - "file_content": { - "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is mandatory if the connection was created with import_type ‘ZIP_FILE’", - "type": "string", - "format": "binary" + "org_identifiers": { + "description": "Unique ID or name of org
Version: 10.12.0.cl or later", + "type": "array", + "items": { + "type": "string" + } } - }, - "required": [ - "dbt_connection_identifier", - "model_tables", - "import_worksheets" - ] + } } } }, @@ -4757,11 +4873,14 @@ "parameters": [], "responses": { "200": { - "description": "Required Table and Worksheet TML's are successfully generated.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "object" + "type": "array", + "items": { + "$ref": "#/components/schemas/CreateEmailCustomizationResponse" + } } } } @@ -4776,18 +4895,8 @@ } } }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -4809,29 +4918,46 @@ } } }, - "/api/rest/2.0/dbt/search": { + "/api/rest/2.0/customization/email/update": { "post": { - "operationId": "dbtSearch", - "description": "\n Version: 9.9.0.cl or later\n\nGets a list of DBT connection objects by user and organization, available on the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About search DBT connection\nTo get details of a specific DBT connection identifier, database connection identifier, database connection name, database name, project name, project identifier, environment identifier , import type and author.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateEmailCustomization", + "description": "\nBeta Version: 10.12.0.cl or later\n\nUpdates a customization configuration for the notification email.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\nTo update a custom configuration pass these parameters in your API request:\n\n- A JSON map of configuration attributes `template_properties`. The following example shows a sample set of customization configuration:\n\n```\n{\n {\n \"ctaButtonBgColor\": \"#444DEA\",\n \"ctaTextFontColor\": \"#FFFFFF\",\n \"primaryBgColor\": \"#D3DEF0\",\n \"hideMobileAppNudge\": false,\n \"fontFamily\" : \"\",\n \"hideProductName\" : false,\n \"hideFooterPhone\" : false,\n \"hideFooterAddress\" : false,\n \"hidePrivacyPolicy\" : false,\n \"hideManageNotification\" : false,\n \"hideTsVocabularyDefinitions\": false,\n \"hideNotificationStatus\" : false,\n \"hideErrorMessage\": false,\n \"hideUnsubscribeLink\" : false,\n \"hideModifyAlert\": false,\n \"textTransform\": \"\",\n \"replacementValueForLiveboard\": \"LB dashboard\",\n \"replacementValueForAnswer\": \"Answer dashboard\",\n \"replacementValueForSpotIQ\": \"SpotIQ dashboard\",\n \"logoUrl\":\"\",\n \"productName\":\"ThoughtSpot\",\n \"footerPhone\":\"(800) 508-7008\",\n \"footerAddress\":\"444 Castro St, Suite 1000 Mountain View, CA 94041\"\n }\n}\n```\n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" + "Email Customization", + "10.12.0.cl" ], - "parameters": [], - "responses": { - "200": { - "description": "Retrieved list of DBT connections successfully.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DbtSearchResponse" + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "template_properties": { + "description": "Email customization configuration as key value pair", + "allOf": [ + { + "$ref": "#/components/schemas/Template_Properties_Input_Create" + } + ] + }, + "org_identifier": { + "description": "Unique ID or name of org", + "type": "string" } - } + }, + "required": [ + "template_properties" + ] } } }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Email Customization configuration successfully updated." + }, "400": { "description": "Invalid request.", "content": { @@ -4853,7 +4979,7 @@ } }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -4875,28 +5001,18 @@ } } }, - "/api/rest/2.0/dbt/{dbt_connection_identifier}/delete": { + "/api/rest/2.0/customization/email/validate": { "post": { - "operationId": "deleteDbtConnection", - "description": "\n Version: 9.9.0.cl or later\n\nRemoves the specified DBT connection object from the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n\n\n\n#### Endpoint URL\n", + "operationId": "validateEmailCustomization", + "description": "\nBeta Version: 10.10.0.cl or later\n\nValidates the email customization configuration if any set for the ThoughtSpot system.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "dbt_connection_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID of the DBT Connection." - } + "Email Customization", + "10.10.0.cl" ], + "parameters": [], "responses": { "204": { - "description": "DBT Connection successfully deleted." + "description": "Triggered test email for customization configuration" }, "400": { "description": "Invalid request.", @@ -4908,18 +5024,8 @@ } } }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -4941,73 +5047,118 @@ } } }, - "/api/rest/2.0/dbt/update-dbt-connection": { + "/api/rest/2.0/groups/create": { "post": { - "operationId": "updateDbtConnection", - "description": "\n Version: 9.9.0.cl or later\n\nUpdates a DBT connection object.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data ThoughtSpot**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About update DBT connection\nYou can modify DBT connection object properties such as embrace connection name, embrace database name, import type, account identifier, access token, project identifier and environment (or) embrace connection, embrace database name, import type, file_content settings.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createUserGroup", + "description": "\n Version: 9.0.0.cl or later\n\nCreates a group object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n#### About groups\nGroups in ThoughtSpot are used by the administrators to define privileges and organize users based on their roles and access requirements. To know more about groups and privileges, see [ThoughtSpot Product Documentation](https://docs.thoughtspot.com/cloud/latest/groups-privileges).\n\n#### Supported operations\n\nThe API endpoint lets you perform the following operations:\n\n* Assign privileges\n* Add users\n* Define sharing visibility\n* Add sub-groups\n* Assign a default Liveboard\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" + "Groups", + "9.0.0.cl" ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { "type": "object", "properties": { - "dbt_connection_identifier": { - "description": "Unique ID of the DBT Connection.", - "type": "string" - }, - "connection_name": { - "description": "Name of the connection.", + "name": { + "description": "Name of the group. The group name must be unique.", "type": "string" }, - "database_name": { - "description": "Name of the Database.", + "display_name": { + "description": "Display name for the group.", "type": "string" }, - "import_type": { - "description": "Mention type of Import", - "default": "DBT_CLOUD", - "type": "string", - "enum": [ - "DBT_CLOUD", - "ZIP_FILE" - ] - }, - "access_token": { - "description": "Access token is mandatory when Import_Type is DBT_CLOUD.", - "type": "string" + "default_liveboard_identifiers": { + "description": "GUID of the Liveboards to assign as default Liveboards to the users in the group.", + "type": "array", + "items": { + "type": "string" + } }, - "dbt_url": { - "description": "DBT URL is mandatory when Import_Type is DBT_CLOUD.", + "description": { + "description": "Description of the group", "type": "string" }, - "account_id": { - "description": "Account ID is mandatory when Import_Type is DBT_CLOUD", - "type": "string" + "privileges": { + "description": "Privileges to assign to the group", + "type": "array", + "items": { + "type": "string", + "enum": [ + "ADMINISTRATION", + "AUTHORING", + "USERDATAUPLOADING", + "DATADOWNLOADING", + "USERMANAGEMENT", + "DATAMANAGEMENT", + "SHAREWITHALL", + "JOBSCHEDULING", + "A3ANALYSIS", + "EXPERIMENTALFEATUREPRIVILEGE", + "BYPASSRLS", + "RANALYSIS", + "DEVELOPER", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "SYNCMANAGEMENT", + "CAN_CREATE_CATALOG", + "DISABLE_PINBOARD_CREATION", + "LIVEBOARD_VERIFIER", + "PREVIEW_THOUGHTSPOT_SAGE", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "ALLOW_NON_EMBED_FULL_APP_ACCESS", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "PREVIEW_DOCUMENT_SEARCH", + "CAN_SETUP_VERSION_CONTROL" + ] + } }, - "project_id": { - "description": "Project ID is mandatory when Import_Type is DBT_CLOUD", - "type": "string" + "sub_group_identifiers": { + "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", + "type": "array", + "items": { + "type": "string" + } }, - "dbt_env_id": { - "description": "DBT Environment ID\"", - "type": "string" + "type": { + "description": "Group type.", + "default": "LOCAL_GROUP", + "type": "string", + "enum": [ + "LOCAL_GROUP", + "LDAP_GROUP" + ] }, - "project_name": { - "description": "Name of the project", - "type": "string" + "user_identifiers": { + "description": "GUID or name of the users to assign to the group.", + "type": "array", + "items": { + "type": "string" + } }, - "file_content": { - "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is Mandatory when Import Type is 'ZIP_FILE'", + "visibility": { + "description": "Visibility of the group. To make a group visible to other users and groups,\nset the visibility to SHAREABLE.", + "default": "SHARABLE", "type": "string", - "format": "binary" + "enum": [ + "SHARABLE", + "NON_SHARABLE" + ] + }, + "role_identifiers": { + "description": "Role identifiers of the roles that should be assigned to the group.", + "type": "array", + "items": { + "type": "string" + } } }, "required": [ - "dbt_connection_identifier" + "name", + "display_name" ] } } @@ -5017,11 +5168,11 @@ "parameters": [], "responses": { "200": { - "description": "DBT Connection successfully updated.", + "description": "User group successfully created.", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/UserGroupResponse" } } } @@ -5069,109 +5220,28 @@ } } }, - "/api/rest/2.0/customization/email": { - "post": { - "operationId": "createEmailCustomization", - "description": "\nBeta Version: 10.10.0.cl or later\n\nCreates a customization configuration for the notification email.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\nTo create a custom configuration pass these parameters in your API request:\n\n- A JSON map of configuration attributes `template_properties`. The following example shows a sample set of customization configuration:\n\n```\n{\n {\n \"ctaButtonBgColor\": \"#444DEA\",\n \"ctaTextFontColor\": \"#FFFFFF\",\n \"primaryBgColor\": \"#D3DEF0\",\n \"hideMobileAppNudge\": false,\n \"fontFamily\" : \"\",\n \"hideProductName\" : false,\n \"hideFooterPhone\" : false,\n \"hideFooterAddress\" : false,\n \"hidePrivacyPolicy\" : false,\n \"hideManageNotification\" : false,\n \"hideTsVocabularyDefinitions\": false,\n \"hideNotificationStatus\" : false,\n \"hideErrorMessage\": false,\n \"hideUnsubscribeLink\" : false,\n \"hideModifyAlert\": false,\n \"textTransform\": \"\",\n \"replacementValueForLiveboard\": \"LB dashboard\",\n \"replacementValueForAnswer\": \"Answer dashboard\",\n \"replacementValueForSpotIQ\": \"SpotIQ dashboard\",\n \"logoUrl\":\"\",\n \"productName\":\"ThoughtSpot\",\n \"footerPhone\":\"(800) 508-7008\",\n \"footerAddress\":\"444 Castro St, Suite 1000 Mountain View, CA 94041\",\n \"companyWebsiteUrl\":\"\",\n \"companyPrivacyPolicyUrl\":\"\"\n }\n}\n```\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Email Customization", - "10.10.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "template_properties": { - "description": "Email customization configuration as key value pair", - "allOf": [ - { - "$ref": "#/components/schemas/Template_Properties_Input_Create" - } - ] - }, - "org_identifier": { - "description": "Unique ID or name of org
Version: 10.12.0.cl or later", - "type": "string" - } - }, - "required": [ - "template_properties" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateEmailCustomizationResponse" - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/customization/email/{template_identifier}/delete": { + "/api/rest/2.0/groups/{group_identifier}/delete": { "post": { - "operationId": "deleteEmailCustomization", - "description": "\nBeta Version: 10.10.0.cl or later\n\nDeletes the configuration for the email customization.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\n- Call the search API endpoint to get the `template_identifier` from the response.\n- Use that `template_identifier` as a parameter in this API request.\n\n\n\n\n#### Endpoint URL\n", - "deprecated": true, + "operationId": "deleteUserGroup", + "description": "\n Version: 9.0.0.cl or later\n\nRemoves the specified group object from the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Email Customization", - "10.10.0.cl" + "Groups", + "9.0.0.cl" ], "parameters": [ { "in": "path", - "name": "template_identifier", + "name": "group_identifier", "required": true, "schema": { "type": "string" }, - "description": "Unique ID or name of the email customization." + "description": "GUID or name of the group." } ], "responses": { "204": { - "description": "Email Customization configuration successfully deleted." + "description": "User group successfully deleted." }, "400": { "description": "Invalid request.", @@ -5183,7 +5253,7 @@ } } }, - "403": { + "401": { "description": "Unauthorized access.", "content": { "application/json": { @@ -5193,6 +5263,16 @@ } } }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -5206,13 +5286,13 @@ } } }, - "/api/rest/2.0/customization/email/delete": { + "/api/rest/2.0/groups/import": { "post": { - "operationId": "deleteOrgEmailCustomization", - "description": "\nBeta Version: 10.12.0.cl or later\n\nDeletes the configuration for the email customization.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\n- Call the search API endpoint to get the `org_identifier` from the response.\n- Use that `org_identifier` as a parameter in this API request.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "importUserGroups", + "description": "\n Version: 9.0.0.cl or later\n\nImports group objects from external databases into ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\nDuring the import operation:\n\n* If the specified group is not available in ThoughtSpot, it will be added to ThoughtSpot.\n* If `delete_unspecified_groups` is set to `true`, the groups not specified in the API request, excluding administrator and system user groups, are deleted.\n* If the specified groups are already available in ThoughtSpot, the object properties of these groups are modified and synchronized as per the input data in the API request.\n\nA successful API call returns the object that represents the changes made in the ThoughtSpot system.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Email Customization", - "10.12.0.cl" + "Groups", + "9.0.0.cl" ], "requestBody": { "content": { @@ -5220,12 +5300,24 @@ "schema": { "type": "object", "properties": { - "org_identifiers": { - "description": "Unique identifier of the organization.", + "groups": { + "description": "Details of groups which are to be imported", "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/GroupsImportListInput" } + }, + "delete_unspecified_groups": { + "description": "If set to true, removes groups that are not specified in the API request.", + "default": false, + "type": "boolean", + "nullable": true + }, + "dry_run": { + "description": "If true, the API performs a test operation and returns user IDs whose\ndata will be edited after the import.", + "default": true, + "type": "boolean", + "nullable": true } } } @@ -5235,8 +5327,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Email Customization configuration successfully deleted." + "200": { + "description": "Import user groups operation successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportUserGroupsResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -5259,7 +5358,7 @@ } }, "403": { - "description": "Unauthorized access.", + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -5281,13 +5380,13 @@ } } }, - "/api/rest/2.0/customization/email/search": { + "/api/rest/2.0/groups/search": { "post": { - "operationId": "searchEmailCustomization", - "description": "\nBeta Version: 10.10.0.cl or later\n\nSearch the email customization configuration if any set for the ThoughtSpot system.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchUserGroups", + "description": "\n Version: 9.0.0.cl or later\n\nGets a list of user group objects from the ThoughtSpot system.\n\nTo get details of a specific user group, specify the user group GUID or name. You can also filter the API response based on User ID, Org ID, Role ID, type of group, sharing visibility, privileges assigned to the group, and the Liveboard IDs assigned to the users in the group.\n\nAvailable to all users. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view all users properties.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n**NOTE**: If you do not get precise results, try setting `record_size` to `-1` and `record_offset` to `0`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Email Customization", - "10.10.0.cl" + "Groups", + "9.0.0.cl" ], "requestBody": { "content": { @@ -5295,12 +5394,149 @@ "schema": { "type": "object", "properties": { + "default_liveboard_identifiers": { + "description": "GUID of Liveboards that are assigned as default Liveboards to the users in the group.", + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "description": "Description of the group", + "type": "string" + }, + "display_name": { + "description": "Display name of the group", + "type": "string" + }, + "name_pattern": { + "description": "A pattern to match case-insensitive name of the Group object.", + "type": "string" + }, + "group_identifier": { + "description": "GUID or name of the group", + "type": "string" + }, "org_identifiers": { - "description": "Unique ID or name of org
Version: 10.12.0.cl or later", + "description": "ID or name of the Org to which the group belongs", + "type": "array", + "items": { + "type": "string" + } + }, + "privileges": { + "description": "Privileges assigned to the group.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "ADMINISTRATION", + "AUTHORING", + "USERDATAUPLOADING", + "DATADOWNLOADING", + "USERMANAGEMENT", + "DATAMANAGEMENT", + "SHAREWITHALL", + "JOBSCHEDULING", + "A3ANALYSIS", + "EXPERIMENTALFEATUREPRIVILEGE", + "BYPASSRLS", + "RANALYSIS", + "DEVELOPER", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "SYNCMANAGEMENT", + "CAN_CREATE_CATALOG", + "DISABLE_PINBOARD_CREATION", + "LIVEBOARD_VERIFIER", + "PREVIEW_THOUGHTSPOT_SAGE", + "APPLICATION_ADMINISTRATION", + "SYSTEM_INFO_ADMINISTRATION", + "ORG_ADMINISTRATION", + "ROLE_ADMINISTRATION", + "AUTHENTICATION_ADMINISTRATION", + "BILLING_INFO_ADMINISTRATION", + "CAN_MANAGE_CUSTOM_CALENDAR", + "CAN_CREATE_OR_EDIT_CONNECTIONS", + "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "ALLOW_NON_EMBED_FULL_APP_ACCESS", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "PREVIEW_DOCUMENT_SEARCH", + "CAN_SETUP_VERSION_CONTROL" + ] + } + }, + "sub_group_identifiers": { + "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "description": "Group type.", + "type": "string", + "enum": [ + "LOCAL_GROUP", + "LDAP_GROUP" + ] + }, + "user_identifiers": { + "description": "GUID or name of the users assigned to the group.", + "type": "array", + "items": { + "type": "string" + } + }, + "visibility": { + "description": "Visibility of the group. To make a group visible to other users and groups,\nset the visibility to SHAREABLE.", + "type": "string", + "enum": [ + "SHARABLE", + "NON_SHARABLE" + ] + }, + "role_identifiers": { + "description": "Filter groups with a list of Roles assigned to a group", "type": "array", "items": { "type": "string" } + }, + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included.", + "default": 10, + "type": "integer", + "format": "int32" + }, + "sort_options": { + "description": "Sort options to filter group details.", + "allOf": [ + { + "$ref": "#/components/schemas/SortOptions" + } + ] + }, + "include_users": { + "description": "
Version: 10.10.0.cl or later
\n\nDefine Parameter to consider if the users should be included in group search response.", + "default": true, + "type": "boolean", + "nullable": true + }, + "include_sub_groups": { + "description": "
Version: 10.10.0.cl or later
\n\nDefine Parameter to consider if the sub groups should be included in group search response.", + "default": true, + "type": "boolean", + "nullable": true } } } @@ -5311,13 +5547,13 @@ "parameters": [], "responses": { "200": { - "description": "OK", + "description": "User group search result.", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/CreateEmailCustomizationResponse" + "$ref": "#/components/schemas/UserGroupResponse" } } } @@ -5333,7 +5569,7 @@ } } }, - "403": { + "401": { "description": "Unauthorized access.", "content": { "application/json": { @@ -5343,6 +5579,16 @@ } } }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -5356,13 +5602,13 @@ } } }, - "/api/rest/2.0/customization/email/update": { + "/api/rest/2.0/groups/{group_identifier}/update": { "post": { - "operationId": "updateEmailCustomization", - "description": "\nBeta Version: 10.12.0.cl or later\n\nUpdates a customization configuration for the notification email.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\nTo update a custom configuration pass these parameters in your API request:\n\n- A JSON map of configuration attributes `template_properties`. The following example shows a sample set of customization configuration:\n\n```\n{\n {\n \"ctaButtonBgColor\": \"#444DEA\",\n \"ctaTextFontColor\": \"#FFFFFF\",\n \"primaryBgColor\": \"#D3DEF0\",\n \"hideMobileAppNudge\": false,\n \"fontFamily\" : \"\",\n \"hideProductName\" : false,\n \"hideFooterPhone\" : false,\n \"hideFooterAddress\" : false,\n \"hidePrivacyPolicy\" : false,\n \"hideManageNotification\" : false,\n \"hideTsVocabularyDefinitions\": false,\n \"hideNotificationStatus\" : false,\n \"hideErrorMessage\": false,\n \"hideUnsubscribeLink\" : false,\n \"hideModifyAlert\": false,\n \"textTransform\": \"\",\n \"replacementValueForLiveboard\": \"LB dashboard\",\n \"replacementValueForAnswer\": \"Answer dashboard\",\n \"replacementValueForSpotIQ\": \"SpotIQ dashboard\",\n \"logoUrl\":\"\",\n \"productName\":\"ThoughtSpot\",\n \"footerPhone\":\"(800) 508-7008\",\n \"footerAddress\":\"444 Castro St, Suite 1000 Mountain View, CA 94041\",\n \"companyWebsiteUrl\":\"\",\n \"companyPrivacyPolicyUrl\":\"\"\n }\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateUserGroup", + "description": "\n Version: 9.0.0.cl or later\n\nUpdates the properties of a group object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n#### Supported operations\n\nThis API endpoint lets you perform the following operations in a single API request:\n\n* Edit [privileges](https://developers.thoughtspot.com/docs/?pageid=api-user-management#group-privileges)\n* Add or remove users\n* Change sharing visibility settings\n* Add or remove sub-groups\n* Assign a default Liveboard or update the existing settings\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Email Customization", - "10.12.0.cl" + "Groups", + "9.0.0.cl" ], "requestBody": { "content": { @@ -5370,156 +5616,27 @@ "schema": { "type": "object", "properties": { - "template_properties": { - "description": "Email customization configuration as key value pair", - "allOf": [ - { - "$ref": "#/components/schemas/Template_Properties_Input_Create" - } - ] + "name": { + "description": "Name of the group to modify.", + "type": "string" }, - "org_identifier": { - "description": "Unique ID or name of org", - "type": "string" - } - }, - "required": [ - "template_properties" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Email Customization configuration successfully updated." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/customization/email/validate": { - "post": { - "operationId": "validateEmailCustomization", - "description": "\nBeta Version: 10.10.0.cl or later\n\nValidates the email customization configuration if any set for the ThoughtSpot system.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Email Customization", - "10.10.0.cl" - ], - "parameters": [], - "responses": { - "204": { - "description": "Triggered test email for customization configuration" - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/groups/create": { - "post": { - "operationId": "createUserGroup", - "description": "\n Version: 9.0.0.cl or later\n\nCreates a group object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n#### About groups\nGroups in ThoughtSpot are used by the administrators to define privileges and organize users based on their roles and access requirements. To know more about groups and privileges, see [ThoughtSpot Product Documentation](https://docs.thoughtspot.com/cloud/latest/groups-privileges).\n\n#### Supported operations\n\nThe API endpoint lets you perform the following operations:\n\n* Assign privileges\n* Add users\n* Define sharing visibility\n* Add sub-groups\n* Assign a default Liveboard\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Groups", - "9.0.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the group. The group name must be unique.", + "default_liveboard_identifiers": { + "description": "ID of the Liveboards to be assigned as default Liveboards to the users in the group.", + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "description": "Description for the group.", "type": "string" }, "display_name": { - "description": "Display name for the group.", - "type": "string" - }, - "default_liveboard_identifiers": { - "description": "GUID of the Liveboards to assign as default Liveboards to the users in the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "Description of the group", + "description": "Display name of the group.", "type": "string" }, "privileges": { - "description": "Privileges to assign to the group", + "description": "Privileges to assign to the group.", "type": "array", "items": { "type": "string", @@ -5549,12 +5666,8 @@ "ALLOW_NON_EMBED_FULL_APP_ACCESS", "CAN_ACCESS_ANALYST_STUDIO", "CAN_MANAGE_ANALYST_STUDIO", - "CAN_MODIFY_FOLDERS", - "CAN_VIEW_FOLDERS", "PREVIEW_DOCUMENT_SEARCH", - "CAN_SETUP_VERSION_CONTROL", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_SETUP_VERSION_CONTROL" ] } }, @@ -5566,14 +5679,11 @@ } }, "type": { - "description": "Group type.", - "default": "LOCAL_GROUP", + "description": "Type of the group", "type": "string", "enum": [ "LOCAL_GROUP", - "LDAP_GROUP", - "TEAM_GROUP", - "TENANT_GROUP" + "LDAP_GROUP" ] }, "user_identifiers": { @@ -5584,8 +5694,7 @@ } }, "visibility": { - "description": "Visibility of the group. To make a group visible to other users and groups,\nset the visibility to SHAREABLE.", - "default": "SHARABLE", + "description": "Visibility of the group. To make a group visible to other users and\ngroups, set the visibility to SHAREABLE.", "type": "string", "enum": [ "SHARABLE", @@ -5593,85 +5702,28 @@ ] }, "role_identifiers": { - "description": "Role identifiers of the roles that should be assigned to the group.", + "description": "Role identifiers of the Roles that should be assigned to the group.", "type": "array", "items": { "type": "string" } + }, + "operation": { + "description": "Type of update operation. Default operation type is REPLACE", + "default": "REPLACE", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "REPLACE" + ] } - }, - "required": [ - "name", - "display_name" - ] + } } } }, "required": true }, - "parameters": [], - "responses": { - "200": { - "description": "User group successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserGroupResponse" - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/groups/{group_identifier}/delete": { - "post": { - "operationId": "deleteUserGroup", - "description": "\n Version: 9.0.0.cl or later\n\nRemoves the specified group object from the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Groups", - "9.0.0.cl" - ], "parameters": [ { "in": "path", @@ -5685,7 +5737,7 @@ ], "responses": { "204": { - "description": "User group successfully deleted." + "description": "User group successfully updated." }, "400": { "description": "Invalid request.", @@ -5730,12 +5782,12 @@ } } }, - "/api/rest/2.0/groups/import": { + "/api/rest/2.0/logs/fetch": { "post": { - "operationId": "importUserGroups", - "description": "\n Version: 9.0.0.cl or later\n\nImports group objects from external databases into ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\nDuring the import operation:\n\n* If the specified group is not available in ThoughtSpot, it will be added to ThoughtSpot.\n* If `delete_unspecified_groups` is set to `true`, the groups not specified in the API request, excluding administrator and system user groups, are deleted.\n* If the specified groups are already available in ThoughtSpot, the object properties of these groups are modified and synchronized as per the input data in the API request.\n\nA successful API call returns the object that represents the changes made in the ThoughtSpot system.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchLogs", + "description": "\n Version: 9.0.0.cl or later\n\nFetches security audit logs. \n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the [Admin Control](https://developers.thoughtspot.com/docs/rbac#_admin_control) privileges are required.\n\n\n#### Usage guidelines\n\nBy default, the API retrieves logs for the last 24 hours. You can set a custom duration in EPOCH time. Make sure the log duration specified in your API request doesn’t exceed 24 hours. If you must fetch logs for a longer time range, modify the duration and make multiple sequential API requests.\n\nUpon successful execution, the API returns logs with the following information:\n* timestamp of the event\n* event ID\n* event type\n* name and GUID of the user\n* IP address of ThoughtSpot instance\n\nFor more information see [Audit logs Documentation](https://developers.thoughtspot.com/docs/audit-logs).\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Groups", + "Log", "9.0.0.cl" ], "requestBody": { @@ -5744,26 +5796,33 @@ "schema": { "type": "object", "properties": { - "groups": { - "description": "Details of groups which are to be imported", - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupsImportListInput" - } + "log_type": { + "description": "Name of the log type", + "type": "string", + "enum": [ + "SECURITY_AUDIT" + ] }, - "delete_unspecified_groups": { - "description": "If set to true, removes groups that are not specified in the API request.", - "default": false, - "type": "boolean", - "nullable": true + "start_epoch_time_in_millis": { + "description": "Start time in EPOCH format", + "type": "number", + "format": "float" }, - "dry_run": { - "description": "If true, the API performs a test operation and returns user IDs whose\ndata will be edited after the import.", + "end_epoch_time_in_millis": { + "description": "End time in EPOCH format", + "type": "number", + "format": "float" + }, + "get_all_logs": { + "description": "Fetch all the logs. This is available from 9.10.5.cl", "default": true, "type": "boolean", "nullable": true } - } + }, + "required": [ + "log_type" + ] } } }, @@ -5772,11 +5831,14 @@ "parameters": [], "responses": { "200": { - "description": "Import user groups operation successful.", + "description": "Log fetched successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ImportUserGroupsResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/LogResponse" + } } } } @@ -5824,13 +5886,13 @@ } } }, - "/api/rest/2.0/groups/search": { + "/api/rest/2.0/metadata/worksheets/convert": { "post": { - "operationId": "searchUserGroups", - "description": "\n Version: 9.0.0.cl or later\n\nGets a list of user group objects from the ThoughtSpot system.\n\nTo get details of a specific user group, specify the user group GUID or name. You can also filter the API response based on User ID, Org ID, Role ID, type of group, sharing visibility, privileges assigned to the group, and the Liveboard IDs assigned to the users in the group.\n\nAvailable to all users. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view all users properties.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n**NOTE**: If you do not get precise results, try setting `record_size` to `-1` and `record_offset` to `0`.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Groups", - "9.0.0.cl" + "operationId": "convertWorksheetToModel", + "description": "\nConvert worksheets to models
Version: 10.6.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (Can manage data models).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **worksheet_ids** \n - **Description:** A comma-separated list of GUIDs (Globally Unique Identifiers) specifying the Worksheets to be converted. \n - **Usage:** \n - Used only when `convert_all` is set to `false`. \n - Leave empty or omit when `convert_all` is set to `true`.\n\n2. **exclude_worksheet_ids** \n - **Description:** A comma-separated list of GUIDs specifying Worksheets to be excluded from conversion. \n - **Usage:** \n - Useful when `convert_all` is set to `true` and specific Worksheets should not be converted.\n\n3. **convert_all** \n - **Description:** Sets the scope of conversion.\n - **Options:** \n - `true`: Converts all Worksheets in the system, except those specified in `exclude_worksheet_ids`. \n - `false`: Converts only the Worksheets listed in `worksheet_ids`.\n\n4. **apply_changes** \n - **Description:** Specifies whether to apply changes directly to ThoughtSpot or to generate a preview before applying any changes.Used for validation of conversion.\n - **Options:** \n - `true`: Applies conversion changes directly to ThoughtSpot.\n - `false`: Generates only a preview of the changes and does not apply any changes to ThoughtSpot\n\n---\n\n## Best Practices\n\n1. **Backup Before Conversion:** \n Always export metadata as a backup before initiating the conversion process\n\n2. **Partial Conversion for Testing:** \n Test the conversion process by setting `convert_all` to `false` and specifying a small number of `worksheet_ids`.\n\n3. **Verify Dependencies:** \n Check for dependent objects, such as Tables and Connections, to avoid invalid references.\n\n4. **Review Changes:** \n Use `apply_changes: false` to preview the impact of the conversion before applying changes.\n\n---\n\n## Examples\n\n### Convert Specific Worksheets\n```json\n{\n \"worksheet_ids\": [\"guid1\", \"guid2\", \"guid3\"],\n \"exclude_worksheet_ids\": [],\n \"convert_all\": false,\n \"apply_changes\": true\n}\n```\n\n### Convert All Accessible Worksheets\n```json\n{\n \"worksheet_ids\": [],\n \"exclude_worksheet_ids\": [],\n \"convert_all\": true,\n \"apply_changes\": true\n}\n```\n\n### Exclude Specific Worksheets While Converting All Accessible Worksheets\n```json\n{\n \"worksheet_ids\": [],\n \"exclude_worksheet_ids\": [\"abc\"],\n \"convert_all\": true,\n \"apply_changes\": true\n}\n```\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Metadata", + "10.6.0.cl" ], "requestBody": { "content": { @@ -5838,154 +5900,29 @@ "schema": { "type": "object", "properties": { - "default_liveboard_identifiers": { - "description": "GUID of Liveboards that are assigned as default Liveboards to the users in the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "Description of the group", - "type": "string" - }, - "display_name": { - "description": "Display name of the group", - "type": "string" - }, - "name_pattern": { - "description": "A pattern to match case-insensitive name of the Group object.", - "type": "string" - }, - "group_identifier": { - "description": "GUID or name of the group", - "type": "string" - }, - "org_identifiers": { - "description": "ID or name of the Org to which the group belongs", - "type": "array", - "items": { - "type": "string" - } - }, - "privileges": { - "description": "Privileges assigned to the group.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "ADMINISTRATION", - "AUTHORING", - "USERDATAUPLOADING", - "DATADOWNLOADING", - "USERMANAGEMENT", - "DATAMANAGEMENT", - "SHAREWITHALL", - "JOBSCHEDULING", - "A3ANALYSIS", - "EXPERIMENTALFEATUREPRIVILEGE", - "BYPASSRLS", - "RANALYSIS", - "DEVELOPER", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "SYNCMANAGEMENT", - "CAN_CREATE_CATALOG", - "DISABLE_PINBOARD_CREATION", - "LIVEBOARD_VERIFIER", - "PREVIEW_THOUGHTSPOT_SAGE", - "APPLICATION_ADMINISTRATION", - "SYSTEM_INFO_ADMINISTRATION", - "ORG_ADMINISTRATION", - "ROLE_ADMINISTRATION", - "AUTHENTICATION_ADMINISTRATION", - "BILLING_INFO_ADMINISTRATION", - "CAN_MANAGE_CUSTOM_CALENDAR", - "CAN_CREATE_OR_EDIT_CONNECTIONS", - "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "ALLOW_NON_EMBED_FULL_APP_ACCESS", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "PREVIEW_DOCUMENT_SEARCH", - "CAN_MODIFY_FOLDERS", - "CAN_VIEW_FOLDERS", - "CAN_SETUP_VERSION_CONTROL", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" - ] - } - }, - "sub_group_identifiers": { - "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Group type.", - "type": "string", - "enum": [ - "LOCAL_GROUP", - "LDAP_GROUP", - "TEAM_GROUP", - "TENANT_GROUP" - ] - }, - "user_identifiers": { - "description": "GUID or name of the users assigned to the group.", + "worksheet_ids": { + "description": "List of Worksheet IDs.", "type": "array", "items": { "type": "string" } }, - "visibility": { - "description": "Visibility of the group. To make a group visible to other users and groups,\nset the visibility to SHAREABLE.", - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ] - }, - "role_identifiers": { - "description": "Filter groups with a list of Roles assigned to a group", + "exclude_worksheet_ids": { + "description": "List of Worksheet IDs to be excluded.", "type": "array", "items": { "type": "string" } }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "sort_options": { - "description": "Sort options to filter group details.", - "allOf": [ - { - "$ref": "#/components/schemas/SortOptions" - } - ] - }, - "include_users": { - "description": "
Version: 10.10.0.cl or later
\n\nDefine Parameter to consider if the users should be included in group search response.", - "default": true, + "convert_all": { + "description": "Indicates whether all the worksheet needs to be converted to models.", + "default": false, "type": "boolean", "nullable": true }, - "include_sub_groups": { - "description": "
Version: 10.10.0.cl or later
\n\nDefine Parameter to consider if the sub groups should be included in group search response.", - "default": true, + "apply_changes": { + "description": "Indicates whether the changes should be applied to database.", + "default": false, "type": "boolean", "nullable": true } @@ -5998,14 +5935,11 @@ "parameters": [], "responses": { "200": { - "description": "User group search result.", + "description": "Conversion of worksheets to model done successfully.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UserGroupResponse" - } + "$ref": "#/components/schemas/ResponseWorksheetToModelConversion" } } } @@ -6053,13 +5987,13 @@ } } }, - "/api/rest/2.0/groups/{group_identifier}/update": { + "/api/rest/2.0/metadata/copyobject": { "post": { - "operationId": "updateUserGroup", - "description": "\n Version: 9.0.0.cl or later\n\nUpdates the properties of a group object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n#### Supported operations\n\nThis API endpoint lets you perform the following operations in a single API request:\n\n* Edit [privileges](https://developers.thoughtspot.com/docs/?pageid=api-user-management#group-privileges)\n* Add or remove users\n* Change sharing visibility settings\n* Add or remove sub-groups\n* Assign a default Liveboard or update the existing settings\n\n\n\n\n#### Endpoint URL\n", + "operationId": "copyObject", + "description": "\nMakes a copy of an Answer or Liveboard saved in Atlas
Version: 10.3.0.cl or later\n\nCreates a copy of a metadata object.\n\nRequires at least view access to the metadata object being copied.\n\nUpon successful execution, the API creates a copy of the metadata object specified in the API request and returns the ID of the new object.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Groups", - "9.0.0.cl" + "Metadata", + "10.3.0.cl" ], "requestBody": { "content": { @@ -6067,134 +6001,46 @@ "schema": { "type": "object", "properties": { - "name": { - "description": "Name of the group to modify.", - "type": "string" - }, - "default_liveboard_identifiers": { - "description": "ID of the Liveboards to be assigned as default Liveboards to the users in the group.", - "type": "array", - "items": { - "type": "string" - } - }, "description": { - "description": "Description for the group.", + "description": "Description of the new object", "type": "string" }, - "display_name": { - "description": "Display name of the group.", + "identifier": { + "description": "GUID of metadata object to be copied (answer id or liveboard id)", "type": "string" }, - "privileges": { - "description": "Privileges to assign to the group.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "ADMINISTRATION", - "AUTHORING", - "USERDATAUPLOADING", - "DATADOWNLOADING", - "USERMANAGEMENT", - "DATAMANAGEMENT", - "SHAREWITHALL", - "JOBSCHEDULING", - "A3ANALYSIS", - "EXPERIMENTALFEATUREPRIVILEGE", - "BYPASSRLS", - "RANALYSIS", - "DEVELOPER", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "SYNCMANAGEMENT", - "CAN_CREATE_CATALOG", - "DISABLE_PINBOARD_CREATION", - "LIVEBOARD_VERIFIER", - "PREVIEW_THOUGHTSPOT_SAGE", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "ALLOW_NON_EMBED_FULL_APP_ACCESS", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "CAN_MODIFY_FOLDERS", - "CAN_VIEW_FOLDERS", - "PREVIEW_DOCUMENT_SEARCH", - "CAN_SETUP_VERSION_CONTROL", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" - ] - } - }, - "sub_group_identifiers": { - "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", - "type": "array", - "items": { - "type": "string" - } - }, "type": { - "description": "Type of the group", - "type": "string", - "enum": [ - "LOCAL_GROUP", - "LDAP_GROUP", - "TEAM_GROUP", - "TENANT_GROUP" - ] - }, - "user_identifiers": { - "description": "GUID or name of the users to assign to the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "visibility": { - "description": "Visibility of the group. To make a group visible to other users and\ngroups, set the visibility to SHAREABLE.", + "description": "Type of metadata object", "type": "string", "enum": [ - "SHARABLE", - "NON_SHARABLE" + "LIVEBOARD", + "ANSWER" ] }, - "role_identifiers": { - "description": "Role identifiers of the Roles that should be assigned to the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "operation": { - "description": "Type of update operation. Default operation type is REPLACE", - "default": "REPLACE", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "REPLACE" - ] + "title": { + "description": "Title of the new object", + "type": "string" } - } + }, + "required": [ + "identifier" + ] } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "group_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "GUID or name of the group." - } - ], + "parameters": [], "responses": { - "204": { - "description": "User group successfully updated." + "200": { + "description": "Successfully created a copy of the object", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseCopyObject" + } + } + } }, "400": { "description": "Invalid request.", @@ -6226,6 +6072,16 @@ } } }, + "404": { + "description": "Object not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -6239,12 +6095,12 @@ } } }, - "/api/rest/2.0/logs/fetch": { + "/api/rest/2.0/metadata/delete": { "post": { - "operationId": "fetchLogs", - "description": "\n Version: 9.0.0.cl or later\n\nFetches security audit logs. \n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the [Admin Control](https://developers.thoughtspot.com/docs/rbac#_admin_control) privileges are required.\n\n\n#### Usage guidelines\n\nBy default, the API retrieves logs for the last 24 hours. You can set a custom duration in EPOCH time. Make sure the log duration specified in your API request doesn’t exceed 24 hours. If you must fetch logs for a longer time range, modify the duration and make multiple sequential API requests.\n\nUpon successful execution, the API returns logs with the following information:\n* timestamp of the event\n* event ID\n* event type\n* name and GUID of the user\n* IP address of ThoughtSpot instance\n\nFor more information see [Audit logs Documentation](https://developers.thoughtspot.com/docs/audit-logs).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteMetadata", + "description": "\n Version: 9.0.0.cl or later\n\nRemoves the specified metadata object from the ThoughtSpot system.\n\nRequires edit access to the metadata object. \n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Log", + "Metadata", "9.0.0.cl" ], "requestBody": { @@ -6253,32 +6109,22 @@ "schema": { "type": "object", "properties": { - "log_type": { - "description": "Name of the log type", - "type": "string", - "enum": [ - "SECURITY_AUDIT" - ] - }, - "start_epoch_time_in_millis": { - "description": "Start time in EPOCH format", - "type": "number", - "format": "float" - }, - "end_epoch_time_in_millis": { - "description": "End time in EPOCH format", - "type": "number", - "format": "float" + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/DeleteMetadataTypeInput" + } }, - "get_all_logs": { - "description": "Fetch all the logs. This is available from 9.10.5.cl", - "default": true, + "delete_disabled_objects": { + "description": "Indicates whether to delete disabled metadata objects.", + "default": false, "type": "boolean", "nullable": true } }, "required": [ - "log_type" + "metadata" ] } } @@ -6287,18 +6133,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Log fetched successfully.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LogResponse" - } - } - } - } + "204": { + "description": "Metadata objects successfully deleted." }, "400": { "description": "Invalid request.", @@ -6343,13 +6179,13 @@ } } }, - "/api/rest/2.0/metadata/worksheets/convert": { + "/api/rest/2.0/metadata/tml/export": { "post": { - "operationId": "convertWorksheetToModel", - "description": "\nConvert worksheets to models
Version: 10.6.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (Can manage data models).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **worksheet_ids** \n - **Description:** A comma-separated list of GUIDs (Globally Unique Identifiers) specifying the Worksheets to be converted. \n - **Usage:** \n - Used only when `convert_all` is set to `false`. \n - Leave empty or omit when `convert_all` is set to `true`.\n\n2. **exclude_worksheet_ids** \n - **Description:** A comma-separated list of GUIDs specifying Worksheets to be excluded from conversion. \n - **Usage:** \n - Useful when `convert_all` is set to `true` and specific Worksheets should not be converted.\n\n3. **convert_all** \n - **Description:** Sets the scope of conversion.\n - **Options:** \n - `true`: Converts all Worksheets in the system, except those specified in `exclude_worksheet_ids`. \n - `false`: Converts only the Worksheets listed in `worksheet_ids`.\n\n4. **apply_changes** \n - **Description:** Specifies whether to apply changes directly to ThoughtSpot or to generate a preview before applying any changes.Used for validation of conversion.\n - **Options:** \n - `true`: Applies conversion changes directly to ThoughtSpot.\n - `false`: Generates only a preview of the changes and does not apply any changes to ThoughtSpot\n\n---\n\n## Best Practices\n\n1. **Backup Before Conversion:** \n Always export metadata as a backup before initiating the conversion process\n\n2. **Partial Conversion for Testing:** \n Test the conversion process by setting `convert_all` to `false` and specifying a small number of `worksheet_ids`.\n\n3. **Verify Dependencies:** \n Check for dependent objects, such as Tables and Connections, to avoid invalid references.\n\n4. **Review Changes:** \n Use `apply_changes: false` to preview the impact of the conversion before applying changes.\n\n---\n\n## Examples\n\n### Convert Specific Worksheets\n```json\n{\n \"worksheet_ids\": [\"guid1\", \"guid2\", \"guid3\"],\n \"exclude_worksheet_ids\": [],\n \"convert_all\": false,\n \"apply_changes\": true\n}\n```\n\n### Convert All Accessible Worksheets\n```json\n{\n \"worksheet_ids\": [],\n \"exclude_worksheet_ids\": [],\n \"convert_all\": true,\n \"apply_changes\": true\n}\n```\n\n### Exclude Specific Worksheets While Converting All Accessible Worksheets\n```json\n{\n \"worksheet_ids\": [],\n \"exclude_worksheet_ids\": [\"abc\"],\n \"convert_all\": true,\n \"apply_changes\": true\n}\n```\n\n\n\n#### Endpoint URL\n", + "operationId": "exportMetadataTML", + "description": "\n Version: 9.0.0.cl or later\n\nExports the [TML](https://docs.thoughtspot.com/cloud/latest/tml) representation of metadata objects in JSON or YAML format.\n\nRequires `DATADOWNLOADING` (**Can download Data**) and at least view access to the metadata object.\n\n#### Usage guidelines\n\n* You can export one or several objects by passing metadata object GUIDs in the `metadata` array.\n* When exporting TML content for a Liveboard or Answer object, you can set `export_associated` to `true` to retrieve TML content for underlying Worksheets, Tables, or Views, including the GUID of each object within the headers. When `export_associated` is set to `true`, consider retrieving one metadata object at a time.\n* Set `export_fqns` to `true` to add FQNs of the referenced objects in the TML content. For example, if you send an API request to retrieve TML for a Liveboard and its associated objects, the API returns the TML content with FQNs of the referenced Worksheet. Exporting TML with FQNs is useful if ThoughtSpot has multiple objects with the same name and you want to eliminate ambiguity when importing TML files into ThoughtSpot. It eliminates the need for adding FQNs of the referenced objects manually during the import operation.\n* To export only the TML of feedbacks associated with an object, set the GUID of the object as `identifier`, and set the `type` as `FEEDBACK` in the `metadata` array.\n* To export the TML of an object along with the feedbacks associated with it, set the GUID of the object as `identifier`, set the `type` as `LOGIAL_TABLE` in the `metadata` array, and set `export_with_associated_feedbacks` in `export_options` to true.\n\nFor more information, see [TML Documentation](https://developers.thoughtspot.com/docs/tml#_export_a_tml).\n\nFor more information on feedbacks, see [Feedback Documentation](https://docs.thoughtspot.com/cloud/latest/sage-feedback).\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.6.0.cl" + "9.0.0.cl" ], "requestBody": { "content": { @@ -6357,33 +6193,74 @@ "schema": { "type": "object", "properties": { - "worksheet_ids": { - "description": "List of Worksheet IDs.", + "metadata": { + "description": "Metadata objects.", "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/ExportMetadataTypeInput" } }, - "exclude_worksheet_ids": { - "description": "List of Worksheet IDs to be excluded.", - "type": "array", - "items": { - "type": "string" - } + "export_associated": { + "description": "Indicates whether to export associated metadata objects of specified metadata objects.", + "default": false, + "type": "boolean", + "nullable": true }, - "convert_all": { - "description": "Indicates whether all the worksheet needs to be converted to models.", + "export_fqn": { + "description": "Adds FQNs of the referenced objects. For example, if you are exporting a Liveboard and its associated objects,\nthe API returns the Liveboard TML data with the FQNs of the referenced worksheet.\nIf the exported TML data includes FQNs, you don't need to manually add FQNs of the referenced objects during TML import.", "default": false, "type": "boolean", "nullable": true }, - "apply_changes": { - "description": "Indicates whether the changes should be applied to database.", + "edoc_format": { + "description": "TML EDOC content format.\n\n**Note: exporting in YAML format currently requires manual formatting of the output. For more details on the workaround, please click [here](https://developers.thoughtspot.com/docs/known-issues#_version_9_12_0_cl)**", + "default": "JSON", + "type": "string", + "enum": [ + "JSON", + "YAML" + ] + }, + "export_schema_version": { + "description": "Indicates whether to export worksheet TML in DEFAULT or V1 or V2 version.", + "default": "DEFAULT", + "type": "string", + "enum": [ + "DEFAULT", + "V1", + "V2" + ] + }, + "export_dependent": { + "description": "Indicates whether to export table while exporting connection.", + "default": false, + "type": "boolean", + "nullable": true + }, + "export_connection_as_dependent": { + "description": "Indicates whether to export connection as dependent while exporting table/worksheet/answer/liveboard.\nThis will only be active when export_associated is true.", + "default": false, + "type": "boolean", + "nullable": true + }, + "all_orgs_override": { + "description": "Indicates whether to export is happening from all orgs context.", "default": false, "type": "boolean", "nullable": true + }, + "export_options": { + "description": "Flags to specify additional options for export.
Version: 10.6.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/Export_Options" + } + ] } - } + }, + "required": [ + "metadata" + ] } } }, @@ -6392,11 +6269,14 @@ "parameters": [], "responses": { "200": { - "description": "Conversion of worksheets to model done successfully.", + "description": "Export TMLs of specified metadata objects is successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResponseWorksheetToModelConversion" + "type": "array", + "items": { + "type": "object" + } } } } @@ -6444,13 +6324,13 @@ } } }, - "/api/rest/2.0/metadata/copyobject": { + "/api/rest/2.0/metadata/tml/export/batch": { "post": { - "operationId": "copyObject", - "description": "\nMakes a copy of an Answer or Liveboard
Version: 10.3.0.cl or later\n\nCreates a copy of a metadata object.\n\nRequires at least view access to the metadata object being copied.\n\nUpon successful execution, the API creates a copy of the metadata object specified in the API request and returns the ID of the new object.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "exportMetadataTMLBatched", + "description": "\n Version: 10.1.0.cl or later\n\nExports the [TML](https://docs.thoughtspot.com/cloud/latest/tml) representation of metadata objects in JSON or YAML format.\n\n### **Permissions Required**\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and `USERMANAGEMENT` (**Can manage users**) privileges.\n\n#### **Usage Guidelines**\n\nThis API is only applicable for `USER`, `GROUP`, and `ROLES` metadata types.\n\n- `batch_offset` Indicates the starting position within the complete dataset from which the API should begin returning objects. Useful for paginating results efficiently.\n- `batch_size` Specifies the number of objects or items to retrieve in a single request. Helps control response size for better performance.\n- `edoc_format` Defines the format of the TML content. The exported metadata can be in JSON or YAML format.\n- `export_dependent` Specifies whether to include dependent metadata objects in the export. Ensures related objects are also retrieved if needed.\n- `all_orgs_override` Indicates whether the export operation applies across all organizations. Useful for multi-tenant environments where cross-org exports are required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.3.0.cl" + "10.1.0.cl" ], "requestBody": { "content": { @@ -6458,29 +6338,51 @@ "schema": { "type": "object", "properties": { - "description": { - "description": "Description of the new object", - "type": "string" + "metadata_type": { + "description": "Type of metadata object to export, can be one of USER | ROLE | USER_GROUP", + "type": "string", + "enum": [ + "USER", + "USER_GROUP", + "ROLE" + ] }, - "identifier": { - "description": "GUID of metadata object to be copied (answer id or liveboard id)", - "type": "string" + "batch_offset": { + "description": "Indicates the position within the complete set from where the API should begin returning objects.", + "default": 0, + "type": "integer", + "format": "int32" }, - "type": { - "description": "Type of metadata object", + "batch_size": { + "description": "Determines the number of objects or items to be retrieved in a single request.", + "default": 20, + "type": "integer", + "format": "int32" + }, + "edoc_format": { + "description": "TML EDOC content format.", + "default": "JSON", "type": "string", "enum": [ - "LIVEBOARD", - "ANSWER" + "JSON", + "YAML" ] }, - "title": { - "description": "Title of the new object", - "type": "string" + "export_dependent": { + "description": "Indicates whether to export dependent metadata objects of specified metadata objects.", + "default": false, + "type": "boolean", + "nullable": true + }, + "all_orgs_override": { + "description": "Indicates whether to export is happening from all orgs context.", + "default": false, + "type": "boolean", + "nullable": true } }, "required": [ - "identifier" + "metadata_type" ] } } @@ -6490,11 +6392,11 @@ "parameters": [], "responses": { "200": { - "description": "Successfully created a copy of the object", + "description": "Export TMLs of specified metadata objects is successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResponseCopyObject" + "type": "object" } } } @@ -6529,16 +6431,6 @@ } } }, - "404": { - "description": "Object not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, "500": { "description": "Unexpected error", "content": { @@ -6552,10 +6444,10 @@ } } }, - "/api/rest/2.0/metadata/delete": { + "/api/rest/2.0/metadata/answer/sql": { "post": { - "operationId": "deleteMetadata", - "description": "\n Version: 9.0.0.cl or later\n\nRemoves the specified metadata object from the ThoughtSpot system.\n\nRequires edit access to the metadata object. \n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchAnswerSqlQuery", + "description": "\n Version: 9.0.0.cl or later\n\nFetches the underlying SQL query data for an Answer object.\n\nRequires at least view access to the Answer object.\n\nUpon successful execution, the API returns the SQL queries for the specified object as shown in this example:\n```\n{\n \"metadata_id\":\"8fbe44a8-46ad-4b16-8d39-184b2fada490\",\n \"metadata_name\":\"Total sales\",\n \"metadata_type\":\"ANSWER\",\n \"sql_queries\":[\n {\n \"metadata_id\":\"8fbe44a8-46ad-4b16-8d39-184b2fada490\",\n \"metadata_name\":\"Total sales -test\",\n \"sql_query\":\"SELECT \\n \\\"ta_1\\\".\\\"REGION\\\" \\\"ca_1\\\", \\n \\\"ta_2\\\".\\\"PRODUCTNAME\\\" \\\"ca_2\\\", \\n \\\"ta_1\\\".\\\"STORENAME\\\" \\\"ca_3\\\", \\n CASE\\n WHEN sum(\\\"ta_3\\\".\\\"SALES\\\") IS NOT NULL THEN sum(\\\"ta_3\\\".\\\"SALES\\\")\\n ELSE 0\\n END \\\"ca_4\\\", \\n CASE\\n WHEN sum(\\\"ta_3\\\".\\\"QUANTITYPURCHASED\\\") IS NOT NULL THEN sum(\\\"ta_3\\\".\\\"QUANTITYPURCHASED\\\")\\n ELSE 0\\n END \\\"ca_5\\\"\\nFROM \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"FACT_RETAPP_SALES\\\" \\\"ta_3\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_STORES\\\" \\\"ta_1\\\"\\n ON \\\"ta_3\\\".\\\"STOREID\\\" = \\\"ta_1\\\".\\\"STOREID\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_PRODUCTS\\\" \\\"ta_2\\\"\\n ON \\\"ta_3\\\".\\\"PRODUCTID\\\" = \\\"ta_2\\\".\\\"PRODUCTID\\\"\\nGROUP BY \\n \\\"ca_1\\\", \\n \\\"ca_2\\\", \\n \\\"ca_3\\\"\\n\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "9.0.0.cl" @@ -6566,22 +6458,13 @@ "schema": { "type": "object", "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/DeleteMetadataTypeInput" - } - }, - "delete_disabled_objects": { - "description": "Indicates whether to delete disabled metadata objects.", - "default": false, - "type": "boolean", - "nullable": true + "metadata_identifier": { + "description": "ID or name of an Answer.", + "type": "string" } }, "required": [ - "metadata" + "metadata_identifier" ] } } @@ -6590,8 +6473,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Metadata objects successfully deleted." + "200": { + "description": "Fetching SQL query of specified metadata object is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SqlQueryResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -6636,13 +6526,13 @@ } } }, - "/api/rest/2.0/metadata/tml/export": { + "/api/rest/2.0/metadata/tml/async/status": { "post": { - "operationId": "exportMetadataTML", - "description": "\n Version: 9.0.0.cl or later\n\nExports the [TML](https://docs.thoughtspot.com/cloud/latest/tml) representation of metadata objects in JSON or YAML format.\n\nRequires `DATADOWNLOADING` (**Can download Data**) and at least view access to the metadata object.\n\n#### Usage guidelines\n\n* You can export one or several objects by passing metadata object GUIDs in the `metadata` array.\n* When exporting TML content for a Liveboard or Answer object, you can set `export_associated` to `true` to retrieve TML content for underlying Worksheets, Tables, or Views, including the GUID of each object within the headers. When `export_associated` is set to `true`, consider retrieving one metadata object at a time.\n* Set `export_fqns` to `true` to add FQNs of the referenced objects in the TML content. For example, if you send an API request to retrieve TML for a Liveboard and its associated objects, the API returns the TML content with FQNs of the referenced Worksheet. Exporting TML with FQNs is useful if ThoughtSpot has multiple objects with the same name and you want to eliminate ambiguity when importing TML files into ThoughtSpot. It eliminates the need for adding FQNs of the referenced objects manually during the import operation.\n* To export only the TML of feedbacks associated with an object, set the GUID of the object as `identifier`, and set the `type` as `FEEDBACK` in the `metadata` array.\n* To export the TML of an object along with the feedbacks associated with it, set the GUID of the object as `identifier`, set the `type` as `LOGIAL_TABLE` in the `metadata` array, and set `export_with_associated_feedbacks` in `export_options` to true.\n\nFor more information, see [TML Documentation](https://developers.thoughtspot.com/docs/tml#_export_a_tml).\n\nFor more information on feedbacks, see [Feedback Documentation](https://docs.thoughtspot.com/cloud/latest/sage-feedback).\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchAsyncImportTaskStatus", + "description": "\n Version: 10.4.0.cl or later\n\nGets information about the status of the TML async import task scheduled using the `/api/rest/2.0/metadata/tml/async/import` API call.\n\nTo fetch the task details, specify the ID of the TML async import task. \n\nRequires access to the task ID. The API allows users who initiated the asynchronous TML import via `/api/rest/2.0/metadata/tml/async/import` to view the status of their tasks. Users with administration privilege can view the status of all import tasks initiated by the users in their Org.\n\n#### Usage guidelines\n\nSee [TML API Documentation](https://developers.thoughtspot.com/docs/tml#_fetch_status_of_the_tml_import_task) for usage guidelines.\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "9.0.0.cl" + "10.4.0.cl" ], "requestBody": { "content": { @@ -6650,74 +6540,49 @@ "schema": { "type": "object", "properties": { - "metadata": { - "description": "Metadata objects.", + "task_ids": { + "description": "List of task IDs to fetch status for.", "type": "array", "items": { - "$ref": "#/components/schemas/ExportMetadataTypeInput" + "type": "string" } }, - "export_associated": { - "description": "Indicates whether to export associated metadata objects of specified metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "export_fqn": { - "description": "Adds FQNs of the referenced objects. For example, if you are exporting a Liveboard and its associated objects,\nthe API returns the Liveboard TML data with the FQNs of the referenced worksheet.\nIf the exported TML data includes FQNs, you don't need to manually add FQNs of the referenced objects during TML import.", - "default": false, - "type": "boolean", - "nullable": true - }, - "edoc_format": { - "description": "TML EDOC content format.\n\n**Note: exporting in YAML format currently requires manual formatting of the output. For more details on the workaround, please click [here](https://developers.thoughtspot.com/docs/known-issues#_version_9_12_0_cl)**", - "default": "JSON", - "type": "string", - "enum": [ - "JSON", - "YAML" - ] + "task_status": { + "description": "List of task statuses to filter on. Valid values: [IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED]", + "type": "array", + "items": { + "type": "string", + "enum": [ + "COMPLETED", + "IN_QUEUE", + "IN_PROGRESS", + "FAILED" + ] + } }, - "export_schema_version": { - "description": "Indicates whether to export worksheet TML in DEFAULT or V1 or V2 version.", - "default": "DEFAULT", - "type": "string", - "enum": [ - "DEFAULT", - "V1", - "V2" - ] + "author_identifier": { + "description": "Author GUID or name of async import tasks to filter on.", + "type": "string" }, - "export_dependent": { - "description": "Indicates whether to export table while exporting connection.", - "default": false, - "type": "boolean", - "nullable": true + "record_offset": { + "description": "The offset point, starting from where the task status should be included in the response.", + "default": 0, + "type": "integer", + "format": "int32" }, - "export_connection_as_dependent": { - "description": "Indicates whether to export connection as dependent while exporting table/worksheet/answer/liveboard.\nThis will only be active when export_associated is true.", - "default": false, - "type": "boolean", - "nullable": true + "record_size": { + "description": "The number of task statuses that should be included in the response starting from offset position.", + "default": 5, + "type": "integer", + "format": "int32" }, - "all_orgs_override": { - "description": "Indicates whether to export is happening from all orgs context.", + "include_import_response": { + "description": "Boolean flag to specify whether to include import response in the task status objects.", "default": false, "type": "boolean", "nullable": true - }, - "export_options": { - "description": "Flags to specify additional options for export.
Version: 10.6.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/Export_Options" - } - ] } - }, - "required": [ - "metadata" - ] + } } } }, @@ -6726,14 +6591,11 @@ "parameters": [], "responses": { "200": { - "description": "Export TMLs of specified metadata objects is successful.", + "description": "Async TML Import Task statuses fetched successfully.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "object" - } + "$ref": "#/components/schemas/GetAsyncImportStatusResponse" } } } @@ -6781,13 +6643,13 @@ } } }, - "/api/rest/2.0/metadata/tml/export/batch": { + "/api/rest/2.0/metadata/liveboard/sql": { "post": { - "operationId": "exportMetadataTMLBatched", - "description": "\n Version: 10.1.0.cl or later\n\nExports the [TML](https://docs.thoughtspot.com/cloud/latest/tml) representation of metadata objects in JSON or YAML format.\n\n### **Permissions Required**\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and `USERMANAGEMENT` (**Can manage users**) privileges.\n\n#### **Usage Guidelines**\n\nThis API is only applicable for `USER`, `GROUP`, and `ROLES` metadata types.\n\n- `batch_offset` Indicates the starting position within the complete dataset from which the API should begin returning objects. Useful for paginating results efficiently.\n- `batch_size` Specifies the number of objects or items to retrieve in a single request. Helps control response size for better performance.\n- `edoc_format` Defines the format of the TML content. The exported metadata can be in JSON or YAML format.\n- `export_dependent` Specifies whether to include dependent metadata objects in the export. Ensures related objects are also retrieved if needed.\n- `all_orgs_override` Indicates whether the export operation applies across all organizations. Useful for multi-tenant environments where cross-org exports are required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchLiveboardSqlQuery", + "description": "\n Version: 9.0.0.cl or later\n\nFetches the underlying SQL query data for a Liveboard object and its visualizations.\n\nRequires at least view access to the Liveboard object.\n\nTo get SQL query data for a Liveboard, specify the GUID of the Liveboard. Optionally, you can add an array of visualization GUIDs to retrieve the SQL query data for visualizations in the Liveboard.\n\nUpon successful execution, the API returns the SQL queries for the specified object as shown in this example:\n```\n{\n \"metadata_id\": \"fa68ae91-7588-4136-bacd-d71fb12dda69\",\n \"metadata_name\": \"Total Sales\",\n \"metadata_type\": \"LIVEBOARD\",\n \"sql_queries\": [\n {\n \"metadata_id\": \"b3b6d2b9-089a-490c-8e16-b144650b7843\",\n \"metadata_name\": \"Total quantity purchased, Total sales by region\",\n \"sql_query\": \"SELECT \\n \\\"ta_1\\\".\\\"REGION\\\" \\\"ca_1\\\", \\n CASE\\n WHEN sum(\\\"ta_2\\\".\\\"QUANTITYPURCHASED\\\") IS NOT NULL THEN sum(\\\"ta_2\\\".\\\"QUANTITYPURCHASED\\\")\\n ELSE 0\\n END \\\"ca_2\\\", \\n CASE\\n WHEN sum(\\\"ta_2\\\".\\\"SALES\\\") IS NOT NULL THEN sum(\\\"ta_2\\\".\\\"SALES\\\")\\n ELSE 0\\n END \\\"ca_3\\\"\\nFROM \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"FACT_RETAPP_SALES\\\" \\\"ta_2\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_STORES\\\" \\\"ta_1\\\"\\n ON \\\"ta_2\\\".\\\"STOREID\\\" = \\\"ta_1\\\".\\\"STOREID\\\"\\nGROUP BY \\\"ca_1\\\"\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.1.0.cl" + "9.0.0.cl" ], "requestBody": { "content": { @@ -6795,51 +6657,20 @@ "schema": { "type": "object", "properties": { - "metadata_type": { - "description": "Type of metadata object to export, can be one of USER | ROLE | USER_GROUP", - "type": "string", - "enum": [ - "USER", - "USER_GROUP", - "ROLE" - ] - }, - "batch_offset": { - "description": "Indicates the position within the complete set from where the API should begin returning objects.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "batch_size": { - "description": "Determines the number of objects or items to be retrieved in a single request.", - "default": 20, - "type": "integer", - "format": "int32" - }, - "edoc_format": { - "description": "TML EDOC content format.", - "default": "JSON", - "type": "string", - "enum": [ - "JSON", - "YAML" - ] - }, - "export_dependent": { - "description": "Indicates whether to export dependent metadata objects of specified metadata objects.", - "default": false, - "type": "boolean", - "nullable": true + "metadata_identifier": { + "description": "ID or name of the Liveboard.", + "type": "string" }, - "all_orgs_override": { - "description": "Indicates whether to export is happening from all orgs context.", - "default": false, - "type": "boolean", - "nullable": true + "visualization_identifiers": { + "description": "Unique ID or name of visualizations.", + "type": "array", + "items": { + "type": "string" + } } }, "required": [ - "metadata_type" + "metadata_identifier" ] } } @@ -6849,11 +6680,11 @@ "parameters": [], "responses": { "200": { - "description": "Export TMLs of specified metadata objects is successful.", + "description": "Fetching SQL query of specified metadata object is successful.", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/SqlQueryResponse" } } } @@ -6901,10 +6732,10 @@ } } }, - "/api/rest/2.0/metadata/answer/sql": { + "/api/rest/2.0/metadata/tml/import": { "post": { - "operationId": "fetchAnswerSqlQuery", - "description": "\n Version: 9.0.0.cl or later\n\nFetches the underlying SQL query data for an Answer object.\n\nRequires at least view access to the Answer object.\n\nUpon successful execution, the API returns the SQL queries for the specified object as shown in this example:\n```\n{\n \"metadata_id\":\"8fbe44a8-46ad-4b16-8d39-184b2fada490\",\n \"metadata_name\":\"Total sales\",\n \"metadata_type\":\"ANSWER\",\n \"sql_queries\":[\n {\n \"metadata_id\":\"8fbe44a8-46ad-4b16-8d39-184b2fada490\",\n \"metadata_name\":\"Total sales -test\",\n \"sql_query\":\"SELECT \\n \\\"ta_1\\\".\\\"REGION\\\" \\\"ca_1\\\", \\n \\\"ta_2\\\".\\\"PRODUCTNAME\\\" \\\"ca_2\\\", \\n \\\"ta_1\\\".\\\"STORENAME\\\" \\\"ca_3\\\", \\n CASE\\n WHEN sum(\\\"ta_3\\\".\\\"SALES\\\") IS NOT NULL THEN sum(\\\"ta_3\\\".\\\"SALES\\\")\\n ELSE 0\\n END \\\"ca_4\\\", \\n CASE\\n WHEN sum(\\\"ta_3\\\".\\\"QUANTITYPURCHASED\\\") IS NOT NULL THEN sum(\\\"ta_3\\\".\\\"QUANTITYPURCHASED\\\")\\n ELSE 0\\n END \\\"ca_5\\\"\\nFROM \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"FACT_RETAPP_SALES\\\" \\\"ta_3\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_STORES\\\" \\\"ta_1\\\"\\n ON \\\"ta_3\\\".\\\"STOREID\\\" = \\\"ta_1\\\".\\\"STOREID\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_PRODUCTS\\\" \\\"ta_2\\\"\\n ON \\\"ta_3\\\".\\\"PRODUCTID\\\" = \\\"ta_2\\\".\\\"PRODUCTID\\\"\\nGROUP BY \\n \\\"ca_1\\\", \\n \\\"ca_2\\\", \\n \\\"ca_3\\\"\\n\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "importMetadataTML", + "description": "\n Version: 9.0.0.cl or later\n\nImports [TML](https://docs.thoughtspot.com/cloud/latest/tml) files into ThoughtSpot.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtsSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### Usage guidelines\n\n* Import all related objects in a single TML Import API call. For example, Tables that use the same Connection object and Worksheets connected to these Tables.\n* Include the `fqn` property to distinguish objects that have the same name.\n For example, if you have multiple Connections or Worksheets with the same name on ThoughtSpot and the Connection or Worksheet referenced in your TML file does not have a unique name to distinguish, it may result in invalid object references.\n Adding `fqn` helps ThoughtSpot differentiate a Table from another with the same name.\n We recommend [exporting TML with FQNs](#/http/api-endpoints/metadata/export-metadata-tml) and using these during the import operation.\n* You can upload multiple TML files at a time.\n If you import a Worksheet along with Liveboards, Answers, and other dependent objects in a single API call, the imported objects will be immediately available for use.\n When you import only a Worksheet object, it may take some time for the Worksheet to become available in the ThoughtSpot system. Please wait for a few minutes, and then proceed to create an Answer and Liveboard from the newly imported Worksheet.\n\nFor more information, see [TML Documentation](https://developers.thoughtspot.com/docs/tml#_import_a_tml).\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "9.0.0.cl" @@ -6915,13 +6746,51 @@ "schema": { "type": "object", "properties": { - "metadata_identifier": { - "description": "ID or name of an Answer.", - "type": "string" + "metadata_tmls": { + "description": "Details of TML objects.\n\n**Note: importing TML in YAML format, when coming directly from our Playground, is currently requires manual formatting. For more details on the workaround, please click [here](https://developers.thoughtspot.com/docs/known-issues#_version_9_12_0_cl)**", + "type": "array", + "items": { + "type": "string" + } + }, + "import_policy": { + "description": "Specifies the import policy for the TML import.", + "default": "PARTIAL", + "type": "string", + "enum": [ + "PARTIAL", + "ALL_OR_NONE", + "VALIDATE_ONLY", + "PARTIAL_OBJECT" + ] + }, + "create_new": { + "description": "If selected, creates TML objects with new GUIDs.", + "default": false, + "type": "boolean", + "nullable": true + }, + "all_orgs_override": { + "description": "If import is happening from all orgs context.", + "default": false, + "type": "boolean", + "nullable": true + }, + "skip_diff_check": { + "description": "
Version: 10.6.0.cl or later
\n\nBoolean Flag to skip TML diff check before processing object TMLs.", + "default": false, + "type": "boolean", + "nullable": true + }, + "enable_large_metadata_validation": { + "description": "
Version: 10.5.0.cl or later
\n\nBoolean to indicate if the large metadata validation should be enabled.", + "default": false, + "type": "boolean", + "nullable": true } }, "required": [ - "metadata_identifier" + "metadata_tmls" ] } } @@ -6931,11 +6800,14 @@ "parameters": [], "responses": { "200": { - "description": "Fetching SQL query of specified metadata object is successful.", + "description": "Import metadata objects using specified TMLs is successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SqlQueryResponse" + "type": "array", + "items": { + "type": "object" + } } } } @@ -6983,10 +6855,10 @@ } } }, - "/api/rest/2.0/metadata/tml/async/status": { + "/api/rest/2.0/metadata/tml/async/import": { "post": { - "operationId": "fetchAsyncImportTaskStatus", - "description": "\n Version: 10.4.0.cl or later\n\nGets information about the status of the TML async import task scheduled using the `/api/rest/2.0/metadata/tml/async/import` API call.\n\nTo fetch the task details, specify the ID of the TML async import task. \n\nRequires access to the task ID. The API allows users who initiated the asynchronous TML import via `/api/rest/2.0/metadata/tml/async/import` to view the status of their tasks. Users with administration privilege can view the status of all import tasks initiated by the users in their Org.\n\n#### Usage guidelines\n\nSee [TML API Documentation](https://developers.thoughtspot.com/docs/tml#_fetch_status_of_the_tml_import_task) for usage guidelines.\n\n\n\n#### Endpoint URL\n", + "operationId": "importMetadataTMLAsync", + "description": "\n Version: 10.4.0.cl or later\n\nSchedules a task to import [TML](https://docs.thoughtspot.com/cloud/latest/tml) files into ThoughtSpot. You can use this API endpoint to process TML objects asynchronously when importing TMLs of large and complex metadata objects into ThoughtSpot. Unlike the synchronous import TML operation, the API processes TML data in the background and returns a task ID, which can be used to check the status of the import task via `/api/rest/2.0/metadata/tml/async/status` API endpoint.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtsSpot**) privilege, and edit access to the TML objects.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### Usage guidelines\n\nSee [Async TML API Documentation](https://developers.thoughtspot.com/docs/tml#_import_tml_objects_asynchronously) for usage guidelines.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.4.0.cl" @@ -6997,49 +6869,52 @@ "schema": { "type": "object", "properties": { - "task_ids": { - "description": "List of task IDs to fetch status for.", + "metadata_tmls": { + "description": "Details of TML objects.", "type": "array", "items": { "type": "string" } }, - "task_status": { - "description": "List of task statuses to filter on. Valid values: [IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED]", - "type": "array", - "items": { - "type": "string", - "enum": [ - "COMPLETED", - "IN_QUEUE", - "IN_PROGRESS", - "FAILED" - ] - } + "create_new": { + "description": "If selected, creates TML objects with new GUIDs.", + "default": false, + "type": "boolean", + "nullable": true }, - "author_identifier": { - "description": "Author GUID or name of async import tasks to filter on.", - "type": "string" + "all_orgs_override": { + "description": "If import is happening from all orgs context.", + "default": false, + "type": "boolean", + "nullable": true }, - "record_offset": { - "description": "The offset point, starting from where the task status should be included in the response.", - "default": 0, - "type": "integer", - "format": "int32" + "import_policy": { + "description": "
Version: 10.5.0.cl or later
\n\nPolicy to be followed while importing the TML. Valid values are [PARTIAL_OBJECT, PARTIAL, VALIDATE_ONLY, ALL_OR_NONE]", + "default": "PARTIAL_OBJECT", + "type": "string", + "enum": [ + "PARTIAL", + "ALL_OR_NONE", + "VALIDATE_ONLY", + "PARTIAL_OBJECT" + ] }, - "record_size": { - "description": "The number of task statuses that should be included in the response starting from offset position.", - "default": 5, - "type": "integer", - "format": "int32" + "skip_diff_check": { + "description": "
Version: 10.6.0.cl or later
\n\nBoolean Flag to skip TML diff check before processing object TMLs.", + "default": false, + "type": "boolean", + "nullable": true }, - "include_import_response": { - "description": "Boolean flag to specify whether to include import response in the task status objects.", + "enable_large_metadata_validation": { + "description": "
Version: 10.5.0.cl or later
\n\nBoolean to indicate if the large metadata validation should be enabled.", "default": false, "type": "boolean", "nullable": true } - } + }, + "required": [ + "metadata_tmls" + ] } } }, @@ -7048,11 +6923,11 @@ "parameters": [], "responses": { "200": { - "description": "Async TML Import Task statuses fetched successfully.", + "description": "Async TML Import Task submitted successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetAsyncImportStatusResponse" + "$ref": "#/components/schemas/ImportEPackAsyncTaskStatus" } } } @@ -7100,13 +6975,13 @@ } } }, - "/api/rest/2.0/metadata/liveboard/sql": { + "/api/rest/2.0/metadata/parameterize": { "post": { - "operationId": "fetchLiveboardSqlQuery", - "description": "\n Version: 9.0.0.cl or later\n\nFetches the underlying SQL query data for a Liveboard object and its visualizations.\n\nRequires at least view access to the Liveboard object.\n\nTo get SQL query data for a Liveboard, specify the GUID of the Liveboard. Optionally, you can add an array of visualization GUIDs to retrieve the SQL query data for visualizations in the Liveboard.\n\nUpon successful execution, the API returns the SQL queries for the specified object as shown in this example:\n```\n{\n \"metadata_id\": \"fa68ae91-7588-4136-bacd-d71fb12dda69\",\n \"metadata_name\": \"Total Sales\",\n \"metadata_type\": \"LIVEBOARD\",\n \"sql_queries\": [\n {\n \"metadata_id\": \"b3b6d2b9-089a-490c-8e16-b144650b7843\",\n \"metadata_name\": \"Total quantity purchased, Total sales by region\",\n \"sql_query\": \"SELECT \\n \\\"ta_1\\\".\\\"REGION\\\" \\\"ca_1\\\", \\n CASE\\n WHEN sum(\\\"ta_2\\\".\\\"QUANTITYPURCHASED\\\") IS NOT NULL THEN sum(\\\"ta_2\\\".\\\"QUANTITYPURCHASED\\\")\\n ELSE 0\\n END \\\"ca_2\\\", \\n CASE\\n WHEN sum(\\\"ta_2\\\".\\\"SALES\\\") IS NOT NULL THEN sum(\\\"ta_2\\\".\\\"SALES\\\")\\n ELSE 0\\n END \\\"ca_3\\\"\\nFROM \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"FACT_RETAPP_SALES\\\" \\\"ta_2\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_STORES\\\" \\\"ta_1\\\"\\n ON \\\"ta_2\\\".\\\"STOREID\\\" = \\\"ta_1\\\".\\\"STOREID\\\"\\nGROUP BY \\\"ca_1\\\"\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "parameterizeMetadata", + "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be parameterized.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "9.0.0.cl" + "10.9.0.cl" ], "requestBody": { "content": { @@ -7114,20 +6989,40 @@ "schema": { "type": "object", "properties": { + "metadata_type": { + "description": "Type of metadata object to parameterize.", + "type": "string", + "enum": [ + "LOGICAL_TABLE", + "CONNECTION" + ] + }, "metadata_identifier": { - "description": "ID or name of the Liveboard.", + "description": "Unique ID or name of the metadata object to parameterize.", "type": "string" }, - "visualization_identifiers": { - "description": "Unique ID or name of visualizations.", - "type": "array", - "items": { - "type": "string" - } + "field_type": { + "description": "Type of field in the metadata to parameterize.", + "type": "string", + "enum": [ + "ATTRIBUTE", + "CONNECTION_PROPERTY" + ] + }, + "field_name": { + "description": "Name of the field which needs to be parameterized.", + "type": "string" + }, + "variable_identifier": { + "description": "Unique ID or name of the variable to use for parameterization", + "type": "string" } }, "required": [ - "metadata_identifier" + "metadata_identifier", + "field_type", + "field_name", + "variable_identifier" ] } } @@ -7136,15 +7031,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Fetching SQL query of specified metadata object is successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SqlQueryResponse" - } - } - } + "204": { + "description": "Parameterize successful." }, "400": { "description": "Invalid request.", @@ -7189,10 +7077,10 @@ } } }, - "/api/rest/2.0/metadata/tml/import": { + "/api/rest/2.0/metadata/search": { "post": { - "operationId": "importMetadataTML", - "description": "\n Version: 9.0.0.cl or later\n\nImports [TML](https://docs.thoughtspot.com/cloud/latest/tml) files into ThoughtSpot.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtsSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### Usage guidelines\n\n* Import all related objects in a single TML Import API call. For example, Tables that use the same Connection object and Worksheets connected to these Tables.\n* Include the `fqn` property to distinguish objects that have the same name.\n For example, if you have multiple Connections or Worksheets with the same name on ThoughtSpot and the Connection or Worksheet referenced in your TML file does not have a unique name to distinguish, it may result in invalid object references.\n Adding `fqn` helps ThoughtSpot differentiate a Table from another with the same name.\n We recommend [exporting TML with FQNs](#/http/api-endpoints/metadata/export-metadata-tml) and using these during the import operation.\n* You can upload multiple TML files at a time.\n If you import a Worksheet along with Liveboards, Answers, and other dependent objects in a single API call, the imported objects will be immediately available for use.\n When you import only a Worksheet object, it may take some time for the Worksheet to become available in the ThoughtSpot system. Please wait for a few minutes, and then proceed to create an Answer and Liveboard from the newly imported Worksheet.\n\nFor more information, see [TML Documentation](https://developers.thoughtspot.com/docs/tml#_import_a_tml).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchMetadata", + "description": "\n Version: 9.0.0.cl or later\n\nGets a list of metadata objects available on the ThoughtSpot system.\n\nThis API endpoint is available to all users who have view access to the object. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view data for all metadata objects, including users and groups.\n\n#### Usage guidelines\n\n- To get all metadata objects, send the API request without any attributes.\n- To get metadata objects of a specific type, set the `type` attribute. For example, to fetch a Worksheet, set the type as `LOGICAL_TABLE`.\n- To filter metadata objects within type `LOGICAL_TABLE`, set the `subtypes` attribute. For example, to fetch a Worksheet, set the type as `LOGICAL_TABLE` & subtypes as `[WORKSHEET]`.\n- To get a specific metadata object, specify the GUID.\n- To customize your search and filter the API response, you can use several parameters.\n You can search for objects created or modified by specific users, by tags applied to the objects, or by using the include parameters like `include_auto_created_objects`, `include_dependent_objects`, `include_headers`, `include_incomplete_objects`, and so on.\n You can also define sorting options to sort the data retrieved in the API response.\n- To get discoverable objects when linientmodel is enabled you can use `include_discoverable_objects` as true else false. Default value is true.\n- For liveboard metadata type, to get the newer format, set the `liveboard_response_format` as V2. Default value is V1.\n- To retrieve only objects that are published, set the `include_only_published_objects` as true. Default value is false.\n\n**NOTE**: The following parameters support pagination of metadata records:\n\n- `tag_identifiers`\n- `type`\n- `subtypes`\n- `created_by_user_identifiers`\n- `modified_by_user_identifiers`\n- `owned_by_user_identifiers`\n- `exclude_objects`\n- `include_auto_created_objects`\n- `favorite_object_options`\n- `include_only_published_objects`\nIf you are using other parameters to search metadata, set `record_size` to `-1` and `record_offset` to `0`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "9.0.0.cl" @@ -7203,175 +7091,172 @@ "schema": { "type": "object", "properties": { - "metadata_tmls": { - "description": "Details of TML objects.\n\n**Note: importing TML in YAML format, when coming directly from our Playground, is currently requires manual formatting. For more details on the workaround, please click [here](https://developers.thoughtspot.com/docs/known-issues#_version_9_12_0_cl)**", + "metadata": { + "description": "Metadata objects such as Liveboards, Answers, and Worksheets.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataListItemInput" + } + }, + "permissions": { + "description": "Object permission details to search by.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionInput" + } + }, + "created_by_user_identifiers": { + "description": "GUID or name of user who created the metadata object.", "type": "array", "items": { "type": "string" } }, - "import_policy": { - "description": "Specifies the import policy for the TML import.", - "default": "PARTIAL", + "dependent_object_version": { + "description": "Version of the dependent table of the metadata objects like Worksheets.", + "default": "V1", "type": "string", "enum": [ - "PARTIAL", - "ALL_OR_NONE", - "VALIDATE_ONLY", - "PARTIAL_OBJECT" + "V1", + "V2" ] }, - "create_new": { - "description": "If selected, creates TML objects with new GUIDs.", + "exclude_objects": { + "description": "List of metadata objects to exclude from search.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExcludeMetadataListItemInput" + } + }, + "favorite_object_options": { + "description": "Options to sort the API response by objects set as favorites\nfor the logged-in user or the users specified in the API request.", + "allOf": [ + { + "$ref": "#/components/schemas/FavoriteObjectOptionsInput" + } + ] + }, + "include_auto_created_objects": { + "description": "Includes system-generated metadata objects.", "default": false, "type": "boolean", "nullable": true }, - "all_orgs_override": { - "description": "If import is happening from all orgs context.", + "include_dependent_objects": { + "description": "Includes dependents of the metadata object specified in the API request.\nFor example, a worksheet can consist of dependent objects such as Liveboards or Answers.", "default": false, "type": "boolean", "nullable": true }, - "skip_diff_check": { - "description": "
Version: 10.6.0.cl or later
\n\nBoolean Flag to skip TML diff check before processing object TMLs.", + "dependent_objects_record_size": { + "description": "The maximum number of dependents to include per metadata object.", + "default": 50, + "type": "integer", + "format": "int32" + }, + "include_details": { + "description": "Includes complete details of the metadata objects.", "default": false, "type": "boolean", "nullable": true }, - "enable_large_metadata_validation": { - "description": "
Version: 10.5.0.cl or later
\n\nBoolean to indicate if the large metadata validation should be enabled.", + "include_headers": { + "description": "Includes headers of the metadata objects.", + "default": true, + "type": "boolean", + "nullable": true + }, + "include_hidden_objects": { + "description": "Includes details of the hidden objects, such as a column in a worksheet or a table.", "default": false, "type": "boolean", "nullable": true - } - }, - "required": [ - "metadata_tmls" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Import metadata objects using specified TMLs is successful.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object" - } - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/metadata/tml/async/import": { - "post": { - "operationId": "importMetadataTMLAsync", - "description": "\n Version: 10.4.0.cl or later\n\nSchedules a task to import [TML](https://docs.thoughtspot.com/cloud/latest/tml) files into ThoughtSpot. You can use this API endpoint to process TML objects asynchronously when importing TMLs of large and complex metadata objects into ThoughtSpot. Unlike the synchronous import TML operation, the API processes TML data in the background and returns a task ID, which can be used to check the status of the import task via `/api/rest/2.0/metadata/tml/async/status` API endpoint.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtsSpot**) privilege, and edit access to the TML objects.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### Usage guidelines\n\nSee [Async TML API Documentation](https://developers.thoughtspot.com/docs/tml#_import_tml_objects_asynchronously) for usage guidelines.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Metadata", - "10.4.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata_tmls": { - "description": "Details of TML objects.", + }, + "include_incomplete_objects": { + "description": "Includes objects with incomplete metadata.", + "default": false, + "type": "boolean", + "nullable": true + }, + "include_visualization_headers": { + "description": "Includes visualization headers of the specified Liveboard object.", + "default": false, + "type": "boolean", + "nullable": true + }, + "include_worksheet_search_assist_data": { + "description": "If search assistance lessons are configured on a worksheet,\nthe API returns the search assist data for Worksheet objects.", + "type": "boolean", + "nullable": true + }, + "modified_by_user_identifiers": { + "description": "Includes ID or names of the users who modified the metadata object.", "type": "array", "items": { "type": "string" } }, - "create_new": { - "description": "If selected, creates TML objects with new GUIDs.", + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included. It is recommended to use a smaller `record_size` when fetching dependent objects or any of the additional metadata detail options.", + "default": 10, + "type": "integer", + "format": "int32" + }, + "sort_options": { + "description": "Sort options to filter metadata details.", + "allOf": [ + { + "$ref": "#/components/schemas/MetadataSearchSortOptions" + } + ] + }, + "tag_identifiers": { + "description": "Tags to filter metadata objects by", + "type": "array", + "items": { + "type": "string" + } + }, + "include_stats": { + "description": "Indicates whether to include stats of the metadata objects.", "default": false, "type": "boolean", "nullable": true }, - "all_orgs_override": { - "description": "If import is happening from all orgs context.", + "include_discoverable_objects": { + "description": "
Version: 10.7.0.cl or later
\n\nBoolean to indicate whether to include discoverable metadata objects.", + "default": true, + "type": "boolean", + "nullable": true + }, + "show_resolved_parameters": { + "description": "
Version: 10.9.0.cl or later
\n\nIndicates whether to show resolved parameterised values.", "default": false, "type": "boolean", "nullable": true }, - "import_policy": { - "description": "
Version: 10.5.0.cl or later
\n\nPolicy to be followed while importing the TML. Valid values are [PARTIAL_OBJECT, PARTIAL, VALIDATE_ONLY, ALL_OR_NONE]", - "default": "PARTIAL_OBJECT", + "liveboard_response_version": { + "description": "Indicates the model version of Liveboard to be attached in metadata detail.", + "default": "V1", "type": "string", "enum": [ - "PARTIAL", - "ALL_OR_NONE", - "VALIDATE_ONLY", - "PARTIAL_OBJECT" + "V1", + "V2" ] }, - "skip_diff_check": { - "description": "
Version: 10.6.0.cl or later
\n\nBoolean Flag to skip TML diff check before processing object TMLs.", - "default": false, - "type": "boolean", - "nullable": true - }, - "enable_large_metadata_validation": { - "description": "
Version: 10.5.0.cl or later
\n\nBoolean to indicate if the large metadata validation should be enabled.", + "include_only_published_objects": { + "description": "
Version: 10.11.0.cl or later
\n\nIf only published objects should be returned", "default": false, "type": "boolean", "nullable": true } - }, - "required": [ - "metadata_tmls" - ] + } } } }, @@ -7380,11 +7265,14 @@ "parameters": [], "responses": { "200": { - "description": "Async TML Import Task submitted successfully.", + "description": "Metadata objects search result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ImportEPackAsyncTaskStatus" + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataSearchResponse" + } } } } @@ -7432,10 +7320,10 @@ } } }, - "/api/rest/2.0/metadata/parameterize": { + "/api/rest/2.0/metadata/unparameterize": { "post": { - "operationId": "parameterizeMetadata", - "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be parameterized.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "unparameterizeMetadata", + "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be unparameterized.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.9.0.cl" @@ -7447,7 +7335,7 @@ "type": "object", "properties": { "metadata_type": { - "description": "Type of metadata object to parameterize.", + "description": "Type of metadata object to unparameterize.", "type": "string", "enum": [ "LOGICAL_TABLE", @@ -7455,11 +7343,11 @@ ] }, "metadata_identifier": { - "description": "Unique ID or name of the metadata object to parameterize.", + "description": "Unique ID or name of the metadata object to unparameterize.", "type": "string" }, "field_type": { - "description": "Type of field in the metadata to parameterize.", + "description": "Type of field in the metadata to unparameterize.", "type": "string", "enum": [ "ATTRIBUTE", @@ -7467,11 +7355,11 @@ ] }, "field_name": { - "description": "Name of the field which needs to be parameterized.", + "description": "Name of the field which needs to be unparameterized.", "type": "string" }, - "variable_identifier": { - "description": "Unique ID or name of the variable to use for parameterization", + "value": { + "description": "The value to use in place of the variable for the field", "type": "string" } }, @@ -7479,7 +7367,7 @@ "metadata_identifier", "field_type", "field_name", - "variable_identifier" + "value" ] } } @@ -7489,7 +7377,7 @@ "parameters": [], "responses": { "204": { - "description": "Parameterize successful." + "description": "Successfuly removed parameters." }, "400": { "description": "Invalid request.", @@ -7534,13 +7422,13 @@ } } }, - "/api/rest/2.0/metadata/search": { + "/api/rest/2.0/metadata/headers/update": { "post": { - "operationId": "searchMetadata", - "description": "\n Version: 9.0.0.cl or later\n\nGets a list of metadata objects available on the ThoughtSpot system.\n\nThis API endpoint is available to all users who have view access to the object. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view data for all metadata objects, including users and groups.\n\n#### Usage guidelines\n\n- To get all metadata objects, send the API request without any attributes.\n- To get metadata objects of a specific type, set the `type` attribute. For example, to fetch a Worksheet, set the type as `LOGICAL_TABLE`.\n- To filter metadata objects within type `LOGICAL_TABLE`, set the `subtypes` attribute. For example, to fetch a Worksheet, set the type as `LOGICAL_TABLE` & subtypes as `[WORKSHEET]`.\n- To get a specific metadata object, specify the GUID.\n- To customize your search and filter the API response, you can use several parameters.\n You can search for objects created or modified by specific users, by tags applied to the objects, or by using the include parameters like `include_auto_created_objects`, `include_dependent_objects`, `include_headers`, `include_incomplete_objects`, and so on.\n You can also define sorting options to sort the data retrieved in the API response.\n- To get discoverable objects when linientmodel is enabled you can use `include_discoverable_objects` as true else false. Default value is true.\n- For liveboard metadata type, to get the newer format, set the `liveboard_response_format` as V2. Default value is V1.\n- To retrieve only objects that are published, set the `include_only_published_objects` as true. Default value is false.\n\n**NOTE**: The following parameters support pagination of metadata records:\n\n- `tag_identifiers`\n- `type`\n- `subtypes`\n- `created_by_user_identifiers`\n- `modified_by_user_identifiers`\n- `owned_by_user_identifiers`\n- `exclude_objects`\n- `include_auto_created_objects`\n- `favorite_object_options`\n- `include_only_published_objects`\nIf you are using other parameters to search metadata, set `record_size` to `-1` and `record_offset` to `0`.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateMetadataHeader", + "description": "\nUpdate header attributes for a given list of header objects.
Beta Version: 10.6.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `ORG_ADMINISTRATION` (Can manage orgs).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **headers_update** \n - **Description:** List of header objects with their attributes to be updated. Each object contains a list of attributes to be updated in the header.\n - **Usage:**\n - You must provide either `identifier` or `obj_identifier`, but not both. Both fields cannot be empty.\n - When `org_identifier` is set to `-1`, only the `identifier` value is accepted; `obj_identifier` is not allowed.\n\n2. **org_identifier** \n - **Description:** GUID (Globally Unique Identifier) or name of the organization. \n - **Usage:**\n - Leaving this field empty assumes that the changes should be applied to the current organization \n - Provide `org_guid` or `org_name` to uniquely identify the organization where changes need to be applied. .\n - Provide `-1` if changes have to be applied across all the org.\n\n---\n\n## Note\nCurrently, this API is enabled only for updating the `obj_identifier` attribute. Only `text` will be allowed in attribute's value.\n\n## Best Practices\n\n1. **Backup Before Conversion:** \n Always export metadata as a backup before initiating the update process\n\n---\n\n## Examples\n\n### Only `identifier` is given \n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"obj_identifier\": \"\",\n \"type\": \"LOGICAL_COLUMN\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": \"orgGuid\"\n}\n```\n\n### Only `obj_identifier` is given\n```json\n{\n \"headers_update\":\n [\n {\n \"obj_identifier\": \"custom_object_id\",\n \"type\": \"ANSWER\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": \"orgName\"\n}\n```\n\n### Executing update for all org `-1`\n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"type\": \"ANSWER\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": -1\n}\n```\n\n### Optional `type` is not provided\n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": -1\n}\n```\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "9.0.0.cl" + "10.6.0.cl" ], "requestBody": { "content": { @@ -7548,172 +7436,99 @@ "schema": { "type": "object", "properties": { - "metadata": { - "description": "Metadata objects such as Liveboards, Answers, and Worksheets.", - "type": "array", - "items": { - "$ref": "#/components/schemas/MetadataListItemInput" - } - }, - "permissions": { - "description": "Object permission details to search by.", + "headers_update": { + "description": "List of header objects to update.", "type": "array", "items": { - "$ref": "#/components/schemas/PermissionInput" + "$ref": "#/components/schemas/HeaderUpdateInput" } }, - "created_by_user_identifiers": { - "description": "GUID or name of user who created the metadata object.", + "org_identifier": { + "description": "Unique ID or name of the organization.", + "type": "string" + } + }, + "required": [ + "headers_update" + ] + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Headers update was successful." + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/metadata/update-obj-id": { + "post": { + "operationId": "updateMetadataObjId", + "description": "\nUpdate object IDs for given metadata objects.
Beta Version: 10.8.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `ORG_ADMINISTRATION` (Can manage orgs).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **metadata** \n - **Description:** List of metadata objects to update their object IDs.\n - **Usage:**\n - Use either `current_obj_id` alone OR use `metadata_identifier` with `type` (when needed).\n - When using `metadata_identifier`, the `type` field is required if using a name instead of a GUID.\n - The `new_obj_id` field is always required.\n\n---\n\n## Note\nThis API is specifically designed for updating object IDs of metadata objects. It internally uses the header update mechanism to perform the changes.\n\n## Best Practices\n\n1. **Backup Before Update:** \n Always export metadata as a backup before initiating the update process.\n\n2. **Validation:**\n - When using `current_obj_id`, ensure it matches the existing object ID exactly.\n - When using `metadata_identifier` with a name, ensure the `type` is specified correctly.\n - Verify that the `new_obj_id` follows your naming conventions and is unique within your system.\n\n---\n\n## Examples\n\n### Using current_obj_id\n```json\n{\n \"metadata\": [\n {\n \"current_obj_id\": \"existing_object_id\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Using metadata_identifier with GUID\n```json\n{\n \"metadata\": [\n {\n \"metadata_identifier\": \"01234567-89ab-cdef-0123-456789abcdef\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Using metadata_identifier with name and type\n```json\n{\n \"metadata\": [\n {\n \"metadata_identifier\": \"My Answer\",\n \"type\": \"ANSWER\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Multiple objects update\n```json\n{\n \"metadata\": [\n {\n \"current_obj_id\": \"existing_object_id_1\",\n \"new_obj_id\": \"new_object_id_1\"\n },\n {\n \"metadata_identifier\": \"My Worksheet\",\n \"type\": \"LOGICAL_TABLE\",\n \"new_obj_id\": \"new_object_id_2\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Metadata", + "10.8.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "metadata": { + "description": "List of metadata objects to update their object IDs.", "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/UpdateObjIdInput" } - }, - "dependent_object_version": { - "description": "Version of the dependent table of the metadata objects like Worksheets.", - "default": "V1", - "type": "string", - "enum": [ - "V1", - "V2" - ] - }, - "exclude_objects": { - "description": "List of metadata objects to exclude from search.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExcludeMetadataListItemInput" - } - }, - "favorite_object_options": { - "description": "Options to sort the API response by objects set as favorites\nfor the logged-in user or the users specified in the API request.", - "allOf": [ - { - "$ref": "#/components/schemas/FavoriteObjectOptionsInput" - } - ] - }, - "include_auto_created_objects": { - "description": "Includes system-generated metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_dependent_objects": { - "description": "Includes dependents of the metadata object specified in the API request.\nFor example, a worksheet can consist of dependent objects such as Liveboards or Answers.", - "default": false, - "type": "boolean", - "nullable": true - }, - "dependent_objects_record_size": { - "description": "The maximum number of dependents to include per metadata object.", - "default": 50, - "type": "integer", - "format": "int32" - }, - "include_details": { - "description": "Includes complete details of the metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_headers": { - "description": "Includes headers of the metadata objects.", - "default": true, - "type": "boolean", - "nullable": true - }, - "include_hidden_objects": { - "description": "Includes details of the hidden objects, such as a column in a worksheet or a table.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_incomplete_objects": { - "description": "Includes objects with incomplete metadata.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_visualization_headers": { - "description": "Includes visualization headers of the specified Liveboard object.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_worksheet_search_assist_data": { - "description": "If search assistance lessons are configured on a worksheet,\nthe API returns the search assist data for Worksheet objects.", - "type": "boolean", - "nullable": true - }, - "modified_by_user_identifiers": { - "description": "Includes ID or names of the users who modified the metadata object.", - "type": "array", - "items": { - "type": "string" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included. It is recommended to use a smaller `record_size` when fetching dependent objects or any of the additional metadata detail options.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "sort_options": { - "description": "Sort options to filter metadata details.", - "allOf": [ - { - "$ref": "#/components/schemas/MetadataSearchSortOptions" - } - ] - }, - "tag_identifiers": { - "description": "Tags to filter metadata objects by", - "type": "array", - "items": { - "type": "string" - } - }, - "include_stats": { - "description": "Indicates whether to include stats of the metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_discoverable_objects": { - "description": "
Version: 10.7.0.cl or later
\n\nBoolean to indicate whether to include discoverable metadata objects.", - "default": true, - "type": "boolean", - "nullable": true - }, - "show_resolved_parameters": { - "description": "
Version: 10.9.0.cl or later
\n\nIndicates whether to show resolved parameterised values.", - "default": false, - "type": "boolean", - "nullable": true - }, - "liveboard_response_version": { - "description": "Indicates the model version of Liveboard to be attached in metadata detail.", - "default": "V1", - "type": "string", - "enum": [ - "V1", - "V2" - ] - }, - "include_only_published_objects": { - "description": "
Version: 10.11.0.cl or later
\n\nIf only published objects should be returned", - "default": false, - "type": "boolean", - "nullable": true } - } + }, + "required": [ + "metadata" + ] } } }, @@ -7721,18 +7536,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Metadata objects search result.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MetadataSearchResponse" - } - } - } - } + "204": { + "description": "Headers update was successful." }, "400": { "description": "Invalid request.", @@ -7777,13 +7582,13 @@ } } }, - "/api/rest/2.0/metadata/unparameterize": { + "/api/rest/2.0/orgs/create": { "post": { - "operationId": "unparameterizeMetadata", - "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be unparameterized.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createOrg", + "description": "\n Version: 9.0.0.cl or later\n\nCreates an Org object.\n\nTo use this API, the [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview) feature must be enabled in your cluster.\n\nRequires cluster administration (**Can administer Org**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Metadata", - "10.9.0.cl" + "Orgs", + "9.0.0.cl" ], "requestBody": { "content": { @@ -7791,40 +7596,17 @@ "schema": { "type": "object", "properties": { - "metadata_type": { - "description": "Type of metadata object to unparameterize.", - "type": "string", - "enum": [ - "LOGICAL_TABLE", - "CONNECTION" - ] - }, - "metadata_identifier": { - "description": "Unique ID or name of the metadata object to unparameterize.", - "type": "string" - }, - "field_type": { - "description": "Type of field in the metadata to unparameterize.", - "type": "string", - "enum": [ - "ATTRIBUTE", - "CONNECTION_PROPERTY" - ] - }, - "field_name": { - "description": "Name of the field which needs to be unparameterized.", + "name": { + "description": "Name of the Org.", "type": "string" }, - "value": { - "description": "The value to use in place of the variable for the field", + "description": { + "description": "Description of the Org.", "type": "string" } }, "required": [ - "metadata_identifier", - "field_type", - "field_name", - "value" + "name" ] } } @@ -7833,8 +7615,26 @@ }, "parameters": [], "responses": { - "204": { - "description": "Successfuly removed parameters." + "200": { + "description": "Organization successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgResponse" + }, + "examples": { + "example_1": { + "value": { + "id": 1980035173, + "name": "test_org", + "status": "ACTIVE", + "description": "test_org", + "visibility": "SHOW" + } + } + } + } + } }, "400": { "description": "Invalid request.", @@ -7879,270 +7679,13 @@ } } }, - "/api/rest/2.0/metadata/headers/update": { + "/api/rest/2.0/orgs/{org_identifier}/delete": { "post": { - "operationId": "updateMetadataHeader", - "description": "\nUpdate header attributes for a given list of header objects.
Beta Version: 10.6.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `ORG_ADMINISTRATION` (Can manage orgs).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **headers_update** \n - **Description:** List of header objects with their attributes to be updated. Each object contains a list of attributes to be updated in the header.\n - **Usage:**\n - You must provide either `identifier` or `obj_identifier`, but not both. Both fields cannot be empty.\n - When `org_identifier` is set to `-1`, only the `identifier` value is accepted; `obj_identifier` is not allowed.\n\n2. **org_identifier** \n - **Description:** GUID (Globally Unique Identifier) or name of the organization. \n - **Usage:**\n - Leaving this field empty assumes that the changes should be applied to the current organization \n - Provide `org_guid` or `org_name` to uniquely identify the organization where changes need to be applied. .\n - Provide `-1` if changes have to be applied across all the org.\n\n---\n\n## Note\nCurrently, this API is enabled only for updating the `obj_identifier` attribute. Only `text` will be allowed in attribute's value.\n\n## Best Practices\n\n1. **Backup Before Conversion:** \n Always export metadata as a backup before initiating the update process\n\n---\n\n## Examples\n\n### Only `identifier` is given \n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"obj_identifier\": \"\",\n \"type\": \"LOGICAL_COLUMN\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": \"orgGuid\"\n}\n```\n\n### Only `obj_identifier` is given\n```json\n{\n \"headers_update\":\n [\n {\n \"obj_identifier\": \"custom_object_id\",\n \"type\": \"ANSWER\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": \"orgName\"\n}\n```\n\n### Executing update for all org `-1`\n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"type\": \"ANSWER\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": -1\n}\n```\n\n### Optional `type` is not provided\n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": -1\n}\n```\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteOrg", + "description": "\n Version: 9.0.0.cl or later\n\nDeletes an Org object from the ThoughtSpot system.\n\nRequires cluster administration (**Can administer Org**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\nWhen you delete an Org, all its users and objects created in that Org context are removed. However, if the users in the deleted Org also exists in other Orgs, they are removed only from the deleted Org.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Metadata", - "10.6.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "headers_update": { - "description": "List of header objects to update.", - "type": "array", - "items": { - "$ref": "#/components/schemas/HeaderUpdateInput" - } - }, - "org_identifier": { - "description": "Unique ID or name of the organization.", - "type": "string" - } - }, - "required": [ - "headers_update" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Headers update was successful." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/metadata/update-obj-id": { - "post": { - "operationId": "updateMetadataObjId", - "description": "\nUpdate object IDs for given metadata objects.
Beta Version: 10.8.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `ORG_ADMINISTRATION` (Can manage orgs).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **metadata** \n - **Description:** List of metadata objects to update their object IDs.\n - **Usage:**\n - Use either `current_obj_id` alone OR use `metadata_identifier` with `type` (when needed).\n - When using `metadata_identifier`, the `type` field is required if using a name instead of a GUID.\n - The `new_obj_id` field is always required.\n\n---\n\n## Note\nThis API is specifically designed for updating object IDs of metadata objects. It internally uses the header update mechanism to perform the changes.\n\n## Best Practices\n\n1. **Backup Before Update:** \n Always export metadata as a backup before initiating the update process.\n\n2. **Validation:**\n - When using `current_obj_id`, ensure it matches the existing object ID exactly.\n - When using `metadata_identifier` with a name, ensure the `type` is specified correctly.\n - Verify that the `new_obj_id` follows your naming conventions and is unique within your system.\n\n---\n\n## Examples\n\n### Using current_obj_id\n```json\n{\n \"metadata\": [\n {\n \"current_obj_id\": \"existing_object_id\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Using metadata_identifier with GUID\n```json\n{\n \"metadata\": [\n {\n \"metadata_identifier\": \"01234567-89ab-cdef-0123-456789abcdef\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Using metadata_identifier with name and type\n```json\n{\n \"metadata\": [\n {\n \"metadata_identifier\": \"My Answer\",\n \"type\": \"ANSWER\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Multiple objects update\n```json\n{\n \"metadata\": [\n {\n \"current_obj_id\": \"existing_object_id_1\",\n \"new_obj_id\": \"new_object_id_1\"\n },\n {\n \"metadata_identifier\": \"My Worksheet\",\n \"type\": \"LOGICAL_TABLE\",\n \"new_obj_id\": \"new_object_id_2\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Metadata", - "10.8.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "List of metadata objects to update their object IDs.", - "type": "array", - "items": { - "$ref": "#/components/schemas/UpdateObjIdInput" - } - } - }, - "required": [ - "metadata" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Headers update was successful." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/orgs/create": { - "post": { - "operationId": "createOrg", - "description": "\n Version: 9.0.0.cl or later\n\nCreates an Org object.\n\nTo use this API, the [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview) feature must be enabled in your cluster.\n\nRequires cluster administration (**Can administer Org**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Orgs", - "9.0.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the Org.", - "type": "string" - }, - "description": { - "description": "Description of the Org.", - "type": "string" - } - }, - "required": [ - "name" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Organization successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgResponse" - }, - "examples": { - "example_1": { - "value": { - "id": 1980035173, - "name": "test_org", - "status": "ACTIVE", - "description": "test_org", - "visibility": "SHOW" - } - } - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/orgs/{org_identifier}/delete": { - "post": { - "operationId": "deleteOrg", - "description": "\n Version: 9.0.0.cl or later\n\nDeletes an Org object from the ThoughtSpot system.\n\nRequires cluster administration (**Can administer Org**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\nWhen you delete an Org, all its users and objects created in that Org context are removed. However, if the users in the deleted Org also exists in other Orgs, they are removed only from the deleted Org.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Orgs", - "9.0.0.cl" + "Orgs", + "9.0.0.cl" ], "parameters": [ { @@ -8764,13 +8307,8 @@ "CAN_ACCESS_ANALYST_STUDIO", "CAN_MANAGE_ANALYST_STUDIO", "PREVIEW_DOCUMENT_SEARCH", - "CAN_MODIFY_FOLDERS", - "CAN_VIEW_FOLDERS", "CAN_SETUP_VERSION_CONTROL", - "PREVIEW_THOUGHTSPOT_SAGE", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "PREVIEW_THOUGHTSPOT_SAGE" ] } }, @@ -8994,13 +8532,8 @@ "ALLOW_NON_EMBED_FULL_APP_ACCESS", "CAN_ACCESS_ANALYST_STUDIO", "CAN_MANAGE_ANALYST_STUDIO", - "CAN_VIEW_FOLDERS", - "CAN_MODIDY_FOLDERS", "PREVIEW_DOCUMENT_SEARCH", - "CAN_SETUP_VERSION_CONTROL", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_SETUP_VERSION_CONTROL" ] } }, @@ -9156,13 +8689,8 @@ "CAN_CREATE_CATALOG", "CAN_ACCESS_ANALYST_STUDIO", "CAN_MANAGE_ANALYST_STUDIO", - "CAN_MODIFY_FOLDERS", - "CAN_VIEW_FOLDERS", "PREVIEW_DOCUMENT_SEARCH", - "PREVIEW_THOUGHTSPOT_SAGE", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "PREVIEW_THOUGHTSPOT_SAGE" ] } } @@ -11911,95 +11439,13 @@ } } }, - "/api/rest/2.0/system/preferences/communication-channels/configure": { - "post": { - "operationId": "configureCommunicationChannelPreferences", - "description": "\nBeta Version: 10.14.0.cl or later\n\nConfigure communication channel preferences.\n- Use `cluster_preferences` to update the default preferences for your ThoughtSpot application instance.\n- If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), use `org_preferences` to specify Org-specific preferences that override the defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/system/config": { + "get": { + "operationId": "getSystemConfig", + "description": "\n Version: 9.0.0.cl or later\n\nRetrieves the current configuration details of the cluster. If the request is successful, the API returns a list configuration settings applied on the cluster.\n\nRequires `ADMINISTRATION`(**Can administer ThoughtSpot**) privilege to view these complete configuration settings of the cluster.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `SYSTEM_INFO_ADMINISTRATION` (**Can view system activities**) privilege is required.\n\nThis API does not require any parameters to be passed in the request.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "System", - "10.14.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cluster_preferences": { - "description": "Cluster-level default configurations.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfigInput" - } - }, - "org_preferences": { - "description": "Org-specific configurations.", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrgChannelConfigInput" - } - } - } - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Communication channel preferences successfully updated." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/system/config": { - "get": { - "operationId": "getSystemConfig", - "description": "\n Version: 9.0.0.cl or later\n\nRetrieves the current configuration details of the cluster. If the request is successful, the API returns a list configuration settings applied on the cluster.\n\nRequires `ADMINISTRATION`(**Can administer ThoughtSpot**) privilege to view these complete configuration settings of the cluster.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `SYSTEM_INFO_ADMINISTRATION` (**Can view system activities**) privilege is required.\n\nThis API does not require any parameters to be passed in the request.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "System", - "9.0.0.cl" + "9.0.0.cl" ], "parameters": [], "responses": { @@ -12218,128 +11664,6 @@ } } }, - "/api/rest/2.0/system/preferences/communication-channels/search": { - "post": { - "operationId": "searchCommunicationChannelPreferences", - "description": "\nBeta Version: 10.14.0.cl or later\n\nFetch communication channel preferences.\n- Use `cluster_preferences` to fetch the default preferences for your ThoughtSpot application instance.\n- If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), use `org_preferences` to fetch any Org-specific preferences that override the defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "System", - "10.14.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cluster_preferences": { - "description": "Event types to search for in cluster-level preferences.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - } - }, - "org_preferences": { - "description": "Org-specific search criteria.", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrgPreferenceSearchCriteriaInput" - } - } - } - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Communication channel preferences retrieved successfully.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CommunicationChannelPreferencesResponse" - }, - "examples": { - "example_1": { - "value": { - "cluster_preferences": [ - { - "event_type": "LIVEBOARD_SCHEDULE", - "channels": [ - "WEBHOOK" - ] - } - ], - "org_preferences": [ - { - "org": { - "id": "583464508", - "name": "test_org" - }, - "preferences": [ - { - "event_type": "LIVEBOARD_SCHEDULE", - "channels": [ - "EMAIL" - ] - } - ] - } - ] - } - } - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/rest/2.0/system/config-update": { "post": { "operationId": "updateSystemConfig", @@ -13867,12 +13191,7 @@ "CAN_ACCESS_ANALYST_STUDIO", "CAN_MANAGE_ANALYST_STUDIO", "PREVIEW_DOCUMENT_SEARCH", - "CAN_MODIFY_FOLDERS", - "CAN_VIEW_FOLDERS", - "CAN_SETUP_VERSION_CONTROL", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_SETUP_VERSION_CONTROL" ] } }, @@ -14177,381 +13496,7 @@ "description": "Preferences for the user", "type": "object" } - } - } - } - }, - "required": true - }, - "parameters": [ - { - "in": "path", - "name": "user_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "GUID / name of the user" - } - ], - "responses": { - "204": { - "description": "User successfully updated." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/template/variables/create": { - "post": { - "operationId": "createVariable", - "description": "\nCreate a variable which can be used for parameterizing metadata objects
Beta Version: 10.14.0.cl or later\n\nAllows creating a variable which can be used for parameterizing metadata objects in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports the following types of variables:\n* CONNECTION_PROPERTY - For connection properties\n* TABLE_MAPPING - For table mappings\n* CONNECTION_PROPERTY_PER_PRINCIPAL - For connection properties per principal. In order to use this please contact support to enable this.\n* FORMULA_VARIABLE - For Formula variables\n\nWhen creating a variable, you need to specify:\n* The variable type\n* A unique name for the variable\n* Whether the variable contains sensitive values (defaults to false)\n* The data type of the variable, only specify for fomula variables (defaults to null)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable name already exists\n* The variable type is invalid\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Variable", - "10.14.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "type": { - "description": "Type of variable", - "type": "string", - "enum": [ - "CONNECTION_PROPERTY", - "TABLE_MAPPING", - "CONNECTION_PROPERTY_PER_PRINCIPAL" - ] - }, - "name": { - "description": "Name of the variable. This is unique across the cluster.", - "type": "string" - }, - "is_sensitive": { - "description": "If the variable contains sensitive values like passwords", - "default": false, - "type": "boolean", - "nullable": true - }, - "data_type": { - "description": "Variable Data Type", - "type": "string", - "enum": [ - "VARCHAR", - "INT32", - "INT64", - "DOUBLE", - "DATE", - "DATE_TIME" - ] - } - }, - "required": [ - "type", - "name" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Create variable is successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Variable" - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/template/variables/{identifier}/delete": { - "post": { - "operationId": "deleteVariable", - "description": "\nDelete a variable
Beta Version: 10.14.0.cl or later\n\nAllows deleting a variable from ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint requires:\n* The variable identifier (ID or name)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable doesn't exist\n* The variable is being used by other objects \n\n\n\n#### Endpoint URL\n", - "tags": [ - "Variable", - "10.14.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique id or name of the variable" - } - ], - "responses": { - "204": { - "description": "Deleting the variable is successful." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/template/variables/search": { - "post": { - "operationId": "searchVariables", - "description": "\nSearch variables
Beta Version: 10.14.0.cl or later\n\nAllows searching for variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports searching variables by:\n* Variable identifier (ID or name)\n* Variable type\n* Name pattern (case-insensitive, supports % for wildcard)\n\nThe search results can be formatted in three ways:\n* METADATA - Returns only variable metadata (default)\n* METADATA_AND_VALUES - Returns variable metadata and values\n\nThe values can be filtered by scope:\n* org_identifier\n* principal_identifier\n* model_identifier\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Variable", - "10.14.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "variable_details": { - "description": "Variable details", - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableDetailInput" - } - }, - "value_scope": { - "description": "Array of scope filters", - "type": "array", - "items": { - "$ref": "#/components/schemas/ValueScopeInput" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included", - "default": 10, - "type": "integer", - "format": "int32" - }, - "output_format": { - "description": "Format in which we want the output", - "default": "METADATA_ONLY", - "type": "string", - "enum": [ - "METADATA_ONLY", - "METADATA_AND_VALUES" - ] - } - } - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "List of variables is successful.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Variable" - } - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/template/variables/{identifier}/update": { - "post": { - "operationId": "updateVariable", - "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's properties in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Variable", - "10.14.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "New name of the variable.", - "type": "string" - } - }, - "required": [ - "name" - ] + } } } }, @@ -14560,17 +13505,17 @@ "parameters": [ { "in": "path", - "name": "identifier", + "name": "user_identifier", "required": true, "schema": { "type": "string" }, - "description": "Unique id or name of the variable to update." + "description": "GUID / name of the user" } ], "responses": { "204": { - "description": "Variable name updated successfully." + "description": "User successfully updated." }, "400": { "description": "Invalid request.", @@ -14615,13 +13560,13 @@ } } }, - "/api/rest/2.0/template/variables/update-values": { + "/api/rest/2.0/template/variables/create": { "post": { - "operationId": "updateVariableValues", - "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, CLEAR)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* CLEAR - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createVariable", + "description": "\nCreate a variable which can be used for parameterizing metadata objects
Beta Version: 10.9.0.cl or later\n\nAllows creating a variable which can be used for parameterizing metadata objects in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint supports the following types of variables:\n* CONNECTION_PROPERTY - For connection properties\n* TABLE_MAPPING - For table mappings\n* CONNECTION_PROPERTY_PER_PRINCIPAL - For connection properties per principal. In order to use this please contact support to enable this.\n\nWhen creating a variable, you need to specify:\n* The variable type\n* A unique name for the variable\n* Whether the variable contains sensitive values (defaults to false)\n* The variable values (optional)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable name already exists\n* The variable type is invalid\n* The variable values are invalid for the specified type \n\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", - "10.14.0.cl" + "10.9.0.cl" ], "requestBody": { "content": { @@ -14629,24 +13574,36 @@ "schema": { "type": "object", "properties": { - "variable_assignment": { - "description": "Variables and values to update", - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableUpdateAssignmentInput" - } + "type": { + "description": "Type of variable", + "type": "string", + "enum": [ + "CONNECTION_PROPERTY", + "TABLE_MAPPING", + "CONNECTION_PROPERTY_PER_PRINCIPAL" + ] + }, + "name": { + "description": "Name of the variable. This is unique across the cluster.", + "type": "string" + }, + "sensitive": { + "description": "If the variable contains sensitive values like passwords", + "default": false, + "type": "boolean", + "nullable": true }, - "variable_value_scope": { - "description": "Variables and values to update", + "values": { + "description": "Values of variable", "type": "array", "items": { - "$ref": "#/components/schemas/VariableUpdateScopeInput" + "$ref": "#/components/schemas/InputVariableValue" } } }, "required": [ - "variable_assignment", - "variable_value_scope" + "type", + "name" ] } } @@ -14655,8 +13612,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Variable values updated successfully." + "200": { + "description": "Create variable is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Variable" + } + } + } }, "400": { "description": "Invalid request.", @@ -14701,62 +13665,28 @@ } } }, - "/api/rest/2.0/vcs/git/branches/commit": { + "/api/rest/2.0/template/variables/{identifier}/delete": { "post": { - "operationId": "commitBranch", - "description": "\n Version: 9.2.0.cl or later\n\nCommits TML files of metadata objects to the Git branch configured on your instance.\n\nRequires at least edit access to objects used in the commit operation.\n\nBefore using this endpoint to push your commits:\n\n* Enable Git integration on your instance.\n* Make sure the Git repository and branch details are configured on your instance.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteVariable", + "description": "\nDelete a variable
Beta Version: 10.9.0.cl or later\n\nAllows deleting a variable from ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint requires:\n* The variable identifier (ID or name)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable doesn't exist\n* The variable is being used by other objects \n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "10.9.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique id or name of the variable" + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/MetadataObject" - } - }, - "delete_aware": { - "description": "Delete the tml files from version control repo if it does not exist in the ThoughSpot instance", - "default": true, - "type": "boolean", - "nullable": true - }, - "branch_name": { - "description": " Name of the remote branch where object should be pushed\n \n\nNote: If no branch_name is specified, then the commit_branch_name will be considered.", - "type": "string" - }, - "comment": { - "description": "Comment to be added to the commit", - "type": "string" - } - }, - "required": [ - "metadata", - "comment" - ] - } - } - }, - "required": true - }, - "parameters": [], "responses": { - "200": { - "description": "Successfully committed the metadata objects", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CommitResponse" - } - } - } + "204": { + "description": "Deleting the variable is successful." }, "400": { "description": "Invalid request.", @@ -14801,13 +13731,13 @@ } } }, - "/api/rest/2.0/vcs/git/config/create": { + "/api/rest/2.0/template/variables/search": { "post": { - "operationId": "createConfig", - "description": "\n Version: 9.2.0.cl or later\n\nAllows you to connect a ThoughtSpot instance to a Git repository.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\nYou can use this API endpoint to connect your ThoughtSpot development and production environments to the development and production branches of a Git repository.\n\nBefore using this endpoint to connect your ThoughtSpot instance to a Git repository, check the following prerequisites:\n\n* You have a Git repository. If you are using GitHub, make sure you have a valid account and an access token to connect ThoughtSpot to GitHub. For information about generating a token, see [GitHub Documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).\n\n* Your access token has `repo` scope that grants full access to public and private repositories.\n* Your Git repository has a branch that can be configured as a default branch in ThoughtSpot.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/?pageid=git-integration).\n\n**Note**: ThoughtSpot supports only GitHub / itHub Enterprise for CI/CD.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchVariables", + "description": "\nSearch variables
Beta Version: 10.9.0.cl or later\n\nAllows searching for variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\n\nThe API endpoint supports searching variables by:\n* Variable identifier (ID or name)\n* Variable type\n* Name pattern (case-insensitive, supports % for wildcard)\n\nThe search results can be formatted in three ways:\n* METADATA_ONLY - Returns only variable metadata (default)\n* METADATA_AND_VALUES - Returns variable metadata and values\n* EDITABLE_METADATA_AND_VALUES - Returns only editable variable metadata and values\n\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "10.9.0.cl" ], "requestBody": { "content": { @@ -14815,49 +13745,36 @@ "schema": { "type": "object", "properties": { - "repository_url": { - "description": "URL for connecting to remote repository", - "type": "string" - }, - "username": { - "description": "Username to authenticate connection to remote repository", - "type": "string" - }, - "access_token": { - "description": "Access token corresponding to the user to authenticate connection to remote repository", - "type": "string" - }, - "org_identifier": { - "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", - "type": "string" - }, - "branch_names": { - "description": "List the remote branches to configure. Example:[development, production]", + "variable_details": { + "description": "Variable details", "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/VariableDetailInput" } }, - "commit_branch_name": { - "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.
Version: 9.7.0.cl or later", - "type": "string" + "record_offset": { + "description": "The starting record number from where the records should be included", + "default": 0, + "type": "integer", + "format": "int32" }, - "enable_guid_mapping": { - "description": "Maintain mapping of guid for the deployment to an instance
Version: 9.4.0.cl or later", - "default": true, - "type": "boolean", - "nullable": true + "record_size": { + "description": "The number of records that should be included", + "default": 10, + "type": "integer", + "format": "int32" }, - "configuration_branch_name": { - "description": " Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.\n \n\nNote: If no branch name is specified, then by default, ts_config_files branch is considered. Ensure this branch exists before configuration.
Version: 9.7.0.cl or later", - "type": "string" + "output_format": { + "description": "Format in which we want the output", + "default": "METADATA_ONLY", + "type": "string", + "enum": [ + "METADATA_ONLY", + "METADATA_AND_VALUES", + "EDITABLE_METADATA_AND_VALUES" + ] } - }, - "required": [ - "repository_url", - "username", - "access_token" - ] + } } } }, @@ -14866,11 +13783,14 @@ "parameters": [], "responses": { "200": { - "description": "Successfully configured local repository", + "description": "List of variables is successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RepoConfigObject" + "type": "array", + "items": { + "$ref": "#/components/schemas/Variable" + } } } } @@ -14918,13 +13838,13 @@ } } }, - "/api/rest/2.0/vcs/git/config/delete": { + "/api/rest/2.0/template/variables/{identifier}/update": { "post": { - "operationId": "deleteConfig", - "description": "\n Version: 9.2.0.cl or later\n\nDeletes Git repository configuration from your ThoughtSpot instance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateVariable", + "description": "\nUpdate a variable's properties
Beta Version: 10.9.0.cl or later\n\nAllows updating a variable's properties in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows updating:\n* The variable name\n* The variable values\n\nWhen updating variable values, you need to specify:\n* The operation to perform (ADD, REPLACE, REMOVE)\n* The new values to add/replace/remove\n\nWhen the operation is ADD, a value any pre-existing value with the same set of constraints will be replaced.\nWhen the operation is REPLACE, all values of the variable are replaced with the values specified.\nWhen the operation is REMOVE, all values with the given set of conditions are removed.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "10.9.0.cl" ], "requestBody": { "content": { @@ -14932,10 +13852,26 @@ "schema": { "type": "object", "properties": { - "cluster_level": { - "description": " Applicable when Orgs is enabled in the cluster\n \n\nIndicator to consider cluster level or org level config. Set it to false to delete configuration from current org. If set to true, then the configuration at cluster level and orgs that inherited the configuration from cluster level will be deleted.
Version: 9.5.0.cl or later", - "type": "boolean", - "nullable": true + "name": { + "description": "New name of the variable if we want to rename.", + "type": "string" + }, + "operation": { + "description": "Operation to perform on the values.", + "default": "REPLACE", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "REPLACE" + ] + }, + "values": { + "description": "Values of variable to be updated.", + "type": "array", + "items": { + "$ref": "#/components/schemas/InputVariableValue" + } } } } @@ -14943,10 +13879,20 @@ }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique id or name of the variable to update." + } + ], "responses": { "204": { - "description": "Successfully deleted local repository configuration" + "description": "Updating the variable is successful." }, "400": { "description": "Invalid request.", @@ -14991,50 +13937,40 @@ } } }, - "/api/rest/2.0/vcs/git/commits/deploy": { + "/api/rest/2.0/template/variables/update": { "post": { - "operationId": "deployCommit", - "description": "\n Version: 9.2.0.cl or later\n\nAllows you to deploy a commit and publish TML content to your ThoughtSpot instance.\n\nRequires at least edit access to the objects used in the deploy operation.\n\nThe API deploys the head of the branch unless a `commit_id` is specified in the API request. If the branch name is not defined in the request, the default branch is considered for deploying commits.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateVariableValues", + "description": "\nUpdate values for multiple variables
Beta Version: 10.9.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable. Any pre-existing values with the same conditions are replaced.\n* REPLACE - Replaces all values of a given org with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "commit_id": { - "description": " Commit_id against which the files should be picked to deploy.\n \n\nNote: If no commit_id is specified, then the head of the branch is considered.", - "type": "string" - }, - "branch_name": { - "description": "Name of the remote branch where changes should be picked", - "type": "string" - }, - "deploy_type": { - "description": "Indicates if all files or only modified file at specified commit point should be considered", - "default": "DELTA", - "type": "string", - "enum": [ - "FULL", - "DELTA" - ] + "Variable", + "10.9.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "variable_updates": { + "description": "Variables and values", + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableValueInput" + } }, - "deploy_policy": { - "description": "Define the policy to follow while importing TML in the ThoughtSpot environment. Use “ALL_OR_NONE” to cancel the deployment of all ThoughtSpot objects if at least one of them fails to import. Use “Partial” to import ThoughtSpot objects that validate successfully even if other objects in the same deploy operations fail to import.", - "default": "ALL_OR_NONE", + "operation": { + "description": "Type of update operation", "type": "string", "enum": [ - "ALL_OR_NONE", - "PARTIAL", - "VALIDATE_ONLY" + "ADD", + "REMOVE", + "REPLACE" ] } }, "required": [ - "branch_name" + "variable_updates", + "operation" ] } } @@ -15043,18 +13979,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Successfully deployed the changes", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeployResponse" - } - } - } - } + "204": { + "description": "Updating variable values is successful." }, "400": { "description": "Invalid request.", @@ -15099,10 +14025,10 @@ } } }, - "/api/rest/2.0/vcs/git/commits/{commit_id}/revert": { + "/api/rest/2.0/vcs/git/branches/commit": { "post": { - "operationId": "revertCommit", - "description": "\n Version: 9.2.0.cl or later\n\nReverts TML objects to a previous commit specified in the API request.\n\nRequires at least edit access to objects.\n\nIn the API request, specify the `commit_id`. If the branch name is not specified in the request, the API will consider the default branch configured on your instance.\n\nBy default, the API reverts all objects. If the revert operation fails for one of the objects provided in the commit, the API returns an error and does not revert any object.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "commitBranch", + "description": "\n Version: 9.2.0.cl or later\n\nCommits TML files of metadata objects to the Git branch configured on your instance.\n\nRequires at least edit access to objects used in the commit operation.\n\nBefore using this endpoint to push your commits:\n\n* Enable Git integration on your instance.\n* Make sure the Git repository and branch details are configured on your instance.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Version Control", "9.2.0.cl" @@ -15120,43 +14046,38 @@ "$ref": "#/components/schemas/MetadataObject" } }, + "delete_aware": { + "description": "Delete the tml files from version control repo if it does not exist in the ThoughSpot instance", + "default": true, + "type": "boolean", + "nullable": true + }, "branch_name": { - "description": " Name of the branch where the reverted version should be committed\n \n\nNote: If no branch_name is specified, then the commit_branch_name will be considered.", + "description": " Name of the remote branch where object should be pushed\n \n\nNote: If no branch_name is specified, then the commit_branch_name will be considered.", "type": "string" }, - "revert_policy": { - "description": "Policy to apply when reverting a commit. Valid values: [ALL_OR_NONE, PARTIAL]", - "default": "ALL_OR_NONE", - "type": "string", - "enum": [ - "ALL_OR_NONE", - "PARTIAL" - ] + "comment": { + "description": "Comment to be added to the commit", + "type": "string" } - } + }, + "required": [ + "metadata", + "comment" + ] } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "commit_id", - "required": true, - "schema": { - "type": "string" - }, - "description": "Commit id to which the object should be reverted" - } - ], + "parameters": [], "responses": { "200": { - "description": "Reverted the object to the commit point specified", + "description": "Successfully committed the metadata objects", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RevertResponse" + "$ref": "#/components/schemas/CommitResponse" } } } @@ -15204,10 +14125,10 @@ } } }, - "/api/rest/2.0/vcs/git/commits/search": { + "/api/rest/2.0/vcs/git/config/create": { "post": { - "operationId": "searchCommits", - "description": "\n Version: 9.2.0.cl or later\n\nGets a list of commits for a given metadata object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege and edit access to the metadata objects.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createConfig", + "description": "\n Version: 9.2.0.cl or later\n\nAllows you to connect a ThoughtSpot instance to a Git repository.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\nYou can use this API endpoint to connect your ThoughtSpot development and production environments to the development and production branches of a Git repository.\n\nBefore using this endpoint to connect your ThoughtSpot instance to a Git repository, check the following prerequisites:\n\n* You have a Git repository. If you are using GitHub, make sure you have a valid account and an access token to connect ThoughtSpot to GitHub. For information about generating a token, see [GitHub Documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).\n\n* Your access token has `repo` scope that grants full access to public and private repositories.\n* Your Git repository has a branch that can be configured as a default branch in ThoughtSpot.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/?pageid=git-integration).\n\n**Note**: ThoughtSpot supports only GitHub / itHub Enterprise for CI/CD.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Version Control", "9.2.0.cl" @@ -15218,37 +14139,48 @@ "schema": { "type": "object", "properties": { - "metadata_identifier": { - "description": "Unique ID or name of the metadata.", + "repository_url": { + "description": "URL for connecting to remote repository", "type": "string" }, - "metadata_type": { - "description": "Type of metadata.", - "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "CUSTOM_ACTION" - ] + "username": { + "description": "Username to authenticate connection to remote repository", + "type": "string" }, - "branch_name": { - "description": " Name of the branch from which commit history needs to be displayed.\n \n\nNote: If no branch_name is specified, then commits will be returned for the default branch for this configuration.", + "access_token": { + "description": "Access token corresponding to the user to authenticate connection to remote repository", "type": "string" }, - "record_offset": { - "description": " Record offset point in the commit history to display the response.\n \n\nNote: If no record offset is specified, the beginning of the record will be considered.", - "type": "integer", - "format": "int32" + "org_identifier": { + "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", + "type": "string" }, - "record_size": { - "description": " Number of history records from record offset point to be displayed in the response.\n \n\nNote: If no record size is specified, then all the records will be considered.", - "type": "integer", - "format": "int32" + "branch_names": { + "description": "List the remote branches to configure. Example:[development, production]", + "type": "array", + "items": { + "type": "string" + } + }, + "commit_branch_name": { + "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.
Version: 9.7.0.cl or later", + "type": "string" + }, + "enable_guid_mapping": { + "description": "Maintain mapping of guid for the deployment to an instance
Version: 9.4.0.cl or later", + "default": true, + "type": "boolean", + "nullable": true + }, + "configuration_branch_name": { + "description": " Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.\n \n\nNote: If no branch name is specified, then by default, ts_config_files branch is considered. Ensure this branch exists before configuration.
Version: 9.7.0.cl or later", + "type": "string" } }, "required": [ - "metadata_identifier" + "repository_url", + "username", + "access_token" ] } } @@ -15258,14 +14190,11 @@ "parameters": [], "responses": { "200": { - "description": "Commit history of the metadata object", + "description": "Successfully configured local repository", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CommitHistoryResponse" - } + "$ref": "#/components/schemas/RepoConfigObject" } } } @@ -15313,10 +14242,10 @@ } } }, - "/api/rest/2.0/vcs/git/config/search": { + "/api/rest/2.0/vcs/git/config/delete": { "post": { - "operationId": "searchConfig", - "description": "\n Version: 9.2.0.cl or later\n\nGets Git repository connections configured on the ThoughtSpot instance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteConfig", + "description": "\n Version: 9.2.0.cl or later\n\nDeletes Git repository configuration from your ThoughtSpot instance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Version Control", "9.2.0.cl" @@ -15327,12 +14256,10 @@ "schema": { "type": "object", "properties": { - "org_identifiers": { - "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", - "type": "array", - "items": { - "type": "string" - } + "cluster_level": { + "description": " Applicable when Orgs is enabled in the cluster\n \n\nIndicator to consider cluster level or org level config. Set it to false to delete configuration from current org. If set to true, then the configuration at cluster level and orgs that inherited the configuration from cluster level will be deleted.
Version: 9.5.0.cl or later", + "type": "boolean", + "nullable": true } } } @@ -15342,18 +14269,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Details of local repository configuration", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RepoConfigObject" - } - } - } - } + "204": { + "description": "Successfully deleted local repository configuration" }, "400": { "description": "Invalid request.", @@ -15398,10 +14315,10 @@ } } }, - "/api/rest/2.0/vcs/git/config/update": { + "/api/rest/2.0/vcs/git/commits/deploy": { "post": { - "operationId": "updateConfig", - "description": "\n Version: 9.2.0.cl or later\n\nUpdates Git repository configuration settings.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deployCommit", + "description": "\n Version: 9.2.0.cl or later\n\nAllows you to deploy a commit and publish TML content to your ThoughtSpot instance.\n\nRequires at least edit access to the objects used in the deploy operation.\n\nThe API deploys the head of the branch unless a `commit_id` is specified in the API request. If the branch name is not defined in the request, the default branch is considered for deploying commits.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Version Control", "9.2.0.cl" @@ -15412,39 +14329,37 @@ "schema": { "type": "object", "properties": { - "username": { - "description": "Username to authenticate connection to version control system", - "type": "string" - }, - "access_token": { - "description": "Access token corresponding to the user to authenticate connection to version control system", - "type": "string" - }, - "org_identifier": { - "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", + "commit_id": { + "description": " Commit_id against which the files should be picked to deploy.\n \n\nNote: If no commit_id is specified, then the head of the branch is considered.", "type": "string" }, - "branch_names": { - "description": "List the remote branches to configure. Example:[development, production]", - "type": "array", - "items": { - "type": "string" - } - }, - "commit_branch_name": { - "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.
Version: 9.7.0.cl or later", + "branch_name": { + "description": "Name of the remote branch where changes should be picked", "type": "string" }, - "enable_guid_mapping": { - "description": "Maintain mapping of guid for the deployment to an instance
Version: 9.4.0.cl or later", - "type": "boolean", - "nullable": true + "deploy_type": { + "description": "Indicates if all files or only modified file at specified commit point should be considered", + "default": "DELTA", + "type": "string", + "enum": [ + "FULL", + "DELTA" + ] }, - "configuration_branch_name": { - "description": "Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.
Version: 9.7.0.cl or later", - "type": "string" + "deploy_policy": { + "description": "Define the policy to follow while importing TML in the ThoughtSpot environment. Use “ALL_OR_NONE” to cancel the deployment of all ThoughtSpot objects if at least one of them fails to import. Use “Partial” to import ThoughtSpot objects that validate successfully even if other objects in the same deploy operations fail to import.", + "default": "ALL_OR_NONE", + "type": "string", + "enum": [ + "ALL_OR_NONE", + "PARTIAL", + "VALIDATE_ONLY" + ] } - } + }, + "required": [ + "branch_name" + ] } } }, @@ -15453,11 +14368,14 @@ "parameters": [], "responses": { "200": { - "description": "Successfully updated local repository configuration", + "description": "Successfully deployed the changes", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RepoConfigObject" + "type": "array", + "items": { + "$ref": "#/components/schemas/DeployResponse" + } } } } @@ -15505,10 +14423,10 @@ } } }, - "/api/rest/2.0/vcs/git/branches/validate": { + "/api/rest/2.0/vcs/git/commits/{commit_id}/revert": { "post": { - "operationId": "validateMerge", - "description": "\n Version: 9.2.0.cl or later\n\nValidates the content of your source branch against the objects in your destination environment.\n\nBefore merging content from your source branch to the destination branch, run this API operation from your destination environment and ensure that the changes from the source branch function in the destination environment.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege and edit access to the metadata objects.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "revertCommit", + "description": "\n Version: 9.2.0.cl or later\n\nReverts TML objects to a previous commit specified in the API request.\n\nRequires at least edit access to objects.\n\nIn the API request, specify the `commit_id`. If the branch name is not specified in the request, the API will consider the default branch configured on your instance.\n\nBy default, the API reverts all objects. If the revert operation fails for one of the objects provided in the commit, the API returns an error and does not revert any object.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Version Control", "9.2.0.cl" @@ -15519,35 +14437,50 @@ "schema": { "type": "object", "properties": { - "source_branch_name": { - "description": "Name of the branch from which changes need to be picked for validation", - "type": "string" + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataObject" + } }, - "target_branch_name": { - "description": "Name of the branch where files will be merged", + "branch_name": { + "description": " Name of the branch where the reverted version should be committed\n \n\nNote: If no branch_name is specified, then the commit_branch_name will be considered.", "type": "string" + }, + "revert_policy": { + "description": "Policy to apply when reverting a commit. Valid values: [ALL_OR_NONE, PARTIAL]", + "default": "ALL_OR_NONE", + "type": "string", + "enum": [ + "ALL_OR_NONE", + "PARTIAL" + ] } - }, - "required": [ - "source_branch_name", - "target_branch_name" - ] + } } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "commit_id", + "required": true, + "schema": { + "type": "string" + }, + "description": "Commit id to which the object should be reverted" + } + ], "responses": { "200": { - "description": "validation done successfully", + "description": "Reverted the object to the commit point specified", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeployResponse" - } + "$ref": "#/components/schemas/RevertResponse" } } } @@ -15595,13 +14528,13 @@ } } }, - "/api/rest/2.0/webhooks/create": { + "/api/rest/2.0/vcs/git/commits/search": { "post": { - "operationId": "createWebhookConfiguration", - "description": "\nBeta Version: 10.14.0.cl or later\n\nCreates a new webhook configuration to receive notifications for specified events. The webhook will be triggered when the configured events occur in the system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchCommits", + "description": "\n Version: 9.2.0.cl or later\n\nGets a list of commits for a given metadata object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege and edit access to the metadata objects.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Webhooks", - "10.14.0.cl" + "Version Control", + "9.2.0.cl" ], "requestBody": { "content": { @@ -15609,53 +14542,37 @@ "schema": { "type": "object", "properties": { - "name": { - "description": "Name of the webhook configuration.", + "metadata_identifier": { + "description": "Unique ID or name of the metadata.", "type": "string" }, - "description": { - "description": "Description of the webhook configuration.", - "type": "string" + "metadata_type": { + "description": "Type of metadata.", + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "CUSTOM_ACTION" + ] }, - "url": { - "description": "The webhook endpoint URL.", + "branch_name": { + "description": " Name of the branch from which commit history needs to be displayed.\n \n\nNote: If no branch_name is specified, then commits will be returned for the default branch for this configuration.", "type": "string" }, - "url_params": { - "description": "Additional URL parameters as key-value pairs.", - "type": "object" - }, - "events": { - "description": "List of events to subscribe to.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - } - }, - "authentication": { - "description": "Authorization configuration for the webhook.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookAuthenticationInput" - } - ] + "record_offset": { + "description": " Record offset point in the commit history to display the response.\n \n\nNote: If no record offset is specified, the beginning of the record will be considered.", + "type": "integer", + "format": "int32" }, - "signature_verification": { - "description": "Configuration for webhook signature verification.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookSignatureVerificationInput" - } - ] + "record_size": { + "description": " Number of history records from record offset point to be displayed in the response.\n \n\nNote: If no record size is specified, then all the records will be considered.", + "type": "integer", + "format": "int32" } }, "required": [ - "name", - "url", - "events" + "metadata_identifier" ] } } @@ -15665,80 +14582,13 @@ "parameters": [], "responses": { "200": { - "description": "Webhook configuration created successfully", + "description": "Commit history of the metadata object", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebhookResponse" - }, - "examples": { - "example_1": { - "description": "Basic webhook with Bearer token authentication", - "value": { - "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", - "name": "My Liveboard Webhook", - "description": "Webhook to notify external system about liveboard schedules", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://myapp.example.com/webhooks/thoughtspot", - "url_params": { - "api_key": "abc123", - "version": "v1" - }, - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "BEARER_TOKEN": "***" - }, - "signature_verification": { - "type": "HMAC_SHA256", - "header": "X-Webhook-Signature", - "algorithm": "SHA256", - "secret": "***" - }, - "created_at": "2025-08-21T21:57:10.243089030Z", - "last_modified_at": "2025-08-21T21:57:10.243089030Z", - "created_by": { - "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", - "name": "sarah_chen" - }, - "last_modified_by": { - "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", - "name": "sarah_chen" - } - } - }, - "example_2": { - "description": "Webhook with OAuth2 authentication", - "value": { - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "name": "OAuth2 Webhook", - "description": "Webhook with OAuth2 client credentials", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://api.example.com/webhooks", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "OAUTH2": { - "authorization_url": "https://auth.example.com/oauth2/authorize", - "client_id": "client_123", - "client_secret": "***" - } - }, - "created_at": "2025-08-21T22:15:30.123456789Z", - "last_modified_at": "2025-08-21T22:15:30.123456789Z", - "created_by": { - "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", - "name": "mike_rodriguez" - } - } + "type": "array", + "items": { + "$ref": "#/components/schemas/CommitHistoryResponse" } } } @@ -15787,13 +14637,13 @@ } } }, - "/api/rest/2.0/webhooks/delete": { + "/api/rest/2.0/vcs/git/config/search": { "post": { - "operationId": "deleteWebhookConfigurations", - "description": "\nBeta Version: 10.14.0.cl or later\n\nDeletes one or more webhook configurations by their unique id or name. Returns status of each deletion operation, including successfully deleted webhooks and any failures with error details.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchConfig", + "description": "\n Version: 9.2.0.cl or later\n\nGets Git repository connections configured on the ThoughtSpot instance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Webhooks", - "10.14.0.cl" + "Version Control", + "9.2.0.cl" ], "requestBody": { "content": { @@ -15801,17 +14651,14 @@ "schema": { "type": "object", "properties": { - "webhook_identifiers": { - "description": "List of webhook identifiers to delete.", + "org_identifiers": { + "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", "type": "array", "items": { "type": "string" } } - }, - "required": [ - "webhook_identifiers" - ] + } } } }, @@ -15820,107 +14667,13 @@ "parameters": [], "responses": { "200": { - "description": "Webhook configurations deleted successfully", + "description": "Details of local repository configuration", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebhookDeleteResponse" - }, - "examples": { - "example_1": { - "description": "Successful deletion of multiple webhooks", - "value": { - "deleted_count": 2, - "failed_count": 0, - "deleted_webhooks": [ - { - "id": "b9e3d8f2-4c7a-4e1b-8d3c-5f9a2b7e4c6d", - "name": "Old Webhook 1", - "description": "First webhook to be deleted", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://old-service.example.com/webhook1", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "BEARER_TOKEN": "***" - }, - "created_at": "2025-08-21T15:30:00.000000000Z", - "last_modified_at": "2025-08-21T15:30:00.000000000Z", - "created_by": { - "id": "1f4e7b2d-9c3a-4e6f-8b1d-3e7c5a9b2f4e", - "name": "jennifer_patel" - } - }, - { - "id": "e7c4a1f8-2b5d-4a9e-7c3f-8b1e5d4a7c9b", - "name": "Old Webhook 2", - "description": "Second webhook to be deleted", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://old-service.example.com/webhook2", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "API_KEY": { - "key": "X-API-Key", - "value": "***" - } - }, - "created_at": "2025-08-21T16:45:30.123456789Z", - "last_modified_at": "2025-08-21T16:45:30.123456789Z", - "created_by": { - "id": "9a5c2e8f-4b7d-4c1e-9f2a-6c8e3b5d7a4c", - "name": "david_thompson" - } - } - ], - "failed_webhooks": [] - } - }, - "example_2": { - "description": "Partial failure during deletion", - "value": { - "deleted_count": 1, - "failed_count": 1, - "deleted_webhooks": [ - { - "id": "c8f2a5e9-3d6b-4f1e-a8c2-7e4b1d9f5a3c", - "name": "Successfully Deleted Webhook", - "description": "This webhook was deleted successfully", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://service.example.com/webhook", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "NO_AUTH": "" - }, - "created_at": "2025-08-21T18:20:15.456789012Z", - "last_modified_at": "2025-08-21T18:20:15.456789012Z", - "created_by": { - "id": "6e9c4f2a-8b5d-4e1f-9c3a-5f8b2e7d4a6c", - "name": "emma_wang" - } - } - ], - "failed_webhooks": [ - { - "id": "a3f7c1e4-9b2d-4a6e-8f3c-1e5b7a9c4f2e", - "name": "Non-existent Webhook", - "error_message": "Webhook not found or access denied" - } - ] - } + "type": "array", + "items": { + "$ref": "#/components/schemas/RepoConfigObject" } } } @@ -15969,13 +14722,13 @@ } } }, - "/api/rest/2.0/webhooks/search": { + "/api/rest/2.0/vcs/git/config/update": { "post": { - "operationId": "searchWebhookConfigurations", - "description": "\nBeta Version: 10.14.0.cl or later\n\nSearches for webhook configurations based on various criteria such as Org, webhook identifier, event type, with support for pagination and sorting. Returns matching webhook configurations with their complete details.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateConfig", + "description": "\n Version: 9.2.0.cl or later\n\nUpdates Git repository configuration settings.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Webhooks", - "10.14.0.cl" + "Version Control", + "9.2.0.cl" ], "requestBody": { "content": { @@ -15983,40 +14736,37 @@ "schema": { "type": "object", "properties": { - "org_identifier": { - "description": "Unique ID or name of the org.", + "username": { + "description": "Username to authenticate connection to version control system", "type": "string" }, - "webhook_identifier": { - "description": "Unique ID or name of the webhook.", + "access_token": { + "description": "Access token corresponding to the user to authenticate connection to version control system", "type": "string" }, - "event_type": { - "description": "Type of webhook event to filter by.", - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] + "org_identifier": { + "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", + "type": "string" }, - "record_offset": { - "description": "The offset point, starting from where the webhooks should be included in the response.", - "default": 0, - "type": "integer", - "format": "int32" + "branch_names": { + "description": "List the remote branches to configure. Example:[development, production]", + "type": "array", + "items": { + "type": "string" + } }, - "record_size": { - "description": "The number of webhooks that should be included in the response starting from offset position.", - "default": 50, - "type": "integer", - "format": "int32" + "commit_branch_name": { + "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.
Version: 9.7.0.cl or later", + "type": "string" }, - "sort_options": { - "description": "Sort option includes sort field and sort order.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookSortOptionsInput" - } - ] + "enable_guid_mapping": { + "description": "Maintain mapping of guid for the deployment to an instance
Version: 9.4.0.cl or later", + "type": "boolean", + "nullable": true + }, + "configuration_branch_name": { + "description": "Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.
Version: 9.7.0.cl or later", + "type": "string" } } } @@ -16027,98 +14777,11 @@ "parameters": [], "responses": { "200": { - "description": "Webhook configurations retrieved successfully", + "description": "Successfully updated local repository configuration", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebhookSearchResponse" - }, - "examples": { - "example_1": { - "description": "Search results with multiple webhooks", - "value": { - "webhooks": [ - { - "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", - "name": "Liveboard Schedule Webhook", - "description": "Webhook for liveboard schedule notifications", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://myapp.example.com/webhooks", - "url_params": { - "api_key": "abc123" - }, - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "BEARER_TOKEN": "***" - }, - "signature_verification": { - "type": "HMAC_SHA256", - "header": "X-Webhook-Signature", - "algorithm": "SHA256", - "secret": "***" - }, - "created_at": "2025-08-21T21:57:10.243089030Z", - "last_modified_at": "2025-08-21T22:10:15.123456789Z", - "created_by": { - "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", - "name": "sarah_chen" - }, - "last_modified_by": { - "id": "2c9a7e4f-6b3d-4a8e-9f1c-5e7a3b9c2d6f", - "name": "alex_kim" - } - }, - { - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "name": "API Key Webhook", - "description": "Webhook with API key authentication", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://api.example.com/notifications", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "API_KEY": { - "key": "X-API-Key", - "value": "***" - } - }, - "created_at": "2025-08-21T20:30:45.987654321Z", - "last_modified_at": "2025-08-21T20:30:45.987654321Z", - "created_by": { - "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", - "name": "mike_rodriguez" - } - } - ], - "pagination": { - "record_offset": 0, - "record_size": 50, - "total_count": 2, - "has_more": false - } - } - }, - "example_2": { - "description": "Empty search results", - "value": { - "webhooks": [], - "pagination": { - "record_offset": 0, - "record_size": 50, - "total_count": 0, - "has_more": false - } - } - } + "$ref": "#/components/schemas/RepoConfigObject" } } } @@ -16166,82 +14829,52 @@ } } }, - "/api/rest/2.0/webhooks/{webhook_identifier}/update": { + "/api/rest/2.0/vcs/git/branches/validate": { "post": { - "operationId": "updateWebhookConfiguration", - "description": "\nBeta Version: 10.14.0.cl or later\n\nUpdates an existing webhook configuration by its unique id or name. Only the provided fields will be updated.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "validateMerge", + "description": "\n Version: 9.2.0.cl or later\n\nValidates the content of your source branch against the objects in your destination environment.\n\nBefore merging content from your source branch to the destination branch, run this API operation from your destination environment and ensure that the changes from the source branch function in the destination environment.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege and edit access to the metadata objects.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Webhooks", - "10.14.0.cl" + "Version Control", + "9.2.0.cl" ], "requestBody": { "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the webhook configuration.", - "type": "string" - }, - "description": { - "description": "Description of the webhook configuration.", - "type": "string" - }, - "url": { - "description": "The webhook endpoint URL.", - "type": "string" - }, - "url_params": { - "description": "Additional URL parameters as key-value pairs.", - "type": "object" - }, - "events": { - "description": "List of events to subscribe to.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - } - }, - "authentication": { - "description": "Authorization configuration for the webhook.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookAuthenticationInput" - } - ] + "application/json": { + "schema": { + "type": "object", + "properties": { + "source_branch_name": { + "description": "Name of the branch from which changes need to be picked for validation", + "type": "string" }, - "signature_verification": { - "description": "Configuration for webhook signature verification.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookSignatureVerificationInput" - } - ] + "target_branch_name": { + "description": "Name of the branch where files will be merged", + "type": "string" } - } + }, + "required": [ + "source_branch_name", + "target_branch_name" + ] } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "webhook_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the webhook configuration." - } - ], + "parameters": [], "responses": { - "204": { - "description": "Webhook configuration updated successfully" + "200": { + "description": "validation done successfully", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeployResponse" + } + } + } + } }, "400": { "description": "Invalid request.", @@ -16622,11 +15255,6 @@ "type": "object", "description": "Access Control Properties which are specified for the user via JWToken", "nullable": true - }, - "variable_values": { - "type": "object", - "description": "Formula Variables which are specified for the user via JWToken", - "nullable": true } } }, @@ -16884,114 +15512,6 @@ } } }, - "OrgPreferenceSearchCriteriaInput": { - "type": "object", - "required": [ - "org_identifier" - ], - "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" - }, - "event_types": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - }, - "description": "Event types to search for. If not provided, all event types for this org are returned.", - "nullable": true - } - } - }, - "CommunicationChannelPreferencesResponse": { - "type": "object", - "properties": { - "cluster_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfig" - }, - "description": "Cluster-level default configurations.", - "nullable": true - }, - "org_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrgChannelConfigResponse" - }, - "description": "Org-specific configurations.", - "nullable": true - } - } - }, - "EventChannelConfig": { - "type": "object", - "required": [ - "event_type", - "channels" - ], - "properties": { - "event_type": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ], - "description": "Type of event for which communication channels are configured" - }, - "channels": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "EMAIL", - "WEBHOOK" - ] - }, - "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." - } - } - }, - "OrgChannelConfigResponse": { - "type": "object", - "required": [ - "org", - "preferences" - ], - "properties": { - "org": { - "$ref": "#/components/schemas/OrgDetails", - "description": "Org details" - }, - "preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfig" - }, - "description": "Event-specific communication channel configurations for this org" - } - } - }, - "OrgDetails": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique id of the org" - }, - "name": { - "type": "string", - "description": "Name of the org" - } - } - }, "OrgResponse": { "type": "object", "properties": { @@ -17253,9 +15773,7 @@ "type": "string", "enum": [ "LOCAL_GROUP", - "LDAP_GROUP", - "TEAM_GROUP", - "TENANT_GROUP" + "LDAP_GROUP" ], "description": "Type of the group.", "nullable": true @@ -18233,17 +16751,17 @@ "ColumnSecurityRuleResponse": { "type": "object", "properties": { - "table_guid": { + "guid": { "type": "string", "description": "GUID of the table for which the column security rules are fetched", "nullable": true }, - "obj_id": { + "objId": { "type": "string", "description": "Object ID of the table for which the column security rules are fetched", "nullable": true }, - "column_security_rules": { + "columnSecurityRules": { "type": "array", "items": { "$ref": "#/components/schemas/ColumnSecurityRule" @@ -18271,7 +16789,7 @@ "description": "Array of groups that have access to this column", "nullable": true }, - "source_table_details": { + "sourceTableDetails": { "$ref": "#/components/schemas/ColumnSecurityRuleSourceTable", "description": "Information about the source table", "nullable": true @@ -19026,13 +17544,8 @@ "ALLOW_NON_EMBED_FULL_APP_ACCESS", "CAN_ACCESS_ANALYST_STUDIO", "CAN_MANAGE_ANALYST_STUDIO", - "CAN_VIEW_FOLDERS", - "CAN_MODIDY_FOLDERS", "PREVIEW_DOCUMENT_SEARCH", - "CAN_SETUP_VERSION_CONTROL", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_SETUP_VERSION_CONTROL" ] }, "description": "Privileges granted to the role." @@ -19353,94 +17866,6 @@ }, "description": "MetadataType InputType used in Custom Action API's" }, - "MetadataContext": { - "type": "object", - "properties": { - "data_source_identifiers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of data_source_identifiers to provide context for breaking down user query into analytical queries that can be run on them.", - "nullable": true - }, - "answer_identifiers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of answer unique identifiers (GUIDs) whose data will be used to guide the response.", - "nullable": true - }, - "conversation_identifier": { - "type": "string", - "description": "Unique identifier to denote current conversation.", - "nullable": true - }, - "liveboard_identifiers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of liveboard unique identifiers (GUIDs) whose data will be used to guide the response.", - "nullable": true - } - } - }, - "AIContext": { - "type": "object", - "properties": { - "instructions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "User specific text instructions sent to AI system for processing the query.", - "nullable": true - }, - "content": { - "type": "array", - "items": { - "type": "string" - }, - "description": "User provided content like text data, csv data as a string message to provide context & potentially improve the quality of the response.", - "nullable": true - } - } - }, - "eureka_GetRelevantQuestionsResponse": { - "type": "object", - "properties": { - "relevant_questions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/eureka_RelevantQuestion" - }, - "description": "List of relevant questions that can be run on their respective data sources.", - "nullable": true - } - } - }, - "eureka_RelevantQuestion": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "NL query that can be run using spotter aka natural language search to get an AI generated answer.", - "nullable": true - }, - "data_source_identifier": { - "type": "string", - "description": "Unique identifier of the data source on which this query can be run on.", - "nullable": true - }, - "data_source_name": { - "type": "string", - "description": "Display name of the data source on which this query can be run on.", - "nullable": true - } - } - }, "Input_eureka_NLSRequest": { "type": "object", "properties": { @@ -19513,60 +17938,6 @@ } } }, - "eureka_DataSourceSuggestionResponse": { - "type": "object", - "properties": { - "data_sources": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DataSource" - }, - "description": "List of data sources suggested.", - "nullable": true - } - } - }, - "DataSource": { - "type": "object", - "properties": { - "confidence": { - "type": "number", - "format": "float", - "description": "Confidence score for the data source suggestion.", - "nullable": true - }, - "details": { - "$ref": "#/components/schemas/EntityHeader", - "description": "Details of the data source.", - "nullable": true - }, - "reasoning": { - "type": "string", - "description": "LLM reasoning for the data source.", - "nullable": true - } - } - }, - "EntityHeader": { - "type": "object", - "properties": { - "description": { - "type": "string", - "description": "Description of the data source.", - "nullable": true - }, - "data_source_name": { - "type": "string", - "description": "Display name of the data source.", - "nullable": true - }, - "data_source_identifier": { - "type": "string", - "description": "Unique identifier of the data source.", - "nullable": true - } - } - }, "RiseGQLArgWrapper": { "type": "object", "required": [ @@ -19606,37 +17977,7 @@ "nullable": true } }, - "description": "Input for variable details in search" - }, - "ValueScopeInput": { - "type": "object", - "properties": { - "org_identifier": { - "type": "string", - "description": "The unique name of the org", - "nullable": true - }, - "principal_type": { - "type": "string", - "enum": [ - "USER", - "USER_GROUP" - ], - "description": "Principal type", - "nullable": true - }, - "principal_identifier": { - "type": "string", - "description": "Unique ID or name of the principal", - "nullable": true - }, - "model_identifier": { - "type": "string", - "description": "Model Identifier", - "nullable": true - } - }, - "description": "Input for variable scope in search" + "description": "Input for variable details in search" }, "Variable": { "type": "object", @@ -19690,14 +18031,6 @@ "description": "The value of the variable", "nullable": true }, - "value_list": { - "type": "array", - "items": { - "type": "string" - }, - "description": "The value of the variable if it is a list type", - "nullable": true - }, "org_identifier": { "type": "string", "description": "The unique name of the org" @@ -19901,310 +18234,6 @@ } } }, - "WebhookSortOptionsInput": { - "type": "object", - "properties": { - "field_name": { - "type": "string", - "enum": [ - "CREATED", - "MODIFIED", - "NAME" - ], - "default": "CREATED", - "description": "Name of the field to apply the sort on.", - "nullable": true - }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "default": "DESC", - "description": "Sort order: ASC (Ascending) or DESC (Descending).", - "nullable": true - } - } - }, - "WebhookSearchResponse": { - "type": "object", - "required": [ - "webhooks", - "pagination" - ], - "properties": { - "webhooks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookResponse" - }, - "description": "List of webhook configurations matching the search criteria." - }, - "pagination": { - "$ref": "#/components/schemas/WebhookPagination", - "description": "Pagination information." - } - } - }, - "WebhookResponse": { - "type": "object", - "required": [ - "id", - "name", - "url", - "events", - "creation_time_in_millis", - "modification_time_in_millis" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the webhook configuration." - }, - "name": { - "type": "string", - "description": "Name of the webhook configuration." - }, - "description": { - "type": "string", - "description": "Description of the webhook configuration.", - "nullable": true - }, - "org": { - "$ref": "#/components/schemas/WebhookOrg", - "description": "Org details.", - "nullable": true - }, - "url": { - "type": "string", - "description": "The webhook endpoint URL." - }, - "url_params": { - "type": "object", - "description": "Additional URL parameters as key-value pairs.", - "nullable": true - }, - "events": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - }, - "description": "List of events this webhook subscribes to." - }, - "authentication": { - "$ref": "#/components/schemas/WebhookAuthentication", - "description": "Redacted authorization configuration for the webhook.", - "nullable": true - }, - "signature_verification": { - "$ref": "#/components/schemas/WebhookSignatureVerification", - "description": "Redacted configuration for webhook signature verification.", - "nullable": true - }, - "creation_time_in_millis": { - "type": "number", - "format": "float", - "description": "Creation time of the webhook configuration in milliseconds." - }, - "modification_time_in_millis": { - "type": "number", - "format": "float", - "description": "Last modified time of the webhook configuration in milliseconds." - }, - "created_by": { - "$ref": "#/components/schemas/WebhookUser", - "description": "User who created the webhook.", - "nullable": true - }, - "last_modified_by": { - "$ref": "#/components/schemas/WebhookUser", - "description": "User who last modified the webhook.", - "nullable": true - } - } - }, - "WebhookOrg": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the org." - }, - "name": { - "type": "string", - "description": "Name of the org." - } - } - }, - "WebhookAuthentication": { - "type": "object", - "properties": { - "API_KEY": { - "$ref": "#/components/schemas/WebhookAuthApiKey", - "description": "Redacted API key authentication configuration.", - "nullable": true - }, - "BASIC_AUTH": { - "$ref": "#/components/schemas/WebhookAuthBasicAuth", - "description": "Redacted Basic authentication configuration.", - "nullable": true - }, - "BEARER_TOKEN": { - "type": "string", - "description": "Redacted Bearer token authentication configuration.", - "nullable": true - }, - "OAUTH2": { - "$ref": "#/components/schemas/WebhookAuthOAuth2", - "description": "Redacted OAuth2 authentication configuration.", - "nullable": true - } - } - }, - "WebhookAuthApiKey": { - "type": "object", - "required": [ - "key", - "value" - ], - "properties": { - "key": { - "type": "string", - "description": "The header or query parameter name for the API key." - }, - "value": { - "type": "string", - "description": "The API key value." - } - } - }, - "WebhookAuthBasicAuth": { - "type": "object", - "required": [ - "username", - "password" - ], - "properties": { - "username": { - "type": "string", - "description": "Username for basic authentication." - }, - "password": { - "type": "string", - "description": "Password for basic authentication." - } - } - }, - "WebhookAuthOAuth2": { - "type": "object", - "required": [ - "authorization_url", - "client_id", - "client_secret" - ], - "properties": { - "authorization_url": { - "type": "string", - "description": "OAuth2 authorization server URL." - }, - "client_id": { - "type": "string", - "description": "OAuth2 client identifier." - }, - "client_secret": { - "type": "string", - "description": "OAuth2 client secret key." - } - } - }, - "WebhookSignatureVerification": { - "type": "object", - "required": [ - "type", - "header", - "algorithm", - "secret" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "HMAC_SHA256" - ], - "description": "Signature verification method type." - }, - "header": { - "type": "string", - "description": "HTTP header where the signature is sent." - }, - "algorithm": { - "type": "string", - "enum": [ - "SHA256" - ], - "description": "Hash algorithm used for signature verification." - }, - "secret": { - "type": "string", - "description": "Shared secret used for HMAC signature generation." - } - } - }, - "WebhookUser": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the user." - }, - "name": { - "type": "string", - "description": "Name of the user." - } - } - }, - "WebhookPagination": { - "type": "object", - "required": [ - "record_offset", - "record_size", - "total_count", - "has_more" - ], - "properties": { - "record_offset": { - "type": "integer", - "format": "int32", - "description": "The starting record number from where the records are included." - }, - "record_size": { - "type": "integer", - "format": "int32", - "description": "The number of records included in the response." - }, - "total_count": { - "type": "integer", - "format": "int32", - "description": "Total number of webhook configurations available." - }, - "has_more": { - "type": "boolean", - "description": "Indicates whether more records are available beyond the current response." - } - } - }, "GenericInfo": { "type": "object", "properties": { @@ -20345,7 +18374,7 @@ "enum": [ "LOGICAL_TABLE" ], - "description": " Type of object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n \n\n Specify the object type as `LOGICAL_TABLE`.", + "description": " Type of object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n \n\n Specify the object type as `LOGICAL_TABLE`. The `LIVEBOARD` and `ANSWER` object types are not supported.", "nullable": true }, "identifier": { @@ -20687,7 +18716,7 @@ "enum": [ "LOGICAL_TABLE" ], - "description": " Type of object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n \n\n Specify the object type as `LOGICAL_TABLE`.", + "description": " Type of object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n \n\n Specify the object type as `LOGICAL_TABLE`. The `LIVEBOARD` and `ANSWER` object types are not supported.", "nullable": true }, "identifier": { @@ -20932,82 +18961,14 @@ "name" ], "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the user.", - "nullable": true - }, - "name": { - "type": "string", - "description": "Name of the user." - } - } - }, - "EventChannelConfigInput": { - "type": "object", - "required": [ - "event_type", - "channels" - ], - "properties": { - "event_type": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ], - "description": "Type of event for which communication channels are configured" - }, - "channels": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "EMAIL", - "WEBHOOK" - ] - }, - "description": "Communication channels enabled for this event type. Empty array disables all channels for this event." - } - } - }, - "OrgChannelConfigInput": { - "type": "object", - "required": [ - "org_identifier" - ], - "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" - }, - "operation": { - "type": "string", - "enum": [ - "REPLACE", - "RESET" - ], - "default": "REPLACE", - "description": "Operation to perform. REPLACE: Update preferences (default). RESET: Remove org-specific configurations, causing fallback to cluster-level preferences.", - "nullable": true - }, - "preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfigInput" - }, - "description": "Event-specific configurations. Required for REPLACE operation.", + "id": { + "type": "string", + "description": "Unique identifier of the user.", "nullable": true }, - "reset_events": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - }, - "description": "Event types to reset. Required for RESET operation. Org-specific configurations for these events will be removed, causing fallback to cluster-level preferences.", - "nullable": true + "name": { + "type": "string", + "description": "Name of the user." } } }, @@ -21093,12 +19054,8 @@ "ALLOW_NON_EMBED_FULL_APP_ACCESS", "CAN_ACCESS_ANALYST_STUDIO", "CAN_MANAGE_ANALYST_STUDIO", - "CAN_MODIFY_FOLDERS", - "CAN_VIEW_FOLDERS", "PREVIEW_DOCUMENT_SEARCH", - "CAN_SETUP_VERSION_CONTROL", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_SETUP_VERSION_CONTROL" ] }, "description": "Privileges that will be assigned to the group.", @@ -21116,9 +19073,7 @@ "type": "string", "enum": [ "LOCAL_GROUP", - "LDAP_GROUP", - "TEAM_GROUP", - "TENANT_GROUP" + "LDAP_GROUP" ], "description": "Type of the group.", "nullable": true @@ -21205,12 +19160,6 @@ "default": false, "description": "Boolean flag indicating whether to export column security rules of the object. This will only be respected when the object can have column security rules and export_associated is true.
Beta Version: 10.12.0.cl or later", "nullable": true - }, - "export_with_column_aliases": { - "type": "boolean", - "default": false, - "description": "Boolean flag indicating whether to export column aliases of the model. This will only be respected when the object can have column aliases.
Beta Version: 10.13.0.cl or later", - "nullable": true } }, "description": "Flags to specify additional options for export. This will only be active when UserDefinedId in TML is enabled." @@ -22084,13 +20033,8 @@ "CAN_ACCESS_ANALYST_STUDIO", "CAN_MANAGE_ANALYST_STUDIO", "PREVIEW_DOCUMENT_SEARCH", - "CAN_MODIFY_FOLDERS", - "CAN_VIEW_FOLDERS", "CAN_SETUP_VERSION_CONTROL", - "PREVIEW_THOUGHTSPOT_SAGE", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "PREVIEW_THOUGHTSPOT_SAGE" ] }, "description": "Privileges granted to the role." @@ -23111,139 +21055,48 @@ } } }, - "ContextPayloadV2Input": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "answer", - "liveboard", - "data_source" - ], - "description": "Type of the context.", - "nullable": true - }, - "answer_context": { - "$ref": "#/components/schemas/AnswerContextInput", - "description": "Answer context.", - "nullable": true - }, - "liveboard_context": { - "$ref": "#/components/schemas/LBContextInput", - "description": "Liveboard context.", - "nullable": true - }, - "data_source_context": { - "$ref": "#/components/schemas/DataSourceContextInput", - "description": "Data source context.", - "nullable": true - } - } - }, - "AnswerContextInput": { + "InputVariableValue": { "type": "object", "required": [ - "session_identifier", - "generation_number" + "value", + "org_identifier" ], "properties": { - "session_identifier": { + "value": { "type": "string", - "description": "Unique identifier of the answer session." + "description": "The connection property value" }, - "generation_number": { - "type": "integer", - "format": "int32", - "description": "Generation number of the answer." - } - } - }, - "LBContextInput": { - "type": "object", - "required": [ - "liveboard_identifier", - "visualization_identifier" - ], - "properties": { - "liveboard_identifier": { + "org_identifier": { "type": "string", - "description": "Unique identifier of the liveboard." + "description": "The unique name of the org" }, - "visualization_identifier": { - "type": "string", - "description": "Unique identifier of the visualization." - } - } - }, - "DataSourceContextInput": { - "type": "object", - "required": [ - "guid" - ], - "properties": { - "guid": { + "principal_type": { "type": "string", - "description": "Unique identifier of the data source." - } - } - }, - "ConversationSettingsInput": { - "type": "object", - "properties": { - "enable_contextual_change_analysis": { - "type": "boolean", - "default": false, - "description": "Enable contextual change analysis.", - "nullable": true - }, - "enable_natural_language_answer_generation": { - "type": "boolean", - "default": true, - "description": "Enable natural language to answer generation.", + "enum": [ + "USER", + "USER_GROUP" + ], + "description": "Principal type", "nullable": true }, - "enable_reasoning": { - "type": "boolean", - "default": false, - "description": "Enable reasoning.", - "nullable": true - } - } - }, - "AgentConversation": { - "type": "object", - "required": [ - "conversation_id" - ], - "properties": { - "conversation_id": { + "principal_identifier": { "type": "string", - "description": "Unique identifier of the conversation." - } - } - }, - "SendAgentMessageResponse": { - "type": "object", - "required": [ - "success" - ], - "properties": { - "success": { - "type": "boolean" + "description": "Unique ID or name of the principal", + "nullable": true }, - "message": { - "type": "string", + "priority": { + "type": "integer", + "format": "int32", + "description": "The priority assigned to this value. If there are 2 matching values, the one with the higher priority will be picked.", "nullable": true } } }, - "VariableUpdateAssignmentInput": { + "VariableValueInput": { "type": "object", "required": [ "variable_identifier", - "variable_values", - "operation" + "variable_values" ], "properties": { "variable_identifier": { @@ -23253,60 +21106,12 @@ "variable_values": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/InputVariableValue" }, "description": "Values of the variable" - }, - "operation": { - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "REPLACE", - "CLEAR" - ], - "description": "Operation to perform" - } - }, - "description": "Input for variable value update in batch operations" - }, - "VariableUpdateScopeInput": { - "type": "object", - "required": [ - "org_identifier" - ], - "properties": { - "org_identifier": { - "type": "string", - "description": "The unique name of the org" - }, - "principal_type": { - "type": "string", - "enum": [ - "USER", - "USER_GROUP" - ], - "description": "Principal type", - "nullable": true - }, - "principal_identifier": { - "type": "string", - "description": "Unique ID or name of the principal", - "nullable": true - }, - "model_identifier": { - "type": "string", - "description": "Unique ID of the model", - "nullable": true - }, - "priority": { - "type": "integer", - "format": "int32", - "description": "Priority level", - "nullable": true } }, - "description": "Input for variable value update in batch operations" + "description": "Input for variable value update" }, "CreateEmailCustomizationResponse": { "type": "object", @@ -23466,16 +21271,6 @@ "type": "boolean", "description": "Whether to hide modify alert", "nullable": true - }, - "company_privacy_policy_url": { - "type": "string", - "description": "Company privacy policy URL (HTTP/HTTPS only)", - "nullable": true - }, - "company_website_url": { - "type": "string", - "description": "Company website URL (HTTP/HTTPS only)", - "nullable": true } }, "description": "Email customization configuration properties" @@ -23509,177 +21304,6 @@ } } }, - "WebhookAuthenticationInput": { - "type": "object", - "properties": { - "API_KEY": { - "$ref": "#/components/schemas/WebhookAuthApiKeyInput", - "description": "API key authentication configuration.", - "nullable": true - }, - "BASIC_AUTH": { - "$ref": "#/components/schemas/WebhookAuthBasicAuthInput", - "description": "Basic authentication configuration.", - "nullable": true - }, - "BEARER_TOKEN": { - "type": "string", - "description": "Bearer token authentication configuration.", - "nullable": true - }, - "OAUTH2": { - "$ref": "#/components/schemas/WebhookAuthOAuth2Input", - "description": "OAuth2 authentication configuration.", - "nullable": true - } - } - }, - "WebhookAuthApiKeyInput": { - "type": "object", - "required": [ - "key", - "value" - ], - "properties": { - "key": { - "type": "string", - "description": "The header or query parameter name for the API key." - }, - "value": { - "type": "string", - "description": "The API key value." - } - } - }, - "WebhookAuthBasicAuthInput": { - "type": "object", - "required": [ - "username", - "password" - ], - "properties": { - "username": { - "type": "string", - "description": "Username for basic authentication." - }, - "password": { - "type": "string", - "description": "Password for basic authentication." - } - } - }, - "WebhookAuthOAuth2Input": { - "type": "object", - "required": [ - "authorization_url", - "client_id", - "client_secret" - ], - "properties": { - "authorization_url": { - "type": "string", - "description": "OAuth2 authorization server URL." - }, - "client_id": { - "type": "string", - "description": "OAuth2 client identifier." - }, - "client_secret": { - "type": "string", - "description": "OAuth2 client secret key." - } - } - }, - "WebhookSignatureVerificationInput": { - "type": "object", - "required": [ - "type", - "header", - "algorithm", - "secret" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "HMAC_SHA256" - ], - "description": "Signature verification method type." - }, - "header": { - "type": "string", - "description": "HTTP header where the signature is sent." - }, - "algorithm": { - "type": "string", - "enum": [ - "SHA256" - ], - "description": "Hash algorithm used for signature verification." - }, - "secret": { - "type": "string", - "description": "Shared secret used for HMAC signature generation." - } - } - }, - "WebhookDeleteResponse": { - "type": "object", - "required": [ - "deleted_count", - "failed_count", - "deleted_webhooks", - "failed_webhooks" - ], - "properties": { - "deleted_count": { - "type": "integer", - "format": "int32", - "description": "Number of webhooks successfully deleted." - }, - "failed_count": { - "type": "integer", - "format": "int32", - "description": "Number of webhooks that failed to delete." - }, - "deleted_webhooks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookResponse" - }, - "description": "List of successfully deleted webhooks." - }, - "failed_webhooks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookDeleteFailure" - }, - "description": "List of webhooks that failed to delete with error details." - } - } - }, - "WebhookDeleteFailure": { - "type": "object", - "required": [ - "id", - "name", - "error" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the webhook that failed to delete." - }, - "name": { - "type": "string", - "description": "Name of the webhook that failed to delete." - }, - "error": { - "type": "string", - "description": "Error message describing why the deletion failed." - } - } - }, "Runtime_Filter": { "type": "object", "properties": {