openapi: 3.0.0 info: title: ThoughtSpot Public REST 10.1.0.cl 26.7.0.cl API version: '2.0' servers: - url: '{base-url}' variables: base-url: default: https://localhost:443 security: - bearerAuth: [] tags: - name: 26.7.0.cl paths: /api/rest/2.0/ai/agent/conversations/{conversation_identifier}/delete: delete: operationId: deleteConversation description: ' Deletes an existing agent conversation.
Version: 26.7.0.cl or later Permanently deletes an existing saved agent conversation and all its associated messages. This operation is irreversible — deleted conversations cannot be recovered. Requires `CAN_USE_SPOTTER` privilege and ownership of the conversation being deleted. #### Usage guidelines The request must include: - `conversation_identifier` *(path parameter)*: the unique ID of the conversation to delete, as returned by `createAgentConversation` or `getConversationList` A successful request returns an empty `204 No Content` response. The deleted conversation no longer appears in `getConversationList`. #### Example request ```bash DELETE /api/rest/2.0/ai/agent/conversations/{conversation_identifier}/delete ``` #### Error responses | Code | Description | |------|-------------| | 401 | Unauthorized — authentication token is missing, expired, or invalid. | | 403 | Forbidden — the authenticated user does not have `CAN_USE_SPOTTER` privilege or does not own the specified conversation. | | 404 | Not Found — no conversation exists with the given `conversation_identifier` for the authenticated user. | > ###### Note: > > - Deletion is permanent and cannot be undone. Ensure the correct `conversation_identifier` is used before calling this endpoint. > - Only conversations created with `enable_save_chat: true` are persisted and can be deleted via this endpoint. > - Available from version 26.7.0.cl and later. > - This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster. #### Endpoint URL ' tags: - 26.7.0.cl parameters: - in: path name: conversation_identifier required: true schema: type: string description: Unique identifier of the conversation to delete. responses: '204': description: Successfully deleted the agent conversation. '400': description: Operation failed 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: Operation failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/rest/2.0/ai/agent/conversations/{conversation_identifier}/messages: get: operationId: getConversation description: "\nRetrieves the full public-safe content of a saved agent conversation: ordered\nturns (user messages and agent response items) and sanitized code-execution\nfile metadata. Internal graph or branch state, Azure file identifiers, and\nmessages with a `SYSTEM` source are omitted. The full answer payload is not\nembedded; fetch it separately via `loadAnswer` using the `answer_id` on each\n`answer` response item.\nRequires `CAN_USE_SPOTTER` privilege and access to the specified conversation.
Version: 26.7.0.cl or later\n\nRetrieves the full public-safe content of a saved agent conversation. Returns ordered conversation messages — each carrying an optional user prompt (the user's message and any attachments) and the agent response items produced for that turn — plus sanitized metadata for any files generated by the code-execution tool. \n\nUse this endpoint to render a persisted conversation in a UI, build an audit trail, or post-process a completed conversation. The full answer payload is not embedded — fetch it separately via `loadAnswer` using the `answer_id` on each `answer` response item.\n\nRequires `CAN_USE_SPOTTER` privilege and access to the specified conversation.\n\n#### Usage guidelines\n\nThe request must include:\n\n- `conversation_identifier` _(path parameter)_: the unique ID of the conversation, as returned by `createAgentConversation` or `getConversationList`.\n\nIf the request is successful, the response contains two top-level fields:\n\n| Field | Type | Description |\n| ---------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `messages` | `ConversationMessage[]` | Ordered oldest to newest. Empty array when the conversation has no messages. |\n| `code_execution_files` | `CodeExecutionFileMetadata[]` | List of sanitized file metadata entries (one per `file_id`). Covers all code-execution-generated files referenced anywhere in the conversation. Empty array when there are none. |\n\nNo other top-level fields are returned.\n\n#### ConversationMessage fields\n\n| Field | Type | Description |\n| --------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| `message_id` | `String` | Stable identifier for the turn. For liveboard-started synthetic first turns, this is the root node identifier. |\n| `timestamp_in_millis` | `Long` | Milliseconds since Unix epoch for the turn. |\n| `user_prompt` | `UserPrompt` | User-authored prompt that started the turn (message and attachments). `null` for liveboard-started synthetic first turns. |\n| `response_items` | `ConversationResponseItem[]` | Agent-side output produced in response to this turn. Empty array for in-progress turns. |\n\n#### UserPrompt fields\n\n| Field | Type | Description |\n| ------------- | ---------------------- | ---------------------------------------------------------------------------------------------------- |\n| `message` | `UserMessage` | User query that started the turn. `null` for liveboard-started synthetic first turns. |\n| `attachments` | `UserAttachmentItem[]` | Files or connector resources attached to the user message. Empty array when there are no attachments. |\n\n#### UserMessage fields\n\n| Field | Type | Description |\n| ------------ | -------- | --------------------------------------------- |\n| `message_id` | `String` | Unique identifier of the user-source message. |\n| `content` | `String` | Text body of the user query. |\n\n#### UserAttachmentItem fields\n\nDiscriminated by `type`. Only `\"file\"` or `\"resource\"` are valid values. Only the fields for the indicated variant are populated. See `ConversationResponseItem` below for the field definitions of the `file` and `resource` variants — `UserAttachmentItem` uses the same fields.\n\n#### ConversationResponseItem fields\n\nEvery item carries a `type` discriminator and these shared fields:\n\n| Field | Type | Description |\n| --------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------ |\n| `type` | `String` | Discriminator. One of `\"text\"`, `\"tool_call\"`, `\"tool_result\"`, `\"answer\"`, `\"file\"`, `\"resource\"`, `\"search_datasets\"`. |\n| `timestamp_in_millis` | `Long` | Milliseconds since Unix epoch when this item was produced. |\n| `is_thinking` | `Boolean` | `true` when the item represents internal agent reasoning rather than user-facing output. Consumers may hide or collapse these. |\n| `step_title` | `String` | Human-readable label for the agent step producing this item (e.g. `\"Searching\"`, `\"Visualising\"`). |\n\nVariant-specific fields:\n\n- **`text`** — agent text output: `content` (String), `content_type` (`ContentMimeType` enum), `file_reference` (FileReference).\n- **`tool_call`** — agent invoked a tool: `tool_call_id` (String), `tool_name` (String), `arguments` (JSON object).\n- **`tool_result`** — result returned from a tool invocation: `tool_call_id`, `tool_name`, `content`, `content_type` (`ContentMimeType` enum), `success` (Boolean).\n- **`answer`** — slim reference to a saved answer: `answer_id` (String), `tool_call_id`, `tool_name`.\n- **`file`** — uploaded or generated files: `files` (`PublicFileInfo[]`).\n- **`resource`** — MCP connector resource: `title`, `uri`, `name`, `mime_type`, `description`, `size` (Int), `connector_id`, `connector_name`, `connector_slug`, `transport_type` (`TransportType` enum).\n- **`search_datasets`** — dataset discovery result: `text` (String), `data_sources` (`DataSourceInfo[]`).\n\nClients should switch on `type` and ignore unknown variants for forward-compatibility.\n\n#### content_type values\n\n`content_type` is the `ContentMimeType` enum. The following values are defined:\n\n| Value | Wire MIME | Meaning |\n| --------------------------- | --------------------------- | ---------------------------------------------------- |\n| `TEXT_PLAIN` | `text/plain` | Plain text. Default for `tool_result`. |\n| `TEXT_MARKDOWN` | `text/markdown` | Markdown. Default for `text`. |\n| `TEXT_X_MARKDOWN_WITH_CODE` | `text/x-markdown-with-code` | Markdown whose body starts with a fenced code block. |\n| `TEXT_HTML` | `text/html` | Raw HTML. |\n\n#### transport_type values\n\n`transport_type` is the `TransportType` enum used on the `resource` variant.\n\n| Value | Meaning |\n| ------------------ | --------------------------------------------- |\n| `STREAMABLE_HTTP` | Streamable HTTP transport (default for MCP). |\n| `SSE` | Server-sent events transport. |\n\n#### FileReference fields\n\n| Field | Type | Description |\n| ------------------------ | -------- | ------------------------------------------------------------ |\n| `file_id` | `String` | Unique identifier of the code-execution-generated file. |\n| `display_name` | `String` | Human-readable file name. |\n| `created_time_in_millis` | `Long` | Milliseconds since Unix epoch when the file was created. |\n\nCross-reference `file_id` against `code_execution_files` to retrieve full metadata including the `expired` flag before attempting a download.\n\n#### PublicFileInfo fields\n\n| Field | Type | Description |\n| ------------------------ | -------- | -------------------------------------------------------- |\n| `file_id` | `String` | Unique identifier of the file. |\n| `display_name` | `String` | Human-readable file name. |\n| `file_type` | `String` | File type such as `csv`, `pdf`, or `png`. |\n| `created_time_in_millis` | `Long` | Milliseconds since Unix epoch when the file was created. |\n| `size_bytes` | `Int` | File size in bytes. |\n\n#### CodeExecutionFileMetadata fields\n\nEach entry in the `code_execution_files` array contains:\n\n| Field | Type | Description |\n| ------------------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------- |\n| `file_id` | `String` | Unique identifier of the file. |\n| `display_name` | `String` | Human-readable file name. |\n| `file_type` | `String` | File type such as `csv`, `pdf`, or `png`. |\n| `created_time_in_millis` | `Long` | Milliseconds since Unix epoch when the file was created. |\n| `expired` | `Boolean` | When `true`, the underlying file is no longer retrievable from code-execution storage; UIs should disable download and preview. |\n\n#### Loading answer payloads\n\nEach `AnswerResponseItem` in the response contains an `answer_id` field. Pass this value as the `answer_identifier` parameter to `loadAnswer` to retrieve the full answer payload (TML tokens, visualization metadata) for that item.\n\n#### Example request\n\n```bash\nGET /api/rest/2.0/ai/agent/conversations/{conversation_identifier}/messages\n```\n\n#### Example response\n\n```json\n{\n \"messages\": [\n {\n \"message_id\": \"node_u_01\",\n \"timestamp_in_millis\": 1744000000000,\n \"user_prompt\": {\n \"message\": {\n \"message_id\": \"msg_u_01\",\n \"content\": \"Show me revenue by region as a chart.\"\n },\n \"attachments\": []\n },\n \"response_items\": [\n {\n \"type\": \"tool_call\",\n \"tool_call_id\": \"toolu_01ABC\",\n \"tool_name\": \"search_datasets\",\n \"step_title\": \"Searching datasets\",\n \"arguments\": { \"query\": \"revenue\" },\n \"timestamp_in_millis\": 1744000001000,\n \"is_thinking\": false\n },\n {\n \"type\": \"answer\",\n \"answer_id\": \"ans_01XYZ\",\n \"tool_call_id\": \"toolu_02DEF\",\n \"tool_name\": \"fetch_and_visualize\",\n \"step_title\": \"Visualising\",\n \"timestamp_in_millis\": 1744000004000,\n \"is_thinking\": false\n },\n {\n \"type\": \"text\",\n \"content\": \"Revenue is highest in APAC.\",\n \"content_type\": \"TEXT_MARKDOWN\",\n \"timestamp_in_millis\": 1744000005000,\n \"is_thinking\": false,\n \"step_title\": null,\n \"file_reference\": {\n \"file_id\": \"revenue_by_region.csv\",\n \"display_name\": \"revenue_by_region.csv\",\n \"created_time_in_millis\": 1744027200000\n }\n }\n ]\n }\n ],\n \"code_execution_files\": [\n {\n \"file_id\": \"revenue_by_region.csv\",\n \"display_name\": \"revenue_by_region.csv\",\n \"file_type\": \"csv\",\n \"created_time_in_millis\": 1744027200000,\n \"expired\": false\n }\n ]\n}\n```\n\n#### Example: liveboard-started conversation\n\nWhen a conversation is initiated from a saved liveboard visualization rather than a user query, the first turn is synthetic. `user_prompt` is `null`, and `response_items` contains a single `answer` item referencing the seed visualization.\n\n```json\n{\n \"messages\": [\n {\n \"message_id\": \"ROOT_NODE\",\n \"timestamp_in_millis\": 1743999000000,\n \"user_prompt\": null,\n \"response_items\": [\n {\n \"type\": \"answer\",\n \"answer_id\": \"lb_seed_01\",\n \"tool_call_id\": null,\n \"tool_name\": null,\n \"step_title\": null,\n \"timestamp_in_millis\": 1743999000000,\n \"is_thinking\": false\n }\n ]\n }\n ],\n \"code_execution_files\": []\n}\n```\n\nSubsequent turns follow the normal user-to-agent pattern.\n\n#### Error responses\n\n| Code | Description |\n| ---- | --------------------------------------------------------------------------------------------------------------------------- |\n| 401 | Unauthorized — authentication token is missing, expired, or invalid. |\n| 403 | Forbidden — the authenticated user does not have `CAN_USE_SPOTTER` privilege or lacks access to the specified conversation. |\n| 404 | Not Found — no conversation exists with the given identifier for the authenticated user. |\n\n> ###### Note:\n>\n> - Messages with an internal `SYSTEM` source are always dropped from the response.\n> - In-progress turns are still returned with an empty `response_items` array so clients can render the user message immediately.\n> - Do not assume every `tool_call` has a paired `tool_result` or `answer` — an interrupted conversation can leave a dangling call.\n> - Available from version 26.7.0.cl and later.\n> - This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl parameters: - in: path name: conversation_identifier required: true schema: type: string description: Unique identifier of the conversation to load. responses: '200': description: Common successful response content: application/json: schema: $ref: '#/components/schemas/ConversationMessageResponse' '201': description: Common error response content: application/json: schema: $ref: '#/components/schemas/ConversationMessageResponse' '400': description: Operation failed 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: Operation failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/rest/2.0/ai/agent/conversations: get: operationId: getConversationList description: "\nRetrieves the list of saved agent conversations for the currently authenticated user.\nOnly conversations created with `enable_save_chat: true` are returned.
Version: 26.7.0.cl or later\n\nRetrieves a paginated list of saved agent conversations for the currently authenticated user. Only conversations that were created with `enable_save_chat: true` in `createAgentConversation` are returned.\n\nRequires `CAN_USE_SPOTTER` privilege.\n\n#### Usage guidelines\n\nThe request supports the following optional query parameters:\n\n- `limit`: maximum number of conversations to return. Use this together with `offset` for pagination.\n- `offset`: number of conversations to skip before returning results. Defaults to `0`.\n- `skip_empty`: when `true` (default), conversations with no messages are excluded from the results. Set to `false` to include empty conversations.\n\nIf the request is successful, the response includes a `conversations` array. Each entry contains:\n\n- `conversation_identifier`: the unique ID of the conversation, used as input to `sendAgentConversationMessage`, `updateConversation`, `deleteConversation`, `stopConversation`, and `loadAnswer`\n- `conversation_title`: the display name of the conversation\n- `created_at`: ISO 8601 timestamp of when the conversation was created\n- `updated_at`: ISO 8601 timestamp of the most recent update to the conversation\n- `data_source_identifiers`: list of unique IDs of the data sources associated with the conversation\n- `data_source_names`: array of `{ id, name }` objects for the data sources associated with the conversation\n\n#### Pagination\n\nUse `limit` and `offset` to page through large result sets:\n\n```\nGET /api/rest/2.0/ai/agent/conversations?limit=20&offset=0 → first page\nGET /api/rest/2.0/ai/agent/conversations?limit=20&offset=20 → second page\n```\n\n#### Pagination and `has_more`\n\nThe response includes a `has_more: Boolean` field. When `true`, there are additional conversations beyond the current page — increment `offset` by `limit` to fetch the next page. When `has_more` is `false`, the current page is the last. Note that `total_count` is not returned; use `has_more` to drive paging controls.\n\n#### Example response\n\n```json\n{\n \"conversations\": [\n {\n \"conversation_identifier\": \"abc123\",\n \"conversation_title\": \"Sales by Region Q1\",\n \"created_at\": \"2026-03-01T10:00:00Z\",\n \"updated_at\": \"2026-03-05T14:23:00Z\",\n \"data_source_identifiers\": [\"ds-001\"],\n \"data_source_names\": [{ \"id\": \"ds-001\", \"name\": \"Retail Sales\" }]\n }\n ],\n \"has_more\": false\n}\n```\n\n#### Error responses\n\n| Code | Description |\n|------|-------------|\n| 401 | Unauthorized — authentication token is missing, expired, or invalid. |\n| 403 | Forbidden — the authenticated user does not have `CAN_USE_SPOTTER` privilege. |\n\n> ###### Note:\n>\n> - Only conversations created with `enable_save_chat: true` appear in this list. Conversations created with `enable_save_chat: false` (the default) are not persisted and cannot be retrieved.\n> - Available from version 26.7.0.cl and later.\n> - This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl parameters: - in: query name: limit required: false schema: type: integer format: int32 default: 30 description: Maximum number of conversations to return. Used for pagination. - in: query name: offset required: false schema: type: integer format: int32 default: 0 description: Number of conversations to skip before returning results. Used for pagination. - in: query name: skip_empty required: false schema: type: boolean default: true description: When true, excludes conversations with no messages. Defaults to true. responses: '200': description: Common successful response content: application/json: schema: $ref: '#/components/schemas/AgentConversationHistoryResponse' '201': description: Common error response content: application/json: schema: $ref: '#/components/schemas/AgentConversationHistoryResponse' '400': description: Operation failed 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: Operation failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/rest/2.0/ai/agent/conversations/{conversation_identifier}/answers/{answer_identifier}/details: get: operationId: loadAnswer description: "\nLoads the full answer payload for a specific answer item in an agent\nconversation. Returns structured answer data including the TML query, token\nbreakdown, visualization metadata, and agent context state.\nPass the `answer_id` from an `AnswerResponseItem` in the `getConversation`\nresponse as the `answer_identifier` parameter.\nRequires `CAN_USE_SPOTTER` privilege and access to the specified conversation.
Version: 26.7.0.cl or later\n\nLoads the answer details for a specific answer item in an agent conversation. Returns structured answer data including the TML token list, visualization metadata, and agent context state. Use this endpoint to retrieve the full answer representation for an answer item — for example, to re-render a chart, export a query, or inspect the generated TML.\n\nRequires `CAN_USE_SPOTTER` privilege and access to the specified conversation.\n\n#### Usage guidelines\n\nThe request must include:\n\n- `conversation_identifier` *(path parameter)*: the unique ID of the conversation, as returned by `createAgentConversation`\n- `answer_identifier` *(path parameter)*: the `answer_id` field from an `AnswerResponseItem` in the `getConversation` response\n\nIf the request is successful, the response contains an `answer` object with the following fields:\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `title` | `String` | Display title of the generated answer (e.g., `\"sales by month\"`). |\n| `description` | `String` | Optional description of the answer. |\n| `session_identifier` | `String` | Unique identifier of the session in which this answer was generated. |\n| `generation_number` | `Int` | Generation sequence number of this answer within the session. |\n| `tokens` | `[String]` | Ordered list of TML token strings that make up the answer query (e.g., `[\"[sales]\", \"[date].'monthly'\"]`). |\n| `visualization_type` | `VizType` | Suggested visualization type: `Chart`, `Table`, or `Undefined`. `null` if no suggestion is available. |\n| `formulas` | `[String]` | List of formula names referenced in the answer. Empty if none are used. |\n| `parameters` | `[String]` | List of parameter names applied to the answer. Empty if none are used. |\n| `sub_queries` | `[JSON]` | List of sub-query objects used in the answer. Empty if none are present. |\n| `ac_state` | `ACState` | Agent context state, including `transaction_identifier` and `generation_number`, used to correlate this answer with a specific agent turn. |\n\n#### ACState fields\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `transaction_identifier` | `String` | Unique identifier of the agent transaction that produced this answer. |\n| `generation_number` | `Int` | Generation number within the transaction. |\n\n#### Example request\n\n```bash\nGET /api/rest/2.0/ai/agent/conversations/{conversation_identifier}/answers/{answer_identifier}/details\n```\n\n#### Example response\n\n```json\n{\n \"answer\": {\n \"title\": \"sales by month\",\n \"description\": \"\",\n \"session_identifier\": \"7b00b801-73f4-4639-af5e-e775584ceba6\",\n \"generation_number\": 1,\n \"tokens\": [\"[sales]\", \"[date].'monthly'\"],\n \"visualization_type\": null,\n \"formulas\": [],\n \"parameters\": [],\n \"sub_queries\": [],\n \"ac_state\": {\n \"transaction_identifier\": \"7f6c9948-b4c7-4098-bb1f-6c67bc0e5699\",\n \"generation_number\": 1\n }\n }\n}\n```\n\n#### Typical usage scenario\n\n1. Call `getConversation` to retrieve the full conversation history.\n2. Locate an `AnswerResponseItem` in `response_items` — note its `answer_id` field.\n3. Call `loadAnswer` with the `conversation_identifier` and `answer_id` as `answer_identifier`.\n4. The returned `tokens` array can be used to open the answer in the ThoughtSpot search interface or rendered as pill chips in the UI.\n\n#### Error responses\n\n| Code | Description |\n|------|-------------|\n| 401 | Unauthorized — authentication token is missing, expired, or invalid. |\n| 403 | Forbidden — the authenticated user does not have `CAN_USE_SPOTTER` privilege or lacks access to the specified conversation. |\n| 404 | Not Found — no conversation or message exists with the given identifiers for the authenticated user. |\n| 422 | Unprocessable Entity — the message does not contain an answer of the expected type. |\n\n> ###### Note:\n>\n> - This endpoint only loads answer-type messages. Other message types are not supported.\n> - `visualization_type` may be `null` if the agent did not produce a visualization suggestion for this answer.\n> - `formulas`, `parameters`, and `sub_queries` are returned as empty arrays when not applicable — they are never `null`.\n> - Available from version 26.7.0.cl and later.\n> - This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl parameters: - in: path name: conversation_identifier required: true schema: type: string description: Unique identifier of the conversation. - in: path name: answer_identifier required: true schema: type: string description: 'Unique identifier of the answer to load. Use the `answer_id` field from an `AnswerResponseItem` returned by `getConversation`.' responses: '200': description: Common successful response content: application/json: schema: $ref: '#/components/schemas/LoadAnswerResponse' '201': description: Common error response content: application/json: schema: $ref: '#/components/schemas/LoadAnswerResponse' '400': description: Operation failed 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: Operation failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/rest/2.0/ai/agent/conversations/{conversation_identifier}/update: post: operationId: updateConversation description: "\nUpdates attributes of an existing agent conversation. Currently only the\ndisplay title can be updated; additional conversation attributes may be\nsupported in future versions. At least one updatable attribute must be\nprovided in the request body.
Version: 26.7.0.cl or later\n\nUpdates attributes of an existing saved agent conversation. Currently only the conversation's display `title` can be updated; additional updatable attributes may be supported in future versions. At least one updatable attribute must be supplied in the request body.\n\nRequires `CAN_USE_SPOTTER` privilege and ownership of the conversation being updated.\n\n#### Usage guidelines\n\nThe request must include:\n\n- `conversation_identifier` *(path parameter)*: the unique ID of the conversation to update, as returned by `createAgentConversation` or `getConversationList`\n- At least one updatable attribute in the request body:\n - `title` *(optional)*: the new display name for the conversation. When provided, must be a non-empty string.\n\nA successful request returns an empty `204 No Content` response. Updated attributes are reflected immediately in subsequent calls to `getConversationList`.\n\n#### Example request\n\n```bash\nPOST /api/rest/2.0/ai/agent/conversations/{conversation_identifier}/update\nContent-Type: application/json\n\n{\n \"title\": \"Revenue Breakdown by Product Line\"\n}\n```\n\n#### Error responses\n\n| Code | Description |\n|------|-------------|\n| 400 | Bad Request — the request body is empty or `title` is provided as an empty string. |\n| 401 | Unauthorized — authentication token is missing, expired, or invalid. |\n| 403 | Forbidden — the authenticated user does not have `CAN_USE_SPOTTER` privilege or does not own the specified conversation. |\n| 404 | Not Found — no conversation exists with the given `conversation_identifier` for the authenticated user. |\n| 422 | Unprocessable Entity — the request body is malformed or contains an invalid field value. |\n\n> ###### Note:\n>\n> - Only conversations created with `enable_save_chat: true` can be updated. Unsaved conversations are not persisted and do not have a retrievable identifier.\n> - Available from version 26.7.0.cl and later.\n> - This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateConversationRequest' required: true parameters: - in: path name: conversation_identifier required: true schema: type: string description: Unique identifier of the conversation to update. responses: '204': description: Successfully updated the agent conversation. '400': description: Operation failed 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: Operation failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/rest/2.0/localizations/manual-translation/delete: post: operationId: deleteManualTranslations description: ' Delete manual translations.
Version: 26.7.0.cl or later Deletes all manual translations for the org. Requires `ADMINISTRATION` (**Can administer ThoughtSpot**), `ORG_ADMINISTRATION` (**Can administer Org**), or `APPLICATION_ADMINISTRATION` (**Can administer application**) privilege. #### Usage guidelines - This deletes **all** translation entries for the targeted org. The operation cannot be undone. - Defaults to `ORG` scope if not specified. - Set `scope` to `CLUSTER` to delete translations uploaded in the All-Org context. #### Endpoint URL ' tags: - 26.7.0.cl requestBody: content: application/json: schema: $ref: '#/components/schemas/DeleteManualTranslationsRequest' required: true parameters: [] responses: '204': description: Successfully deleted manual translations. '400': description: Operation failed 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: Operation failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/rest/2.0/localizations/manual-translation/export: post: operationId: exportManualTranslations description: ' Export manual translations as a CSV file.
Version: 26.7.0.cl or later Downloads all manual translations for the org as a CSV file. Requires `ADMINISTRATION` (**Can administer ThoughtSpot**), `ORG_ADMINISTRATION` (**Can administer Org**), or `APPLICATION_ADMINISTRATION` (**Can administer application**) privilege. #### Usage guidelines - The response is a CSV file with columns: `content`, `locale`, `translated-content`. - Defaults to `ORG` scope if not specified. - Set `scope` to `CLUSTER` to export translations from the All-Org context. - Returns a `404` error if no translations exist for the targeted org or cluster scope. #### Endpoint URL ' tags: - 26.7.0.cl requestBody: content: application/json: schema: $ref: '#/components/schemas/ExportManualTranslationsRequest' required: true parameters: [] responses: '200': description: CSV file downloaded successfully. content: application/octet-stream: {} '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' '404': description: No translations file found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/rest/2.0/localizations/manual-translation/locales/{locale}/export: post: operationId: getManualTranslationBundle description: ' Get translations bundle for a locale.
Version: 26.7.0.cl or later Retrieves all translations for a specific locale as a JSON map. Available to all authenticated users. No additional privileges are required. #### Usage guidelines - `locale` parameter must be a hyphenated locale code (for example, `fr-fr`, `de-de`, `JA-JP`). - Returns a JSON object with a `translations` map where each key is the original string and each value is the translated string. - If the org has no translations for the requested locale, the endpoint falls back to cluster-level translations. - Returns an empty `translations` map (not an error) if no entries exist at either level. #### Endpoint URL ' tags: - 26.7.0.cl parameters: - in: path name: locale required: true schema: type: string description: Locale code for which to retrieve translations. For example, `fr-fr`, `de-de`, `JA-JP`. responses: '200': description: Translation bundle retrieved successfully. content: application/json: schema: 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' '404': description: No translations found for the requested locale. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/rest/2.0/localizations/manual-translation/import: post: operationId: importManualTranslations description: ' Import manual translations from a CSV file.
Version: 26.7.0.cl or later Uploads a CSV file containing manual translations and upserts them into the database. Requires `ADMINISTRATION` (**Can administer ThoughtSpot**), `ORG_ADMINISTRATION` (**Can administer Org**), or `APPLICATION_ADMINISTRATION` (**Can administer application**) privilege. #### Usage guidelines - The CSV file must have exactly three columns in this order: `content`, `locale`, `translated-content`. - Maximum file size: **30 MB**. Maximum rows: **10,000**. - Only `.csv` files are accepted. - The import performs an **upsert**: existing entries matched by `(org_id, locale, content)` are updated; new entries are inserted. Entries not in the upload are left untouched. - Set `scope` to `CLUSTER` to upload translations to the All-Org context. Cluster-level translations act as defaults for orgs that have no translations for a locale. #### Endpoint URL ' tags: - 26.7.0.cl requestBody: content: multipart/form-data: schema: type: object properties: translations_file: description: 'CSV file containing translations. The file must have three columns: `content`, `locale`, `translated-content`. Max file size: 30 MB. Max rows: 10,000.' type: string format: binary scope: description: 'Org scope for the import. `ORG` (default) targets the calling user''s current org. `CLUSTER` targets the All-Org context.' default: ORG type: string enum: - ORG - CLUSTER required: - translations_file required: true parameters: [] responses: '204': description: Successfully imported manual translations. '400': description: Operation failed 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: Operation failed content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/rest/2.0/customization/styles/fonts/delete: post: operationId: deleteStyleFonts description: "\n Version: 26.7.0.cl or later\n\nDeletes one or more custom fonts from the cluster-level or org-level font library. If a deleted font is assigned to visualization areas, those assignments automatically fallback to the cluster/system default font. The response lists all affected areas where the font was explicitly set. Note: dry_run defaults to true. To actually delete fonts, you must explicitly pass dry_run: false.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Provide one or more font UUIDs or names in `font_identifiers`.\n- Set `scope` to `CLUSTER` to delete from the cluster-level library. Set `scope` to `ORG` (default) to delete from the authenticated user's org library.\n- Use `dry_run: true` to preview which visualization areas would be affected without actually deleting the font. The response lists affected assignments; no changes are applied.\n- Deletions cannot be undone. Re-upload the font file using `uploadStyleFont` if needed.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl requestBody: content: application/json: schema: $ref: '#/components/schemas/DeleteStyleFontsRequest' required: true parameters: [] responses: '200': description: Font deleted successfully. content: application/json: schema: $ref: '#/components/schemas/StyleFontDeleteData' examples: example_1: summary: Font deleted with affected assignments value: affected_assignments: - org: id: 1234567890 name: Sales visualization_areas: - CHART_X_AXIS_LABELS - CHART_Y_AXIS_LABELS example_2: summary: Font deleted with no affected assignments value: affected_assignments: [] '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Field 'font_identifiers' must contain at least one identifier. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to delete custom fonts from the font library. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Only Tenant admin can delete cluster-level fonts. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while deleting fonts from the font library. /api/rest/2.0/customization/styles/logos/export: post: operationId: exportStyleLogos description: "\n Version: 26.7.0.cl or later\n\nDownloads the active logos (default and wide slots) at the requested scope as a single ZIP archive containing both logo image files. If no custom logo has been uploaded at the ORG scope, the archive contains the resolved logo falling through from the cluster. If no cluster logo has been uploaded, no file is returned.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Set `scope` to `CLUSTER` to download cluster-level logos.\n- Set `scope` to `ORG` (default) to download logos for the authenticated user's org.\n- The response is a ZIP archive (`application/zip`). Save the response body directly to a `.zip` file.\n- The archive always contains two files — one for the DEFAULT slot and one for the WIDE slot — even if no custom logo is set at the requested scope.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl requestBody: content: application/json: schema: $ref: '#/components/schemas/ExportStyleLogosRequest' required: true parameters: - name: Accept in: header schema: type: string enum: - application/zip default: application/zip responses: '200': description: Logo ZIP archive retrieved successfully. content: application/zip: {} '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to export style logos. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster-level logos can only be exported from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while exporting style logos. /api/rest/2.0/customization/styles/search: post: operationId: searchStyleCustomizations description: "\n Version: 26.7.0.cl or later\n\nRetrieves style preferences at cluster level or for the authenticated user's org. Cluster-level preferences serve as defaults for all orgs. Org-level preferences override cluster defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Set `scope` to `CLUSTER` to retrieve cluster-level style defaults.\n- Set `scope` to `ORG` (default) to retrieve preferences for the authenticated user's org.\n- Each field in the response includes an `is_overridden` flag indicating whether the value was explicitly set at the requested scope or inherited from a parent scope (cluster or system default).\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl requestBody: content: application/json: schema: $ref: '#/components/schemas/SearchStyleCustomizationsRequest' required: true parameters: [] responses: '200': description: Style preferences retrieved successfully. content: application/json: schema: type: array items: $ref: '#/components/schemas/StylePreference' examples: example_1: value: - scope: CLUSTER navigation_panel: theme: DARK is_overridden: false chart_color_palette: colors: - primary: '#2359B6' secondary: - '#1A4690' - '#0E2E66' - '#07194A' - '#030D30' - primary: '#E8552D' secondary: - '#C4421A' - '#9E2F0D' - '#7A2005' - '#581302' - primary: '#F5A623' secondary: - '#D08B0E' - '#A86E05' - '#825202' - '#5E3900' - primary: '#7ED321' secondary: - '#62A815' - '#488009' - '#305A03' - '#1C3800' - primary: '#9B59B6' secondary: - '#7D3F9A' - '#612C7E' - '#481C62' - '#320F48' - primary: '#1ABC9C' secondary: - '#0E9E81' - '#077F67' - '#03624E' - '#014838' - primary: '#E74C3C' secondary: - '#C0392B' - '#9A2518' - '#761409' - '#540703' - primary: '#3498DB' secondary: - '#1A7DC0' - '#0E60A0' - '#074580' - '#032C60' disable_color_rotation: false is_overridden: false embedded_footer_text: value: '' is_overridden: false logo: default_logo: id: a1b2c3d4-0001-0001-0001-000000000001 is_overridden: false wide_logo: id: a1b2c3d4-0002-0002-0002-000000000002 is_overridden: false visualization_fonts: chart_visualization_fonts: - visualization_area: CHART_X_AXIS_LABELS font_id: null font_name: null is_overridden: false table_visualization_fonts: - visualization_area: TABLE_VALUE_CELLS font_id: null font_name: null is_overridden: false - scope: ORG org: id: 1234567890 name: Sales navigation_panel: theme: CUSTOM base_color: '#2359B6' is_overridden: true chart_color_palette: colors: - primary: '#2359B6' secondary: - '#1A4690' - '#0E2E66' - '#07194A' - '#030D30' - primary: '#E8552D' secondary: - '#C4421A' - '#9E2F0D' - '#7A2005' - '#581302' - primary: '#F5A623' secondary: - '#D08B0E' - '#A86E05' - '#825202' - '#5E3900' - primary: '#7ED321' secondary: - '#62A815' - '#488009' - '#305A03' - '#1C3800' - primary: '#9B59B6' secondary: - '#7D3F9A' - '#612C7E' - '#481C62' - '#320F48' - primary: '#1ABC9C' secondary: - '#0E9E81' - '#077F67' - '#03624E' - '#014838' - primary: '#E74C3C' secondary: - '#C0392B' - '#9A2518' - '#761409' - '#540703' - primary: '#3498DB' secondary: - '#1A7DC0' - '#0E60A0' - '#074580' - '#032C60' disable_color_rotation: false is_overridden: false embedded_footer_text: value: Powered by Sales Analytics is_overridden: true logo: default_logo: id: b2c3d4e5-0001-0001-0001-000000000011 is_overridden: true wide_logo: id: b2c3d4e5-0002-0002-0002-000000000022 is_overridden: true visualization_fonts: chart_visualization_fonts: - visualization_area: CHART_X_AXIS_LABELS font_id: c3d4e5f6-1111-1111-1111-111111111111 font_name: Acme Sans is_overridden: true table_visualization_fonts: - visualization_area: TABLE_VALUE_CELLS font_id: null font_name: Optimo-Plain, Helvetica Neue, Helvetica, Arial, sans-serif is_overridden: false '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Field 'org_identifiers' is only allowed when scope is ORG. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to retrieve style preferences for the cluster or org. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster config can only be accessed from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while retrieving style customization preferences. /api/rest/2.0/customization/styles/fonts/search: post: operationId: searchStyleFonts description: "\n Version: 26.7.0.cl or later\n\nReturns custom fonts from the cluster-level or org-level font library. Omitting all filter fields returns all fonts in the target scope.\n\nWhen `include_font_assignments` is `true`, the response includes only the visualization areas explicitly assigned to each font. For cluster-scoped fonts, `org` is returned as `null`.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Set `scope` to `CLUSTER` to search the cluster-level library. Set `scope` to `ORG` (default) to search the authenticated user's org library.\n- Use `font_identifier` to look up a specific font by UUID or name.\n- Use `name_pattern` for partial, case-insensitive name matching.\n- Set `include_font_assignments` to `true` to include visualization areas this font is currently assigned to. Defaults to `false`.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl requestBody: content: application/json: schema: $ref: '#/components/schemas/SearchStyleFontsRequest' required: true parameters: [] responses: '200': description: Custom fonts retrieved successfully. content: application/json: schema: type: array items: $ref: '#/components/schemas/StyleFontRecord' examples: example_1: value: - id: c3d4e5f6-1111-1111-1111-111111111111 scope: ORG org: id: 1234567890 name: Sales name: Acme Sans weight: NORMAL style: NORMAL color: '#333333' creation_time_in_millis: 1714000000000 assignments: - org: id: 1234567890 name: Sales visualization_areas: - CHART_X_AXIS_LABELS - CHART_Y_AXIS_LABELS - id: d4e5f6a7-2222-2222-2222-222222222222 scope: CLUSTER name: Corporate Bold weight: BOLD style: NORMAL color: '#000000' creation_time_in_millis: 1713500000000 assignments: [] '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Only one of 'font_identifier' or 'name_pattern' may be provided. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to search the cluster-level or org-level font library. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster config can only be accessed from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while searching the font library. /api/rest/2.0/customization/styles/update: post: operationId: updateStyleCustomization description: "\n Version: 26.7.0.cl or later\n\nUpdates style preferences at cluster level or for the authenticated user's org, including navigation panel color, chart color palette, embedded footer text, logo, and font assignments per visualization area. Cluster-level preferences serve as defaults for all orgs. Org-level preferences override cluster defaults. Resetting an Org-level preference falls back to Cluster-level preference, which on reset falls back to system defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\nTwo operations are supported via the `operation` field:\n\n- **REPLACE** (default): Applies the fields provided in the request. Omitted fields remain unchanged.\n- **RESET**: Reverts specific fields to defaults. Specify which fields to reset using `reset_options.style` (for style fields) and `reset_options.visualization_areas` (for font assignments). Fields not listed in `reset_options` are not affected.\n\n#### Logo upload\n\nLogo files are uploaded as binary fields using `multipart/form-data`:\n\n- `default_logo`: Square app icon and favicon. Recommended size: 140×140 px. Accepted formats: PNG, JPG.\n- `wide_logo`: Horizontal top nav bar logo. Recommended size: 230×45 px. Accepted formats: PNG, JPG.\n\nTo reset a logo to the default, use `operation: RESET` with `reset_options.style` set to `DEFAULT_LOGO` or `WIDE_LOGO`.\n\n#### Navigation panel color\n\nSet `navigation_panel.theme` to one of:\n\n- `DARK`: Default dark theme.\n- `TWO_TONE`: Dual-tone panel style.\n- `CUSTOM`: User-defined color. Provide `navigation_panel.base_color` as a 6-digit hex string (e.g. `#2359B6`).\n\n#### Chart color palette\n\nProvide exactly 8 color entries in `chart_color_palette.colors`. Each entry requires a `primary` hex color. If `secondary` shades are omitted, the server auto-generates 4 shades from the primary color.\n\n#### Font assignments\n\nSpecify `visualization_fonts.chart_visualization_fonts`, `visualization_fonts.table_visualization_fonts`, and `visualization_fonts.advanced_chart_visualization_fonts` to assign custom fonts to specific visualization areas. Only provide the areas you want to update; omitted areas remain unchanged.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl requestBody: content: multipart/form-data: schema: type: object properties: scope: description: 'Scope at which to apply the preferences. CLUSTER sets cluster-level defaults for all orgs. ORG applies to the authenticated user''s org.' default: ORG type: string enum: - CLUSTER - ORG operation: description: 'Operation to perform. REPLACE (default) applies the provided fields and leaves omitted fields unchanged. RESET reverts fields listed in reset_options to defaults.' default: REPLACE type: string enum: - REPLACE - RESET reset_options: description: 'Fields to reset when operation is RESET. Specify style fields and visualization areas to revert to defaults.' allOf: - $ref: '#/components/schemas/StyleResetOptionsInput' navigation_panel: description: 'Navigation panel color. Provide theme and, when theme is CUSTOM, also provide base_color.' allOf: - $ref: '#/components/schemas/NavigationPanelInput' chart_color_palette: description: 'Chart color palette. When provided with operation REPLACE, exactly 8 color entries must be specified in colors.' allOf: - $ref: '#/components/schemas/StyleColorPaletteInput' embedded_footer_text: description: 'Custom footer text for the embedded application. An empty string clears the footer.' type: string visualization_fonts: description: 'Font assignments per visualization area. Provide only the areas to update; omitted areas remain unchanged.' allOf: - $ref: '#/components/schemas/VisualizationFontsInput' default_logo: description: 'Binary image for the DEFAULT logo slot (square app icon and favicon; recommended 140x140 px). Accepted formats: PNG, JPG.' type: string format: binary wide_logo: description: 'Binary image for the WIDE logo slot (horizontal top nav bar logo; recommended 230x45 px). Accepted formats: PNG, JPG.' type: string format: binary required: - scope encoding: reset_options: contentType: application/json navigation_panel: contentType: application/json chart_color_palette: contentType: application/json visualization_fonts: contentType: application/json required: true parameters: [] responses: '204': description: Style preferences updated successfully. '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: chart_color_palette must specify exactly 8 color entries when operation is REPLACE. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to update style customization preferences. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster-level style customization can only be updated from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while updating style customization preferences. /api/rest/2.0/customization/styles/fonts/{font_identifier}/update: post: operationId: updateStyleFont description: "\n Version: 26.7.0.cl or later\n\nUpdates the metadata of an existing custom font in the cluster-level or org-level font library. Only the fields provided in the request are modified; omitted fields remain unchanged.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Identify the font using `font_identifier` (UUID or name).\n- Set `scope` to `CLUSTER` to target the cluster-level library. Set `scope` to `ORG` (default) to target the authenticated user's org library.\n- To replace the font file itself (WOFF/WOFF2 binary), delete the existing font and re-upload using `uploadStyleFont`.\n- `color` must be a valid 6-digit hex string (e.g. `#333333`) if provided.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateStyleFontRequest' required: true parameters: - in: path name: font_identifier required: true schema: type: string description: UUID or name of the font to update. responses: '204': description: Font metadata updated successfully. '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Font color must be a valid 6-digit hex string (e.g. '#333333'). '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to update a custom font. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Only Tenant admin can update cluster-level fonts. '500': description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while updating the custom font. /api/rest/2.0/customization/styles/fonts/upload: post: operationId: uploadStyleFont description: "\n Version: 26.7.0.cl or later\n\nUploads a custom font to the cluster-level or org-level font library. Cluster-level fonts are available as defaults for all orgs. Org-level fonts are only available within that org.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Only **WOFF** and **WOFF2** font formats are accepted. TTF and OTF files are rejected with an error.\n- Set `scope` to `CLUSTER` to upload to the cluster-level library. Set `scope` to `ORG` (default) to upload to the authenticated user's org library.\n- `weight` defaults to `NORMAL` if omitted. Supported values: `NORMAL`, `LIGHT`, `BOLD`.\n- `style` defaults to `NORMAL` if omitted. Supported values: `NORMAL`, `ITALIC`, `OBLIQUE`.\n- `color` defaults to `#000000` (black) if omitted. Provide as a 6-digit hex string (e.g. `#333333`).\n- The uploaded font can be assigned to visualization areas using the `updateStyleCustomization` endpoint.\n\n\n\n\n#### Endpoint URL\n" tags: - 26.7.0.cl requestBody: content: multipart/form-data: schema: type: object properties: scope: description: 'Scope of the font library to upload to. CLUSTER uploads to the cluster-level library, making the font available as a default for all orgs. ORG uploads to the authenticated user''s org library. Defaults to ORG if omitted.' default: ORG type: string enum: - CLUSTER - ORG name: description: Display name for the font (e.g. "Acme Sans"). type: string weight: description: 'Weight of the font. Supported values: NORMAL, LIGHT, BOLD. Defaults to NORMAL if omitted.' default: NORMAL type: string enum: - NORMAL - LIGHT - BOLD style: description: 'Style of the font. Supported values: NORMAL, ITALIC, OBLIQUE. Defaults to NORMAL if omitted.' default: NORMAL type: string enum: - NORMAL - ITALIC - OBLIQUE color: description: 'Color of the font as a 6-digit hex string (e.g. "#333333"). Defaults to #000000 (black) if omitted. Returns an error if the value is malformed.' type: string file_content: description: 'Binary WOFF or WOFF2 font file to upload. Only WOFF and WOFF2 formats are accepted; TTF and OTF are rejected. The file is validated on upload.' type: string format: binary required: - name - file_content required: true parameters: [] responses: '200': description: Font uploaded successfully. content: application/json: schema: $ref: '#/components/schemas/StyleFontUploadData' examples: example_1: value: id: c3d4e5f6-1111-1111-1111-111111111111 name: Acme Sans '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Unsupported font format. Only WOFF and WOFF2 are accepted. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to upload a custom font to the font library. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster config can only be accessed from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while uploading the custom font. /api/rest/2.0/webhooks/storage-config: get: operationId: getWebhookStorageConfig description: "\n Version: 26.7.0.cl or later\n\nReturns cluster-level storage setup information for configuring customer-managed storage. Use this endpoint to obtain the IAM identity details required before configuring a webhook storage destination. For S3 destinations, returns the platform AWS account ID and IAM trust policy template. For GCS destinations, returns the platform GCP service account email and the IAM role to grant for service account impersonation.\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" tags: - 26.7.0.cl parameters: [] responses: '200': description: Storage setup information retrieved successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/WebhookStorageConfigInfo' examples: example_1: description: AWS-hosted cluster — customer configuring S3 storage destination value: - storage_type: OBJECT_STORAGE provider: AWS_S3 config: config_type: AWS_TO_S3_STORAGE aws_account_id: '123456789012' trust_policy_template: Version: '2012-10-17' Statement: - Effect: Allow Principal: AWS: arn:aws:iam::123456789012:root Action: sts:AssumeRole Condition: StringEquals: sts:ExternalId: ts-webhook-a1b2c3d4-7890 setup_instructions: - 1. Create an IAM role in your AWS account - 2. Attach the trust policy template to the role - 3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role - 4. Use the role ARN in your webhook storage configuration example_2: description: GCP-hosted cluster — customer configuring S3 storage destination value: - storage_type: OBJECT_STORAGE provider: AWS_S3 config: config_type: GCP_TO_S3_STORAGE gcp_service_account_id: '115663769112811637952' oidc_provider: accounts.google.com trust_policy_template: Version: '2012-10-17' Statement: - Effect: Allow Principal: Federated: arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com Action: sts:AssumeRoleWithWebIdentity Condition: StringEquals: accounts.google.com:sub: '115663769112811637952' setup_instructions: - 1. Add accounts.google.com as an Identity Provider in AWS IAM - 2. Create an IAM role with Web Identity Federation trust - 3. Configure the trust policy with the GCP service account ID - 4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role - 5. Use the role ARN in your webhook storage configuration example_3: description: GCP-hosted cluster — customer configuring both S3 and GCS storage destinations value: - storage_type: OBJECT_STORAGE provider: AWS_S3 config: config_type: GCP_TO_S3_STORAGE gcp_service_account_id: '115663769112811637952' oidc_provider: accounts.google.com trust_policy_template: Version: '2012-10-17' Statement: - Effect: Allow Principal: Federated: arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com Action: sts:AssumeRoleWithWebIdentity Condition: StringEquals: accounts.google.com:sub: '115663769112811637952' setup_instructions: - 1. Add accounts.google.com as an Identity Provider in AWS IAM - 2. Create an IAM role with Web Identity Federation trust - 3. Configure the trust policy with the GCP service account ID - 4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role - 5. Use the role ARN in your webhook storage configuration - storage_type: OBJECT_STORAGE provider: GCP_GCS config: config_type: GCP_TO_GCS_STORAGE service_account_email: webhook-sa@example-project.iam.gserviceaccount.com required_role: roles/iam.serviceAccountTokenCreator setup_instructions: - 1. In GCP Console, go to IAM & Admin > Service Accounts - 2. Click on the service account that has write access to your GCS bucket - 3. Open the 'Principals with access' tab and click 'Grant Access' - 4. Enter the service account email as the principal - 5. Assign the roles/iam.serviceAccountTokenCreator role and save - 6. Use your service account email in the webhook storage configuration '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to retrieve webhook storage configuration. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Insufficient privileges to retrieve webhook storage configuration. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while retrieving webhook storage configuration. components: schemas: StyleNavigationPanel: type: object properties: theme: type: string enum: - DARK - TWO_TONE - CUSTOM description: Navigation panel color mode. nullable: true base_color: type: string description: Base color as a 6-digit hex string. Present only when theme is CUSTOM. nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Navigation panel color configuration for a specific scope. AgentConversationHistoryResponse: type: object properties: conversations: type: array items: $ref: '#/components/schemas/AgentConversationList' description: List of saved agent conversations for the current user. nullable: true has_more: type: boolean description: 'Whether additional conversations exist beyond this page. `true` when one or more conversations remain after the current page; `false` when the current page is the last. Use `offset` to fetch the next page.' nullable: true description: Response returned by getConversationList. StyleFontRecord: type: object required: - id - name properties: id: type: string description: Unique UUID identifier of the font. scope: type: string enum: - CLUSTER - ORG description: Scope indicating whether this font belongs to the cluster or org library. nullable: true org: $ref: '#/components/schemas/StyleOrgInfo' description: Org associated with this font. Present only when scope is ORG. nullable: true name: type: string description: Display name of the font. weight: type: string enum: - NORMAL - LIGHT - BOLD description: Weight of the font. nullable: true style: type: string enum: - NORMAL - ITALIC - OBLIQUE description: Style of the font. nullable: true color: type: string description: Color of the font as a 6-digit hex string. nullable: true creation_time_in_millis: type: number format: float description: Timestamp in milliseconds when the font was uploaded. nullable: true assignments: type: array items: $ref: '#/components/schemas/StyleFontAssignment' description: 'Visualization areas currently assigned to this font. Empty if not assigned to any area. Populated only when include_font_assignments is true.' nullable: true description: A custom font record in the font library. StyleFontDeleteAffectedAssignment: type: object properties: org: $ref: '#/components/schemas/StyleOrgInfo' description: Org context for this assignment. Present only when scope is ORG. nullable: true visualization_areas: type: array items: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS - TABLE_VALUE_CELLS - ADVANCED_CHART_LABELS description: 'Visualization areas that used the deleted font and were automatically reset to the system default font.' nullable: true description: A visualization area assignment affected by a font deletion. ChartFontAssignmentInput: type: object required: - visualization_area - font_identifier properties: visualization_area: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS description: Chart visualization area to assign the font to. font_identifier: type: string description: UUID or name of the font to assign to this area. description: Font assignment for a single chart visualization area. StyleColorEntry: type: object properties: primary: type: string description: Primary color as a 6-digit hex string. nullable: true secondary: type: array items: type: string description: Array of 4 secondary shade hex strings. nullable: true description: A single color entry in the chart color palette. StyleEmbeddedFooterText: type: object properties: value: type: string description: Footer text value. Empty string indicates no footer is set. nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Embedded footer text configuration for a specific scope. NavigationPanelInput: type: object properties: theme: type: string enum: - DARK - TWO_TONE - CUSTOM description: 'Color mode for the navigation panel. DARK applies the default dark theme. TWO_TONE applies a dual-tone style. CUSTOM enables a user-defined base color; base_color is required when theme is CUSTOM.' nullable: true base_color: type: string description: 'Base color as a 6-digit hex string (e.g. "#2359B6"). Required when theme is CUSTOM.' nullable: true description: Navigation panel color configuration. StyleOrgInfo: type: object properties: id: type: integer format: int32 description: Unique integer ID of the org. nullable: true name: type: string description: Name of the org. nullable: true description: Org information returned in style API responses. StyleFontDeleteData: type: object properties: affected_assignments: type: array items: $ref: '#/components/schemas/StyleFontDeleteAffectedAssignment' description: 'Visualization areas that used the deleted font(s) and were automatically reset to the system default font. Empty if no areas were affected.' nullable: true description: Result data for font deletion. ACState: type: object properties: transaction_identifier: type: string description: Unique identifier of the transaction. nullable: true generation_number: type: integer format: int32 description: Generation number of the transaction. nullable: true StyleFontAssignment: type: object properties: org: $ref: '#/components/schemas/StyleOrgInfo' description: Org context for this assignment. Present only when scope is ORG. nullable: true visualization_areas: type: array items: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS - TABLE_VALUE_CELLS - ADVANCED_CHART_LABELS description: Visualization areas using this font. nullable: true description: Visualization areas assigned to a font, grouped by org context. ErrorResponse: type: object properties: error: type: object nullable: true StyleChartColorPalette: type: object properties: colors: type: array items: $ref: '#/components/schemas/StyleColorEntry' description: Ordered array of 8 color entries. nullable: true disable_color_rotation: type: boolean description: When true, automatic color rotation across chart data series is disabled. nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Chart color palette configuration for a specific scope. ConversationMessage: type: object required: - message_id - timestamp_in_millis properties: message_id: type: string description: 'Stable identifier for the turn. For liveboard-started synthetic first turns, this is the root node identifier.' timestamp_in_millis: type: object description: Milliseconds since Unix epoch for the turn. user_prompt: $ref: '#/components/schemas/UserPrompt' description: 'User-authored prompt that started the turn: the user''s message and any files or connector resources attached to it. Null for liveboard-started synthetic first turns.' nullable: true response_items: type: array items: type: object description: 'Agent-side output produced in response to this turn. Empty array for in-progress turns where the agent has not yet produced output.' nullable: true description: 'One conversational exchange: an optional user prompt (message and attachments), followed by the agent''s response items for that turn.' TableVisualizationFontRecord: type: object properties: visualization_area: type: string enum: - TABLE_VALUE_CELLS description: Table visualization area. nullable: true font_id: type: string description: 'UUID of the font assigned to this area. Null when the system default font is active.' nullable: true font_name: type: string description: 'Display name of the font assigned to this area. Null when the system default font is active.' nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Font assignment for a table visualization area in the response. AdvancedChartFontAssignmentInput: type: object required: - visualization_area - font_identifier properties: visualization_area: type: string enum: - ADVANCED_CHART_LABELS description: 'Advanced chart visualization area to assign the font to.
Version: 26.7.0.cl or later' font_identifier: type: string description: 'UUID or name of the font to assign to this area.
Version: 26.7.0.cl or later' description: Font assignment for a single advanced chart visualization area. StyleLogoSlot: type: object properties: id: type: string description: UUID of the active logo. nullable: true is_overridden: type: boolean description: 'True if a custom logo is uploaded at this scope. False if the system default or cluster logo is active.' nullable: true description: Status of a single logo slot. StyleFontUploadData: type: object required: - id - name properties: id: type: string description: Unique UUID identifier of the uploaded font. name: type: string description: Display name of the uploaded font. description: Font data returned after a successful upload. UpdateConversationRequest: type: object properties: title: description: 'New display title for the conversation. Omit to leave the title unchanged.' type: string UserPrompt: type: object properties: message: $ref: '#/components/schemas/UserMessage' description: User query that started the turn. Null for liveboard-started synthetic first turns. nullable: true attachments: type: array items: type: object description: 'Files or connector resources attached to the user message. Empty array when there are no attachments.' nullable: true description: 'User-authored prompt for a conversation turn: the user''s text message and any files or connector resources attached to it.' StyleColorEntryInput: type: object required: - primary properties: primary: type: string description: Primary color as a 6-digit hex string (e.g. "#2359B6"). Required. secondary: type: array items: type: string description: 'Array of exactly 4 secondary shade hex strings. If omitted, the server auto-generates 4 shades from the primary color. If provided, must contain exactly 4 valid 6-digit hex color strings.' nullable: true description: A single color entry in the chart color palette. VisualizationFontsInput: type: object properties: chart_visualization_fonts: type: array items: $ref: '#/components/schemas/ChartFontAssignmentInput' description: 'Font assignments for chart visualization areas. Provide only the areas to update; omitted areas remain unchanged.' nullable: true table_visualization_fonts: type: array items: $ref: '#/components/schemas/TableFontAssignmentInput' description: 'Font assignments for table visualization areas. Provide only the areas to update; omitted areas remain unchanged.' nullable: true advanced_chart_visualization_fonts: type: array items: $ref: '#/components/schemas/AdvancedChartFontAssignmentInput' description: 'Font assignments for advanced chart visualization areas. Provide only the areas to update; omitted areas remain unchanged.
Version: 26.7.0.cl or later' nullable: true description: Font assignments grouped by visualization type. StyleColorPaletteInput: type: object properties: colors: type: array items: $ref: '#/components/schemas/StyleColorEntryInput' description: Ordered array of exactly 8 color entries defining the chart color palette. nullable: true disable_color_rotation: type: boolean description: When true, disables automatic color rotation across chart data series. nullable: true description: Chart color palette configuration. DataSourceEntry: type: object required: - id - name properties: id: type: string description: Unique identifier of the data source. name: type: string description: Display name of the data source. description: A data source associated with a conversation, returned as a typed entry. AnswerDetails: type: object properties: title: type: string description: Display title of the answer. nullable: true description: type: string description: Description of the answer. nullable: true session_identifier: type: string description: Unique identifier of the session. nullable: true generation_number: type: integer format: int32 description: Generation number of the answer. nullable: true tokens: type: array items: type: string description: Ordered list of TML token strings that make up the answer query. nullable: true visualization_type: type: string enum: - Chart - CHART - Table - TABLE - Undefined - UNDEFINED description: Visualization type for the answer. nullable: true formulas: type: array items: type: string description: List of formulas used in the answer. nullable: true parameters: type: array items: type: string description: List of parameters used in the answer. nullable: true sub_queries: type: array items: type: object description: List of sub-queries used in the answer. nullable: true ac_state: $ref: '#/components/schemas/ACState' description: Agent context state for the answer. nullable: true UpdateStyleFontRequest: type: object properties: scope: description: 'Scope of the font library containing this font. CLUSTER targets the cluster-level library. ORG targets the authenticated user''s org library. Defaults to ORG if omitted.' default: ORG type: string enum: - CLUSTER - ORG name: description: New display name for the font. type: string weight: description: 'New weight for the font. Supported values: NORMAL, LIGHT, BOLD.' type: string enum: - NORMAL - LIGHT - BOLD style: description: 'New style for the font. Supported values: NORMAL, ITALIC, OBLIQUE.' type: string enum: - NORMAL - ITALIC - OBLIQUE color: description: 'New color for the font as a 6-digit hex string (e.g. "#333333"). Returns an error if the value is malformed.' type: string StyleLogoStatus: type: object properties: default_logo: $ref: '#/components/schemas/StyleLogoSlot' description: 'Status of the DEFAULT logo slot (square app icon and favicon; recommended 140x140 px).' nullable: true wide_logo: $ref: '#/components/schemas/StyleLogoSlot' description: 'Status of the WIDE logo slot (horizontal top nav bar logo; recommended 230x45 px).' nullable: true description: Logo status per slot. SearchStyleFontsRequest: type: object properties: scope: description: 'Scope of the font library to search. CLUSTER searches the cluster-level library. ORG searches the authenticated user''s org library. Returns both Cluster and Org level font if omitted.' type: string enum: - CLUSTER - ORG font_identifier: description: Filter by UUID or name of a specific font. type: string name_pattern: description: Filter by font display name. Supports partial, case-insensitive matching. type: string include_font_assignments: description: 'When true, includes visualization areas this font is assigned to in the response. Defaults to false if omitted.' default: false type: boolean nullable: true CodeExecutionFileMetadata: type: object required: - file_id - expired properties: file_id: type: string description: 'Unique identifier of the code-execution-generated file. Stable across conversation turns.' display_name: type: string description: Human-readable file name. nullable: true file_type: type: string description: 'File type hint. Either a MIME string (e.g. `text/csv`) or an extension (e.g. `csv`).' nullable: true created_time_in_millis: type: object description: Milliseconds since Unix epoch when the file was created. nullable: true expired: type: boolean description: True when the file is no longer downloadable (storage expired or evicted). description: 'Sanitized public metadata for a code-execution-generated file. Internal storage identifiers (e.g. Azure blob ids) are deliberately not exposed.' StyleResetOptionsInput: type: object properties: style: type: array items: type: string enum: - CHART_COLOR_PALETTE - EMBEDDED_FOOTER_TEXT - NAV_PANEL_COLOR - DEFAULT_LOGO - WIDE_LOGO description: 'Style fields to reset. Supported values: CHART_COLOR_PALETTE, EMBEDDED_FOOTER_TEXT, NAV_PANEL_COLOR, DEFAULT_LOGO, WIDE_LOGO.' nullable: true visualization_areas: type: array items: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS - TABLE_VALUE_CELLS - ADVANCED_CHART_LABELS description: 'Visualization areas whose font assignments should revert to the system default font.' nullable: true description: Fields to revert to defaults when operation is RESET. ConversationMessageResponse: type: object properties: messages: type: array items: $ref: '#/components/schemas/ConversationMessage' description: Ordered conversation messages. Empty array when the conversation has no messages. nullable: true code_execution_files: type: array items: $ref: '#/components/schemas/CodeExecutionFileMetadata' description: 'Sanitized code-execution file metadata for files referenced by this conversation. Empty array when the conversation has no code-execution files.' nullable: true description: 'Response body of getConversation. `messages` is ordered oldest to newest. `code_execution_files` is a list of sanitized code-execution file metadata entries, keyed in upstream by `file_id`.' DeleteStyleFontsRequest: type: object properties: scope: description: 'Scope of the font library to delete from. CLUSTER deletes from the cluster-level library. ORG deletes from the authenticated user''s org library. Defaults to ORG if omitted.' default: ORG type: string enum: - CLUSTER - ORG font_identifiers: description: 'UUIDs or names of the fonts to delete. At least one identifier is required.' type: array items: type: string dry_run: description: 'When true, returns affected assignments without applying the deletion. Use this to preview the impact before committing. Defaults to true if omitted.' default: true type: boolean nullable: true required: - font_identifiers ChartVisualizationFontRecord: type: object properties: visualization_area: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS description: Chart visualization area. nullable: true font_id: type: string description: 'UUID of the font assigned to this area. Null when the system default font is active.' nullable: true font_name: type: string description: 'Display name of the font assigned to this area. Null when the system default font is active.' nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Font assignment for a chart visualization area in the response. AdvancedChartVisualizationFontRecord: type: object properties: visualization_area: type: string enum: - ADVANCED_CHART_LABELS description: Advanced chart visualization area. nullable: true font_id: type: string description: 'UUID of the font assigned to this area. Null when the system default font is active.' nullable: true font_name: type: string description: 'Display name of the font assigned to this area. Null when the system default font is active.' nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Font assignment for an advanced chart visualization area in the response. SearchStyleCustomizationsRequest: type: object properties: scope: description: 'Scope of the style preferences to retrieve. CLUSTER returns cluster-level defaults. ORG returns preferences for the authenticated user''s org, which may override cluster defaults. If not specified, returns both cluster and org preferences based on user privileges.' type: string enum: - CLUSTER - ORG ExportStyleLogosRequest: type: object properties: scope: description: 'Scope of the logos to export. CLUSTER exports cluster-level logos. ORG exports logos for the authenticated user''s org, falling back to cluster or defaults if no custom logo is set. Defaults to ORG if omitted.' default: ORG type: string enum: - CLUSTER - ORG DeleteManualTranslationsRequest: type: object properties: scope: description: 'Org scope for the delete. `ORG` (default) targets the calling user''s current org. `CLUSTER` targets the All-Org context.' default: ORG type: string enum: - ORG - CLUSTER StyleVisualizationFonts: type: object properties: chart_visualization_fonts: type: array items: $ref: '#/components/schemas/ChartVisualizationFontRecord' description: Font assignments for chart visualization areas. nullable: true table_visualization_fonts: type: array items: $ref: '#/components/schemas/TableVisualizationFontRecord' description: Font assignments for table visualization areas. nullable: true advanced_chart_visualization_fonts: type: array items: $ref: '#/components/schemas/AdvancedChartVisualizationFontRecord' description: 'Font assignments for advanced chart visualization areas.
Version: 26.7.0.cl or later' nullable: true description: Effective font assignments per visualization type. LoadAnswerResponse: type: object properties: answer: $ref: '#/components/schemas/AnswerDetails' description: Answer details for the loaded message. nullable: true AgentConversationList: type: object required: - conversation_identifier properties: conversation_identifier: type: string description: Unique identifier of the conversation. conversation_title: type: string description: Display title of the conversation. nullable: true created_at: type: string description: ISO 8601 timestamp when the conversation was created. nullable: true updated_at: type: string description: ISO 8601 timestamp when the conversation was last updated. nullable: true data_source_identifiers: type: array items: type: string description: Unique identifiers of the data sources associated with the conversation. nullable: true data_source_names: type: array items: $ref: '#/components/schemas/DataSourceEntry' description: Data sources associated with the conversation, each with an `id` and `name`. nullable: true description: A saved agent conversation item returned in list responses. UserMessage: type: object required: - message_id - content properties: message_id: type: string description: Unique identifier of the user message. content: type: string description: Text body of the user query. description: 'User-authored text message that begins a conversation turn. Null when the turn is a synthetic liveboard-started first turn.' ExportManualTranslationsRequest: type: object properties: scope: description: 'Org scope for the export. `ORG` (default) targets the calling user''s current org. `CLUSTER` targets the All-Org context.' default: ORG type: string enum: - ORG - CLUSTER StylePreference: type: object properties: scope: type: string enum: - CLUSTER - ORG description: Scope at which these style preferences apply. nullable: true org: $ref: '#/components/schemas/StyleOrgInfo' description: Org associated with these preferences. Present only when scope is ORG. nullable: true navigation_panel: $ref: '#/components/schemas/StyleNavigationPanel' description: Navigation panel color configuration. nullable: true chart_color_palette: $ref: '#/components/schemas/StyleChartColorPalette' description: Chart color palette configuration. nullable: true embedded_footer_text: $ref: '#/components/schemas/StyleEmbeddedFooterText' description: Embedded footer text configuration. nullable: true logo: $ref: '#/components/schemas/StyleLogoStatus' description: Logo status per slot. nullable: true visualization_fonts: $ref: '#/components/schemas/StyleVisualizationFonts' description: Effective font assignments per visualization area. nullable: true description: Style preferences for a single scope entry. TableFontAssignmentInput: type: object required: - visualization_area - font_identifier properties: visualization_area: type: string enum: - TABLE_VALUE_CELLS description: Table visualization area to assign the font to. font_identifier: type: string description: UUID or name of the font to assign to this area. description: Font assignment for a single table visualization area. WebhookStorageConfigInfo: type: object required: - storage_type - provider - config properties: storage_type: type: string enum: - OBJECT_STORAGE description: Type of storage destination. provider: type: string enum: - AWS_S3 - GCP_GCS description: Storage destination provider. config: $ref: '#/components/schemas/WebhookStorageSetupConfig' description: Setup configuration specific to the upload path. description: Cluster-level storage setup information for configuring customer-managed storage. WebhookStorageSetupConfig: type: object required: - config_type - setup_instructions properties: config_type: type: string enum: - AWS_TO_S3_STORAGE - GCP_TO_S3_STORAGE - GCP_TO_GCS_STORAGE description: 'Discriminator identifying the upload path. One of: AWS_TO_S3_STORAGE, GCP_TO_S3_STORAGE, GCP_TO_GCS_STORAGE.' aws_account_id: type: string description: AWS Account ID of the platform. Populated for AWS_TO_S3_STORAGE. Include in your IAM role trust policy. nullable: true gcp_service_account_id: type: string description: GCP service account numeric ID of the platform (the 'sub' claim in OIDC tokens). Populated for GCP_TO_S3_STORAGE. nullable: true oidc_provider: type: string description: OIDC identity provider URL. Populated for GCP_TO_S3_STORAGE; always 'accounts.google.com' for GCP. nullable: true trust_policy_template: type: object description: Sample IAM trust policy JSON. Populated for AWS_TO_S3_STORAGE and GCP_TO_S3_STORAGE. nullable: true service_account_email: type: string description: GCP service account email of the platform. Populated for GCP_TO_GCS_STORAGE. Grant it roles/iam.serviceAccountTokenCreator on your service account. nullable: true required_role: type: string description: IAM role the customer must grant to the platform service account. Populated for GCP_TO_GCS_STORAGE. nullable: true setup_instructions: type: array items: type: string description: Step-by-step instructions to configure the storage destination. description: 'Storage setup configuration for a specific upload path. The populated fields depend on config_type: AWS_TO_S3_STORAGE: aws_account_id, trust_policy_template, setup_instructions. GCP_TO_S3_STORAGE: gcp_service_account_id, oidc_provider, trust_policy_template, setup_instructions. GCP_TO_GCS_STORAGE: service_account_email, required_role, setup_instructions.' securitySchemes: bearerAuth: type: http scheme: bearer x-roles: - name: 26.2.0.cl id: 26.2.0.cl tags: - 26.2.0.cl description: Roles for version 26.2.0.cl - name: 10.4.0.cl id: 10.4.0.cl tags: - 10.4.0.cl description: Roles for version 10.4.0.cl - name: 26.7.0.cl id: 26.7.0.cl tags: - 26.7.0.cl description: Roles for version 26.7.0.cl - name: 26.8.0.cl id: 26.8.0.cl tags: - 26.8.0.cl description: Roles for version 26.8.0.cl - name: 26.6.0.cl id: 26.6.0.cl tags: - 26.6.0.cl description: Roles for version 26.6.0.cl - name: 10.15.0.cl id: 10.15.0.cl tags: - 10.15.0.cl description: Roles for version 10.15.0.cl - name: 10.13.0.cl id: 10.13.0.cl tags: - 10.13.0.cl description: Roles for version 10.13.0.cl - name: 26.9.0.cl id: 26.9.0.cl tags: - 26.9.0.cl description: Roles for version 26.9.0.cl - name: 10.7.0.cl id: 10.7.0.cl tags: - 10.7.0.cl description: Roles for version 10.7.0.cl - name: 26.5.0.cl id: 26.5.0.cl tags: - 26.5.0.cl description: Roles for version 26.5.0.cl - name: 9.0.0.cl id: 9.0.0.cl tags: - 9.0.0.cl description: Roles for version 9.0.0.cl - name: 9.4.0.cl id: 9.4.0.cl tags: - 9.4.0.cl description: Roles for version 9.4.0.cl - name: 9.12.0.cl id: 9.12.0.cl tags: - 9.12.0.cl description: Roles for version 9.12.0.cl - name: 26.4.0.cl id: 26.4.0.cl tags: - 26.4.0.cl description: Roles for version 26.4.0.cl - name: 10.12.0.cl id: 10.12.0.cl tags: - 10.12.0.cl description: Roles for version 10.12.0.cl - name: 9.2.0.cl id: 9.2.0.cl tags: - 9.2.0.cl description: Roles for version 9.2.0.cl - name: 9.9.0.cl id: 9.9.0.cl tags: - 9.9.0.cl description: Roles for version 9.9.0.cl - name: 9.6.0.cl id: 9.6.0.cl tags: - 9.6.0.cl description: Roles for version 9.6.0.cl - name: 10.10.0.cl id: 10.10.0.cl tags: - 10.10.0.cl description: Roles for version 10.10.0.cl - name: 10.6.0.cl id: 10.6.0.cl tags: - 10.6.0.cl description: Roles for version 10.6.0.cl - name: 10.3.0.cl id: 10.3.0.cl tags: - 10.3.0.cl description: Roles for version 10.3.0.cl - name: 10.1.0.cl id: 10.1.0.cl tags: - 10.1.0.cl description: Roles for version 10.1.0.cl - name: 10.9.0.cl id: 10.9.0.cl tags: - 10.9.0.cl description: Roles for version 10.9.0.cl - name: 10.8.0.cl id: 10.8.0.cl tags: - 10.8.0.cl description: Roles for version 10.8.0.cl - name: 9.5.0.cl id: 9.5.0.cl tags: - 9.5.0.cl description: Roles for version 9.5.0.cl - name: 26.3.0.cl id: 26.3.0.cl tags: - 26.3.0.cl description: Roles for version 26.3.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 tags: - 9.7.0.cl description: Roles for version 9.7.0.cl