From 425dc21b39ed8514e65337855a2777eaeed89598 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Mon, 12 Jan 2026 17:18:24 +0530 Subject: [PATCH 01/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 66 ++++++++++++++------------------- 1 file changed, 28 insertions(+), 38 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 054a56a88..4c2c0b6ba 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -1296,7 +1296,7 @@ } }, "parameter_values": { - "description": "Allows developers to assign parameter values for existing parameters to a user at login. Note: Using parameter values for row level security use cases will ultimately be deprecated. Developers can still pass data security values via the Custom Access token via the variable_values field and create RLS rules based on custom variables. Please refer to the [ABAC via RLS documentation](https://developers.thoughtspot.com/docs/abac-user-parameters) for more details.", + "description": "Parameter values.", "type": "array", "items": { "$ref": "#/components/schemas/ParameterValues" @@ -1310,7 +1310,7 @@ } }, "objects": { - "description": "Objects on which the parameter and variable values should be applied to", + "description": "Objects on which the filter rules and parameters values should be applied to", "type": "array", "items": { "$ref": "#/components/schemas/TokenAccessScopeObject" @@ -5908,8 +5908,7 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -6270,8 +6269,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -6480,8 +6478,7 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -9134,8 +9131,7 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -9366,8 +9362,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -9530,8 +9525,7 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } } @@ -14697,8 +14691,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -16490,7 +16483,7 @@ ] }, "storage_destination": { - "description": "Configuration for storage destination
Version: 26.3.0.cl or later", + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", "allOf": [ { "$ref": "#/components/schemas/StorageDestinationInput" @@ -17069,7 +17062,7 @@ ] }, "storage_destination": { - "description": "Configuration for storage destination
Version: 26.3.0.cl or later", + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", "allOf": [ { "$ref": "#/components/schemas/StorageDestinationInput" @@ -20150,8 +20143,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] }, "description": "Privileges granted to the role." @@ -21393,8 +21385,7 @@ "required": [ "bucket_name", "region", - "role_arn", - "external_id" + "role_arn" ], "properties": { "bucket_name": { @@ -21411,7 +21402,8 @@ }, "external_id": { "type": "string", - "description": "External ID for secure cross-account role assumption." + "description": "External ID for secure cross-account role assumption.", + "nullable": true }, "path_prefix": { "type": "string", @@ -22586,8 +22578,7 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] }, "description": "Privileges that will be assigned to the group.", @@ -23592,8 +23583,7 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] }, "description": "Privileges granted to the role." @@ -25192,11 +25182,11 @@ "enum": [ "AWS_S3" ], - "description": "Type of storage destination (e.g., AWS_S3)." + "description": "Type of storage destination.\nExample: \"AWS_S3\"" }, "storage_config": { "$ref": "#/components/schemas/StorageConfigInput", - "description": "Storage-specific configuration settings." + "description": "Storage-specific configuration settings.\nExample: {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}" } }, "description": "Input type for storage destination configuration." @@ -25206,7 +25196,7 @@ "properties": { "aws_s3_config": { "$ref": "#/components/schemas/AwsS3ConfigInput", - "description": "AWS S3 storage configuration.", + "description": "AWS S3 storage configuration.\nExample: {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}", "nullable": true } }, @@ -25217,29 +25207,29 @@ "required": [ "bucket_name", "region", - "role_arn", - "external_id" + "role_arn" ], "properties": { "bucket_name": { "type": "string", - "description": "Name of the S3 bucket where webhook payloads will be stored." + "description": "Name of the S3 bucket where webhook payloads will be stored.\nExample: \"my-webhook-files\"" }, "region": { "type": "string", - "description": "AWS region where the S3 bucket is located." + "description": "AWS region where the S3 bucket is located.\nExample: \"us-west-2\"" }, "role_arn": { "type": "string", - "description": "ARN of the IAM role to assume for S3 access." + "description": "ARN of the IAM role to assume for S3 access.\nExample: \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\"" }, "external_id": { "type": "string", - "description": "External ID for secure cross-account role assumption." + "description": "External ID for secure cross-account role assumption.\nExample: \"ts-webhook-a1b2c3d4-7890\"", + "nullable": true }, "path_prefix": { "type": "string", - "description": "Optional path prefix for organizing objects within the bucket.", + "description": "Optional path prefix for organizing objects within the bucket.\nExample: \"thoughtspot-webhooks/\"", "nullable": true } }, @@ -25355,4 +25345,4 @@ } } ] -} \ No newline at end of file +} From 07f585fd4afa039314d8047a66a90f3d5c176fa9 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 14 Jan 2026 11:10:00 +0530 Subject: [PATCH 02/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 121 ++++++++++++++++++++++++++++---- 1 file changed, 109 insertions(+), 12 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 41bc2d9c3..444557135 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -1296,7 +1296,7 @@ } }, "parameter_values": { - "description": "Parameter values.", + "description": "Allows developers to assign parameter values for existing parameters to a user at login. Note: Using parameter values for row level security use cases will ultimately be deprecated. Developers can still pass data security values via the Custom Access token via the variable_values field and create RLS rules based on custom variables. Please refer to the [ABAC via RLS documentation](https://developers.thoughtspot.com/docs/abac-user-parameters) for more details.", "type": "array", "items": { "$ref": "#/components/schemas/ParameterValues" @@ -1310,7 +1310,7 @@ } }, "objects": { - "description": "Objects on which the filter rules and parameters values should be applied to", + "description": "Objects on which the parameter and variable values should be applied to", "type": "array", "items": { "$ref": "#/components/schemas/TokenAccessScopeObject" @@ -5908,7 +5908,8 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -6269,7 +6270,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -6478,7 +6480,8 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -9131,7 +9134,8 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -9362,7 +9366,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -9525,7 +9530,8 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } } @@ -14691,7 +14697,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -20151,7 +20158,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] }, "description": "Privileges granted to the role." @@ -21210,6 +21218,11 @@ "$ref": "#/components/schemas/StorageDestination", "description": "Storage destination configuration for webhook payload delivery.", "nullable": true + }, + "storage_setup_info": { + "$ref": "#/components/schemas/StorageSetupInfo", + "description": "Setup information for customer-managed storage configuration.\nThis field is populated when storage_destination is configured with AWS_S3.\nIt provides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.
Version: 26.3.0.cl or later", + "nullable": true } } }, @@ -21426,6 +21439,88 @@ }, "description": "AWS S3 storage configuration details." }, + "StorageSetupInfo": { + "type": "object", + "properties": { + "cluster_type": { + "type": "string", + "enum": [ + "AWS", + "GCP" + ], + "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method will be used for S3 access.", + "nullable": true + }, + "aws_assume_role_setup": { + "$ref": "#/components/schemas/AWSAssumeRoleSetup", + "description": "Setup information for AWS clusters using STS AssumeRole.\nOnly populated when cluster_type is AWS.", + "nullable": true + }, + "gcp_web_identity_setup": { + "$ref": "#/components/schemas/GCPWebIdentitySetup", + "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nOnly populated when cluster_type is GCP.", + "nullable": true + } + }, + "description": "Setup information for customer-managed storage configuration.\nThis is populated when storage_destination is configured with AWS_S3.\nIt provides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets." + }, + "AWSAssumeRoleSetup": { + "type": "object", + "required": [ + "thoughtspot_aws_account_id", + "trust_policy_template" + ], + "properties": { + "thoughtspot_aws_account_id": { + "type": "string", + "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role." + }, + "trust_policy_template": { + "type": "string", + "description": "Sample IAM trust policy JSON that you should attach to your IAM role.\nReplace the placeholder values with your actual External ID." + }, + "setup_instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Step-by-step instructions to configure your AWS IAM role.", + "nullable": true + } + }, + "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account." + }, + "GCPWebIdentitySetup": { + "type": "object", + "required": [ + "thoughtspot_gcp_service_account_id", + "oidc_provider", + "trust_policy_template" + ], + "properties": { + "thoughtspot_gcp_service_account_id": { + "type": "string", + "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition." + }, + "oidc_provider": { + "type": "string", + "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM." + }, + "trust_policy_template": { + "type": "string", + "description": "Sample IAM trust policy JSON for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role." + }, + "setup_instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.", + "nullable": true + } + }, + "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access." + }, "WebhookPagination": { "type": "object", "required": [ @@ -22599,7 +22694,8 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] }, "description": "Privileges that will be assigned to the group.", @@ -23604,7 +23700,8 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] }, "description": "Privileges granted to the role." From d0f60ffa48a70c9d413519cfd2299dca2d8f4479 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 14 Jan 2026 11:14:35 +0530 Subject: [PATCH 03/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 444557135..b4b16f841 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -21476,8 +21476,8 @@ "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role." }, "trust_policy_template": { - "type": "string", - "description": "Sample IAM trust policy JSON that you should attach to your IAM role.\nReplace the placeholder values with your actual External ID." + "type": "object", + "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nStructure: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"...\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"...\" } } }] }" }, "setup_instructions": { "type": "array", @@ -21507,8 +21507,8 @@ "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM." }, "trust_policy_template": { - "type": "string", - "description": "Sample IAM trust policy JSON for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role." + "type": "object", + "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nStructure: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"Federated\": \"arn:aws:iam:::oidc-provider/accounts.google.com\" }, \"Action\": \"sts:AssumeRoleWithWebIdentity\", \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"...\" } } }] }" }, "setup_instructions": { "type": "array", From 39cd8098adde3c5119e025558389f0d0cea89364 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 14 Jan 2026 11:30:30 +0530 Subject: [PATCH 04/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index b4b16f841..2d973b3db 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -21442,27 +21442,46 @@ "StorageSetupInfo": { "type": "object", "properties": { + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "The type of customer's storage destination.\nIndicates which storage backend the setup info is for.", + "nullable": true + }, "cluster_type": { "type": "string", "enum": [ "AWS", "GCP" ], - "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method will be used for S3 access.", + "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method will be used for storage access.", "nullable": true }, + "aws_s3_setup": { + "$ref": "#/components/schemas/AWSS3SetupInfo", + "description": "Setup information for accessing customer's AWS S3 bucket.\nContains cluster-specific setup details based on where ThoughtSpot is deployed.", + "nullable": true + } + }, + "description": "Setup information for customer-managed storage configuration.\nThis field is populated when storage_destination is configured.\nIt provides ThoughtSpot's identity information and configuration\nrequired for customers to set up cross-cloud/cross-account access to their storage.\nThe setup info varies based on:\n- storage_type: The customer's storage destination (currently AWS_S3)\n- cluster_type: Where ThoughtSpot is deployed (AWS, GCP)" + }, + "AWSS3SetupInfo": { + "type": "object", + "properties": { "aws_assume_role_setup": { "$ref": "#/components/schemas/AWSAssumeRoleSetup", - "description": "Setup information for AWS clusters using STS AssumeRole.\nOnly populated when cluster_type is AWS.", + "description": "Setup info when ThoughtSpot cluster is on AWS (uses STS AssumeRole).", "nullable": true }, "gcp_web_identity_setup": { "$ref": "#/components/schemas/GCPWebIdentitySetup", - "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nOnly populated when cluster_type is GCP.", + "description": "Setup info when ThoughtSpot cluster is on GCP (uses STS AssumeRoleWithWebIdentity).", "nullable": true } }, - "description": "Setup information for customer-managed storage configuration.\nThis is populated when storage_destination is configured with AWS_S3.\nIt provides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets." + "description": "Setup information for accessing customer's AWS S3 bucket.\nContains cluster-specific setup details based on where ThoughtSpot is deployed.\nOnly one of the nested setup objects will be populated based on cluster_type." }, "AWSAssumeRoleSetup": { "type": "object", From b78525d410df333ab74c8e906e1993d67d9ec17a Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 14 Jan 2026 11:52:07 +0530 Subject: [PATCH 05/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 177 +++++++++++++++++++++----------- 1 file changed, 117 insertions(+), 60 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 2d973b3db..4bc0308b2 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -180,6 +180,14 @@ "9.7.0.cl" ], "description": "Roles for version 9.7.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" } ], "tags": [], @@ -16490,7 +16498,7 @@ ] }, "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Beta Version: 26.4.0.cl or later", "allOf": [ { "$ref": "#/components/schemas/StorageDestinationInput" @@ -16815,6 +16823,79 @@ } } }, + "/api/rest/2.0/webhooks/{webhook_identifier}/storage-setup": { + "get": { + "operationId": "getWebhookStorageSetup", + "description": "Beta Version: 26.4.0.cl or later", + "tags": [ + "Webhooks", + "26.4.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "webhook_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the webhook configuration." + } + ], + "responses": { + "200": { + "description": "Fetch current session user detail successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageSetupInfo" + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/webhooks/search": { "post": { "operationId": "searchWebhookConfigurations", @@ -17069,7 +17150,7 @@ ] }, "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Beta Version: 26.4.0.cl or later", "allOf": [ { "$ref": "#/components/schemas/StorageDestinationInput" @@ -21218,11 +21299,6 @@ "$ref": "#/components/schemas/StorageDestination", "description": "Storage destination configuration for webhook payload delivery.", "nullable": true - }, - "storage_setup_info": { - "$ref": "#/components/schemas/StorageSetupInfo", - "description": "Setup information for customer-managed storage configuration.\nThis field is populated when storage_destination is configured with AWS_S3.\nIt provides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.
Version: 26.3.0.cl or later", - "nullable": true } } }, @@ -21439,49 +21515,60 @@ }, "description": "AWS S3 storage configuration details." }, - "StorageSetupInfo": { + "WebhookPagination": { "type": "object", + "required": [ + "record_offset", + "record_size", + "total_count", + "has_more" + ], "properties": { - "storage_type": { - "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "The type of customer's storage destination.\nIndicates which storage backend the setup info is for.", - "nullable": true + "record_offset": { + "type": "integer", + "format": "int32", + "description": "The starting record number from where the records are included." }, + "record_size": { + "type": "integer", + "format": "int32", + "description": "The number of records included in the response." + }, + "total_count": { + "type": "integer", + "format": "int32", + "description": "Total number of webhook configurations available." + }, + "has_more": { + "type": "boolean", + "description": "Indicates whether more records are available beyond the current response." + } + } + }, + "StorageSetupInfo": { + "type": "object", + "properties": { "cluster_type": { "type": "string", "enum": [ "AWS", "GCP" ], - "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method will be used for storage access.", + "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method is used for S3 access.", "nullable": true }, - "aws_s3_setup": { - "$ref": "#/components/schemas/AWSS3SetupInfo", - "description": "Setup information for accessing customer's AWS S3 bucket.\nContains cluster-specific setup details based on where ThoughtSpot is deployed.", - "nullable": true - } - }, - "description": "Setup information for customer-managed storage configuration.\nThis field is populated when storage_destination is configured.\nIt provides ThoughtSpot's identity information and configuration\nrequired for customers to set up cross-cloud/cross-account access to their storage.\nThe setup info varies based on:\n- storage_type: The customer's storage destination (currently AWS_S3)\n- cluster_type: Where ThoughtSpot is deployed (AWS, GCP)" - }, - "AWSS3SetupInfo": { - "type": "object", - "properties": { "aws_assume_role_setup": { "$ref": "#/components/schemas/AWSAssumeRoleSetup", - "description": "Setup info when ThoughtSpot cluster is on AWS (uses STS AssumeRole).", + "description": "Setup info when ThoughtSpot cluster is on AWS.\nUses STS AssumeRole for cross-account S3 access.\nOnly populated when cluster_type is AWS.", "nullable": true }, "gcp_web_identity_setup": { "$ref": "#/components/schemas/GCPWebIdentitySetup", - "description": "Setup info when ThoughtSpot cluster is on GCP (uses STS AssumeRoleWithWebIdentity).", + "description": "Setup info when ThoughtSpot cluster is on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nOnly populated when cluster_type is GCP.", "nullable": true } }, - "description": "Setup information for accessing customer's AWS S3 bucket.\nContains cluster-specific setup details based on where ThoughtSpot is deployed.\nOnly one of the nested setup objects will be populated based on cluster_type." + "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nOnly one of aws_assume_role_setup or gcp_web_identity_setup will be populated\nbased on the ThoughtSpot cluster type." }, "AWSAssumeRoleSetup": { "type": "object", @@ -21540,36 +21627,6 @@ }, "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access." }, - "WebhookPagination": { - "type": "object", - "required": [ - "record_offset", - "record_size", - "total_count", - "has_more" - ], - "properties": { - "record_offset": { - "type": "integer", - "format": "int32", - "description": "The starting record number from where the records are included." - }, - "record_size": { - "type": "integer", - "format": "int32", - "description": "The number of records included in the response." - }, - "total_count": { - "type": "integer", - "format": "int32", - "description": "Total number of webhook configurations available." - }, - "has_more": { - "type": "boolean", - "description": "Indicates whether more records are available beyond the current response." - } - } - }, "GenericInfo": { "type": "object", "properties": { From e0912e58620a909e1c10c68b0c20662e2fc62526 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 14 Jan 2026 11:58:24 +0530 Subject: [PATCH 06/23] example update for webhook storage --- api-spec/openapiSpecv3-2_0.json | 93 ++++++++++++++++++++++++++++++--- 1 file changed, 87 insertions(+), 6 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 4bc0308b2..10906fab1 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -21555,7 +21555,8 @@ "GCP" ], "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method is used for S3 access.", - "nullable": true + "nullable": true, + "example": "AWS" }, "aws_assume_role_setup": { "$ref": "#/components/schemas/AWSAssumeRoleSetup", @@ -21568,7 +21569,37 @@ "nullable": true } }, - "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nOnly one of aws_assume_role_setup or gcp_web_identity_setup will be populated\nbased on the ThoughtSpot cluster type." + "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nOnly one of aws_assume_role_setup or gcp_web_identity_setup will be populated\nbased on the ThoughtSpot cluster type.", + "example": { + "cluster_type": "AWS", + "aws_assume_role_setup": { + "thoughtspot_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": "your-external-id" + } + } + } + ] + }, + "setup_instructions": [ + "1. Create an IAM role in your AWS account", + "2. Copy the trust policy template and attach it to your role", + "3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role", + "4. Use the role ARN in your webhook storage configuration" + ] + }, + "gcp_web_identity_setup": null + } }, "AWSAssumeRoleSetup": { "type": "object", @@ -21579,11 +21610,29 @@ "properties": { "thoughtspot_aws_account_id": { "type": "string", - "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role." + "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.", + "example": "123456789012" }, "trust_policy_template": { "type": "object", - "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nStructure: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"...\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"...\" } } }] }" + "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nStructure: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"...\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"...\" } } }] }", + "example": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam::123456789012:root" + }, + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "sts:ExternalId": "your-external-id" + } + } + } + ] + } }, "setup_instructions": { "type": "array", @@ -21591,10 +21640,42 @@ "type": "string" }, "description": "Step-by-step instructions to configure your AWS IAM role.", - "nullable": true + "nullable": true, + "example": [ + "1. Create an IAM role in your AWS account", + "2. Copy the trust policy template and attach it to your role", + "3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role", + "4. Use the role ARN in your webhook storage configuration" + ] } }, - "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account." + "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.", + "example": { + "thoughtspot_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": "your-external-id" + } + } + } + ] + }, + "setup_instructions": [ + "1. Create an IAM role in your AWS account", + "2. Copy the trust policy template and attach it to your role", + "3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role", + "4. Use the role ARN in your webhook storage configuration" + ] + } }, "GCPWebIdentitySetup": { "type": "object", From 4089a45b342167a65db6a0eeec4993f8e53c1d5f Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 14 Jan 2026 12:01:56 +0530 Subject: [PATCH 07/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 162 +++++++++++++++++++++++++------- 1 file changed, 128 insertions(+), 34 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 10906fab1..3968ca1ca 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -21569,36 +21569,76 @@ "nullable": true } }, - "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nOnly one of aws_assume_role_setup or gcp_web_identity_setup will be populated\nbased on the ThoughtSpot cluster type.", - "example": { - "cluster_type": "AWS", - "aws_assume_role_setup": { - "thoughtspot_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": "your-external-id" + "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nOnly one of aws_assume_role_setup or gcp_web_identity_setup will be populated\nbased on the ThoughtSpot cluster type.\n\nExample for AWS cluster:\n{\n \"cluster_type\": \"AWS\",\n \"aws_assume_role_setup\": { \"thoughtspot_aws_account_id\": \"123456789012\", ... },\n \"gcp_web_identity_setup\": null\n}\n\nExample for GCP cluster:\n{\n \"cluster_type\": \"GCP\",\n \"aws_assume_role_setup\": null,\n \"gcp_web_identity_setup\": { \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\", ... }\n}", + "examples": { + "aws_cluster_example": { + "summary": "Response when ThoughtSpot is deployed on AWS cluster", + "value": { + "cluster_type": "AWS", + "aws_assume_role_setup": { + "thoughtspot_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": "your-external-id" + } + } } - } - } - ] - }, - "setup_instructions": [ - "1. Create an IAM role in your AWS account", - "2. Copy the trust policy template and attach it to your role", - "3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role", - "4. Use the role ARN in your webhook storage configuration" - ] - }, - "gcp_web_identity_setup": null + ] + }, + "setup_instructions": [ + "1. Create an IAM role in your AWS account", + "2. Copy the trust policy template and attach it to your role", + "3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role", + "4. Use the role ARN in your webhook storage configuration" + ] + }, + "gcp_web_identity_setup": null + } + }, + "gcp_cluster_example": { + "summary": "Response when ThoughtSpot is deployed on GCP cluster", + "value": { + "cluster_type": "GCP", + "aws_assume_role_setup": null, + "gcp_web_identity_setup": { + "thoughtspot_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 ThoughtSpot's 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" + ] + } + } + } } }, "AWSAssumeRoleSetup": { @@ -21687,15 +21727,34 @@ "properties": { "thoughtspot_gcp_service_account_id": { "type": "string", - "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition." + "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.", + "example": "115663769112811637952" }, "oidc_provider": { "type": "string", - "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM." + "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.", + "example": "accounts.google.com" }, "trust_policy_template": { "type": "object", - "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nStructure: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"Federated\": \"arn:aws:iam:::oidc-provider/accounts.google.com\" }, \"Action\": \"sts:AssumeRoleWithWebIdentity\", \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"...\" } } }] }" + "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nStructure: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"Federated\": \"arn:aws:iam:::oidc-provider/accounts.google.com\" }, \"Action\": \"sts:AssumeRoleWithWebIdentity\", \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"...\" } } }] }", + "example": { + "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": { "type": "array", @@ -21703,10 +21762,45 @@ "type": "string" }, "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.", - "nullable": true + "nullable": true, + "example": [ + "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 ThoughtSpot's 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" + ] } }, - "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access." + "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.", + "example": { + "thoughtspot_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 ThoughtSpot's 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" + ] + } }, "GenericInfo": { "type": "object", From 618834889f39ec26f89fe25bada3ea8a0b90a487 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 14 Jan 2026 12:17:05 +0530 Subject: [PATCH 08/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 203 +++----------------------------- 1 file changed, 14 insertions(+), 189 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 3968ca1ca..8a30ac0c1 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -21554,9 +21554,8 @@ "AWS", "GCP" ], - "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method is used for S3 access.", - "nullable": true, - "example": "AWS" + "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method is used for S3 access.\nExample: \"AWS\" or \"GCP\"", + "nullable": true }, "aws_assume_role_setup": { "$ref": "#/components/schemas/AWSAssumeRoleSetup", @@ -21569,77 +21568,7 @@ "nullable": true } }, - "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nOnly one of aws_assume_role_setup or gcp_web_identity_setup will be populated\nbased on the ThoughtSpot cluster type.\n\nExample for AWS cluster:\n{\n \"cluster_type\": \"AWS\",\n \"aws_assume_role_setup\": { \"thoughtspot_aws_account_id\": \"123456789012\", ... },\n \"gcp_web_identity_setup\": null\n}\n\nExample for GCP cluster:\n{\n \"cluster_type\": \"GCP\",\n \"aws_assume_role_setup\": null,\n \"gcp_web_identity_setup\": { \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\", ... }\n}", - "examples": { - "aws_cluster_example": { - "summary": "Response when ThoughtSpot is deployed on AWS cluster", - "value": { - "cluster_type": "AWS", - "aws_assume_role_setup": { - "thoughtspot_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": "your-external-id" - } - } - } - ] - }, - "setup_instructions": [ - "1. Create an IAM role in your AWS account", - "2. Copy the trust policy template and attach it to your role", - "3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role", - "4. Use the role ARN in your webhook storage configuration" - ] - }, - "gcp_web_identity_setup": null - } - }, - "gcp_cluster_example": { - "summary": "Response when ThoughtSpot is deployed on GCP cluster", - "value": { - "cluster_type": "GCP", - "aws_assume_role_setup": null, - "gcp_web_identity_setup": { - "thoughtspot_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 ThoughtSpot's 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" - ] - } - } - } - } + "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nOnly one of aws_assume_role_setup or gcp_web_identity_setup will be populated\nbased on the ThoughtSpot cluster type.\nExample response for AWS cluster:\n{\n \"cluster_type\": \"AWS\",\n \"aws_assume_role_setup\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n },\n \"gcp_web_identity_setup\": null\n}\nExample response for GCP cluster:\n{\n \"cluster_type\": \"GCP\",\n \"aws_assume_role_setup\": null,\n \"gcp_web_identity_setup\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" }, "AWSAssumeRoleSetup": { "type": "object", @@ -21650,72 +21579,22 @@ "properties": { "thoughtspot_aws_account_id": { "type": "string", - "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.", - "example": "123456789012" + "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.\nExample: \"123456789012\"" }, "trust_policy_template": { "type": "object", - "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nStructure: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"...\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"...\" } } }] }", - "example": { - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Principal": { - "AWS": "arn:aws:iam::123456789012:root" - }, - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "sts:ExternalId": "your-external-id" - } - } - } - ] - } + "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nExample: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } } }] }" }, "setup_instructions": { "type": "array", "items": { "type": "string" }, - "description": "Step-by-step instructions to configure your AWS IAM role.", - "nullable": true, - "example": [ - "1. Create an IAM role in your AWS account", - "2. Copy the trust policy template and attach it to your role", - "3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role", - "4. Use the role ARN in your webhook storage configuration" - ] + "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", + "nullable": true } }, - "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.", - "example": { - "thoughtspot_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": "your-external-id" - } - } - } - ] - }, - "setup_instructions": [ - "1. Create an IAM role in your AWS account", - "2. Copy the trust policy template and attach it to your role", - "3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role", - "4. Use the role ARN in your webhook storage configuration" - ] - } + "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" }, "GCPWebIdentitySetup": { "type": "object", @@ -21727,80 +21606,26 @@ "properties": { "thoughtspot_gcp_service_account_id": { "type": "string", - "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.", - "example": "115663769112811637952" + "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.\nExample: \"115663769112811637952\"" }, "oidc_provider": { "type": "string", - "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.", - "example": "accounts.google.com" + "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"" }, "trust_policy_template": { "type": "object", - "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nStructure: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"Federated\": \"arn:aws:iam:::oidc-provider/accounts.google.com\" }, \"Action\": \"sts:AssumeRoleWithWebIdentity\", \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"...\" } } }] }", - "example": { - "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" - } - } - } - ] - } + "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nExample: { \"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": { "type": "array", "items": { "type": "string" }, - "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.", - "nullable": true, - "example": [ - "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 ThoughtSpot's 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" - ] + "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", + "nullable": true } }, - "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.", - "example": { - "thoughtspot_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 ThoughtSpot's 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" - ] - } + "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" }, "GenericInfo": { "type": "object", From 3513819cc664eb46fd15d93a90a7d19ad5e12712 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Fri, 16 Jan 2026 10:31:55 +0530 Subject: [PATCH 09/23] address comment --- api-spec/openapiSpecv3-2_0.json | 63 +++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 8a30ac0c1..6ae6d1e54 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -16498,7 +16498,7 @@ ] }, "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Beta Version: 26.4.0.cl or later", + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", "allOf": [ { "$ref": "#/components/schemas/StorageDestinationInput" @@ -16844,17 +16844,17 @@ ], "responses": { "200": { - "description": "Fetch current session user detail successful.", + "description": "Storage setup information retrieved successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StorageSetupInfo" + "type": "object" } } } }, "400": { - "description": "Invalid request.", + "description": "Bad Request - Webhook does not have storage destination configured", "content": { "application/json": { "schema": { @@ -17150,7 +17150,7 @@ ] }, "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Beta Version: 26.4.0.cl or later", + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", "allOf": [ { "$ref": "#/components/schemas/StorageDestinationInput" @@ -21545,8 +21545,12 @@ } } }, - "StorageSetupInfo": { + "AWSStorageSetupInfo": { "type": "object", + "required": [ + "cluster_type", + "aws_assume_role_setup" + ], "properties": { "cluster_type": { "type": "string", @@ -21554,27 +21558,21 @@ "AWS", "GCP" ], - "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method is used for S3 access.\nExample: \"AWS\" or \"GCP\"", - "nullable": true + "description": "The type of ThoughtSpot cluster deployment.\nAlways 'AWS' for this type." }, "aws_assume_role_setup": { "$ref": "#/components/schemas/AWSAssumeRoleSetup", - "description": "Setup info when ThoughtSpot cluster is on AWS.\nUses STS AssumeRole for cross-account S3 access.\nOnly populated when cluster_type is AWS.", - "nullable": true - }, - "gcp_web_identity_setup": { - "$ref": "#/components/schemas/GCPWebIdentitySetup", - "description": "Setup info when ThoughtSpot cluster is on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nOnly populated when cluster_type is GCP.", - "nullable": true + "description": "Setup info for AWS clusters using STS AssumeRole." } }, - "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nOnly one of aws_assume_role_setup or gcp_web_identity_setup will be populated\nbased on the ThoughtSpot cluster type.\nExample response for AWS cluster:\n{\n \"cluster_type\": \"AWS\",\n \"aws_assume_role_setup\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n },\n \"gcp_web_identity_setup\": null\n}\nExample response for GCP cluster:\n{\n \"cluster_type\": \"GCP\",\n \"aws_assume_role_setup\": null,\n \"gcp_web_identity_setup\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" + "description": "Storage setup information when ThoughtSpot cluster is deployed on AWS.\nUses STS AssumeRole for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"AWS\",\n \"aws_assume_role_setup\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n }\n}" }, "AWSAssumeRoleSetup": { "type": "object", "required": [ "thoughtspot_aws_account_id", - "trust_policy_template" + "trust_policy_template", + "setup_instructions" ], "properties": { "thoughtspot_aws_account_id": { @@ -21590,18 +21588,40 @@ "items": { "type": "string" }, - "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", - "nullable": true + "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]" } }, "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" }, + "GCPStorageSetupInfo": { + "type": "object", + "required": [ + "cluster_type", + "gcp_web_identity_setup" + ], + "properties": { + "cluster_type": { + "type": "string", + "enum": [ + "AWS", + "GCP" + ], + "description": "The type of ThoughtSpot cluster deployment.\nAlways 'GCP' for this type." + }, + "gcp_web_identity_setup": { + "$ref": "#/components/schemas/GCPWebIdentitySetup", + "description": "Setup info for GCP clusters using STS AssumeRoleWithWebIdentity." + } + }, + "description": "Storage setup information when ThoughtSpot cluster is deployed on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"GCP\",\n \"gcp_web_identity_setup\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" + }, "GCPWebIdentitySetup": { "type": "object", "required": [ "thoughtspot_gcp_service_account_id", "oidc_provider", - "trust_policy_template" + "trust_policy_template", + "setup_instructions" ], "properties": { "thoughtspot_gcp_service_account_id": { @@ -21621,8 +21641,7 @@ "items": { "type": "string" }, - "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", - "nullable": true + "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]" } }, "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" From 275619386abb18309af7be6d639b0ff499107c67 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Fri, 16 Jan 2026 11:25:24 +0530 Subject: [PATCH 10/23] Update openapiSpecv3-2_0.json From 6d24e735848dd02b6d3eed4bb66ba736cbab2d9d Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Mon, 19 Jan 2026 13:59:19 +0530 Subject: [PATCH 11/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 48 ++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 6ae6d1e54..b098ac6f5 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -16823,7 +16823,7 @@ } } }, - "/api/rest/2.0/webhooks/{webhook_identifier}/storage-setup": { + "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { "get": { "operationId": "getWebhookStorageSetup", "description": "Beta Version: 26.4.0.cl or later", @@ -16854,7 +16854,7 @@ } }, "400": { - "description": "Bad Request - Webhook does not have storage destination configured", + "description": "Invalid request. Webhook not found or does not have storage destination configured.", "content": { "application/json": { "schema": { @@ -21549,7 +21549,8 @@ "type": "object", "required": [ "cluster_type", - "aws_assume_role_setup" + "storage_type", + "aws_config" ], "properties": { "cluster_type": { @@ -21560,19 +21561,25 @@ ], "description": "The type of ThoughtSpot cluster deployment.\nAlways 'AWS' for this type." }, - "aws_assume_role_setup": { + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "aws_config": { "$ref": "#/components/schemas/AWSAssumeRoleSetup", "description": "Setup info for AWS clusters using STS AssumeRole." } }, - "description": "Storage setup information when ThoughtSpot cluster is deployed on AWS.\nUses STS AssumeRole for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"AWS\",\n \"aws_assume_role_setup\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n }\n}" + "description": "Storage setup information when ThoughtSpot cluster is deployed on AWS.\nUses STS AssumeRole for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"AWS\",\n \"storage_type: \"AWS_S3\",\n \"aws_config\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n }\n}" }, "AWSAssumeRoleSetup": { "type": "object", "required": [ "thoughtspot_aws_account_id", - "trust_policy_template", - "setup_instructions" + "trust_policy_template" ], "properties": { "thoughtspot_aws_account_id": { @@ -21588,7 +21595,8 @@ "items": { "type": "string" }, - "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]" + "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", + "nullable": true } }, "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" @@ -21597,7 +21605,8 @@ "type": "object", "required": [ "cluster_type", - "gcp_web_identity_setup" + "storage_type", + "gcp_config" ], "properties": { "cluster_type": { @@ -21608,20 +21617,25 @@ ], "description": "The type of ThoughtSpot cluster deployment.\nAlways 'GCP' for this type." }, - "gcp_web_identity_setup": { + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "gcp_config": { "$ref": "#/components/schemas/GCPWebIdentitySetup", "description": "Setup info for GCP clusters using STS AssumeRoleWithWebIdentity." } }, - "description": "Storage setup information when ThoughtSpot cluster is deployed on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"GCP\",\n \"gcp_web_identity_setup\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" + "description": "Storage setup information when ThoughtSpot cluster is deployed on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"GCP\",\n \"storage_type: \"AWS_S3\",\n \"gcp_config\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" }, "GCPWebIdentitySetup": { "type": "object", "required": [ "thoughtspot_gcp_service_account_id", - "oidc_provider", - "trust_policy_template", - "setup_instructions" + "trust_policy_template" ], "properties": { "thoughtspot_gcp_service_account_id": { @@ -21630,7 +21644,8 @@ }, "oidc_provider": { "type": "string", - "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"" + "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"", + "nullable": true }, "trust_policy_template": { "type": "object", @@ -21641,7 +21656,8 @@ "items": { "type": "string" }, - "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]" + "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", + "nullable": true } }, "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" From 515c007bf5c2d1dfe0df103a423ff4d7fe205877 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Mon, 19 Jan 2026 14:06:41 +0530 Subject: [PATCH 12/23] review comment address --- api-spec/openapiSpecv3-2_0.json | 74 ++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index b098ac6f5..5561ed527 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -16825,8 +16825,8 @@ }, "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { "get": { - "operationId": "getWebhookStorageSetup", - "description": "Beta Version: 26.4.0.cl or later", + "operationId": "getWebhookStorageConfig", + "description": "\nBeta Version: 26.4.0.cl or later\n\nRetrieves the storage setup configuration for a webhook. Returns ThoughtSpot's identity information and IAM policy templates required for customers to set up cross-account access to their S3 buckets. The response varies based on the ThoughtSpot cluster deployment type (AWS or GCP).\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": [ "Webhooks", "26.4.0.cl" @@ -16849,6 +16849,76 @@ "application/json": { "schema": { "type": "object" + }, + "examples": { + "example_1": { + "description": "Storage setup info for AWS cluster deployment", + "value": { + "cluster_type": "AWS", + "storage_type": "AWS_S3", + "aws_config": { + "thoughtspot_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. Copy the trust policy template and attach it to your 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": "Storage setup info for GCP cluster deployment", + "value": { + "cluster_type": "GCP", + "storage_type": "AWS_S3", + "gcp_config": { + "thoughtspot_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 ThoughtSpot's 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" + ] + } + } + } } } } From ab1ec5ea579f848696d0d0d053a723bf77ba8586 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Tue, 27 Jan 2026 15:22:59 +0530 Subject: [PATCH 13/23] jan27_v1 --- api-spec/openapiSpecv3-2_0.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 5561ed527..e05e9c8c1 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -16826,7 +16826,7 @@ "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { "get": { "operationId": "getWebhookStorageConfig", - "description": "\nBeta Version: 26.4.0.cl or later\n\nRetrieves the storage setup configuration for a webhook. Returns ThoughtSpot's identity information and IAM policy templates required for customers to set up cross-account access to their S3 buckets. The response varies based on the ThoughtSpot cluster deployment type (AWS or GCP).\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", + "description": "\nBeta Version: 26.4.0.cl or later\n\nGet storage config information for a webhook configuration. This endpoint provides ThoughtSpot's identity information and IAM policy configuration required for customers to set up cross-account access to their S3 buckets.\n\nThe setup info returned depends on the ThoughtSpot cluster type:\n- For AWS clusters: Returns `aws_config` with STS AssumeRole configuration\n- For GCP clusters: Returns `gcp_config` with STS AssumeRoleWithWebIdentity configuration\n\n**Note:** This endpoint only returns data if the webhook has a storage destination configured.\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": [ "Webhooks", "26.4.0.cl" From d76668c1e3f009b22ef859365e066674449cfb43 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Tue, 27 Jan 2026 15:49:13 +0530 Subject: [PATCH 14/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 1955 +++---------------------------- 1 file changed, 173 insertions(+), 1782 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 8f9bac2e5..b61413639 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -85,14 +85,6 @@ ], "description": "Roles for version 9.9.0.cl" }, - { - "name": "26.2.0.cl", - "id": "26.2.0.cl", - "tags": [ - "26.2.0.cl" - ], - "description": "Roles for version 26.2.0.cl" - }, { "name": "9.6.0.cl", "id": "9.6.0.cl", @@ -157,14 +149,6 @@ ], "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", @@ -180,14 +164,6 @@ "9.7.0.cl" ], "description": "Roles for version 9.7.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" } ], "tags": [], @@ -356,10 +332,10 @@ "/api/rest/2.0/ai/data-source-suggestions": { "post": { "operationId": "getDataSourceSuggestions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.13.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.15.0.cl" + "10.13.0.cl" ], "requestBody": { "content": { @@ -428,7 +404,7 @@ "/api/rest/2.0/ai/instructions/get": { "post": { "operationId": "getNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to retrieve existing natural language (NL) instructions for a specific data-model. These instructions guide the AI system in understanding data context and generating more accurate responses when processing natural language queries.\n\n#### Usage guidelines\n\nTo retrieve NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model to retrieve NL instructions\n\nThe API returns a response object with:\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for natural language processing\n - `scope`: The scope of the instruction (`GLOBAL`). It can be extended to data-model-user scope in future.\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\n\n> ###### Note:\n> * To use this API, the user needs atleast view access on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Use this API to view currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to retrieve existing natural language (NL) instructions for a specific data-model. These instructions guide the AI system in understanding data context and generating more accurate responses when processing natural language queries.\n\n#### Usage guidelines\n\nTo retrieve NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID or name of the data-model to retrieve NL instructions\n\nThe API returns a response object with:\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for natural language processing\n - `scope`: The scope of the instruction (`GLOBAL`). It can be extended to data-model-user scope in future.\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\n\n> ###### Note:\n> * To use this API, the user needs atleast view access on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Use this API to view currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -710,10 +686,10 @@ "/api/rest/2.0/ai/agent/{conversation_identifier}/converse": { "post": { "operationId": "sendAgentMessage", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.13.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.15.0.cl" + "10.13.0.cl" ], "requestBody": { "content": { @@ -968,7 +944,7 @@ "/api/rest/2.0/ai/instructions/set": { "post": { "operationId": "setNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\nThe API returns a response object with:\n- `success`: Boolean indicating whether the operation was successful\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally for that data-model across the system\n\n> ###### Note:\n> * To use this API, the user needs either edit access or SPOTTER_COACHING_PRIVILEGE on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID or name of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\nThe API returns a response object with:\n- `success`: Boolean indicating whether the operation was successful\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally for that data-model across the system\n\n> ###### Note:\n> * To use this API, the user needs either edit access or SPOTTER_COACHING_PRIVILEGE on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -1304,7 +1280,7 @@ } }, "parameter_values": { - "description": "Allows developers to assign parameter values for existing parameters to a user at login. Note: Using parameter values for row level security use cases will ultimately be deprecated. Developers can still pass data security values via the Custom Access token via the variable_values field and create RLS rules based on custom variables. Please refer to the [ABAC via RLS documentation](https://developers.thoughtspot.com/docs/abac-user-parameters) for more details.", + "description": "Parameter values.", "type": "array", "items": { "$ref": "#/components/schemas/ParameterValues" @@ -1318,7 +1294,7 @@ } }, "objects": { - "description": "Objects on which the parameter and variable values should be applied to", + "description": "Objects on which the filter rules and parameters values should be applied to", "type": "array", "items": { "$ref": "#/components/schemas/TokenAccessScopeObject" @@ -2079,7 +2055,7 @@ "/api/rest/2.0/connection-configurations/create": { "post": { "operationId": "createConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n#### Parameterized Connection Support\nFor parameterized connections that use OAuth authentication, only the same_as_parent and policy_process_options attributes are allowed in the API request. These attributes are not applicable to connections that are not parameterized.\n\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connection Configurations", "10.12.0.cl" @@ -2102,20 +2078,6 @@ "description": "Unique ID or name of the connection.", "type": "string" }, - "same_as_parent": { - "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", - "default": false, - "type": "boolean", - "nullable": true - }, - "policy_process_options": { - "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/PolicyProcessOptionsInput" - } - ] - }, "authentication_type": { "description": "Type of authentication used for the connection.", "default": "SERVICE_ACCOUNT", @@ -2309,7 +2271,7 @@ "/api/rest/2.0/connection-configurations/{configuration_identifier}/update": { "post": { "operationId": "updateConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n#### Parameterized Connection Support\nFor parameterized oauth based connections, only the `same_as_parent` and `policy_process_options` attributes are allowed. These attributes are not applicable to connections that are not parameterized.\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n \n\n\n\n#### Endpoint URL\n", "tags": [ "Connection Configurations", "10.12.0.cl" @@ -2332,20 +2294,6 @@ "description": "Description of the configuration.", "type": "string" }, - "same_as_parent": { - "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", - "default": false, - "type": "boolean", - "nullable": true - }, - "policy_process_options": { - "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/PolicyProcessOptionsInput" - } - ] - }, "authentication_type": { "description": "Type of authentication.", "type": "string", @@ -2886,132 +2834,6 @@ } } }, - "/api/rest/2.0/connections/{connection_identifier}/revoke-refresh-tokens": { - "post": { - "operationId": "revokeRefreshTokens", - "description": "\n Version: 26.2.0.cl or later\n\nRevokes OAuth refresh tokens for users who no longer require access to a data warehouse connection.\nWhen a token is revoked, the affected user's session for that connection is terminated, and they must re-authenticate to regain access.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on the ThoughtSpot instance, users with `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege can also make API requests to revoke tokens for connection users.\n\n#### Usage guidelines\n\nYou can specify different combinations of identifiers to control which refresh tokens are revoked.\n\n- **connection_identifier**: Revokes refresh tokens for all users of the connection, except the connection author.\n- **connection_identifier** and **user_identifiers**: Revokes refresh tokens only for the users specified in the request. If the name or ID of the connection author is included in the request, their token will also be revoked.\n- **connection_identifier** and **configuration_identifiers**: Revokes refresh tokens for all users on the specified configurations, except the configuration author.\n- **connection_identifier**, **configuration_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users on the specified configurations.\n- **connection_identifier** and **org_identifiers**: Revokes refresh tokens for the specified Orgs. Applicable only for published connections.\n- **connection_identifier**, **org_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users in the specified Orgs. Applicable only for published connections.\n\n**NOTE**: The `org_identifiers` parameter is only applicable for published connections. Using this parameter for unpublished connections will result in an error. Ensure that the connections are published before making the API request.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Connections", - "26.2.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "configuration_identifiers": { - "description": "Unique ID or name of the configuration. When provided, the refresh tokens of the users associated with the connection configuration will be revoked.", - "type": "array", - "items": { - "type": "string" - } - }, - "user_identifiers": { - "description": "Unique ID or name of the users. When provided, the refresh tokens of the specified users will be revoked. If the request includes the user ID or name of the connection author, their token will also be revoked.", - "type": "array", - "items": { - "type": "string" - } - }, - "org_identifiers": { - "description": "Unique ID or name of the Org. When provided, the refresh tokens of all users associated with the published connection in the Org will be revoked. This parameter is valid only for published connections. Using it with unpublished connections will result in an error.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "required": true - }, - "parameters": [ - { - "in": "path", - "name": "connection_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the connection whose refresh tokens need to be revoked. All the users associated with the connection will have their refresh tokens revoked except the author." - } - ], - "responses": { - "200": { - "description": "Token(s) successfully revoked.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RevokeRefreshTokensResponse" - } - } - } - }, - "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": "Object not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/rest/2.0/connection/search": { "post": { "operationId": "searchConnection", @@ -5916,8 +5738,7 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -6278,8 +6099,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -6488,8 +6308,7 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -7802,7 +7621,7 @@ "/api/rest/2.0/metadata/parameterize": { "post": { "operationId": "parameterizeMetadata", - "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be parameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", + "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be parameterized.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.9.0.cl" @@ -7818,8 +7637,7 @@ "type": "string", "enum": [ "LOGICAL_TABLE", - "CONNECTION", - "CONNECTION_CONFIG" + "CONNECTION" ] }, "metadata_identifier": { @@ -8148,7 +7966,7 @@ "/api/rest/2.0/metadata/unparameterize": { "post": { "operationId": "unparameterizeMetadata", - "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be unparameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", + "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be unparameterized.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.9.0.cl" @@ -8164,8 +7982,7 @@ "type": "string", "enum": [ "LOGICAL_TABLE", - "CONNECTION", - "CONNECTION_CONFIG" + "CONNECTION" ] }, "metadata_identifier": { @@ -8928,7 +8745,7 @@ "/api/rest/2.0/report/liveboard": { "post": { "operationId": "exportLiveboardReport", - "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF, PNG, CSV, or XLSX file format.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\nThe default `file_format` is CSV. For PDF exports, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers. Similar customization options are available for PNG exports. CSV and XLSX exports do not support customization options.\n\n**NOTE**: The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n**NOTE**: Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in CSV format. All visualizations in the Liveboard can be exported as individual CSV files. If multiple visualizations are selected or if the entire Liveboard is exported, the output is returned as a .zip file containing the CSV files for each visualization.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in XLSX format. All selected visualizations are consolidated into a single Excel workbook (.xlsx), with each visualization placed in its own worksheet (tab). XLSX exports are limited to 255 worksheets (tabs) per workbook.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF or PNG file format.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\nThe default `file_format` is PDF. For PDF downloads, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers. Similar customization options are also available for PNG output.\n\n**NOTE**: The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n**NOTE**: Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n\n\n#### Endpoint URL\n", "tags": [ "Reports", "9.0.0.cl" @@ -8971,9 +8788,7 @@ "type": "string", "enum": [ "PDF", - "PNG", - "CSV", - "XLSX" + "PNG" ] }, "runtime_filter": { @@ -9142,8 +8957,7 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -9374,8 +9188,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -9538,8 +9351,7 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } } @@ -11547,110 +11359,6 @@ } } }, - "/api/rest/2.0/security/metadata/fetch-object-privileges": { - "post": { - "operationId": "fetchObjectPrivileges", - "description": "\n Version: 26.3.0.cl or later\n\nThis API fetches the object privileges present for the given list of principals (user or group), on the given set of objects. It supports pagination, which can be enabled and configured using the request parameters. It provides users access to certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals for which you want to retrieve object privilege information in the `principals` array.\n- Specify the `type` (`LOGICAL_TABLE`) and `identifier` (either GUID or name) of the metadata objects for which you want to retrieve object privilege information in the `metadata` array. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- To control the offset from where principals have to be fetched, use `record_offset`. When `record_offset` is 0, information is fetched from the beginning.\n- To control the number of principals to be fetched, use `record_size`. Default `record_size` is 20.\n- Ensure `record_offset` for a subsequent request is one more than the value of `record_size` of the previous request.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org. \n\n#### Example request\n\n```json\n{\n \"principals\": [\n {\n \"type\": \"type-1\",\n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"metadata-type-1\",\n \"identifier\": \"metadata-guid-or-name-1\"\n },\n {\n \"type\": \"metadata-type-2\",\n \"identifier\": \"metadata-guid-or-name-2\"\n }\n ],\n \"record_offset\": 0,\n \"record_size\": 20\n}\n```\n\n\n#### Response format\n\nThe API returns an array of `metadata_object_privileges` objects wrapped in JSON. Each `metadata_object_privileges` object contains:\n- Metadata information (GUID, name and type)\n- Array of `principal_object_privilege_info`.\n- Each `principal_object_privilege_info` contains:\n - Principal type. All principals of this type are listed as described below.\n - Array of `principal_object_privileges`.\n - Each `principal_object_privileges` contains:\n - Principal information (GUID, name, subtype)\n - List of applied object level privileges.\n\n#### Example response\n\n```json\n{\n \"metadata_object_privileges\": [\n {\n \"metadata_id\": \"metadata-guid-1\",\n \"metadata_name\": \"metadata-name-1\",\n \"metadata_type\": \"metadata-type-1\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n }\n ]\n },\n {\n \"principal_type\": \"principal-type-2\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-3\",\n \"principal_name\": \"principal-guid-4\",\n \"principal_sub_type\": \"principal-sub-type-4\",\n \"object_privileges\": \"[object-privilege-1]\"\n }\n ]\n }\n ]\n },\n {\n \"metadata_id\": \"metadata-guid-2\",\n \"metadata_name\": \"metadata-name-2\",\n \"metadata_type\": \"metadata-type-2\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-3, object-privilege-4]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-4]\"\n }\n ]\n }\n ]\n }\n ]\n}\n```\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Security", - "26.3.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects for which you want to fetch object privileges. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ObjectPrivilegesMetadataInput" - } - }, - "principals": { - "description": "User or group objects for which you want to fetch object privileges.\nIf not specified, the API returns all users and groups that\nhave object privileges on the specified metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PrincipalsInput" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included for each metadata type.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included for each metadata type.", - "default": 20, - "type": "integer", - "format": "int32" - } - }, - "required": [ - "metadata" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Fetching defined object privileges of metadata objects is successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ObjectPrivilegesOfMetadataResponse" - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/rest/2.0/security/principals/fetch-permissions": { "post": { "operationId": "fetchPermissionsOfPrincipals", @@ -11973,127 +11681,13 @@ } } }, - "/api/rest/2.0/security/metadata/manage-object-privilege": { + "/api/rest/2.0/security/metadata/publish": { "post": { - "operationId": "manageObjectPrivilege", - "description": "\n Version: 26.3.0.cl or later\n\nThis API allows the addition or deletion of object level privileges for a set of users and groups, on a set of metadata objects. It provides users to access certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `operation`. The supported operations are: `ADD`, `REMOVE`.\n- Specify the type of the objects on which the object privileges are being provided in `metadata_type`. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- Specify the list of object privilege types in the `object_privilege_types` array. The supported object privilege types are: `SPOTTER_COACHING_PRIVILEGE`.\n- Specify the identifiers (either GUID or name) for the metadata objects in the `metadata_identifiers` array.\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals to which you want to apply the given operation and given object privileges in the `principals` array.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org.\n\n#### Example request\n\n```json\n{\n \"operation\": \"operation-type\",\n \"metadata_type\": \"metadata-type\",\n \"object_privilege_types\": [\"privilege-type-1\", \"privilege-type-2\"],\n \"metadata_identifiers\": [\"metadata-guid-or-name-1\", \"metadata-guid-or-name-1\"],\n \"principals\": [\n {\n \"type\": \"type-1\", \n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ]\n}\n```\n\n> ###### Note:\n> * Only admin users, users with edit access and users with coaching privilege on a given data-model can add or remove principals related to SPOTTER_COACHING_PRIVILEGE \n\n\n\n#### Endpoint URL\n", + "operationId": "publishMetadata", + "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "26.3.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "operation": { - "description": "Operation to perform to manage object privileges. Available operations are: `ADD`, `REMOVE`.", - "type": "string", - "enum": [ - "ADD", - "REMOVE" - ] - }, - "metadata_type": { - "description": "Type of metadata objects on which you want to perform the operation. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", - "type": "string", - "enum": [ - "LOGICAL_TABLE" - ] - }, - "object_privilege_types": { - "description": "List of object privilege types on which you want to perform the operation.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "SPOTTER_COACHING_PRIVILEGE" - ] - } - }, - "metadata_identifiers": { - "description": "List of metadata identifiers (GUID or name) on which you want to perform the operation.", - "type": "array", - "items": { - "type": "string" - } - }, - "principals": { - "description": "User or group objects (GUID or name) to which you want to apply the given operation and given object privileges.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PrincipalsInput" - } - } - }, - "required": [ - "operation", - "metadata_type", - "object_privilege_types", - "metadata_identifiers", - "principals" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Object privileges added/removed successfully" - }, - "400": { - "description": "Invalid request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/security/metadata/publish": { - "post": { - "operationId": "publishMetadata", - "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Security", - "10.9.0.cl" + "10.9.0.cl" ], "requestBody": { "content": { @@ -12588,89 +12182,6 @@ } } }, - "/api/rest/2.0/system/security-settings/configure": { - "post": { - "operationId": "configureSecuritySettings", - "description": "\nBeta Version: 26.2.0.cl or later\n\nConfigure security settings for your ThoughtSpot application instance.\n- Use `cluster_preferences` to update cluster-level security settings including CORS whitelisted URLs, CSP settings, SAML redirect URLs, partitioned cookies, and non-embed access configuration.\n- Use `org_preferences` to configure Org-specific security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this allows configuring CORS and non-embed access settings specific to the Org.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. Cluster-level SAML and script-src settings require `ADMINISTRATION` privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", - "tags": [ - "System", - "26.2.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cluster_preferences": { - "description": "Cluster-level security preferences.", - "allOf": [ - { - "$ref": "#/components/schemas/SecuritySettingsClusterPreferencesInput" - } - ] - }, - "org_preferences": { - "description": "Org-level security preferences for the current org.", - "type": "array", - "items": { - "$ref": "#/components/schemas/SecuritySettingsOrgPreferencesInput" - } - } - } - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Successfully configured the security settings." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/rest/2.0/system/config": { "get": { "operationId": "getSystemConfig", @@ -13020,13 +12531,13 @@ } } }, - "/api/rest/2.0/system/security-settings/search": { + "/api/rest/2.0/system/config-update": { "post": { - "operationId": "searchSecuritySettings", - "description": "\nBeta Version: 26.2.0.cl or later\n\nFetch security settings for your ThoughtSpot application instance.\n- Use `scope: CLUSTER` to retrieve cluster-level security settings, including CORS and CSP allowlists, SAML redirect URLs, and settings that control access to non-embedded pages.\n- Use `scope: ORG` to retrieve Org-level security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this returns CORS and non-embed access settings specific to the Org.\n- If `scope` is not specified, returns both cluster and Org-specific settings based on user privileges.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", + "operationId": "updateSystemConfig", + "description": "\n Version: 9.2.0.cl or later\n\nUpdates the current configuration of the cluster. You must send the configuration data in JSON format.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "System", - "26.2.0.cl" + "9.2.0.cl" ], "requestBody": { "content": { @@ -13034,15 +12545,14 @@ "schema": { "type": "object", "properties": { - "scope": { - "description": "Scope of security settings to retrieve. CLUSTER returns cluster-level settings,\nORG returns org-level settings for the current org.\nIf not specified, returns both cluster and org settings based on user privileges.", - "type": "string", - "enum": [ - "CLUSTER", - "ORG" - ] + "configuration": { + "description": "Configuration JSON with the key-value pair of configuration attributes to be updated.", + "type": "object" } - } + }, + "required": [ + "configuration" + ] } } }, @@ -13050,79 +12560,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Successfully retrieved the list of security settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SecuritySettingsResponse" - }, - "examples": { - "example_1": { - "value": { - "cluster_preferences": { - "enable_partitioned_cookies": false, - "cors_whitelisted_urls": [ - "example.com" - ], - "csp_settings": { - "connect_src_urls": [ - "https://connect.example.com" - ], - "font_src_urls": [ - "https://font.example.com" - ], - "visual_embed_hosts": [ - "https://embed.example.com" - ], - "iframe_src_urls": [ - "https://embed.example.com" - ], - "img_src_urls": [ - "https://img.example.com" - ], - "script_src_urls": { - "enabled": true, - "urls": [ - "https://script.example.com" - ] - }, - "style_src_urls": [ - "https://style.example.com" - ] - }, - "saml_redirect_urls": [ - "https://saml.example.com" - ], - "non_embed_access": { - "block_full_app_access": true - } - }, - "org_preferences": [ - { - "org": { - "id": 0, - "name": "Primary" - }, - "cors_whitelisted_urls": [ - "https://cors.example.com" - ], - "non_embed_access": { - "block_full_app_access": true, - "groups_with_access": [ - { - "id": "1234567890", - "name": "Group Name" - } - ] - } - } - ] - } - } - } - } - } + "204": { + "description": "Configuration successfully updated." }, "400": { "description": "Invalid request.", @@ -13167,13 +12606,13 @@ } } }, - "/api/rest/2.0/system/config-update": { + "/api/rest/2.0/tags/assign": { "post": { - "operationId": "updateSystemConfig", - "description": "\n Version: 9.2.0.cl or later\n\nUpdates the current configuration of the cluster. You must send the configuration data in JSON format.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "assignTag", + "description": "\n Version: 9.0.0.cl or later\n\nAssigns tags to Liveboards, Answers, Tables, and Worksheets.\n\nRequires edit access to the metadata object.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "System", - "9.2.0.cl" + "Tags", + "9.0.0.cl" ], "requestBody": { "content": { @@ -13181,13 +12620,24 @@ "schema": { "type": "object", "properties": { - "configuration": { - "description": "Configuration JSON with the key-value pair of configuration attributes to be updated.", - "type": "object" + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/TagMetadataTypeInput" + } + }, + "tag_identifiers": { + "description": "GUID or name of the tag.", + "type": "array", + "items": { + "type": "string" + } } }, "required": [ - "configuration" + "metadata", + "tag_identifiers" ] } } @@ -13197,7 +12647,7 @@ "parameters": [], "responses": { "204": { - "description": "Configuration successfully updated." + "description": "Tags successfully assigned." }, "400": { "description": "Invalid request.", @@ -13242,96 +12692,10 @@ } } }, - "/api/rest/2.0/tags/assign": { + "/api/rest/2.0/tags/create": { "post": { - "operationId": "assignTag", - "description": "\n Version: 9.0.0.cl or later\n\nAssigns tags to Liveboards, Answers, Tables, and Worksheets.\n\nRequires edit access to the metadata object.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Tags", - "9.0.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/TagMetadataTypeInput" - } - }, - "tag_identifiers": { - "description": "GUID or name of the tag.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "metadata", - "tag_identifiers" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Tags successfully assigned." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/tags/create": { - "post": { - "operationId": "createTag", - "description": "\n Version: 9.0.0.cl or later\n\nCreates a tag object.\n\nTags are labels that identify a metadata object. For example, you can create a tag to designate subject areas, such as sales, HR, marketing, and finance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createTag", + "description": "\n Version: 9.0.0.cl or later\n\nCreates a tag object.\n\nTags are labels that identify a metadata object. For example, you can create a tag to designate subject areas, such as sales, HR, marketing, and finance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Tags", "9.0.0.cl" @@ -14083,7 +13447,7 @@ } }, "preferred_locale": { - "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", + "description": "Locale for the user.", "type": "string", "enum": [ "en-CA", @@ -14115,11 +13479,6 @@ "en-DE" ] }, - "use_browser_language": { - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.
Version: 26.3.0.cl or later", - "type": "boolean", - "nullable": true - }, "extended_properties": { "description": "Properties for the user", "type": "object" @@ -14705,8 +14064,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -14798,12 +14156,6 @@ "default": false, "type": "boolean", "nullable": true - }, - "include_variable_values": { - "description": "Indicates if the user's formula variable values should be included in the response.", - "default": false, - "type": "boolean", - "nullable": true } } } @@ -14977,7 +14329,7 @@ ] }, "preferred_locale": { - "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", + "description": "Locale for the user.", "type": "string", "enum": [ "en-CA", @@ -15009,11 +14361,6 @@ "en-DE" ] }, - "use_browser_language": { - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.
Version: 26.3.0.cl or later", - "type": "boolean", - "nullable": true - }, "extended_properties": { "description": "Properties for the user", "type": "object" @@ -15121,7 +14468,7 @@ "nullable": true }, "data_type": { - "description": "Variable Data Type, only for formula_variable type, leave empty for others
Version: 10.15.0.cl or later", + "description": "Variable Data Type", "type": "string", "enum": [ "VARCHAR", @@ -15379,7 +14726,7 @@ "/api/rest/2.0/template/variables/{identifier}/update": { "post": { "operationId": "updateVariable", - "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's name in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's properties in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "10.14.0.cl" @@ -15464,7 +14811,7 @@ "/api/rest/2.0/template/variables/update-values": { "post": { "operationId": "updateVariableValues", - "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, CLEAR)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* CLEAR - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "10.14.0.cl" @@ -15476,14 +14823,14 @@ "type": "object", "properties": { "variable_assignment": { - "description": "Array of variable assignment objects specifying the variable identifier, values to assign, and the operation type (ADD, REMOVE, REPLACE, or RESET) to perform on each variable.", + "description": "Variables and values to update", "type": "array", "items": { "$ref": "#/components/schemas/VariableUpdateAssignmentInput" } }, "variable_value_scope": { - "description": "Array of scope objects defining where the variable values apply, including organization context, optional principal constraints (user or group), model reference for formula variables, and priority for conflict resolution.", + "description": "Variables and values to update", "type": "array", "items": { "$ref": "#/components/schemas/VariableUpdateScopeInput" @@ -16496,14 +15843,6 @@ "$ref": "#/components/schemas/WebhookSignatureVerificationInput" } ] - }, - "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/StorageDestinationInput" - } - ] } }, "required": [ @@ -16823,149 +16162,6 @@ } } }, - "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { - "get": { - "operationId": "getWebhookStorageConfig", - "description": "\nBeta Version: 26.4.0.cl or later\n\nGet storage config information for a webhook configuration. This endpoint provides ThoughtSpot's identity information and IAM policy configuration required for customers to set up cross-account access to their S3 buckets.\n\nThe setup info returned depends on the ThoughtSpot cluster type:\n- For AWS clusters: Returns `aws_config` with STS AssumeRole configuration\n- For GCP clusters: Returns `gcp_config` with STS AssumeRoleWithWebIdentity configuration\n\n**Note:** This endpoint only returns data if the webhook has a storage destination configured.\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": [ - "Webhooks", - "26.4.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "webhook_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the webhook configuration." - } - ], - "responses": { - "200": { - "description": "Storage setup information retrieved successfully", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "examples": { - "example_1": { - "description": "Storage setup info for AWS cluster deployment", - "value": { - "cluster_type": "AWS", - "storage_type": "AWS_S3", - "aws_config": { - "thoughtspot_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. Copy the trust policy template and attach it to your 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": "Storage setup info for GCP cluster deployment", - "value": { - "cluster_type": "GCP", - "storage_type": "AWS_S3", - "gcp_config": { - "thoughtspot_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 ThoughtSpot's 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" - ] - } - } - } - } - } - } - }, - "400": { - "description": "Invalid request. Webhook not found or does not have storage destination configured.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/rest/2.0/webhooks/search": { "post": { "operationId": "searchWebhookConfigurations", @@ -17218,14 +16414,6 @@ "$ref": "#/components/schemas/WebhookSignatureVerificationInput" } ] - }, - "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/StorageDestinationInput" - } - ] } } } @@ -17608,11 +16796,6 @@ "description": "Locale for the user.", "nullable": true }, - "use_browser_language": { - "type": "boolean", - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.
Version: 26.3.0.cl or later", - "nullable": true - }, "extended_properties": { "type": "object", "description": "Properties for the user", @@ -17882,14 +17065,6 @@ "onboarding_content_url": { "type": "string", "nullable": true - }, - "saml_enabled": { - "type": "boolean", - "nullable": true - }, - "okta_enabled": { - "type": "boolean", - "nullable": true } } }, @@ -17900,344 +17075,115 @@ "type": "object", "nullable": true } - } - }, - "OrgPreferenceSearchCriteriaInput": { - "type": "object", - "required": [ - "org_identifier" - ], - "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" - }, - "event_types": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - }, - "description": "Event types to search for. If not provided, all event types for this org are returned.", - "nullable": true - } - } - }, - "CommunicationChannelPreferencesResponse": { - "type": "object", - "properties": { - "cluster_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfig" - }, - "description": "Cluster-level default configurations.", - "nullable": true - }, - "org_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrgChannelConfigResponse" - }, - "description": "Org-specific configurations.", - "nullable": true - } - } - }, - "EventChannelConfig": { - "type": "object", - "required": [ - "event_type", - "channels" - ], - "properties": { - "event_type": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ], - "description": "Type of event for which communication channels are configured" - }, - "channels": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "EMAIL", - "WEBHOOK" - ] - }, - "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." - } - } - }, - "OrgChannelConfigResponse": { - "type": "object", - "required": [ - "org", - "preferences" - ], - "properties": { - "org": { - "$ref": "#/components/schemas/OrgDetails", - "description": "Org details" - }, - "preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfig" - }, - "description": "Event-specific communication channel configurations for this org" - } - } - }, - "OrgDetails": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique id of the org" - }, - "name": { - "type": "string", - "description": "Name of the org" - } - } - }, - "SecuritySettingsResponse": { - "type": "object", - "properties": { - "cluster_preferences": { - "$ref": "#/components/schemas/SecuritySettingsClusterPreferences", - "description": "Cluster-level security preferences.", - "nullable": true - }, - "org_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SecuritySettingsOrgPreferences" - }, - "description": "Org-level security preferences.", - "nullable": true - } - }, - "description": "Response type for security settings search." - }, - "SecuritySettingsClusterPreferences": { - "type": "object", - "properties": { - "enable_partitioned_cookies": { - "type": "boolean", - "description": "Support embedded access when third-party cookies are blocked.", - "nullable": true - }, - "cors_whitelisted_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed origins for CORS.", - "nullable": true - }, - "csp_settings": { - "$ref": "#/components/schemas/CspSettings", - "description": "CSP (Content Security Policy) settings.", - "nullable": true - }, - "saml_redirect_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed redirect hosts for SAML login.", - "nullable": true - }, - "non_embed_access": { - "$ref": "#/components/schemas/ClusterNonEmbedAccess", - "description": "Non-embed access configuration at cluster level.", - "nullable": true - } - }, - "description": "Cluster-level security preferences." - }, - "CspSettings": { - "type": "object", - "properties": { - "connect_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for connect-src directive.", - "nullable": true - }, - "font_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for font-src directive.", - "nullable": true - }, - "visual_embed_hosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed hosts for visual embed (frame-ancestors directive).", - "nullable": true - }, - "iframe_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for frame-src directive.", - "nullable": true - }, - "img_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for img-src directive.", - "nullable": true - }, - "script_src_urls": { - "$ref": "#/components/schemas/ScriptSrcUrls", - "description": "Script-src settings including URLs and enabled flag.", - "nullable": true - }, - "style_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for style-src directive.", - "nullable": true - } - }, - "description": "CSP (Content Security Policy) settings." + } }, - "ScriptSrcUrls": { + "OrgPreferenceSearchCriteriaInput": { "type": "object", + "required": [ + "org_identifier" + ], "properties": { - "enabled": { - "type": "boolean", - "description": "Whether script-src customization is enabled.", - "nullable": true + "org_identifier": { + "type": "string", + "description": "Unique identifier or name of the org" }, - "urls": { + "event_types": { "type": "array", "items": { - "type": "string" + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] }, - "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", + "description": "Event types to search for. If not provided, all event types for this org are returned.", "nullable": true } - }, - "description": "Script-src CSP settings." + } }, - "ClusterNonEmbedAccess": { + "CommunicationChannelPreferencesResponse": { "type": "object", "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", + "cluster_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfig" + }, + "description": "Cluster-level default configurations.", "nullable": true }, - "groups_with_access": { + "org_preferences": { "type": "array", "items": { - "$ref": "#/components/schemas/GroupInfo" + "$ref": "#/components/schemas/OrgChannelConfigResponse" }, - "description": "Groups that have non-embed full app access.\nOnly applicable when orgs feature is disabled. Use org_preferences when org feature is enabled.", + "description": "Org-specific configurations.", "nullable": true } - }, - "description": "Cluster-level non-embed access configuration." + } }, - "GroupInfo": { + "EventChannelConfig": { "type": "object", + "required": [ + "event_type", + "channels" + ], "properties": { - "id": { + "event_type": { "type": "string", - "description": "Unique identifier of the group.", - "nullable": true + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Type of event for which communication channels are configured" }, - "name": { - "type": "string", - "description": "Name of the group.", - "nullable": true + "channels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "EMAIL", + "WEBHOOK" + ] + }, + "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." } - }, - "description": "Group information for non-embed access." + } }, - "SecuritySettingsOrgPreferences": { + "OrgChannelConfigResponse": { "type": "object", + "required": [ + "org", + "preferences" + ], "properties": { "org": { - "$ref": "#/components/schemas/SecuritySettingsOrgDetails", - "description": "Org details (id and name).", - "nullable": true + "$ref": "#/components/schemas/OrgDetails", + "description": "Org details" }, - "cors_whitelisted_urls": { + "preferences": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/EventChannelConfig" }, - "description": "Allowed origins for CORS for this org.", - "nullable": true - }, - "non_embed_access": { - "$ref": "#/components/schemas/OrgNonEmbedAccess", - "description": "Non-embed access configuration for this org.", - "nullable": true + "description": "Event-specific communication channel configurations for this org" } - }, - "description": "Org-level security preferences." + } }, - "SecuritySettingsOrgDetails": { + "OrgDetails": { "type": "object", + "required": [ + "id", + "name" + ], "properties": { "id": { - "type": "integer", - "format": "int32", - "description": "Unique identifier of the org.", - "nullable": true + "type": "string", + "description": "Unique id of the org" }, "name": { "type": "string", - "description": "Name of the org.", - "nullable": true - } - }, - "description": "Org details for security settings." - }, - "OrgNonEmbedAccess": { - "type": "object", - "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", - "nullable": true - }, - "groups_with_access": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupInfo" - }, - "description": "Groups that have non-embed full app access.", - "nullable": true + "description": "Name of the org" } - }, - "description": "Org-level non-embed access configuration." + } }, "OrgResponse": { "type": "object", @@ -19416,35 +18362,6 @@ } } }, - "ObjectPrivilegesMetadataInput": { - "type": "object", - "required": [ - "identifier" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "LOGICAL_TABLE" - ], - "description": "Type of metadata object.\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", - "nullable": true - }, - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata object." - } - } - }, - "ObjectPrivilegesOfMetadataResponse": { - "type": "object", - "properties": { - "metadata_object_privileges": { - "type": "object", - "nullable": true - } - } - }, "PrincipalsInput": { "type": "object", "required": [ @@ -20309,8 +19226,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] }, "description": "Privileges granted to the role." @@ -20939,7 +19855,7 @@ "USER", "USER_GROUP" ], - "description": "Type of principal to filter by. Use USER to filter values assigned to specific users, or USER_GROUP to filter values assigned to groups.", + "description": "Principal type", "nullable": true }, "principal_identifier": { @@ -20949,11 +19865,11 @@ }, "model_identifier": { "type": "string", - "description": "Unique ID or name of the model to filter by. Applicable only for FORMULA_VARIABLE type.", + "description": "Model Identifier", "nullable": true } }, - "description": "Input for filtering variable values by scope in search operations" + "description": "Input for variable scope in search" }, "Variable": { "type": "object", @@ -21026,7 +19942,7 @@ "USER", "USER_GROUP" ], - "description": "Type of principal to which this value applies. Use USER to assign the value to a specific user, or USER_GROUP to assign it to a group.", + "description": "Principal type", "nullable": true }, "principal_identifier": { @@ -21034,11 +19950,6 @@ "description": "Unique ID or name of the principal", "nullable": true }, - "model_identifier": { - "type": "string", - "description": "Unique ID of the model
Beta Version: 26.3.0.cl or later", - "nullable": true - }, "priority": { "type": "integer", "format": "int32", @@ -21204,14 +20115,6 @@ "PROCESSES" ], "nullable": true - }, - "same_as_parent": { - "type": "boolean", - "nullable": true - }, - "policy_process_options": { - "$ref": "#/components/schemas/PolicyProcessOptions", - "nullable": true } } }, @@ -21232,15 +20135,6 @@ } } }, - "PolicyProcessOptions": { - "type": "object", - "properties": { - "impersonate_user": { - "type": "string", - "nullable": true - } - } - }, "WebhookSortOptionsInput": { "type": "object", "properties": { @@ -21364,11 +20258,6 @@ "$ref": "#/components/schemas/WebhookUser", "description": "User who last modified the webhook.", "nullable": true - }, - "storage_destination": { - "$ref": "#/components/schemas/StorageDestination", - "description": "Storage destination configuration for webhook payload delivery.", - "nullable": true } } }, @@ -21514,223 +20403,41 @@ "type": "string", "description": "Unique identifier of the user." }, - "name": { - "type": "string", - "description": "Name of the user." - } - } - }, - "StorageDestination": { - "type": "object", - "required": [ - "storage_type", - "storage_config" - ], - "properties": { - "storage_type": { - "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination (e.g., AWS_S3)." - }, - "storage_config": { - "$ref": "#/components/schemas/StorageConfig", - "description": "Storage-specific configuration settings." - } - }, - "description": "Storage destination configuration for webhook payload delivery." - }, - "StorageConfig": { - "type": "object", - "properties": { - "aws_s3_config": { - "$ref": "#/components/schemas/AwsS3Config", - "description": "AWS S3 storage configuration.", - "nullable": true - } - }, - "description": "Storage configuration containing provider-specific settings." - }, - "AwsS3Config": { - "type": "object", - "required": [ - "bucket_name", - "region", - "role_arn" - ], - "properties": { - "bucket_name": { - "type": "string", - "description": "Name of the S3 bucket where webhook payloads are stored." - }, - "region": { - "type": "string", - "description": "AWS region where the S3 bucket is located." - }, - "role_arn": { - "type": "string", - "description": "ARN of the IAM role used for S3 access." - }, - "external_id": { - "type": "string", - "description": "External ID for secure cross-account role assumption.", - "nullable": true - }, - "path_prefix": { - "type": "string", - "description": "Path prefix for organizing objects within the bucket.", - "nullable": true - } - }, - "description": "AWS S3 storage configuration details." - }, - "WebhookPagination": { - "type": "object", - "required": [ - "record_offset", - "record_size", - "total_count", - "has_more" - ], - "properties": { - "record_offset": { - "type": "integer", - "format": "int32", - "description": "The starting record number from where the records are included." - }, - "record_size": { - "type": "integer", - "format": "int32", - "description": "The number of records included in the response." - }, - "total_count": { - "type": "integer", - "format": "int32", - "description": "Total number of webhook configurations available." - }, - "has_more": { - "type": "boolean", - "description": "Indicates whether more records are available beyond the current response." - } - } - }, - "AWSStorageSetupInfo": { - "type": "object", - "required": [ - "cluster_type", - "storage_type", - "aws_config" - ], - "properties": { - "cluster_type": { - "type": "string", - "enum": [ - "AWS", - "GCP" - ], - "description": "The type of ThoughtSpot cluster deployment.\nAlways 'AWS' for this type." - }, - "storage_type": { - "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination (e.g., AWS_S3)." - }, - "aws_config": { - "$ref": "#/components/schemas/AWSAssumeRoleSetup", - "description": "Setup info for AWS clusters using STS AssumeRole." - } - }, - "description": "Storage setup information when ThoughtSpot cluster is deployed on AWS.\nUses STS AssumeRole for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"AWS\",\n \"storage_type: \"AWS_S3\",\n \"aws_config\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n }\n}" - }, - "AWSAssumeRoleSetup": { - "type": "object", - "required": [ - "thoughtspot_aws_account_id", - "trust_policy_template" - ], - "properties": { - "thoughtspot_aws_account_id": { - "type": "string", - "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.\nExample: \"123456789012\"" - }, - "trust_policy_template": { - "type": "object", - "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nExample: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } } }] }" - }, - "setup_instructions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", - "nullable": true - } - }, - "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" - }, - "GCPStorageSetupInfo": { - "type": "object", - "required": [ - "cluster_type", - "storage_type", - "gcp_config" - ], - "properties": { - "cluster_type": { - "type": "string", - "enum": [ - "AWS", - "GCP" - ], - "description": "The type of ThoughtSpot cluster deployment.\nAlways 'GCP' for this type." - }, - "storage_type": { + "name": { "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination (e.g., AWS_S3)." - }, - "gcp_config": { - "$ref": "#/components/schemas/GCPWebIdentitySetup", - "description": "Setup info for GCP clusters using STS AssumeRoleWithWebIdentity." + "description": "Name of the user." } - }, - "description": "Storage setup information when ThoughtSpot cluster is deployed on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"GCP\",\n \"storage_type: \"AWS_S3\",\n \"gcp_config\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" + } }, - "GCPWebIdentitySetup": { + "WebhookPagination": { "type": "object", "required": [ - "thoughtspot_gcp_service_account_id", - "trust_policy_template" + "record_offset", + "record_size", + "total_count", + "has_more" ], "properties": { - "thoughtspot_gcp_service_account_id": { - "type": "string", - "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.\nExample: \"115663769112811637952\"" + "record_offset": { + "type": "integer", + "format": "int32", + "description": "The starting record number from where the records are included." }, - "oidc_provider": { - "type": "string", - "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"", - "nullable": true + "record_size": { + "type": "integer", + "format": "int32", + "description": "The number of records included in the response." }, - "trust_policy_template": { - "type": "object", - "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nExample: { \"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\" } } }] }" + "total_count": { + "type": "integer", + "format": "int32", + "description": "Total number of webhook configurations available." }, - "setup_instructions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", - "nullable": true + "has_more": { + "type": "boolean", + "description": "Indicates whether more records are available beyond the current response." } - }, - "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" + } }, "GenericInfo": { "type": "object", @@ -22455,45 +21162,6 @@ }, "description": "Metadata objects to add to the user's favorites list.", "nullable": true - }, - "preferred_locale": { - "type": "string", - "description": "Locale for the user. When setting this value, do not set use_browser_language to true, otherwise the browser's language setting will take precedence and the preferred_locale value will be ignored.", - "nullable": true, - "enum": [ - "en-CA", - "en-GB", - "en-US", - "de-DE", - "ja-JP", - "zh-CN", - "pt-BR", - "fr-FR", - "fr-CA", - "es-US", - "da-DK", - "es-ES", - "fi-FI", - "sv-SE", - "nb-NO", - "pt-PT", - "nl-NL", - "it-IT", - "ru-RU", - "en-IN", - "de-CH", - "en-NZ", - "es-MX", - "en-AU", - "zh-Hant", - "ko-KR", - "en-DE" - ] - }, - "use_browser_language": { - "type": "boolean", - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.
Version: 26.3.0.cl or later", - "nullable": true } } }, @@ -22608,185 +21276,6 @@ } } }, - "SecuritySettingsClusterPreferencesInput": { - "type": "object", - "properties": { - "enable_partitioned_cookies": { - "type": "boolean", - "description": "Support embedded access when third-party cookies are blocked.", - "nullable": true - }, - "cors_whitelisted_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed origins for CORS.", - "nullable": true - }, - "csp_settings": { - "$ref": "#/components/schemas/CspSettingsInput", - "description": "CSP (Content Security Policy) settings.", - "nullable": true - }, - "saml_redirect_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed redirect hosts for SAML login.", - "nullable": true - }, - "non_embed_access": { - "$ref": "#/components/schemas/ClusterNonEmbedAccessInput", - "description": "Non-embed access configuration at cluster level.", - "nullable": true - } - }, - "description": "Input for cluster-level security preferences configuration." - }, - "CspSettingsInput": { - "type": "object", - "properties": { - "connect_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for connect-src directive.", - "nullable": true - }, - "font_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for font-src directive.", - "nullable": true - }, - "visual_embed_hosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed hosts for visual embed (frame-ancestors directive).", - "nullable": true - }, - "iframe_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for frame-src directive.", - "nullable": true - }, - "img_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for img-src directive.", - "nullable": true - }, - "script_src_urls": { - "$ref": "#/components/schemas/ScriptSrcUrlsInput", - "description": "Script-src settings including URLs and enabled flag.", - "nullable": true - }, - "style_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for style-src directive.", - "nullable": true - } - }, - "description": "Input for CSP (Content Security Policy) settings." - }, - "ScriptSrcUrlsInput": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Whether script-src customization is enabled.", - "nullable": true - }, - "urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", - "nullable": true - } - }, - "description": "Input for script-src CSP settings." - }, - "ClusterNonEmbedAccessInput": { - "type": "object", - "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", - "nullable": true - }, - "groups_identifiers_with_access": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Group identifiers that are allowed non-embed full app access.\nCan only be set when orgs feature is disabled and block_full_app_access is true.", - "nullable": true - } - }, - "description": "Input for cluster-level non-embed access configuration." - }, - "SecuritySettingsOrgPreferencesInput": { - "type": "object", - "required": [ - "org_identifier" - ], - "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" - }, - "cors_whitelisted_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed origins for CORS for this org.", - "nullable": true - }, - "non_embed_access": { - "$ref": "#/components/schemas/OrgNonEmbedAccessInput", - "description": "Non-embed access configuration for this org.", - "nullable": true - } - }, - "description": "Input for org-level security preferences configuration.\nNote: cross-org operations are not supported currently." - }, - "OrgNonEmbedAccessInput": { - "type": "object", - "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", - "nullable": true - }, - "groups_identifiers_with_access": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Group identifiers that are allowed non-embed full app access. Can only be set if block_full_app_access is true.", - "nullable": true - } - }, - "description": "Input for org-level non-embed access configuration." - }, "TagMetadataTypeInput": { "type": "object", "required": [ @@ -22875,8 +21364,7 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] }, "description": "Privileges that will be assigned to the group.", @@ -23783,18 +22271,6 @@ } } }, - "RevokeRefreshTokensResponse": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "string", - "description": "Result message describing the outcome of the refresh token revocation operation." - } - } - }, "RoleResponse": { "type": "object", "required": [ @@ -23881,8 +22357,7 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] }, "description": "Privileges granted to the role." @@ -25113,7 +23588,7 @@ "USER", "USER_GROUP" ], - "description": "Type of principal to which the variable value applies. Use USER to assign values to a specific user, or USER_GROUP to assign values to a group.", + "description": "Principal type", "nullable": true }, "principal_identifier": { @@ -25123,17 +23598,17 @@ }, "model_identifier": { "type": "string", - "description": "Unique ID or name of the model. Required for FORMULA_VARIABLE type to scope the variable value to a specific worksheet.", + "description": "Unique ID of the model", "nullable": true }, "priority": { "type": "integer", "format": "int32", - "description": "The priority level for this scope assignment, used for conflict resolution when multiple values match. Higher priority values (larger numbers) take precedence.", + "description": "Priority level", "nullable": true } }, - "description": "Input for defining the scope of variable value assignments in batch update operations" + "description": "Input for variable value update in batch operations" }, "CreateEmailCustomizationResponse": { "type": "object", @@ -25303,16 +23778,6 @@ "type": "string", "description": "Company website URL (HTTP/HTTPS only)", "nullable": true - }, - "contact_support_url": { - "type": "string", - "description": "Contact support url (HTTP/HTTPS only).
Version: 26.2.0.cl or later", - "nullable": true - }, - "hide_contact_support_url": { - "type": "boolean", - "description": "Whether to hide contact support url.
Version: 26.2.0.cl or later", - "nullable": true } }, "description": "Email customization configuration properties" @@ -25346,15 +23811,6 @@ } } }, - "PolicyProcessOptionsInput": { - "type": "object", - "properties": { - "impersonate_user": { - "type": "string", - "nullable": true - } - } - }, "WebhookAuthenticationInput": { "type": "object", "properties": { @@ -25469,71 +23925,6 @@ } } }, - "StorageDestinationInput": { - "type": "object", - "required": [ - "storage_type", - "storage_config" - ], - "properties": { - "storage_type": { - "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination.\nExample: \"AWS_S3\"" - }, - "storage_config": { - "$ref": "#/components/schemas/StorageConfigInput", - "description": "Storage-specific configuration settings.\nExample: {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}" - } - }, - "description": "Input type for storage destination configuration." - }, - "StorageConfigInput": { - "type": "object", - "properties": { - "aws_s3_config": { - "$ref": "#/components/schemas/AwsS3ConfigInput", - "description": "AWS S3 storage configuration.\nExample: {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}", - "nullable": true - } - }, - "description": "Input type for storage configuration." - }, - "AwsS3ConfigInput": { - "type": "object", - "required": [ - "bucket_name", - "region", - "role_arn" - ], - "properties": { - "bucket_name": { - "type": "string", - "description": "Name of the S3 bucket where webhook payloads will be stored.\nExample: \"my-webhook-files\"" - }, - "region": { - "type": "string", - "description": "AWS region where the S3 bucket is located.\nExample: \"us-west-2\"" - }, - "role_arn": { - "type": "string", - "description": "ARN of the IAM role to assume for S3 access.\nExample: \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\"" - }, - "external_id": { - "type": "string", - "description": "External ID for secure cross-account role assumption.\nExample: \"ts-webhook-a1b2c3d4-7890\"", - "nullable": true - }, - "path_prefix": { - "type": "string", - "description": "Optional path prefix for organizing objects within the bucket.\nExample: \"thoughtspot-webhooks/\"", - "nullable": true - } - }, - "description": "Input type for AWS S3 storage configuration." - }, "WebhookDeleteResponse": { "type": "object", "required": [ From 9372444dc6d64d8adf0c51a0e566ac374a078f76 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Tue, 27 Jan 2026 16:30:37 +0530 Subject: [PATCH 15/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 1969 ++++++++++++++++++++++++++++--- 1 file changed, 1789 insertions(+), 180 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index b61413639..f907d93b6 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -85,6 +85,14 @@ ], "description": "Roles for version 9.9.0.cl" }, + { + "name": "26.2.0.cl", + "id": "26.2.0.cl", + "tags": [ + "26.2.0.cl" + ], + "description": "Roles for version 26.2.0.cl" + }, { "name": "9.6.0.cl", "id": "9.6.0.cl", @@ -149,6 +157,14 @@ ], "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", @@ -164,6 +180,14 @@ "9.7.0.cl" ], "description": "Roles for version 9.7.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" } ], "tags": [], @@ -332,10 +356,10 @@ "/api/rest/2.0/ai/data-source-suggestions": { "post": { "operationId": "getDataSourceSuggestions", - "description": "\nBeta Version: 10.13.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.13.0.cl" + "10.15.0.cl" ], "requestBody": { "content": { @@ -404,7 +428,7 @@ "/api/rest/2.0/ai/instructions/get": { "post": { "operationId": "getNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to retrieve existing natural language (NL) instructions for a specific data-model. These instructions guide the AI system in understanding data context and generating more accurate responses when processing natural language queries.\n\n#### Usage guidelines\n\nTo retrieve NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID or name of the data-model to retrieve NL instructions\n\nThe API returns a response object with:\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for natural language processing\n - `scope`: The scope of the instruction (`GLOBAL`). It can be extended to data-model-user scope in future.\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\n\n> ###### Note:\n> * To use this API, the user needs atleast view access on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Use this API to view currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to retrieve existing natural language (NL) instructions for a specific data-model. These instructions guide the AI system in understanding data context and generating more accurate responses when processing natural language queries.\n\n#### Usage guidelines\n\nTo retrieve NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model to retrieve NL instructions\n\nThe API returns a response object with:\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for natural language processing\n - `scope`: The scope of the instruction (`GLOBAL`). It can be extended to data-model-user scope in future.\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\n\n> ###### Note:\n> * To use this API, the user needs atleast view access on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Use this API to view currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -686,10 +710,10 @@ "/api/rest/2.0/ai/agent/{conversation_identifier}/converse": { "post": { "operationId": "sendAgentMessage", - "description": "\nBeta Version: 10.13.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.13.0.cl" + "10.15.0.cl" ], "requestBody": { "content": { @@ -944,7 +968,7 @@ "/api/rest/2.0/ai/instructions/set": { "post": { "operationId": "setNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID or name of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\nThe API returns a response object with:\n- `success`: Boolean indicating whether the operation was successful\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally for that data-model across the system\n\n> ###### Note:\n> * To use this API, the user needs either edit access or SPOTTER_COACHING_PRIVILEGE on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\nThe API returns a response object with:\n- `success`: Boolean indicating whether the operation was successful\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally for that data-model across the system\n\n> ###### Note:\n> * To use this API, the user needs either edit access or SPOTTER_COACHING_PRIVILEGE on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -1280,7 +1304,7 @@ } }, "parameter_values": { - "description": "Parameter values.", + "description": "Allows developers to assign parameter values for existing parameters to a user at login. Note: Using parameter values for row level security use cases will ultimately be deprecated. Developers can still pass data security values via the Custom Access token via the variable_values field and create RLS rules based on custom variables. Please refer to the [ABAC via RLS documentation](https://developers.thoughtspot.com/docs/abac-user-parameters) for more details.", "type": "array", "items": { "$ref": "#/components/schemas/ParameterValues" @@ -1294,7 +1318,7 @@ } }, "objects": { - "description": "Objects on which the filter rules and parameters values should be applied to", + "description": "Objects on which the parameter and variable values should be applied to", "type": "array", "items": { "$ref": "#/components/schemas/TokenAccessScopeObject" @@ -2055,7 +2079,7 @@ "/api/rest/2.0/connection-configurations/create": { "post": { "operationId": "createConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n#### Parameterized Connection Support\nFor parameterized connections that use OAuth authentication, only the same_as_parent and policy_process_options attributes are allowed in the API request. These attributes are not applicable to connections that are not parameterized.\n\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connection Configurations", "10.12.0.cl" @@ -2078,6 +2102,20 @@ "description": "Unique ID or name of the connection.", "type": "string" }, + "same_as_parent": { + "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", + "default": false, + "type": "boolean", + "nullable": true + }, + "policy_process_options": { + "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/PolicyProcessOptionsInput" + } + ] + }, "authentication_type": { "description": "Type of authentication used for the connection.", "default": "SERVICE_ACCOUNT", @@ -2271,7 +2309,7 @@ "/api/rest/2.0/connection-configurations/{configuration_identifier}/update": { "post": { "operationId": "updateConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n \n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n#### Parameterized Connection Support\nFor parameterized oauth based connections, only the `same_as_parent` and `policy_process_options` attributes are allowed. These attributes are not applicable to connections that are not parameterized.\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connection Configurations", "10.12.0.cl" @@ -2294,6 +2332,20 @@ "description": "Description of the configuration.", "type": "string" }, + "same_as_parent": { + "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", + "default": false, + "type": "boolean", + "nullable": true + }, + "policy_process_options": { + "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/PolicyProcessOptionsInput" + } + ] + }, "authentication_type": { "description": "Type of authentication.", "type": "string", @@ -2834,6 +2886,132 @@ } } }, + "/api/rest/2.0/connections/{connection_identifier}/revoke-refresh-tokens": { + "post": { + "operationId": "revokeRefreshTokens", + "description": "\n Version: 26.2.0.cl or later\n\nRevokes OAuth refresh tokens for users who no longer require access to a data warehouse connection.\nWhen a token is revoked, the affected user's session for that connection is terminated, and they must re-authenticate to regain access.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on the ThoughtSpot instance, users with `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege can also make API requests to revoke tokens for connection users.\n\n#### Usage guidelines\n\nYou can specify different combinations of identifiers to control which refresh tokens are revoked.\n\n- **connection_identifier**: Revokes refresh tokens for all users of the connection, except the connection author.\n- **connection_identifier** and **user_identifiers**: Revokes refresh tokens only for the users specified in the request. If the name or ID of the connection author is included in the request, their token will also be revoked.\n- **connection_identifier** and **configuration_identifiers**: Revokes refresh tokens for all users on the specified configurations, except the configuration author.\n- **connection_identifier**, **configuration_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users on the specified configurations.\n- **connection_identifier** and **org_identifiers**: Revokes refresh tokens for the specified Orgs. Applicable only for published connections.\n- **connection_identifier**, **org_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users in the specified Orgs. Applicable only for published connections.\n\n**NOTE**: The `org_identifiers` parameter is only applicable for published connections. Using this parameter for unpublished connections will result in an error. Ensure that the connections are published before making the API request.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Connections", + "26.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "configuration_identifiers": { + "description": "Unique ID or name of the configuration. When provided, the refresh tokens of the users associated with the connection configuration will be revoked.", + "type": "array", + "items": { + "type": "string" + } + }, + "user_identifiers": { + "description": "Unique ID or name of the users. When provided, the refresh tokens of the specified users will be revoked. If the request includes the user ID or name of the connection author, their token will also be revoked.", + "type": "array", + "items": { + "type": "string" + } + }, + "org_identifiers": { + "description": "Unique ID or name of the Org. When provided, the refresh tokens of all users associated with the published connection in the Org will be revoked. This parameter is valid only for published connections. Using it with unpublished connections will result in an error.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "required": true + }, + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the connection whose refresh tokens need to be revoked. All the users associated with the connection will have their refresh tokens revoked except the author." + } + ], + "responses": { + "200": { + "description": "Token(s) successfully revoked.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RevokeRefreshTokensResponse" + } + } + } + }, + "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": "Object not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/connection/search": { "post": { "operationId": "searchConnection", @@ -5738,7 +5916,8 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -6099,7 +6278,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -6308,7 +6488,8 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -7621,7 +7802,7 @@ "/api/rest/2.0/metadata/parameterize": { "post": { "operationId": "parameterizeMetadata", - "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be parameterized.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be parameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.9.0.cl" @@ -7637,7 +7818,8 @@ "type": "string", "enum": [ "LOGICAL_TABLE", - "CONNECTION" + "CONNECTION", + "CONNECTION_CONFIG" ] }, "metadata_identifier": { @@ -7966,7 +8148,7 @@ "/api/rest/2.0/metadata/unparameterize": { "post": { "operationId": "unparameterizeMetadata", - "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be unparameterized.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be unparameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.9.0.cl" @@ -7982,7 +8164,8 @@ "type": "string", "enum": [ "LOGICAL_TABLE", - "CONNECTION" + "CONNECTION", + "CONNECTION_CONFIG" ] }, "metadata_identifier": { @@ -8745,7 +8928,7 @@ "/api/rest/2.0/report/liveboard": { "post": { "operationId": "exportLiveboardReport", - "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF or PNG file format.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\nThe default `file_format` is PDF. For PDF downloads, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers. Similar customization options are also available for PNG output.\n\n**NOTE**: The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n**NOTE**: Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF, PNG, CSV, or XLSX file format.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\nThe default `file_format` is CSV. For PDF exports, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers. Similar customization options are available for PNG exports. CSV and XLSX exports do not support customization options.\n\n**NOTE**: The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n**NOTE**: Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in CSV format. All visualizations in the Liveboard can be exported as individual CSV files. If multiple visualizations are selected or if the entire Liveboard is exported, the output is returned as a .zip file containing the CSV files for each visualization.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in XLSX format. All selected visualizations are consolidated into a single Excel workbook (.xlsx), with each visualization placed in its own worksheet (tab). XLSX exports are limited to 255 worksheets (tabs) per workbook.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Reports", "9.0.0.cl" @@ -8788,7 +8971,9 @@ "type": "string", "enum": [ "PDF", - "PNG" + "PNG", + "CSV", + "XLSX" ] }, "runtime_filter": { @@ -8957,7 +9142,8 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -9188,7 +9374,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -9351,7 +9538,8 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } } @@ -11359,6 +11547,110 @@ } } }, + "/api/rest/2.0/security/metadata/fetch-object-privileges": { + "post": { + "operationId": "fetchObjectPrivileges", + "description": "\n Version: 26.3.0.cl or later\n\nThis API fetches the object privileges present for the given list of principals (user or group), on the given set of objects. It supports pagination, which can be enabled and configured using the request parameters. It provides users access to certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals for which you want to retrieve object privilege information in the `principals` array.\n- Specify the `type` (`LOGICAL_TABLE`) and `identifier` (either GUID or name) of the metadata objects for which you want to retrieve object privilege information in the `metadata` array. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- To control the offset from where principals have to be fetched, use `record_offset`. When `record_offset` is 0, information is fetched from the beginning.\n- To control the number of principals to be fetched, use `record_size`. Default `record_size` is 20.\n- Ensure `record_offset` for a subsequent request is one more than the value of `record_size` of the previous request.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org. \n\n#### Example request\n\n```json\n{\n \"principals\": [\n {\n \"type\": \"type-1\",\n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"metadata-type-1\",\n \"identifier\": \"metadata-guid-or-name-1\"\n },\n {\n \"type\": \"metadata-type-2\",\n \"identifier\": \"metadata-guid-or-name-2\"\n }\n ],\n \"record_offset\": 0,\n \"record_size\": 20\n}\n```\n\n\n#### Response format\n\nThe API returns an array of `metadata_object_privileges` objects wrapped in JSON. Each `metadata_object_privileges` object contains:\n- Metadata information (GUID, name and type)\n- Array of `principal_object_privilege_info`.\n- Each `principal_object_privilege_info` contains:\n - Principal type. All principals of this type are listed as described below.\n - Array of `principal_object_privileges`.\n - Each `principal_object_privileges` contains:\n - Principal information (GUID, name, subtype)\n - List of applied object level privileges.\n\n#### Example response\n\n```json\n{\n \"metadata_object_privileges\": [\n {\n \"metadata_id\": \"metadata-guid-1\",\n \"metadata_name\": \"metadata-name-1\",\n \"metadata_type\": \"metadata-type-1\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n }\n ]\n },\n {\n \"principal_type\": \"principal-type-2\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-3\",\n \"principal_name\": \"principal-guid-4\",\n \"principal_sub_type\": \"principal-sub-type-4\",\n \"object_privileges\": \"[object-privilege-1]\"\n }\n ]\n }\n ]\n },\n {\n \"metadata_id\": \"metadata-guid-2\",\n \"metadata_name\": \"metadata-name-2\",\n \"metadata_type\": \"metadata-type-2\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-3, object-privilege-4]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-4]\"\n }\n ]\n }\n ]\n }\n ]\n}\n```\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Security", + "26.3.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "metadata": { + "description": "Metadata objects for which you want to fetch object privileges. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ObjectPrivilegesMetadataInput" + } + }, + "principals": { + "description": "User or group objects for which you want to fetch object privileges.\nIf not specified, the API returns all users and groups that\nhave object privileges on the specified metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PrincipalsInput" + } + }, + "record_offset": { + "description": "The starting record number from where the records should be included for each metadata type.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included for each metadata type.", + "default": 20, + "type": "integer", + "format": "int32" + } + }, + "required": [ + "metadata" + ] + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Fetching defined object privileges of metadata objects is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectPrivilegesOfMetadataResponse" + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/security/principals/fetch-permissions": { "post": { "operationId": "fetchPermissionsOfPrincipals", @@ -11681,13 +11973,13 @@ } } }, - "/api/rest/2.0/security/metadata/publish": { + "/api/rest/2.0/security/metadata/manage-object-privilege": { "post": { - "operationId": "publishMetadata", - "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "manageObjectPrivilege", + "description": "\n Version: 26.3.0.cl or later\n\nThis API allows the addition or deletion of object level privileges for a set of users and groups, on a set of metadata objects. It provides users to access certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `operation`. The supported operations are: `ADD`, `REMOVE`.\n- Specify the type of the objects on which the object privileges are being provided in `metadata_type`. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- Specify the list of object privilege types in the `object_privilege_types` array. The supported object privilege types are: `SPOTTER_COACHING_PRIVILEGE`.\n- Specify the identifiers (either GUID or name) for the metadata objects in the `metadata_identifiers` array.\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals to which you want to apply the given operation and given object privileges in the `principals` array.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org.\n\n#### Example request\n\n```json\n{\n \"operation\": \"operation-type\",\n \"metadata_type\": \"metadata-type\",\n \"object_privilege_types\": [\"privilege-type-1\", \"privilege-type-2\"],\n \"metadata_identifiers\": [\"metadata-guid-or-name-1\", \"metadata-guid-or-name-1\"],\n \"principals\": [\n {\n \"type\": \"type-1\", \n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ]\n}\n```\n\n> ###### Note:\n> * Only admin users, users with edit access and users with coaching privilege on a given data-model can add or remove principals related to SPOTTER_COACHING_PRIVILEGE \n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "10.9.0.cl" + "26.3.0.cl" ], "requestBody": { "content": { @@ -11695,11 +11987,125 @@ "schema": { "type": "object", "properties": { - "metadata": { - "description": "Metadata objects to be published.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PublishMetadataListItem" + "operation": { + "description": "Operation to perform to manage object privileges. Available operations are: `ADD`, `REMOVE`.", + "type": "string", + "enum": [ + "ADD", + "REMOVE" + ] + }, + "metadata_type": { + "description": "Type of metadata objects on which you want to perform the operation. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", + "type": "string", + "enum": [ + "LOGICAL_TABLE" + ] + }, + "object_privilege_types": { + "description": "List of object privilege types on which you want to perform the operation.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "SPOTTER_COACHING_PRIVILEGE" + ] + } + }, + "metadata_identifiers": { + "description": "List of metadata identifiers (GUID or name) on which you want to perform the operation.", + "type": "array", + "items": { + "type": "string" + } + }, + "principals": { + "description": "User or group objects (GUID or name) to which you want to apply the given operation and given object privileges.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PrincipalsInput" + } + } + }, + "required": [ + "operation", + "metadata_type", + "object_privilege_types", + "metadata_identifiers", + "principals" + ] + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Object privileges added/removed successfully" + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/security/metadata/publish": { + "post": { + "operationId": "publishMetadata", + "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Security", + "10.9.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "metadata": { + "description": "Metadata objects to be published.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PublishMetadataListItem" } }, "org_identifiers": { @@ -12182,6 +12588,89 @@ } } }, + "/api/rest/2.0/system/security-settings/configure": { + "post": { + "operationId": "configureSecuritySettings", + "description": "\nBeta Version: 26.2.0.cl or later\n\nConfigure security settings for your ThoughtSpot application instance.\n- Use `cluster_preferences` to update cluster-level security settings including CORS whitelisted URLs, CSP settings, SAML redirect URLs, partitioned cookies, and non-embed access configuration.\n- Use `org_preferences` to configure Org-specific security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this allows configuring CORS and non-embed access settings specific to the Org.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. Cluster-level SAML and script-src settings require `ADMINISTRATION` privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", + "tags": [ + "System", + "26.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cluster_preferences": { + "description": "Cluster-level security preferences.", + "allOf": [ + { + "$ref": "#/components/schemas/SecuritySettingsClusterPreferencesInput" + } + ] + }, + "org_preferences": { + "description": "Org-level security preferences for the current org.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SecuritySettingsOrgPreferencesInput" + } + } + } + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Successfully configured the security settings." + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/system/config": { "get": { "operationId": "getSystemConfig", @@ -12531,6 +13020,153 @@ } } }, + "/api/rest/2.0/system/security-settings/search": { + "post": { + "operationId": "searchSecuritySettings", + "description": "\nBeta Version: 26.2.0.cl or later\n\nFetch security settings for your ThoughtSpot application instance.\n- Use `scope: CLUSTER` to retrieve cluster-level security settings, including CORS and CSP allowlists, SAML redirect URLs, and settings that control access to non-embedded pages.\n- Use `scope: ORG` to retrieve Org-level security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this returns CORS and non-embed access settings specific to the Org.\n- If `scope` is not specified, returns both cluster and Org-specific settings based on user privileges.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", + "tags": [ + "System", + "26.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "description": "Scope of security settings to retrieve. CLUSTER returns cluster-level settings,\nORG returns org-level settings for the current org.\nIf not specified, returns both cluster and org settings based on user privileges.", + "type": "string", + "enum": [ + "CLUSTER", + "ORG" + ] + } + } + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Successfully retrieved the list of security settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecuritySettingsResponse" + }, + "examples": { + "example_1": { + "value": { + "cluster_preferences": { + "enable_partitioned_cookies": false, + "cors_whitelisted_urls": [ + "example.com" + ], + "csp_settings": { + "connect_src_urls": [ + "https://connect.example.com" + ], + "font_src_urls": [ + "https://font.example.com" + ], + "visual_embed_hosts": [ + "https://embed.example.com" + ], + "iframe_src_urls": [ + "https://embed.example.com" + ], + "img_src_urls": [ + "https://img.example.com" + ], + "script_src_urls": { + "enabled": true, + "urls": [ + "https://script.example.com" + ] + }, + "style_src_urls": [ + "https://style.example.com" + ] + }, + "saml_redirect_urls": [ + "https://saml.example.com" + ], + "non_embed_access": { + "block_full_app_access": true + } + }, + "org_preferences": [ + { + "org": { + "id": 0, + "name": "Primary" + }, + "cors_whitelisted_urls": [ + "https://cors.example.com" + ], + "non_embed_access": { + "block_full_app_access": true, + "groups_with_access": [ + { + "id": "1234567890", + "name": "Group Name" + } + ] + } + } + ] + } + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/system/config-update": { "post": { "operationId": "updateSystemConfig", @@ -13447,7 +14083,7 @@ } }, "preferred_locale": { - "description": "Locale for the user.", + "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", "type": "string", "enum": [ "en-CA", @@ -13479,6 +14115,11 @@ "en-DE" ] }, + "use_browser_language": { + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", + "type": "boolean", + "nullable": true + }, "extended_properties": { "description": "Properties for the user", "type": "object" @@ -14064,7 +14705,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -14156,6 +14798,12 @@ "default": false, "type": "boolean", "nullable": true + }, + "include_variable_values": { + "description": "Indicates if the user's formula variable values should be included in the response.", + "default": false, + "type": "boolean", + "nullable": true } } } @@ -14329,7 +14977,7 @@ ] }, "preferred_locale": { - "description": "Locale for the user.", + "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", "type": "string", "enum": [ "en-CA", @@ -14361,6 +15009,11 @@ "en-DE" ] }, + "use_browser_language": { + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", + "type": "boolean", + "nullable": true + }, "extended_properties": { "description": "Properties for the user", "type": "object" @@ -14468,7 +15121,7 @@ "nullable": true }, "data_type": { - "description": "Variable Data Type", + "description": "Variable Data Type, only for formula_variable type, leave empty for others
Version: 10.15.0.cl or later", "type": "string", "enum": [ "VARCHAR", @@ -14726,7 +15379,7 @@ "/api/rest/2.0/template/variables/{identifier}/update": { "post": { "operationId": "updateVariable", - "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's properties in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's name in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "10.14.0.cl" @@ -14811,7 +15464,7 @@ "/api/rest/2.0/template/variables/update-values": { "post": { "operationId": "updateVariableValues", - "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, CLEAR)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* CLEAR - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "10.14.0.cl" @@ -15843,6 +16496,14 @@ "$ref": "#/components/schemas/WebhookSignatureVerificationInput" } ] + }, + "storage_destination": { + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/StorageDestinationInput" + } + ] } }, "required": [ @@ -15892,8 +16553,8 @@ "algorithm": "SHA256", "secret": "***" }, - "created_at": "2025-08-21T21:57:10.243089030Z", - "last_modified_at": "2025-08-21T21:57:10.243089030Z", + "creation_time_in_millis": 1724277430243, + "modification_time_in_millis": 1724277430243, "created_by": { "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", "name": "sarah_chen" @@ -15925,8 +16586,8 @@ "client_secret": "***" } }, - "created_at": "2025-08-21T22:15:30.123456789Z", - "last_modified_at": "2025-08-21T22:15:30.123456789Z", + "creation_time_in_millis": 1724278530123, + "modification_time_in_millis": 1724278530123, "created_by": { "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", "name": "mike_rodriguez" @@ -16065,54 +16726,197 @@ "key": "X-API-Key", "value": "***" } - }, - "created_at": "2025-08-21T16:45:30.123456789Z", - "last_modified_at": "2025-08-21T16:45:30.123456789Z", - "created_by": { - "id": "9a5c2e8f-4b7d-4c1e-9f2a-6c8e3b5d7a4c", - "name": "david_thompson" - } - } - ], - "failed_webhooks": [] + }, + "created_at": "2025-08-21T16:45:30.123456789Z", + "last_modified_at": "2025-08-21T16:45:30.123456789Z", + "created_by": { + "id": "9a5c2e8f-4b7d-4c1e-9f2a-6c8e3b5d7a4c", + "name": "david_thompson" + } + } + ], + "failed_webhooks": [] + } + }, + "example_2": { + "description": "Partial failure during deletion", + "value": { + "deleted_count": 1, + "failed_count": 1, + "deleted_webhooks": [ + { + "id": "c8f2a5e9-3d6b-4f1e-a8c2-7e4b1d9f5a3c", + "name": "Successfully Deleted Webhook", + "description": "This webhook was deleted successfully", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://service.example.com/webhook", + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "NO_AUTH": "" + }, + "created_at": "2025-08-21T18:20:15.456789012Z", + "last_modified_at": "2025-08-21T18:20:15.456789012Z", + "created_by": { + "id": "6e9c4f2a-8b5d-4e1f-9c3a-5f8b2e7d4a6c", + "name": "emma_wang" + } + } + ], + "failed_webhooks": [ + { + "id": "a3f7c1e4-9b2d-4a6e-8f3c-1e5b7a9c4f2e", + "name": "Non-existent Webhook", + "error_message": "Webhook not found or access denied" + } + ] + } + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { + "get": { + "operationId": "getWebhookStorageConfig", + "description": "\nBeta Version: 26.4.0.cl or later\n\nGet storage config information for a webhook configuration. This endpoint provides ThoughtSpot's identity information and IAM policy configuration required for customers to set up cross-account access to their S3 buckets.\n\nThe setup info returned depends on the ThoughtSpot cluster type:\n- For AWS clusters: Returns `aws_config` with STS AssumeRole configuration\n- For GCP clusters: Returns `gcp_config` with STS AssumeRoleWithWebIdentity configuration\n\n**Note:** This endpoint only returns data if the webhook has a storage destination configured.\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": [ + "Webhooks", + "26.4.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "webhook_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the webhook configuration." + } + ], + "responses": { + "200": { + "description": "Storage setup information retrieved successfully", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "example_1": { + "description": "Storage setup info for AWS cluster deployment", + "value": { + "cluster_type": "AWS", + "storage_type": "AWS_S3", + "aws_config": { + "thoughtspot_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. Copy the trust policy template and attach it to your 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": "Partial failure during deletion", + "description": "Storage setup info for GCP cluster deployment", "value": { - "deleted_count": 1, - "failed_count": 1, - "deleted_webhooks": [ - { - "id": "c8f2a5e9-3d6b-4f1e-a8c2-7e4b1d9f5a3c", - "name": "Successfully Deleted Webhook", - "description": "This webhook was deleted successfully", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://service.example.com/webhook", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "NO_AUTH": "" - }, - "created_at": "2025-08-21T18:20:15.456789012Z", - "last_modified_at": "2025-08-21T18:20:15.456789012Z", - "created_by": { - "id": "6e9c4f2a-8b5d-4e1f-9c3a-5f8b2e7d4a6c", - "name": "emma_wang" - } - } - ], - "failed_webhooks": [ - { - "id": "a3f7c1e4-9b2d-4a6e-8f3c-1e5b7a9c4f2e", - "name": "Non-existent Webhook", - "error_message": "Webhook not found or access denied" - } - ] + "cluster_type": "GCP", + "storage_type": "AWS_S3", + "gcp_config": { + "thoughtspot_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 ThoughtSpot's 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" + ] + } } } } @@ -16120,7 +16924,7 @@ } }, "400": { - "description": "Invalid request.", + "description": "Invalid request. Webhook not found or does not have storage destination configured.", "content": { "application/json": { "schema": { @@ -16414,6 +17218,14 @@ "$ref": "#/components/schemas/WebhookSignatureVerificationInput" } ] + }, + "storage_destination": { + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/StorageDestinationInput" + } + ] } } } @@ -16796,6 +17608,11 @@ "description": "Locale for the user.", "nullable": true }, + "use_browser_language": { + "type": "boolean", + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", + "nullable": true + }, "extended_properties": { "type": "object", "description": "Properties for the user", @@ -17065,6 +17882,14 @@ "onboarding_content_url": { "type": "string", "nullable": true + }, + "saml_enabled": { + "type": "boolean", + "nullable": true + }, + "okta_enabled": { + "type": "boolean", + "nullable": true } } }, @@ -17075,115 +17900,344 @@ "type": "object", "nullable": true } - } + } + }, + "OrgPreferenceSearchCriteriaInput": { + "type": "object", + "required": [ + "org_identifier" + ], + "properties": { + "org_identifier": { + "type": "string", + "description": "Unique identifier or name of the org" + }, + "event_types": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] + }, + "description": "Event types to search for. If not provided, all event types for this org are returned.", + "nullable": true + } + } + }, + "CommunicationChannelPreferencesResponse": { + "type": "object", + "properties": { + "cluster_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfig" + }, + "description": "Cluster-level default configurations.", + "nullable": true + }, + "org_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrgChannelConfigResponse" + }, + "description": "Org-specific configurations.", + "nullable": true + } + } + }, + "EventChannelConfig": { + "type": "object", + "required": [ + "event_type", + "channels" + ], + "properties": { + "event_type": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Type of event for which communication channels are configured" + }, + "channels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "EMAIL", + "WEBHOOK" + ] + }, + "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." + } + } + }, + "OrgChannelConfigResponse": { + "type": "object", + "required": [ + "org", + "preferences" + ], + "properties": { + "org": { + "$ref": "#/components/schemas/OrgDetails", + "description": "Org details" + }, + "preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfig" + }, + "description": "Event-specific communication channel configurations for this org" + } + } + }, + "OrgDetails": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique id of the org" + }, + "name": { + "type": "string", + "description": "Name of the org" + } + } + }, + "SecuritySettingsResponse": { + "type": "object", + "properties": { + "cluster_preferences": { + "$ref": "#/components/schemas/SecuritySettingsClusterPreferences", + "description": "Cluster-level security preferences.", + "nullable": true + }, + "org_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SecuritySettingsOrgPreferences" + }, + "description": "Org-level security preferences.", + "nullable": true + } + }, + "description": "Response type for security settings search." + }, + "SecuritySettingsClusterPreferences": { + "type": "object", + "properties": { + "enable_partitioned_cookies": { + "type": "boolean", + "description": "Support embedded access when third-party cookies are blocked.", + "nullable": true + }, + "cors_whitelisted_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed origins for CORS.", + "nullable": true + }, + "csp_settings": { + "$ref": "#/components/schemas/CspSettings", + "description": "CSP (Content Security Policy) settings.", + "nullable": true + }, + "saml_redirect_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed redirect hosts for SAML login.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/ClusterNonEmbedAccess", + "description": "Non-embed access configuration at cluster level.", + "nullable": true + } + }, + "description": "Cluster-level security preferences." + }, + "CspSettings": { + "type": "object", + "properties": { + "connect_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for connect-src directive.", + "nullable": true + }, + "font_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for font-src directive.", + "nullable": true + }, + "visual_embed_hosts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed hosts for visual embed (frame-ancestors directive).", + "nullable": true + }, + "iframe_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for frame-src directive.", + "nullable": true + }, + "img_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for img-src directive.", + "nullable": true + }, + "script_src_urls": { + "$ref": "#/components/schemas/ScriptSrcUrls", + "description": "Script-src settings including URLs and enabled flag.", + "nullable": true + }, + "style_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for style-src directive.", + "nullable": true + } + }, + "description": "CSP (Content Security Policy) settings." }, - "OrgPreferenceSearchCriteriaInput": { + "ScriptSrcUrls": { "type": "object", - "required": [ - "org_identifier" - ], "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" + "enabled": { + "type": "boolean", + "description": "Whether script-src customization is enabled.", + "nullable": true }, - "event_types": { + "urls": { "type": "array", "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] + "type": "string" }, - "description": "Event types to search for. If not provided, all event types for this org are returned.", + "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", "nullable": true } - } + }, + "description": "Script-src CSP settings." }, - "CommunicationChannelPreferencesResponse": { + "ClusterNonEmbedAccess": { "type": "object", "properties": { - "cluster_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfig" - }, - "description": "Cluster-level default configurations.", + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", "nullable": true }, - "org_preferences": { + "groups_with_access": { "type": "array", "items": { - "$ref": "#/components/schemas/OrgChannelConfigResponse" + "$ref": "#/components/schemas/GroupInfo" }, - "description": "Org-specific configurations.", + "description": "Groups that have non-embed full app access.\nOnly applicable when orgs feature is disabled. Use org_preferences when org feature is enabled.", "nullable": true } - } + }, + "description": "Cluster-level non-embed access configuration." }, - "EventChannelConfig": { + "GroupInfo": { "type": "object", - "required": [ - "event_type", - "channels" - ], "properties": { - "event_type": { + "id": { "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ], - "description": "Type of event for which communication channels are configured" + "description": "Unique identifier of the group.", + "nullable": true }, - "channels": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "EMAIL", - "WEBHOOK" - ] - }, - "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." + "name": { + "type": "string", + "description": "Name of the group.", + "nullable": true } - } + }, + "description": "Group information for non-embed access." }, - "OrgChannelConfigResponse": { + "SecuritySettingsOrgPreferences": { "type": "object", - "required": [ - "org", - "preferences" - ], "properties": { "org": { - "$ref": "#/components/schemas/OrgDetails", - "description": "Org details" + "$ref": "#/components/schemas/SecuritySettingsOrgDetails", + "description": "Org details (id and name).", + "nullable": true }, - "preferences": { + "cors_whitelisted_urls": { "type": "array", "items": { - "$ref": "#/components/schemas/EventChannelConfig" + "type": "string" }, - "description": "Event-specific communication channel configurations for this org" + "description": "Allowed origins for CORS for this org.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/OrgNonEmbedAccess", + "description": "Non-embed access configuration for this org.", + "nullable": true } - } + }, + "description": "Org-level security preferences." }, - "OrgDetails": { + "SecuritySettingsOrgDetails": { "type": "object", - "required": [ - "id", - "name" - ], "properties": { "id": { - "type": "string", - "description": "Unique id of the org" + "type": "integer", + "format": "int32", + "description": "Unique identifier of the org.", + "nullable": true }, "name": { "type": "string", - "description": "Name of the org" + "description": "Name of the org.", + "nullable": true } - } + }, + "description": "Org details for security settings." + }, + "OrgNonEmbedAccess": { + "type": "object", + "properties": { + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", + "nullable": true + }, + "groups_with_access": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupInfo" + }, + "description": "Groups that have non-embed full app access.", + "nullable": true + } + }, + "description": "Org-level non-embed access configuration." }, "OrgResponse": { "type": "object", @@ -18362,6 +19416,35 @@ } } }, + "ObjectPrivilegesMetadataInput": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LOGICAL_TABLE" + ], + "description": "Type of metadata object.\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata object." + } + } + }, + "ObjectPrivilegesOfMetadataResponse": { + "type": "object", + "properties": { + "metadata_object_privileges": { + "type": "object", + "nullable": true + } + } + }, "PrincipalsInput": { "type": "object", "required": [ @@ -19226,7 +20309,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] }, "description": "Privileges granted to the role." @@ -19950,6 +21034,11 @@ "description": "Unique ID or name of the principal", "nullable": true }, + "model_identifier": { + "type": "string", + "description": "Unique ID of the model
Beta Version: 26.3.0.cl or later", + "nullable": true + }, "priority": { "type": "integer", "format": "int32", @@ -20115,6 +21204,14 @@ "PROCESSES" ], "nullable": true + }, + "same_as_parent": { + "type": "boolean", + "nullable": true + }, + "policy_process_options": { + "$ref": "#/components/schemas/PolicyProcessOptions", + "nullable": true } } }, @@ -20135,6 +21232,15 @@ } } }, + "PolicyProcessOptions": { + "type": "object", + "properties": { + "impersonate_user": { + "type": "string", + "nullable": true + } + } + }, "WebhookSortOptionsInput": { "type": "object", "properties": { @@ -20258,6 +21364,11 @@ "$ref": "#/components/schemas/WebhookUser", "description": "User who last modified the webhook.", "nullable": true + }, + "storage_destination": { + "$ref": "#/components/schemas/StorageDestination", + "description": "Storage destination configuration for webhook payload delivery.", + "nullable": true } } }, @@ -20403,41 +21514,223 @@ "type": "string", "description": "Unique identifier of the user." }, - "name": { + "name": { + "type": "string", + "description": "Name of the user." + } + } + }, + "StorageDestination": { + "type": "object", + "required": [ + "storage_type", + "storage_config" + ], + "properties": { + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "storage_config": { + "$ref": "#/components/schemas/StorageConfig", + "description": "Storage-specific configuration settings." + } + }, + "description": "Storage destination configuration for webhook payload delivery." + }, + "StorageConfig": { + "type": "object", + "properties": { + "aws_s3_config": { + "$ref": "#/components/schemas/AwsS3Config", + "description": "AWS S3 storage configuration.", + "nullable": true + } + }, + "description": "Storage configuration containing provider-specific settings." + }, + "AwsS3Config": { + "type": "object", + "required": [ + "bucket_name", + "region", + "role_arn" + ], + "properties": { + "bucket_name": { + "type": "string", + "description": "Name of the S3 bucket where webhook payloads are stored." + }, + "region": { + "type": "string", + "description": "AWS region where the S3 bucket is located." + }, + "role_arn": { + "type": "string", + "description": "ARN of the IAM role used for S3 access." + }, + "external_id": { + "type": "string", + "description": "External ID for secure cross-account role assumption.", + "nullable": true + }, + "path_prefix": { + "type": "string", + "description": "Path prefix for organizing objects within the bucket.", + "nullable": true + } + }, + "description": "AWS S3 storage configuration details." + }, + "WebhookPagination": { + "type": "object", + "required": [ + "record_offset", + "record_size", + "total_count", + "has_more" + ], + "properties": { + "record_offset": { + "type": "integer", + "format": "int32", + "description": "The starting record number from where the records are included." + }, + "record_size": { + "type": "integer", + "format": "int32", + "description": "The number of records included in the response." + }, + "total_count": { + "type": "integer", + "format": "int32", + "description": "Total number of webhook configurations available." + }, + "has_more": { + "type": "boolean", + "description": "Indicates whether more records are available beyond the current response." + } + } + }, + "AWSStorageSetupInfo": { + "type": "object", + "required": [ + "cluster_type", + "storage_type", + "aws_config" + ], + "properties": { + "cluster_type": { + "type": "string", + "enum": [ + "AWS", + "GCP" + ], + "description": "The type of ThoughtSpot cluster deployment.\nAlways 'AWS' for this type." + }, + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "aws_config": { + "$ref": "#/components/schemas/AWSAssumeRoleSetup", + "description": "Setup info for AWS clusters using STS AssumeRole." + } + }, + "description": "Storage setup information when ThoughtSpot cluster is deployed on AWS.\nUses STS AssumeRole for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"AWS\",\n \"storage_type: \"AWS_S3\",\n \"aws_config\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n }\n}" + }, + "AWSAssumeRoleSetup": { + "type": "object", + "required": [ + "thoughtspot_aws_account_id", + "trust_policy_template" + ], + "properties": { + "thoughtspot_aws_account_id": { + "type": "string", + "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.\nExample: \"123456789012\"" + }, + "trust_policy_template": { + "type": "object", + "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nExample: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } } }] }" + }, + "setup_instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", + "nullable": true + } + }, + "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" + }, + "GCPStorageSetupInfo": { + "type": "object", + "required": [ + "cluster_type", + "storage_type", + "gcp_config" + ], + "properties": { + "cluster_type": { + "type": "string", + "enum": [ + "AWS", + "GCP" + ], + "description": "The type of ThoughtSpot cluster deployment.\nAlways 'GCP' for this type." + }, + "storage_type": { "type": "string", - "description": "Name of the user." + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "gcp_config": { + "$ref": "#/components/schemas/GCPWebIdentitySetup", + "description": "Setup info for GCP clusters using STS AssumeRoleWithWebIdentity." } - } + }, + "description": "Storage setup information when ThoughtSpot cluster is deployed on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"GCP\",\n \"storage_type: \"AWS_S3\",\n \"gcp_config\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" }, - "WebhookPagination": { + "GCPWebIdentitySetup": { "type": "object", "required": [ - "record_offset", - "record_size", - "total_count", - "has_more" + "thoughtspot_gcp_service_account_id", + "trust_policy_template" ], "properties": { - "record_offset": { - "type": "integer", - "format": "int32", - "description": "The starting record number from where the records are included." + "thoughtspot_gcp_service_account_id": { + "type": "string", + "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.\nExample: \"115663769112811637952\"" }, - "record_size": { - "type": "integer", - "format": "int32", - "description": "The number of records included in the response." + "oidc_provider": { + "type": "string", + "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"", + "nullable": true }, - "total_count": { - "type": "integer", - "format": "int32", - "description": "Total number of webhook configurations available." + "trust_policy_template": { + "type": "object", + "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nExample: { \"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\" } } }] }" }, - "has_more": { - "type": "boolean", - "description": "Indicates whether more records are available beyond the current response." + "setup_instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", + "nullable": true } - } + }, + "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" }, "GenericInfo": { "type": "object", @@ -21162,6 +22455,45 @@ }, "description": "Metadata objects to add to the user's favorites list.", "nullable": true + }, + "preferred_locale": { + "type": "string", + "description": "Locale for the user.", + "nullable": true, + "enum": [ + "en-CA", + "en-GB", + "en-US", + "de-DE", + "ja-JP", + "zh-CN", + "pt-BR", + "fr-FR", + "fr-CA", + "es-US", + "da-DK", + "es-ES", + "fi-FI", + "sv-SE", + "nb-NO", + "pt-PT", + "nl-NL", + "it-IT", + "ru-RU", + "en-IN", + "de-CH", + "en-NZ", + "es-MX", + "en-AU", + "zh-Hant", + "ko-KR", + "en-DE" + ] + }, + "use_browser_language": { + "type": "boolean", + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", + "nullable": true } } }, @@ -21276,6 +22608,185 @@ } } }, + "SecuritySettingsClusterPreferencesInput": { + "type": "object", + "properties": { + "enable_partitioned_cookies": { + "type": "boolean", + "description": "Support embedded access when third-party cookies are blocked.", + "nullable": true + }, + "cors_whitelisted_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed origins for CORS.", + "nullable": true + }, + "csp_settings": { + "$ref": "#/components/schemas/CspSettingsInput", + "description": "CSP (Content Security Policy) settings.", + "nullable": true + }, + "saml_redirect_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed redirect hosts for SAML login.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/ClusterNonEmbedAccessInput", + "description": "Non-embed access configuration at cluster level.", + "nullable": true + } + }, + "description": "Input for cluster-level security preferences configuration." + }, + "CspSettingsInput": { + "type": "object", + "properties": { + "connect_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for connect-src directive.", + "nullable": true + }, + "font_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for font-src directive.", + "nullable": true + }, + "visual_embed_hosts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed hosts for visual embed (frame-ancestors directive).", + "nullable": true + }, + "iframe_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for frame-src directive.", + "nullable": true + }, + "img_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for img-src directive.", + "nullable": true + }, + "script_src_urls": { + "$ref": "#/components/schemas/ScriptSrcUrlsInput", + "description": "Script-src settings including URLs and enabled flag.", + "nullable": true + }, + "style_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for style-src directive.", + "nullable": true + } + }, + "description": "Input for CSP (Content Security Policy) settings." + }, + "ScriptSrcUrlsInput": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether script-src customization is enabled.", + "nullable": true + }, + "urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", + "nullable": true + } + }, + "description": "Input for script-src CSP settings." + }, + "ClusterNonEmbedAccessInput": { + "type": "object", + "properties": { + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", + "nullable": true + }, + "groups_identifiers_with_access": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Group identifiers that are allowed non-embed full app access.\nCan only be set when orgs feature is disabled and block_full_app_access is true.", + "nullable": true + } + }, + "description": "Input for cluster-level non-embed access configuration." + }, + "SecuritySettingsOrgPreferencesInput": { + "type": "object", + "required": [ + "org_identifier" + ], + "properties": { + "org_identifier": { + "type": "string", + "description": "Unique identifier or name of the org" + }, + "cors_whitelisted_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed origins for CORS for this org.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/OrgNonEmbedAccessInput", + "description": "Non-embed access configuration for this org.", + "nullable": true + } + }, + "description": "Input for org-level security preferences configuration.\nNote: cross-org operations are not supported currently." + }, + "OrgNonEmbedAccessInput": { + "type": "object", + "properties": { + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", + "nullable": true + }, + "groups_identifiers_with_access": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Group identifiers that are allowed non-embed full app access. Can only be set if block_full_app_access is true.", + "nullable": true + } + }, + "description": "Input for org-level non-embed access configuration." + }, "TagMetadataTypeInput": { "type": "object", "required": [ @@ -21364,7 +22875,8 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] }, "description": "Privileges that will be assigned to the group.", @@ -22271,6 +23783,18 @@ } } }, + "RevokeRefreshTokensResponse": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "string", + "description": "Result message describing the outcome of the refresh token revocation operation." + } + } + }, "RoleResponse": { "type": "object", "required": [ @@ -22357,7 +23881,8 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] }, "description": "Privileges granted to the role." @@ -23778,6 +25303,16 @@ "type": "string", "description": "Company website URL (HTTP/HTTPS only)", "nullable": true + }, + "contact_support_url": { + "type": "string", + "description": "Contact support url (HTTP/HTTPS only).
Version: 26.2.0.cl or later", + "nullable": true + }, + "hide_contact_support_url": { + "type": "boolean", + "description": "Whether to hide contact support url.
Version: 26.2.0.cl or later", + "nullable": true } }, "description": "Email customization configuration properties" @@ -23811,6 +25346,15 @@ } } }, + "PolicyProcessOptionsInput": { + "type": "object", + "properties": { + "impersonate_user": { + "type": "string", + "nullable": true + } + } + }, "WebhookAuthenticationInput": { "type": "object", "properties": { @@ -23925,6 +25469,71 @@ } } }, + "StorageDestinationInput": { + "type": "object", + "required": [ + "storage_type", + "storage_config" + ], + "properties": { + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination.\nExample: \"AWS_S3\"" + }, + "storage_config": { + "$ref": "#/components/schemas/StorageConfigInput", + "description": "Storage-specific configuration settings.\nExample: {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}" + } + }, + "description": "Input type for storage destination configuration." + }, + "StorageConfigInput": { + "type": "object", + "properties": { + "aws_s3_config": { + "$ref": "#/components/schemas/AwsS3ConfigInput", + "description": "AWS S3 storage configuration.\nExample: {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}", + "nullable": true + } + }, + "description": "Input type for storage configuration." + }, + "AwsS3ConfigInput": { + "type": "object", + "required": [ + "bucket_name", + "region", + "role_arn" + ], + "properties": { + "bucket_name": { + "type": "string", + "description": "Name of the S3 bucket where webhook payloads will be stored.\nExample: \"my-webhook-files\"" + }, + "region": { + "type": "string", + "description": "AWS region where the S3 bucket is located.\nExample: \"us-west-2\"" + }, + "role_arn": { + "type": "string", + "description": "ARN of the IAM role to assume for S3 access.\nExample: \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\"" + }, + "external_id": { + "type": "string", + "description": "External ID for secure cross-account role assumption.\nExample: \"ts-webhook-a1b2c3d4-7890\"", + "nullable": true + }, + "path_prefix": { + "type": "string", + "description": "Optional path prefix for organizing objects within the bucket.\nExample: \"thoughtspot-webhooks/\"", + "nullable": true + } + }, + "description": "Input type for AWS S3 storage configuration." + }, "WebhookDeleteResponse": { "type": "object", "required": [ From 0081cecc530831c7287a247829d8468a89d05eff Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Tue, 27 Jan 2026 16:43:21 +0530 Subject: [PATCH 16/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 1943 +++---------------------------- 1 file changed, 167 insertions(+), 1776 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index f907d93b6..b61413639 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -85,14 +85,6 @@ ], "description": "Roles for version 9.9.0.cl" }, - { - "name": "26.2.0.cl", - "id": "26.2.0.cl", - "tags": [ - "26.2.0.cl" - ], - "description": "Roles for version 26.2.0.cl" - }, { "name": "9.6.0.cl", "id": "9.6.0.cl", @@ -157,14 +149,6 @@ ], "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", @@ -180,14 +164,6 @@ "9.7.0.cl" ], "description": "Roles for version 9.7.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" } ], "tags": [], @@ -356,10 +332,10 @@ "/api/rest/2.0/ai/data-source-suggestions": { "post": { "operationId": "getDataSourceSuggestions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.13.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.15.0.cl" + "10.13.0.cl" ], "requestBody": { "content": { @@ -428,7 +404,7 @@ "/api/rest/2.0/ai/instructions/get": { "post": { "operationId": "getNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to retrieve existing natural language (NL) instructions for a specific data-model. These instructions guide the AI system in understanding data context and generating more accurate responses when processing natural language queries.\n\n#### Usage guidelines\n\nTo retrieve NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model to retrieve NL instructions\n\nThe API returns a response object with:\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for natural language processing\n - `scope`: The scope of the instruction (`GLOBAL`). It can be extended to data-model-user scope in future.\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\n\n> ###### Note:\n> * To use this API, the user needs atleast view access on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Use this API to view currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to retrieve existing natural language (NL) instructions for a specific data-model. These instructions guide the AI system in understanding data context and generating more accurate responses when processing natural language queries.\n\n#### Usage guidelines\n\nTo retrieve NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID or name of the data-model to retrieve NL instructions\n\nThe API returns a response object with:\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for natural language processing\n - `scope`: The scope of the instruction (`GLOBAL`). It can be extended to data-model-user scope in future.\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\n\n> ###### Note:\n> * To use this API, the user needs atleast view access on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Use this API to view currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -710,10 +686,10 @@ "/api/rest/2.0/ai/agent/{conversation_identifier}/converse": { "post": { "operationId": "sendAgentMessage", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.13.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.15.0.cl" + "10.13.0.cl" ], "requestBody": { "content": { @@ -968,7 +944,7 @@ "/api/rest/2.0/ai/instructions/set": { "post": { "operationId": "setNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\nThe API returns a response object with:\n- `success`: Boolean indicating whether the operation was successful\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally for that data-model across the system\n\n> ###### Note:\n> * To use this API, the user needs either edit access or SPOTTER_COACHING_PRIVILEGE on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID or name of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\nThe API returns a response object with:\n- `success`: Boolean indicating whether the operation was successful\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally for that data-model across the system\n\n> ###### Note:\n> * To use this API, the user needs either edit access or SPOTTER_COACHING_PRIVILEGE on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -1304,7 +1280,7 @@ } }, "parameter_values": { - "description": "Allows developers to assign parameter values for existing parameters to a user at login. Note: Using parameter values for row level security use cases will ultimately be deprecated. Developers can still pass data security values via the Custom Access token via the variable_values field and create RLS rules based on custom variables. Please refer to the [ABAC via RLS documentation](https://developers.thoughtspot.com/docs/abac-user-parameters) for more details.", + "description": "Parameter values.", "type": "array", "items": { "$ref": "#/components/schemas/ParameterValues" @@ -1318,7 +1294,7 @@ } }, "objects": { - "description": "Objects on which the parameter and variable values should be applied to", + "description": "Objects on which the filter rules and parameters values should be applied to", "type": "array", "items": { "$ref": "#/components/schemas/TokenAccessScopeObject" @@ -2079,7 +2055,7 @@ "/api/rest/2.0/connection-configurations/create": { "post": { "operationId": "createConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n#### Parameterized Connection Support\nFor parameterized connections that use OAuth authentication, only the same_as_parent and policy_process_options attributes are allowed in the API request. These attributes are not applicable to connections that are not parameterized.\n\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connection Configurations", "10.12.0.cl" @@ -2102,20 +2078,6 @@ "description": "Unique ID or name of the connection.", "type": "string" }, - "same_as_parent": { - "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", - "default": false, - "type": "boolean", - "nullable": true - }, - "policy_process_options": { - "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/PolicyProcessOptionsInput" - } - ] - }, "authentication_type": { "description": "Type of authentication used for the connection.", "default": "SERVICE_ACCOUNT", @@ -2309,7 +2271,7 @@ "/api/rest/2.0/connection-configurations/{configuration_identifier}/update": { "post": { "operationId": "updateConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n#### Parameterized Connection Support\nFor parameterized oauth based connections, only the `same_as_parent` and `policy_process_options` attributes are allowed. These attributes are not applicable to connections that are not parameterized.\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n \n\n\n\n#### Endpoint URL\n", "tags": [ "Connection Configurations", "10.12.0.cl" @@ -2332,20 +2294,6 @@ "description": "Description of the configuration.", "type": "string" }, - "same_as_parent": { - "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", - "default": false, - "type": "boolean", - "nullable": true - }, - "policy_process_options": { - "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/PolicyProcessOptionsInput" - } - ] - }, "authentication_type": { "description": "Type of authentication.", "type": "string", @@ -2886,132 +2834,6 @@ } } }, - "/api/rest/2.0/connections/{connection_identifier}/revoke-refresh-tokens": { - "post": { - "operationId": "revokeRefreshTokens", - "description": "\n Version: 26.2.0.cl or later\n\nRevokes OAuth refresh tokens for users who no longer require access to a data warehouse connection.\nWhen a token is revoked, the affected user's session for that connection is terminated, and they must re-authenticate to regain access.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on the ThoughtSpot instance, users with `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege can also make API requests to revoke tokens for connection users.\n\n#### Usage guidelines\n\nYou can specify different combinations of identifiers to control which refresh tokens are revoked.\n\n- **connection_identifier**: Revokes refresh tokens for all users of the connection, except the connection author.\n- **connection_identifier** and **user_identifiers**: Revokes refresh tokens only for the users specified in the request. If the name or ID of the connection author is included in the request, their token will also be revoked.\n- **connection_identifier** and **configuration_identifiers**: Revokes refresh tokens for all users on the specified configurations, except the configuration author.\n- **connection_identifier**, **configuration_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users on the specified configurations.\n- **connection_identifier** and **org_identifiers**: Revokes refresh tokens for the specified Orgs. Applicable only for published connections.\n- **connection_identifier**, **org_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users in the specified Orgs. Applicable only for published connections.\n\n**NOTE**: The `org_identifiers` parameter is only applicable for published connections. Using this parameter for unpublished connections will result in an error. Ensure that the connections are published before making the API request.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Connections", - "26.2.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "configuration_identifiers": { - "description": "Unique ID or name of the configuration. When provided, the refresh tokens of the users associated with the connection configuration will be revoked.", - "type": "array", - "items": { - "type": "string" - } - }, - "user_identifiers": { - "description": "Unique ID or name of the users. When provided, the refresh tokens of the specified users will be revoked. If the request includes the user ID or name of the connection author, their token will also be revoked.", - "type": "array", - "items": { - "type": "string" - } - }, - "org_identifiers": { - "description": "Unique ID or name of the Org. When provided, the refresh tokens of all users associated with the published connection in the Org will be revoked. This parameter is valid only for published connections. Using it with unpublished connections will result in an error.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "required": true - }, - "parameters": [ - { - "in": "path", - "name": "connection_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the connection whose refresh tokens need to be revoked. All the users associated with the connection will have their refresh tokens revoked except the author." - } - ], - "responses": { - "200": { - "description": "Token(s) successfully revoked.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RevokeRefreshTokensResponse" - } - } - } - }, - "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": "Object not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/rest/2.0/connection/search": { "post": { "operationId": "searchConnection", @@ -5916,8 +5738,7 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -6278,8 +6099,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -6488,8 +6308,7 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -7802,7 +7621,7 @@ "/api/rest/2.0/metadata/parameterize": { "post": { "operationId": "parameterizeMetadata", - "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be parameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", + "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be parameterized.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.9.0.cl" @@ -7818,8 +7637,7 @@ "type": "string", "enum": [ "LOGICAL_TABLE", - "CONNECTION", - "CONNECTION_CONFIG" + "CONNECTION" ] }, "metadata_identifier": { @@ -8148,7 +7966,7 @@ "/api/rest/2.0/metadata/unparameterize": { "post": { "operationId": "unparameterizeMetadata", - "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be unparameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", + "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be unparameterized.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.9.0.cl" @@ -8164,8 +7982,7 @@ "type": "string", "enum": [ "LOGICAL_TABLE", - "CONNECTION", - "CONNECTION_CONFIG" + "CONNECTION" ] }, "metadata_identifier": { @@ -8928,7 +8745,7 @@ "/api/rest/2.0/report/liveboard": { "post": { "operationId": "exportLiveboardReport", - "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF, PNG, CSV, or XLSX file format.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\nThe default `file_format` is CSV. For PDF exports, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers. Similar customization options are available for PNG exports. CSV and XLSX exports do not support customization options.\n\n**NOTE**: The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n**NOTE**: Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in CSV format. All visualizations in the Liveboard can be exported as individual CSV files. If multiple visualizations are selected or if the entire Liveboard is exported, the output is returned as a .zip file containing the CSV files for each visualization.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in XLSX format. All selected visualizations are consolidated into a single Excel workbook (.xlsx), with each visualization placed in its own worksheet (tab). XLSX exports are limited to 255 worksheets (tabs) per workbook.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF or PNG file format.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\nThe default `file_format` is PDF. For PDF downloads, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers. Similar customization options are also available for PNG output.\n\n**NOTE**: The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n**NOTE**: Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n\n\n#### Endpoint URL\n", "tags": [ "Reports", "9.0.0.cl" @@ -8971,9 +8788,7 @@ "type": "string", "enum": [ "PDF", - "PNG", - "CSV", - "XLSX" + "PNG" ] }, "runtime_filter": { @@ -9142,8 +8957,7 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -9374,8 +9188,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -9538,8 +9351,7 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } } @@ -11547,110 +11359,6 @@ } } }, - "/api/rest/2.0/security/metadata/fetch-object-privileges": { - "post": { - "operationId": "fetchObjectPrivileges", - "description": "\n Version: 26.3.0.cl or later\n\nThis API fetches the object privileges present for the given list of principals (user or group), on the given set of objects. It supports pagination, which can be enabled and configured using the request parameters. It provides users access to certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals for which you want to retrieve object privilege information in the `principals` array.\n- Specify the `type` (`LOGICAL_TABLE`) and `identifier` (either GUID or name) of the metadata objects for which you want to retrieve object privilege information in the `metadata` array. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- To control the offset from where principals have to be fetched, use `record_offset`. When `record_offset` is 0, information is fetched from the beginning.\n- To control the number of principals to be fetched, use `record_size`. Default `record_size` is 20.\n- Ensure `record_offset` for a subsequent request is one more than the value of `record_size` of the previous request.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org. \n\n#### Example request\n\n```json\n{\n \"principals\": [\n {\n \"type\": \"type-1\",\n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"metadata-type-1\",\n \"identifier\": \"metadata-guid-or-name-1\"\n },\n {\n \"type\": \"metadata-type-2\",\n \"identifier\": \"metadata-guid-or-name-2\"\n }\n ],\n \"record_offset\": 0,\n \"record_size\": 20\n}\n```\n\n\n#### Response format\n\nThe API returns an array of `metadata_object_privileges` objects wrapped in JSON. Each `metadata_object_privileges` object contains:\n- Metadata information (GUID, name and type)\n- Array of `principal_object_privilege_info`.\n- Each `principal_object_privilege_info` contains:\n - Principal type. All principals of this type are listed as described below.\n - Array of `principal_object_privileges`.\n - Each `principal_object_privileges` contains:\n - Principal information (GUID, name, subtype)\n - List of applied object level privileges.\n\n#### Example response\n\n```json\n{\n \"metadata_object_privileges\": [\n {\n \"metadata_id\": \"metadata-guid-1\",\n \"metadata_name\": \"metadata-name-1\",\n \"metadata_type\": \"metadata-type-1\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n }\n ]\n },\n {\n \"principal_type\": \"principal-type-2\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-3\",\n \"principal_name\": \"principal-guid-4\",\n \"principal_sub_type\": \"principal-sub-type-4\",\n \"object_privileges\": \"[object-privilege-1]\"\n }\n ]\n }\n ]\n },\n {\n \"metadata_id\": \"metadata-guid-2\",\n \"metadata_name\": \"metadata-name-2\",\n \"metadata_type\": \"metadata-type-2\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-3, object-privilege-4]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-4]\"\n }\n ]\n }\n ]\n }\n ]\n}\n```\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Security", - "26.3.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects for which you want to fetch object privileges. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ObjectPrivilegesMetadataInput" - } - }, - "principals": { - "description": "User or group objects for which you want to fetch object privileges.\nIf not specified, the API returns all users and groups that\nhave object privileges on the specified metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PrincipalsInput" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included for each metadata type.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included for each metadata type.", - "default": 20, - "type": "integer", - "format": "int32" - } - }, - "required": [ - "metadata" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Fetching defined object privileges of metadata objects is successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ObjectPrivilegesOfMetadataResponse" - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/rest/2.0/security/principals/fetch-permissions": { "post": { "operationId": "fetchPermissionsOfPrincipals", @@ -11973,127 +11681,13 @@ } } }, - "/api/rest/2.0/security/metadata/manage-object-privilege": { + "/api/rest/2.0/security/metadata/publish": { "post": { - "operationId": "manageObjectPrivilege", - "description": "\n Version: 26.3.0.cl or later\n\nThis API allows the addition or deletion of object level privileges for a set of users and groups, on a set of metadata objects. It provides users to access certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `operation`. The supported operations are: `ADD`, `REMOVE`.\n- Specify the type of the objects on which the object privileges are being provided in `metadata_type`. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- Specify the list of object privilege types in the `object_privilege_types` array. The supported object privilege types are: `SPOTTER_COACHING_PRIVILEGE`.\n- Specify the identifiers (either GUID or name) for the metadata objects in the `metadata_identifiers` array.\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals to which you want to apply the given operation and given object privileges in the `principals` array.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org.\n\n#### Example request\n\n```json\n{\n \"operation\": \"operation-type\",\n \"metadata_type\": \"metadata-type\",\n \"object_privilege_types\": [\"privilege-type-1\", \"privilege-type-2\"],\n \"metadata_identifiers\": [\"metadata-guid-or-name-1\", \"metadata-guid-or-name-1\"],\n \"principals\": [\n {\n \"type\": \"type-1\", \n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ]\n}\n```\n\n> ###### Note:\n> * Only admin users, users with edit access and users with coaching privilege on a given data-model can add or remove principals related to SPOTTER_COACHING_PRIVILEGE \n\n\n\n#### Endpoint URL\n", + "operationId": "publishMetadata", + "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "26.3.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "operation": { - "description": "Operation to perform to manage object privileges. Available operations are: `ADD`, `REMOVE`.", - "type": "string", - "enum": [ - "ADD", - "REMOVE" - ] - }, - "metadata_type": { - "description": "Type of metadata objects on which you want to perform the operation. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", - "type": "string", - "enum": [ - "LOGICAL_TABLE" - ] - }, - "object_privilege_types": { - "description": "List of object privilege types on which you want to perform the operation.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "SPOTTER_COACHING_PRIVILEGE" - ] - } - }, - "metadata_identifiers": { - "description": "List of metadata identifiers (GUID or name) on which you want to perform the operation.", - "type": "array", - "items": { - "type": "string" - } - }, - "principals": { - "description": "User or group objects (GUID or name) to which you want to apply the given operation and given object privileges.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PrincipalsInput" - } - } - }, - "required": [ - "operation", - "metadata_type", - "object_privilege_types", - "metadata_identifiers", - "principals" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Object privileges added/removed successfully" - }, - "400": { - "description": "Invalid request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/security/metadata/publish": { - "post": { - "operationId": "publishMetadata", - "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Security", - "10.9.0.cl" + "10.9.0.cl" ], "requestBody": { "content": { @@ -12588,89 +12182,6 @@ } } }, - "/api/rest/2.0/system/security-settings/configure": { - "post": { - "operationId": "configureSecuritySettings", - "description": "\nBeta Version: 26.2.0.cl or later\n\nConfigure security settings for your ThoughtSpot application instance.\n- Use `cluster_preferences` to update cluster-level security settings including CORS whitelisted URLs, CSP settings, SAML redirect URLs, partitioned cookies, and non-embed access configuration.\n- Use `org_preferences` to configure Org-specific security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this allows configuring CORS and non-embed access settings specific to the Org.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. Cluster-level SAML and script-src settings require `ADMINISTRATION` privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", - "tags": [ - "System", - "26.2.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cluster_preferences": { - "description": "Cluster-level security preferences.", - "allOf": [ - { - "$ref": "#/components/schemas/SecuritySettingsClusterPreferencesInput" - } - ] - }, - "org_preferences": { - "description": "Org-level security preferences for the current org.", - "type": "array", - "items": { - "$ref": "#/components/schemas/SecuritySettingsOrgPreferencesInput" - } - } - } - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Successfully configured the security settings." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/rest/2.0/system/config": { "get": { "operationId": "getSystemConfig", @@ -13020,13 +12531,13 @@ } } }, - "/api/rest/2.0/system/security-settings/search": { + "/api/rest/2.0/system/config-update": { "post": { - "operationId": "searchSecuritySettings", - "description": "\nBeta Version: 26.2.0.cl or later\n\nFetch security settings for your ThoughtSpot application instance.\n- Use `scope: CLUSTER` to retrieve cluster-level security settings, including CORS and CSP allowlists, SAML redirect URLs, and settings that control access to non-embedded pages.\n- Use `scope: ORG` to retrieve Org-level security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this returns CORS and non-embed access settings specific to the Org.\n- If `scope` is not specified, returns both cluster and Org-specific settings based on user privileges.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", + "operationId": "updateSystemConfig", + "description": "\n Version: 9.2.0.cl or later\n\nUpdates the current configuration of the cluster. You must send the configuration data in JSON format.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "System", - "26.2.0.cl" + "9.2.0.cl" ], "requestBody": { "content": { @@ -13034,15 +12545,14 @@ "schema": { "type": "object", "properties": { - "scope": { - "description": "Scope of security settings to retrieve. CLUSTER returns cluster-level settings,\nORG returns org-level settings for the current org.\nIf not specified, returns both cluster and org settings based on user privileges.", - "type": "string", - "enum": [ - "CLUSTER", - "ORG" - ] + "configuration": { + "description": "Configuration JSON with the key-value pair of configuration attributes to be updated.", + "type": "object" } - } + }, + "required": [ + "configuration" + ] } } }, @@ -13050,79 +12560,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Successfully retrieved the list of security settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SecuritySettingsResponse" - }, - "examples": { - "example_1": { - "value": { - "cluster_preferences": { - "enable_partitioned_cookies": false, - "cors_whitelisted_urls": [ - "example.com" - ], - "csp_settings": { - "connect_src_urls": [ - "https://connect.example.com" - ], - "font_src_urls": [ - "https://font.example.com" - ], - "visual_embed_hosts": [ - "https://embed.example.com" - ], - "iframe_src_urls": [ - "https://embed.example.com" - ], - "img_src_urls": [ - "https://img.example.com" - ], - "script_src_urls": { - "enabled": true, - "urls": [ - "https://script.example.com" - ] - }, - "style_src_urls": [ - "https://style.example.com" - ] - }, - "saml_redirect_urls": [ - "https://saml.example.com" - ], - "non_embed_access": { - "block_full_app_access": true - } - }, - "org_preferences": [ - { - "org": { - "id": 0, - "name": "Primary" - }, - "cors_whitelisted_urls": [ - "https://cors.example.com" - ], - "non_embed_access": { - "block_full_app_access": true, - "groups_with_access": [ - { - "id": "1234567890", - "name": "Group Name" - } - ] - } - } - ] - } - } - } - } - } + "204": { + "description": "Configuration successfully updated." }, "400": { "description": "Invalid request.", @@ -13167,13 +12606,13 @@ } } }, - "/api/rest/2.0/system/config-update": { + "/api/rest/2.0/tags/assign": { "post": { - "operationId": "updateSystemConfig", - "description": "\n Version: 9.2.0.cl or later\n\nUpdates the current configuration of the cluster. You must send the configuration data in JSON format.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "assignTag", + "description": "\n Version: 9.0.0.cl or later\n\nAssigns tags to Liveboards, Answers, Tables, and Worksheets.\n\nRequires edit access to the metadata object.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "System", - "9.2.0.cl" + "Tags", + "9.0.0.cl" ], "requestBody": { "content": { @@ -13181,13 +12620,24 @@ "schema": { "type": "object", "properties": { - "configuration": { - "description": "Configuration JSON with the key-value pair of configuration attributes to be updated.", - "type": "object" + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/TagMetadataTypeInput" + } + }, + "tag_identifiers": { + "description": "GUID or name of the tag.", + "type": "array", + "items": { + "type": "string" + } } }, "required": [ - "configuration" + "metadata", + "tag_identifiers" ] } } @@ -13197,7 +12647,7 @@ "parameters": [], "responses": { "204": { - "description": "Configuration successfully updated." + "description": "Tags successfully assigned." }, "400": { "description": "Invalid request.", @@ -13242,96 +12692,10 @@ } } }, - "/api/rest/2.0/tags/assign": { + "/api/rest/2.0/tags/create": { "post": { - "operationId": "assignTag", - "description": "\n Version: 9.0.0.cl or later\n\nAssigns tags to Liveboards, Answers, Tables, and Worksheets.\n\nRequires edit access to the metadata object.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Tags", - "9.0.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/TagMetadataTypeInput" - } - }, - "tag_identifiers": { - "description": "GUID or name of the tag.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "metadata", - "tag_identifiers" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Tags successfully assigned." - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/tags/create": { - "post": { - "operationId": "createTag", - "description": "\n Version: 9.0.0.cl or later\n\nCreates a tag object.\n\nTags are labels that identify a metadata object. For example, you can create a tag to designate subject areas, such as sales, HR, marketing, and finance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createTag", + "description": "\n Version: 9.0.0.cl or later\n\nCreates a tag object.\n\nTags are labels that identify a metadata object. For example, you can create a tag to designate subject areas, such as sales, HR, marketing, and finance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Tags", "9.0.0.cl" @@ -14083,7 +13447,7 @@ } }, "preferred_locale": { - "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", + "description": "Locale for the user.", "type": "string", "enum": [ "en-CA", @@ -14115,11 +13479,6 @@ "en-DE" ] }, - "use_browser_language": { - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", - "type": "boolean", - "nullable": true - }, "extended_properties": { "description": "Properties for the user", "type": "object" @@ -14705,8 +14064,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] } }, @@ -14798,12 +14156,6 @@ "default": false, "type": "boolean", "nullable": true - }, - "include_variable_values": { - "description": "Indicates if the user's formula variable values should be included in the response.", - "default": false, - "type": "boolean", - "nullable": true } } } @@ -14977,7 +14329,7 @@ ] }, "preferred_locale": { - "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", + "description": "Locale for the user.", "type": "string", "enum": [ "en-CA", @@ -15009,11 +14361,6 @@ "en-DE" ] }, - "use_browser_language": { - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", - "type": "boolean", - "nullable": true - }, "extended_properties": { "description": "Properties for the user", "type": "object" @@ -15121,7 +14468,7 @@ "nullable": true }, "data_type": { - "description": "Variable Data Type, only for formula_variable type, leave empty for others
Version: 10.15.0.cl or later", + "description": "Variable Data Type", "type": "string", "enum": [ "VARCHAR", @@ -15379,7 +14726,7 @@ "/api/rest/2.0/template/variables/{identifier}/update": { "post": { "operationId": "updateVariable", - "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's name in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's properties in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "10.14.0.cl" @@ -15464,7 +14811,7 @@ "/api/rest/2.0/template/variables/update-values": { "post": { "operationId": "updateVariableValues", - "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, CLEAR)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* CLEAR - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "10.14.0.cl" @@ -16496,14 +15843,6 @@ "$ref": "#/components/schemas/WebhookSignatureVerificationInput" } ] - }, - "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/StorageDestinationInput" - } - ] } }, "required": [ @@ -16553,8 +15892,8 @@ "algorithm": "SHA256", "secret": "***" }, - "creation_time_in_millis": 1724277430243, - "modification_time_in_millis": 1724277430243, + "created_at": "2025-08-21T21:57:10.243089030Z", + "last_modified_at": "2025-08-21T21:57:10.243089030Z", "created_by": { "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", "name": "sarah_chen" @@ -16586,8 +15925,8 @@ "client_secret": "***" } }, - "creation_time_in_millis": 1724278530123, - "modification_time_in_millis": 1724278530123, + "created_at": "2025-08-21T22:15:30.123456789Z", + "last_modified_at": "2025-08-21T22:15:30.123456789Z", "created_by": { "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", "name": "mike_rodriguez" @@ -16823,149 +16162,6 @@ } } }, - "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { - "get": { - "operationId": "getWebhookStorageConfig", - "description": "\nBeta Version: 26.4.0.cl or later\n\nGet storage config information for a webhook configuration. This endpoint provides ThoughtSpot's identity information and IAM policy configuration required for customers to set up cross-account access to their S3 buckets.\n\nThe setup info returned depends on the ThoughtSpot cluster type:\n- For AWS clusters: Returns `aws_config` with STS AssumeRole configuration\n- For GCP clusters: Returns `gcp_config` with STS AssumeRoleWithWebIdentity configuration\n\n**Note:** This endpoint only returns data if the webhook has a storage destination configured.\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": [ - "Webhooks", - "26.4.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "webhook_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the webhook configuration." - } - ], - "responses": { - "200": { - "description": "Storage setup information retrieved successfully", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "examples": { - "example_1": { - "description": "Storage setup info for AWS cluster deployment", - "value": { - "cluster_type": "AWS", - "storage_type": "AWS_S3", - "aws_config": { - "thoughtspot_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. Copy the trust policy template and attach it to your 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": "Storage setup info for GCP cluster deployment", - "value": { - "cluster_type": "GCP", - "storage_type": "AWS_S3", - "gcp_config": { - "thoughtspot_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 ThoughtSpot's 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" - ] - } - } - } - } - } - } - }, - "400": { - "description": "Invalid request. Webhook not found or does not have storage destination configured.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/rest/2.0/webhooks/search": { "post": { "operationId": "searchWebhookConfigurations", @@ -17218,14 +16414,6 @@ "$ref": "#/components/schemas/WebhookSignatureVerificationInput" } ] - }, - "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/StorageDestinationInput" - } - ] } } } @@ -17608,11 +16796,6 @@ "description": "Locale for the user.", "nullable": true }, - "use_browser_language": { - "type": "boolean", - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", - "nullable": true - }, "extended_properties": { "type": "object", "description": "Properties for the user", @@ -17882,14 +17065,6 @@ "onboarding_content_url": { "type": "string", "nullable": true - }, - "saml_enabled": { - "type": "boolean", - "nullable": true - }, - "okta_enabled": { - "type": "boolean", - "nullable": true } } }, @@ -17900,344 +17075,115 @@ "type": "object", "nullable": true } - } - }, - "OrgPreferenceSearchCriteriaInput": { - "type": "object", - "required": [ - "org_identifier" - ], - "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" - }, - "event_types": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - }, - "description": "Event types to search for. If not provided, all event types for this org are returned.", - "nullable": true - } - } - }, - "CommunicationChannelPreferencesResponse": { - "type": "object", - "properties": { - "cluster_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfig" - }, - "description": "Cluster-level default configurations.", - "nullable": true - }, - "org_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrgChannelConfigResponse" - }, - "description": "Org-specific configurations.", - "nullable": true - } - } - }, - "EventChannelConfig": { - "type": "object", - "required": [ - "event_type", - "channels" - ], - "properties": { - "event_type": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ], - "description": "Type of event for which communication channels are configured" - }, - "channels": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "EMAIL", - "WEBHOOK" - ] - }, - "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." - } - } - }, - "OrgChannelConfigResponse": { - "type": "object", - "required": [ - "org", - "preferences" - ], - "properties": { - "org": { - "$ref": "#/components/schemas/OrgDetails", - "description": "Org details" - }, - "preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfig" - }, - "description": "Event-specific communication channel configurations for this org" - } - } - }, - "OrgDetails": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique id of the org" - }, - "name": { - "type": "string", - "description": "Name of the org" - } - } - }, - "SecuritySettingsResponse": { - "type": "object", - "properties": { - "cluster_preferences": { - "$ref": "#/components/schemas/SecuritySettingsClusterPreferences", - "description": "Cluster-level security preferences.", - "nullable": true - }, - "org_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SecuritySettingsOrgPreferences" - }, - "description": "Org-level security preferences.", - "nullable": true - } - }, - "description": "Response type for security settings search." - }, - "SecuritySettingsClusterPreferences": { - "type": "object", - "properties": { - "enable_partitioned_cookies": { - "type": "boolean", - "description": "Support embedded access when third-party cookies are blocked.", - "nullable": true - }, - "cors_whitelisted_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed origins for CORS.", - "nullable": true - }, - "csp_settings": { - "$ref": "#/components/schemas/CspSettings", - "description": "CSP (Content Security Policy) settings.", - "nullable": true - }, - "saml_redirect_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed redirect hosts for SAML login.", - "nullable": true - }, - "non_embed_access": { - "$ref": "#/components/schemas/ClusterNonEmbedAccess", - "description": "Non-embed access configuration at cluster level.", - "nullable": true - } - }, - "description": "Cluster-level security preferences." - }, - "CspSettings": { - "type": "object", - "properties": { - "connect_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for connect-src directive.", - "nullable": true - }, - "font_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for font-src directive.", - "nullable": true - }, - "visual_embed_hosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed hosts for visual embed (frame-ancestors directive).", - "nullable": true - }, - "iframe_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for frame-src directive.", - "nullable": true - }, - "img_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for img-src directive.", - "nullable": true - }, - "script_src_urls": { - "$ref": "#/components/schemas/ScriptSrcUrls", - "description": "Script-src settings including URLs and enabled flag.", - "nullable": true - }, - "style_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for style-src directive.", - "nullable": true - } - }, - "description": "CSP (Content Security Policy) settings." + } }, - "ScriptSrcUrls": { + "OrgPreferenceSearchCriteriaInput": { "type": "object", + "required": [ + "org_identifier" + ], "properties": { - "enabled": { - "type": "boolean", - "description": "Whether script-src customization is enabled.", - "nullable": true + "org_identifier": { + "type": "string", + "description": "Unique identifier or name of the org" }, - "urls": { + "event_types": { "type": "array", "items": { - "type": "string" + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] }, - "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", + "description": "Event types to search for. If not provided, all event types for this org are returned.", "nullable": true } - }, - "description": "Script-src CSP settings." + } }, - "ClusterNonEmbedAccess": { + "CommunicationChannelPreferencesResponse": { "type": "object", "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", + "cluster_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfig" + }, + "description": "Cluster-level default configurations.", "nullable": true }, - "groups_with_access": { + "org_preferences": { "type": "array", "items": { - "$ref": "#/components/schemas/GroupInfo" + "$ref": "#/components/schemas/OrgChannelConfigResponse" }, - "description": "Groups that have non-embed full app access.\nOnly applicable when orgs feature is disabled. Use org_preferences when org feature is enabled.", + "description": "Org-specific configurations.", "nullable": true } - }, - "description": "Cluster-level non-embed access configuration." + } }, - "GroupInfo": { + "EventChannelConfig": { "type": "object", + "required": [ + "event_type", + "channels" + ], "properties": { - "id": { + "event_type": { "type": "string", - "description": "Unique identifier of the group.", - "nullable": true + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Type of event for which communication channels are configured" }, - "name": { - "type": "string", - "description": "Name of the group.", - "nullable": true + "channels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "EMAIL", + "WEBHOOK" + ] + }, + "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." } - }, - "description": "Group information for non-embed access." + } }, - "SecuritySettingsOrgPreferences": { + "OrgChannelConfigResponse": { "type": "object", + "required": [ + "org", + "preferences" + ], "properties": { "org": { - "$ref": "#/components/schemas/SecuritySettingsOrgDetails", - "description": "Org details (id and name).", - "nullable": true + "$ref": "#/components/schemas/OrgDetails", + "description": "Org details" }, - "cors_whitelisted_urls": { + "preferences": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/EventChannelConfig" }, - "description": "Allowed origins for CORS for this org.", - "nullable": true - }, - "non_embed_access": { - "$ref": "#/components/schemas/OrgNonEmbedAccess", - "description": "Non-embed access configuration for this org.", - "nullable": true + "description": "Event-specific communication channel configurations for this org" } - }, - "description": "Org-level security preferences." + } }, - "SecuritySettingsOrgDetails": { + "OrgDetails": { "type": "object", + "required": [ + "id", + "name" + ], "properties": { "id": { - "type": "integer", - "format": "int32", - "description": "Unique identifier of the org.", - "nullable": true + "type": "string", + "description": "Unique id of the org" }, "name": { "type": "string", - "description": "Name of the org.", - "nullable": true - } - }, - "description": "Org details for security settings." - }, - "OrgNonEmbedAccess": { - "type": "object", - "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", - "nullable": true - }, - "groups_with_access": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupInfo" - }, - "description": "Groups that have non-embed full app access.", - "nullable": true + "description": "Name of the org" } - }, - "description": "Org-level non-embed access configuration." + } }, "OrgResponse": { "type": "object", @@ -19416,35 +18362,6 @@ } } }, - "ObjectPrivilegesMetadataInput": { - "type": "object", - "required": [ - "identifier" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "LOGICAL_TABLE" - ], - "description": "Type of metadata object.\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", - "nullable": true - }, - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata object." - } - } - }, - "ObjectPrivilegesOfMetadataResponse": { - "type": "object", - "properties": { - "metadata_object_privileges": { - "type": "object", - "nullable": true - } - } - }, "PrincipalsInput": { "type": "object", "required": [ @@ -20309,8 +19226,7 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] }, "description": "Privileges granted to the role." @@ -21034,11 +19950,6 @@ "description": "Unique ID or name of the principal", "nullable": true }, - "model_identifier": { - "type": "string", - "description": "Unique ID of the model
Beta Version: 26.3.0.cl or later", - "nullable": true - }, "priority": { "type": "integer", "format": "int32", @@ -21204,14 +20115,6 @@ "PROCESSES" ], "nullable": true - }, - "same_as_parent": { - "type": "boolean", - "nullable": true - }, - "policy_process_options": { - "$ref": "#/components/schemas/PolicyProcessOptions", - "nullable": true } } }, @@ -21232,15 +20135,6 @@ } } }, - "PolicyProcessOptions": { - "type": "object", - "properties": { - "impersonate_user": { - "type": "string", - "nullable": true - } - } - }, "WebhookSortOptionsInput": { "type": "object", "properties": { @@ -21364,11 +20258,6 @@ "$ref": "#/components/schemas/WebhookUser", "description": "User who last modified the webhook.", "nullable": true - }, - "storage_destination": { - "$ref": "#/components/schemas/StorageDestination", - "description": "Storage destination configuration for webhook payload delivery.", - "nullable": true } } }, @@ -21514,223 +20403,41 @@ "type": "string", "description": "Unique identifier of the user." }, - "name": { - "type": "string", - "description": "Name of the user." - } - } - }, - "StorageDestination": { - "type": "object", - "required": [ - "storage_type", - "storage_config" - ], - "properties": { - "storage_type": { - "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination (e.g., AWS_S3)." - }, - "storage_config": { - "$ref": "#/components/schemas/StorageConfig", - "description": "Storage-specific configuration settings." - } - }, - "description": "Storage destination configuration for webhook payload delivery." - }, - "StorageConfig": { - "type": "object", - "properties": { - "aws_s3_config": { - "$ref": "#/components/schemas/AwsS3Config", - "description": "AWS S3 storage configuration.", - "nullable": true - } - }, - "description": "Storage configuration containing provider-specific settings." - }, - "AwsS3Config": { - "type": "object", - "required": [ - "bucket_name", - "region", - "role_arn" - ], - "properties": { - "bucket_name": { - "type": "string", - "description": "Name of the S3 bucket where webhook payloads are stored." - }, - "region": { - "type": "string", - "description": "AWS region where the S3 bucket is located." - }, - "role_arn": { - "type": "string", - "description": "ARN of the IAM role used for S3 access." - }, - "external_id": { - "type": "string", - "description": "External ID for secure cross-account role assumption.", - "nullable": true - }, - "path_prefix": { - "type": "string", - "description": "Path prefix for organizing objects within the bucket.", - "nullable": true - } - }, - "description": "AWS S3 storage configuration details." - }, - "WebhookPagination": { - "type": "object", - "required": [ - "record_offset", - "record_size", - "total_count", - "has_more" - ], - "properties": { - "record_offset": { - "type": "integer", - "format": "int32", - "description": "The starting record number from where the records are included." - }, - "record_size": { - "type": "integer", - "format": "int32", - "description": "The number of records included in the response." - }, - "total_count": { - "type": "integer", - "format": "int32", - "description": "Total number of webhook configurations available." - }, - "has_more": { - "type": "boolean", - "description": "Indicates whether more records are available beyond the current response." - } - } - }, - "AWSStorageSetupInfo": { - "type": "object", - "required": [ - "cluster_type", - "storage_type", - "aws_config" - ], - "properties": { - "cluster_type": { - "type": "string", - "enum": [ - "AWS", - "GCP" - ], - "description": "The type of ThoughtSpot cluster deployment.\nAlways 'AWS' for this type." - }, - "storage_type": { - "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination (e.g., AWS_S3)." - }, - "aws_config": { - "$ref": "#/components/schemas/AWSAssumeRoleSetup", - "description": "Setup info for AWS clusters using STS AssumeRole." - } - }, - "description": "Storage setup information when ThoughtSpot cluster is deployed on AWS.\nUses STS AssumeRole for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"AWS\",\n \"storage_type: \"AWS_S3\",\n \"aws_config\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n }\n}" - }, - "AWSAssumeRoleSetup": { - "type": "object", - "required": [ - "thoughtspot_aws_account_id", - "trust_policy_template" - ], - "properties": { - "thoughtspot_aws_account_id": { - "type": "string", - "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.\nExample: \"123456789012\"" - }, - "trust_policy_template": { - "type": "object", - "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nExample: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } } }] }" - }, - "setup_instructions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", - "nullable": true - } - }, - "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" - }, - "GCPStorageSetupInfo": { - "type": "object", - "required": [ - "cluster_type", - "storage_type", - "gcp_config" - ], - "properties": { - "cluster_type": { - "type": "string", - "enum": [ - "AWS", - "GCP" - ], - "description": "The type of ThoughtSpot cluster deployment.\nAlways 'GCP' for this type." - }, - "storage_type": { + "name": { "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination (e.g., AWS_S3)." - }, - "gcp_config": { - "$ref": "#/components/schemas/GCPWebIdentitySetup", - "description": "Setup info for GCP clusters using STS AssumeRoleWithWebIdentity." + "description": "Name of the user." } - }, - "description": "Storage setup information when ThoughtSpot cluster is deployed on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"GCP\",\n \"storage_type: \"AWS_S3\",\n \"gcp_config\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" + } }, - "GCPWebIdentitySetup": { + "WebhookPagination": { "type": "object", "required": [ - "thoughtspot_gcp_service_account_id", - "trust_policy_template" + "record_offset", + "record_size", + "total_count", + "has_more" ], "properties": { - "thoughtspot_gcp_service_account_id": { - "type": "string", - "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.\nExample: \"115663769112811637952\"" + "record_offset": { + "type": "integer", + "format": "int32", + "description": "The starting record number from where the records are included." }, - "oidc_provider": { - "type": "string", - "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"", - "nullable": true + "record_size": { + "type": "integer", + "format": "int32", + "description": "The number of records included in the response." }, - "trust_policy_template": { - "type": "object", - "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nExample: { \"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\" } } }] }" + "total_count": { + "type": "integer", + "format": "int32", + "description": "Total number of webhook configurations available." }, - "setup_instructions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", - "nullable": true + "has_more": { + "type": "boolean", + "description": "Indicates whether more records are available beyond the current response." } - }, - "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" + } }, "GenericInfo": { "type": "object", @@ -22455,45 +21162,6 @@ }, "description": "Metadata objects to add to the user's favorites list.", "nullable": true - }, - "preferred_locale": { - "type": "string", - "description": "Locale for the user.", - "nullable": true, - "enum": [ - "en-CA", - "en-GB", - "en-US", - "de-DE", - "ja-JP", - "zh-CN", - "pt-BR", - "fr-FR", - "fr-CA", - "es-US", - "da-DK", - "es-ES", - "fi-FI", - "sv-SE", - "nb-NO", - "pt-PT", - "nl-NL", - "it-IT", - "ru-RU", - "en-IN", - "de-CH", - "en-NZ", - "es-MX", - "en-AU", - "zh-Hant", - "ko-KR", - "en-DE" - ] - }, - "use_browser_language": { - "type": "boolean", - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", - "nullable": true } } }, @@ -22608,185 +21276,6 @@ } } }, - "SecuritySettingsClusterPreferencesInput": { - "type": "object", - "properties": { - "enable_partitioned_cookies": { - "type": "boolean", - "description": "Support embedded access when third-party cookies are blocked.", - "nullable": true - }, - "cors_whitelisted_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed origins for CORS.", - "nullable": true - }, - "csp_settings": { - "$ref": "#/components/schemas/CspSettingsInput", - "description": "CSP (Content Security Policy) settings.", - "nullable": true - }, - "saml_redirect_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed redirect hosts for SAML login.", - "nullable": true - }, - "non_embed_access": { - "$ref": "#/components/schemas/ClusterNonEmbedAccessInput", - "description": "Non-embed access configuration at cluster level.", - "nullable": true - } - }, - "description": "Input for cluster-level security preferences configuration." - }, - "CspSettingsInput": { - "type": "object", - "properties": { - "connect_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for connect-src directive.", - "nullable": true - }, - "font_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for font-src directive.", - "nullable": true - }, - "visual_embed_hosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed hosts for visual embed (frame-ancestors directive).", - "nullable": true - }, - "iframe_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for frame-src directive.", - "nullable": true - }, - "img_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for img-src directive.", - "nullable": true - }, - "script_src_urls": { - "$ref": "#/components/schemas/ScriptSrcUrlsInput", - "description": "Script-src settings including URLs and enabled flag.", - "nullable": true - }, - "style_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for style-src directive.", - "nullable": true - } - }, - "description": "Input for CSP (Content Security Policy) settings." - }, - "ScriptSrcUrlsInput": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Whether script-src customization is enabled.", - "nullable": true - }, - "urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", - "nullable": true - } - }, - "description": "Input for script-src CSP settings." - }, - "ClusterNonEmbedAccessInput": { - "type": "object", - "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", - "nullable": true - }, - "groups_identifiers_with_access": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Group identifiers that are allowed non-embed full app access.\nCan only be set when orgs feature is disabled and block_full_app_access is true.", - "nullable": true - } - }, - "description": "Input for cluster-level non-embed access configuration." - }, - "SecuritySettingsOrgPreferencesInput": { - "type": "object", - "required": [ - "org_identifier" - ], - "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" - }, - "cors_whitelisted_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed origins for CORS for this org.", - "nullable": true - }, - "non_embed_access": { - "$ref": "#/components/schemas/OrgNonEmbedAccessInput", - "description": "Non-embed access configuration for this org.", - "nullable": true - } - }, - "description": "Input for org-level security preferences configuration.\nNote: cross-org operations are not supported currently." - }, - "OrgNonEmbedAccessInput": { - "type": "object", - "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", - "nullable": true - }, - "groups_identifiers_with_access": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Group identifiers that are allowed non-embed full app access. Can only be set if block_full_app_access is true.", - "nullable": true - } - }, - "description": "Input for org-level non-embed access configuration." - }, "TagMetadataTypeInput": { "type": "object", "required": [ @@ -22875,8 +21364,7 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] }, "description": "Privileges that will be assigned to the group.", @@ -23783,18 +22271,6 @@ } } }, - "RevokeRefreshTokensResponse": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "type": "string", - "description": "Result message describing the outcome of the refresh token revocation operation." - } - } - }, "RoleResponse": { "type": "object", "required": [ @@ -23881,8 +22357,7 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" + "CAN_DOWNLOAD_DETAILED_DATA" ] }, "description": "Privileges granted to the role." @@ -25303,16 +23778,6 @@ "type": "string", "description": "Company website URL (HTTP/HTTPS only)", "nullable": true - }, - "contact_support_url": { - "type": "string", - "description": "Contact support url (HTTP/HTTPS only).
Version: 26.2.0.cl or later", - "nullable": true - }, - "hide_contact_support_url": { - "type": "boolean", - "description": "Whether to hide contact support url.
Version: 26.2.0.cl or later", - "nullable": true } }, "description": "Email customization configuration properties" @@ -25346,15 +23811,6 @@ } } }, - "PolicyProcessOptionsInput": { - "type": "object", - "properties": { - "impersonate_user": { - "type": "string", - "nullable": true - } - } - }, "WebhookAuthenticationInput": { "type": "object", "properties": { @@ -25469,71 +23925,6 @@ } } }, - "StorageDestinationInput": { - "type": "object", - "required": [ - "storage_type", - "storage_config" - ], - "properties": { - "storage_type": { - "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination.\nExample: \"AWS_S3\"" - }, - "storage_config": { - "$ref": "#/components/schemas/StorageConfigInput", - "description": "Storage-specific configuration settings.\nExample: {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}" - } - }, - "description": "Input type for storage destination configuration." - }, - "StorageConfigInput": { - "type": "object", - "properties": { - "aws_s3_config": { - "$ref": "#/components/schemas/AwsS3ConfigInput", - "description": "AWS S3 storage configuration.\nExample: {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}", - "nullable": true - } - }, - "description": "Input type for storage configuration." - }, - "AwsS3ConfigInput": { - "type": "object", - "required": [ - "bucket_name", - "region", - "role_arn" - ], - "properties": { - "bucket_name": { - "type": "string", - "description": "Name of the S3 bucket where webhook payloads will be stored.\nExample: \"my-webhook-files\"" - }, - "region": { - "type": "string", - "description": "AWS region where the S3 bucket is located.\nExample: \"us-west-2\"" - }, - "role_arn": { - "type": "string", - "description": "ARN of the IAM role to assume for S3 access.\nExample: \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\"" - }, - "external_id": { - "type": "string", - "description": "External ID for secure cross-account role assumption.\nExample: \"ts-webhook-a1b2c3d4-7890\"", - "nullable": true - }, - "path_prefix": { - "type": "string", - "description": "Optional path prefix for organizing objects within the bucket.\nExample: \"thoughtspot-webhooks/\"", - "nullable": true - } - }, - "description": "Input type for AWS S3 storage configuration." - }, "WebhookDeleteResponse": { "type": "object", "required": [ From 6f857ea83de4e76d27e9d59cf434544eb14eecc2 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Tue, 27 Jan 2026 16:50:10 +0530 Subject: [PATCH 17/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 1981 ++++++++++++++++++++++++++++--- 1 file changed, 1795 insertions(+), 186 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index b61413639..843dbbc74 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -85,6 +85,14 @@ ], "description": "Roles for version 9.9.0.cl" }, + { + "name": "26.2.0.cl", + "id": "26.2.0.cl", + "tags": [ + "26.2.0.cl" + ], + "description": "Roles for version 26.2.0.cl" + }, { "name": "9.6.0.cl", "id": "9.6.0.cl", @@ -149,6 +157,14 @@ ], "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", @@ -164,6 +180,14 @@ "9.7.0.cl" ], "description": "Roles for version 9.7.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" } ], "tags": [], @@ -332,10 +356,10 @@ "/api/rest/2.0/ai/data-source-suggestions": { "post": { "operationId": "getDataSourceSuggestions", - "description": "\nBeta Version: 10.13.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.13.0.cl" + "10.15.0.cl" ], "requestBody": { "content": { @@ -404,7 +428,7 @@ "/api/rest/2.0/ai/instructions/get": { "post": { "operationId": "getNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to retrieve existing natural language (NL) instructions for a specific data-model. These instructions guide the AI system in understanding data context and generating more accurate responses when processing natural language queries.\n\n#### Usage guidelines\n\nTo retrieve NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID or name of the data-model to retrieve NL instructions\n\nThe API returns a response object with:\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for natural language processing\n - `scope`: The scope of the instruction (`GLOBAL`). It can be extended to data-model-user scope in future.\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\n\n> ###### Note:\n> * To use this API, the user needs atleast view access on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Use this API to view currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to retrieve existing natural language (NL) instructions for a specific data-model. These instructions guide the AI system in understanding data context and generating more accurate responses when processing natural language queries.\n\n#### Usage guidelines\n\nTo retrieve NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model to retrieve NL instructions\n\nThe API returns a response object with:\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for natural language processing\n - `scope`: The scope of the instruction (`GLOBAL`). It can be extended to data-model-user scope in future.\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\n\n> ###### Note:\n> * To use this API, the user needs atleast view access on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Use this API to view currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -686,10 +710,10 @@ "/api/rest/2.0/ai/agent/{conversation_identifier}/converse": { "post": { "operationId": "sendAgentMessage", - "description": "\nBeta Version: 10.13.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.13.0.cl" + "10.15.0.cl" ], "requestBody": { "content": { @@ -944,7 +968,7 @@ "/api/rest/2.0/ai/instructions/set": { "post": { "operationId": "setNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID or name of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\nThe API returns a response object with:\n- `success`: Boolean indicating whether the operation was successful\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally for that data-model across the system\n\n> ###### Note:\n> * To use this API, the user needs either edit access or SPOTTER_COACHING_PRIVILEGE on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\nThe API returns a response object with:\n- `success`: Boolean indicating whether the operation was successful\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally for that data-model across the system\n\n> ###### Note:\n> * To use this API, the user needs either edit access or SPOTTER_COACHING_PRIVILEGE on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -1280,7 +1304,7 @@ } }, "parameter_values": { - "description": "Parameter values.", + "description": "Allows developers to assign parameter values for existing parameters to a user at login. Note: Using parameter values for row level security use cases will ultimately be deprecated. Developers can still pass data security values via the Custom Access token via the variable_values field and create RLS rules based on custom variables. Please refer to the [ABAC via RLS documentation](https://developers.thoughtspot.com/docs/abac-user-parameters) for more details.", "type": "array", "items": { "$ref": "#/components/schemas/ParameterValues" @@ -1294,7 +1318,7 @@ } }, "objects": { - "description": "Objects on which the filter rules and parameters values should be applied to", + "description": "Objects on which the parameter and variable values should be applied to", "type": "array", "items": { "$ref": "#/components/schemas/TokenAccessScopeObject" @@ -2055,7 +2079,7 @@ "/api/rest/2.0/connection-configurations/create": { "post": { "operationId": "createConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n#### Parameterized Connection Support\nFor parameterized connections that use OAuth authentication, only the same_as_parent and policy_process_options attributes are allowed in the API request. These attributes are not applicable to connections that are not parameterized.\n\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connection Configurations", "10.12.0.cl" @@ -2078,6 +2102,20 @@ "description": "Unique ID or name of the connection.", "type": "string" }, + "same_as_parent": { + "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", + "default": false, + "type": "boolean", + "nullable": true + }, + "policy_process_options": { + "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/PolicyProcessOptionsInput" + } + ] + }, "authentication_type": { "description": "Type of authentication used for the connection.", "default": "SERVICE_ACCOUNT", @@ -2271,7 +2309,7 @@ "/api/rest/2.0/connection-configurations/{configuration_identifier}/update": { "post": { "operationId": "updateConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n \n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n#### Parameterized Connection Support\nFor parameterized oauth based connections, only the `same_as_parent` and `policy_process_options` attributes are allowed. These attributes are not applicable to connections that are not parameterized.\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connection Configurations", "10.12.0.cl" @@ -2294,6 +2332,20 @@ "description": "Description of the configuration.", "type": "string" }, + "same_as_parent": { + "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", + "default": false, + "type": "boolean", + "nullable": true + }, + "policy_process_options": { + "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/PolicyProcessOptionsInput" + } + ] + }, "authentication_type": { "description": "Type of authentication.", "type": "string", @@ -2834,6 +2886,132 @@ } } }, + "/api/rest/2.0/connections/{connection_identifier}/revoke-refresh-tokens": { + "post": { + "operationId": "revokeRefreshTokens", + "description": "\n Version: 26.2.0.cl or later\n\nRevokes OAuth refresh tokens for users who no longer require access to a data warehouse connection.\nWhen a token is revoked, the affected user's session for that connection is terminated, and they must re-authenticate to regain access.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on the ThoughtSpot instance, users with `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege can also make API requests to revoke tokens for connection users.\n\n#### Usage guidelines\n\nYou can specify different combinations of identifiers to control which refresh tokens are revoked.\n\n- **connection_identifier**: Revokes refresh tokens for all users of the connection, except the connection author.\n- **connection_identifier** and **user_identifiers**: Revokes refresh tokens only for the users specified in the request. If the name or ID of the connection author is included in the request, their token will also be revoked.\n- **connection_identifier** and **configuration_identifiers**: Revokes refresh tokens for all users on the specified configurations, except the configuration author.\n- **connection_identifier**, **configuration_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users on the specified configurations.\n- **connection_identifier** and **org_identifiers**: Revokes refresh tokens for the specified Orgs. Applicable only for published connections.\n- **connection_identifier**, **org_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users in the specified Orgs. Applicable only for published connections.\n\n**NOTE**: The `org_identifiers` parameter is only applicable for published connections. Using this parameter for unpublished connections will result in an error. Ensure that the connections are published before making the API request.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Connections", + "26.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "configuration_identifiers": { + "description": "Unique ID or name of the configuration. When provided, the refresh tokens of the users associated with the connection configuration will be revoked.", + "type": "array", + "items": { + "type": "string" + } + }, + "user_identifiers": { + "description": "Unique ID or name of the users. When provided, the refresh tokens of the specified users will be revoked. If the request includes the user ID or name of the connection author, their token will also be revoked.", + "type": "array", + "items": { + "type": "string" + } + }, + "org_identifiers": { + "description": "Unique ID or name of the Org. When provided, the refresh tokens of all users associated with the published connection in the Org will be revoked. This parameter is valid only for published connections. Using it with unpublished connections will result in an error.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "required": true + }, + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the connection whose refresh tokens need to be revoked. All the users associated with the connection will have their refresh tokens revoked except the author." + } + ], + "responses": { + "200": { + "description": "Token(s) successfully revoked.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RevokeRefreshTokensResponse" + } + } + } + }, + "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": "Object not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/connection/search": { "post": { "operationId": "searchConnection", @@ -5738,7 +5916,8 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -6099,7 +6278,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -6308,7 +6488,8 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -7621,7 +7802,7 @@ "/api/rest/2.0/metadata/parameterize": { "post": { "operationId": "parameterizeMetadata", - "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be parameterized.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be parameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.9.0.cl" @@ -7637,7 +7818,8 @@ "type": "string", "enum": [ "LOGICAL_TABLE", - "CONNECTION" + "CONNECTION", + "CONNECTION_CONFIG" ] }, "metadata_identifier": { @@ -7966,7 +8148,7 @@ "/api/rest/2.0/metadata/unparameterize": { "post": { "operationId": "unparameterizeMetadata", - "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection the field type is always `CONNECTION_PROPERTY`. We use the field_name in this\ncase to specify the exact property of a connection which needs to be unparameterized.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be unparameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "10.9.0.cl" @@ -7982,7 +8164,8 @@ "type": "string", "enum": [ "LOGICAL_TABLE", - "CONNECTION" + "CONNECTION", + "CONNECTION_CONFIG" ] }, "metadata_identifier": { @@ -8745,7 +8928,7 @@ "/api/rest/2.0/report/liveboard": { "post": { "operationId": "exportLiveboardReport", - "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF or PNG file format.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\nThe default `file_format` is PDF. For PDF downloads, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers. Similar customization options are also available for PNG output.\n\n**NOTE**: The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n**NOTE**: Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF, PNG, CSV, or XLSX file format.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\nThe default `file_format` is CSV. For PDF exports, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers. Similar customization options are available for PNG exports. CSV and XLSX exports do not support customization options.\n\n**NOTE**: The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n**NOTE**: Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in CSV format. All visualizations in the Liveboard can be exported as individual CSV files. If multiple visualizations are selected or if the entire Liveboard is exported, the output is returned as a .zip file containing the CSV files for each visualization.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in XLSX format. All selected visualizations are consolidated into a single Excel workbook (.xlsx), with each visualization placed in its own worksheet (tab). XLSX exports are limited to 255 worksheets (tabs) per workbook.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Reports", "9.0.0.cl" @@ -8788,7 +8971,9 @@ "type": "string", "enum": [ "PDF", - "PNG" + "PNG", + "CSV", + "XLSX" ] }, "runtime_filter": { @@ -8957,7 +9142,8 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -9188,7 +9374,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -9351,7 +9538,8 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } } @@ -11359,6 +11547,110 @@ } } }, + "/api/rest/2.0/security/metadata/fetch-object-privileges": { + "post": { + "operationId": "fetchObjectPrivileges", + "description": "\n Version: 26.3.0.cl or later\n\nThis API fetches the object privileges present for the given list of principals (user or group), on the given set of objects. It supports pagination, which can be enabled and configured using the request parameters. It provides users access to certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals for which you want to retrieve object privilege information in the `principals` array.\n- Specify the `type` (`LOGICAL_TABLE`) and `identifier` (either GUID or name) of the metadata objects for which you want to retrieve object privilege information in the `metadata` array. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- To control the offset from where principals have to be fetched, use `record_offset`. When `record_offset` is 0, information is fetched from the beginning.\n- To control the number of principals to be fetched, use `record_size`. Default `record_size` is 20.\n- Ensure `record_offset` for a subsequent request is one more than the value of `record_size` of the previous request.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org. \n\n#### Example request\n\n```json\n{\n \"principals\": [\n {\n \"type\": \"type-1\",\n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"metadata-type-1\",\n \"identifier\": \"metadata-guid-or-name-1\"\n },\n {\n \"type\": \"metadata-type-2\",\n \"identifier\": \"metadata-guid-or-name-2\"\n }\n ],\n \"record_offset\": 0,\n \"record_size\": 20\n}\n```\n\n\n#### Response format\n\nThe API returns an array of `metadata_object_privileges` objects wrapped in JSON. Each `metadata_object_privileges` object contains:\n- Metadata information (GUID, name and type)\n- Array of `principal_object_privilege_info`.\n- Each `principal_object_privilege_info` contains:\n - Principal type. All principals of this type are listed as described below.\n - Array of `principal_object_privileges`.\n - Each `principal_object_privileges` contains:\n - Principal information (GUID, name, subtype)\n - List of applied object level privileges.\n\n#### Example response\n\n```json\n{\n \"metadata_object_privileges\": [\n {\n \"metadata_id\": \"metadata-guid-1\",\n \"metadata_name\": \"metadata-name-1\",\n \"metadata_type\": \"metadata-type-1\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n }\n ]\n },\n {\n \"principal_type\": \"principal-type-2\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-3\",\n \"principal_name\": \"principal-guid-4\",\n \"principal_sub_type\": \"principal-sub-type-4\",\n \"object_privileges\": \"[object-privilege-1]\"\n }\n ]\n }\n ]\n },\n {\n \"metadata_id\": \"metadata-guid-2\",\n \"metadata_name\": \"metadata-name-2\",\n \"metadata_type\": \"metadata-type-2\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-3, object-privilege-4]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-4]\"\n }\n ]\n }\n ]\n }\n ]\n}\n```\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Security", + "26.3.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "metadata": { + "description": "Metadata objects for which you want to fetch object privileges. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ObjectPrivilegesMetadataInput" + } + }, + "principals": { + "description": "User or group objects for which you want to fetch object privileges.\nIf not specified, the API returns all users and groups that\nhave object privileges on the specified metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PrincipalsInput" + } + }, + "record_offset": { + "description": "The starting record number from where the records should be included for each metadata type.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included for each metadata type.", + "default": 20, + "type": "integer", + "format": "int32" + } + }, + "required": [ + "metadata" + ] + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Fetching defined object privileges of metadata objects is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectPrivilegesOfMetadataResponse" + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/security/principals/fetch-permissions": { "post": { "operationId": "fetchPermissionsOfPrincipals", @@ -11681,13 +11973,13 @@ } } }, - "/api/rest/2.0/security/metadata/publish": { + "/api/rest/2.0/security/metadata/manage-object-privilege": { "post": { - "operationId": "publishMetadata", - "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "manageObjectPrivilege", + "description": "\n Version: 26.3.0.cl or later\n\nThis API allows the addition or deletion of object level privileges for a set of users and groups, on a set of metadata objects. It provides users to access certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `operation`. The supported operations are: `ADD`, `REMOVE`.\n- Specify the type of the objects on which the object privileges are being provided in `metadata_type`. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- Specify the list of object privilege types in the `object_privilege_types` array. The supported object privilege types are: `SPOTTER_COACHING_PRIVILEGE`.\n- Specify the identifiers (either GUID or name) for the metadata objects in the `metadata_identifiers` array.\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals to which you want to apply the given operation and given object privileges in the `principals` array.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org.\n\n#### Example request\n\n```json\n{\n \"operation\": \"operation-type\",\n \"metadata_type\": \"metadata-type\",\n \"object_privilege_types\": [\"privilege-type-1\", \"privilege-type-2\"],\n \"metadata_identifiers\": [\"metadata-guid-or-name-1\", \"metadata-guid-or-name-1\"],\n \"principals\": [\n {\n \"type\": \"type-1\", \n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ]\n}\n```\n\n> ###### Note:\n> * Only admin users, users with edit access and users with coaching privilege on a given data-model can add or remove principals related to SPOTTER_COACHING_PRIVILEGE \n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "10.9.0.cl" + "26.3.0.cl" ], "requestBody": { "content": { @@ -11695,11 +11987,125 @@ "schema": { "type": "object", "properties": { - "metadata": { - "description": "Metadata objects to be published.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PublishMetadataListItem" + "operation": { + "description": "Operation to perform to manage object privileges. Available operations are: `ADD`, `REMOVE`.", + "type": "string", + "enum": [ + "ADD", + "REMOVE" + ] + }, + "metadata_type": { + "description": "Type of metadata objects on which you want to perform the operation. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", + "type": "string", + "enum": [ + "LOGICAL_TABLE" + ] + }, + "object_privilege_types": { + "description": "List of object privilege types on which you want to perform the operation.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "SPOTTER_COACHING_PRIVILEGE" + ] + } + }, + "metadata_identifiers": { + "description": "List of metadata identifiers (GUID or name) on which you want to perform the operation.", + "type": "array", + "items": { + "type": "string" + } + }, + "principals": { + "description": "User or group objects (GUID or name) to which you want to apply the given operation and given object privileges.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PrincipalsInput" + } + } + }, + "required": [ + "operation", + "metadata_type", + "object_privilege_types", + "metadata_identifiers", + "principals" + ] + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Object privileges added/removed successfully" + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/security/metadata/publish": { + "post": { + "operationId": "publishMetadata", + "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Security", + "10.9.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "metadata": { + "description": "Metadata objects to be published.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PublishMetadataListItem" } }, "org_identifiers": { @@ -12182,6 +12588,89 @@ } } }, + "/api/rest/2.0/system/security-settings/configure": { + "post": { + "operationId": "configureSecuritySettings", + "description": "\nBeta Version: 26.2.0.cl or later\n\nConfigure security settings for your ThoughtSpot application instance.\n- Use `cluster_preferences` to update cluster-level security settings including CORS whitelisted URLs, CSP settings, SAML redirect URLs, partitioned cookies, and non-embed access configuration.\n- Use `org_preferences` to configure Org-specific security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this allows configuring CORS and non-embed access settings specific to the Org.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. Cluster-level SAML and script-src settings require `ADMINISTRATION` privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", + "tags": [ + "System", + "26.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cluster_preferences": { + "description": "Cluster-level security preferences.", + "allOf": [ + { + "$ref": "#/components/schemas/SecuritySettingsClusterPreferencesInput" + } + ] + }, + "org_preferences": { + "description": "Org-level security preferences for the current org.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SecuritySettingsOrgPreferencesInput" + } + } + } + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Successfully configured the security settings." + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/system/config": { "get": { "operationId": "getSystemConfig", @@ -12531,6 +13020,153 @@ } } }, + "/api/rest/2.0/system/security-settings/search": { + "post": { + "operationId": "searchSecuritySettings", + "description": "\nBeta Version: 26.2.0.cl or later\n\nFetch security settings for your ThoughtSpot application instance.\n- Use `scope: CLUSTER` to retrieve cluster-level security settings, including CORS and CSP allowlists, SAML redirect URLs, and settings that control access to non-embedded pages.\n- Use `scope: ORG` to retrieve Org-level security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this returns CORS and non-embed access settings specific to the Org.\n- If `scope` is not specified, returns both cluster and Org-specific settings based on user privileges.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", + "tags": [ + "System", + "26.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "description": "Scope of security settings to retrieve. CLUSTER returns cluster-level settings,\nORG returns org-level settings for the current org.\nIf not specified, returns both cluster and org settings based on user privileges.", + "type": "string", + "enum": [ + "CLUSTER", + "ORG" + ] + } + } + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Successfully retrieved the list of security settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecuritySettingsResponse" + }, + "examples": { + "example_1": { + "value": { + "cluster_preferences": { + "enable_partitioned_cookies": false, + "cors_whitelisted_urls": [ + "example.com" + ], + "csp_settings": { + "connect_src_urls": [ + "https://connect.example.com" + ], + "font_src_urls": [ + "https://font.example.com" + ], + "visual_embed_hosts": [ + "https://embed.example.com" + ], + "iframe_src_urls": [ + "https://embed.example.com" + ], + "img_src_urls": [ + "https://img.example.com" + ], + "script_src_urls": { + "enabled": true, + "urls": [ + "https://script.example.com" + ] + }, + "style_src_urls": [ + "https://style.example.com" + ] + }, + "saml_redirect_urls": [ + "https://saml.example.com" + ], + "non_embed_access": { + "block_full_app_access": true + } + }, + "org_preferences": [ + { + "org": { + "id": 0, + "name": "Primary" + }, + "cors_whitelisted_urls": [ + "https://cors.example.com" + ], + "non_embed_access": { + "block_full_app_access": true, + "groups_with_access": [ + { + "id": "1234567890", + "name": "Group Name" + } + ] + } + } + ] + } + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/system/config-update": { "post": { "operationId": "updateSystemConfig", @@ -13447,7 +14083,7 @@ } }, "preferred_locale": { - "description": "Locale for the user.", + "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", "type": "string", "enum": [ "en-CA", @@ -13479,6 +14115,11 @@ "en-DE" ] }, + "use_browser_language": { + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", + "type": "boolean", + "nullable": true + }, "extended_properties": { "description": "Properties for the user", "type": "object" @@ -14064,7 +14705,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] } }, @@ -14156,6 +14798,12 @@ "default": false, "type": "boolean", "nullable": true + }, + "include_variable_values": { + "description": "Indicates if the user's formula variable values should be included in the response.", + "default": false, + "type": "boolean", + "nullable": true } } } @@ -14329,7 +14977,7 @@ ] }, "preferred_locale": { - "description": "Locale for the user.", + "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", "type": "string", "enum": [ "en-CA", @@ -14361,6 +15009,11 @@ "en-DE" ] }, + "use_browser_language": { + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", + "type": "boolean", + "nullable": true + }, "extended_properties": { "description": "Properties for the user", "type": "object" @@ -14468,7 +15121,7 @@ "nullable": true }, "data_type": { - "description": "Variable Data Type", + "description": "Variable Data Type, only for formula_variable type, leave empty for others
Version: 10.15.0.cl or later", "type": "string", "enum": [ "VARCHAR", @@ -14726,7 +15379,7 @@ "/api/rest/2.0/template/variables/{identifier}/update": { "post": { "operationId": "updateVariable", - "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's properties in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's name in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "10.14.0.cl" @@ -14811,7 +15464,7 @@ "/api/rest/2.0/template/variables/update-values": { "post": { "operationId": "updateVariableValues", - "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, CLEAR)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* CLEAR - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "10.14.0.cl" @@ -15843,6 +16496,14 @@ "$ref": "#/components/schemas/WebhookSignatureVerificationInput" } ] + }, + "storage_destination": { + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/StorageDestinationInput" + } + ] } }, "required": [ @@ -15892,8 +16553,8 @@ "algorithm": "SHA256", "secret": "***" }, - "created_at": "2025-08-21T21:57:10.243089030Z", - "last_modified_at": "2025-08-21T21:57:10.243089030Z", + "creation_time_in_millis": 1724277430243, + "modification_time_in_millis": 1724277430243, "created_by": { "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", "name": "sarah_chen" @@ -15925,8 +16586,8 @@ "client_secret": "***" } }, - "created_at": "2025-08-21T22:15:30.123456789Z", - "last_modified_at": "2025-08-21T22:15:30.123456789Z", + "creation_time_in_millis": 1724278530123, + "modification_time_in_millis": 1724278530123, "created_by": { "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", "name": "mike_rodriguez" @@ -16041,8 +16702,8 @@ "authentication": { "BEARER_TOKEN": "***" }, - "created_at": "2025-08-21T15:30:00.000000000Z", - "last_modified_at": "2025-08-21T15:30:00.000000000Z", + "creation_time_in_millis": 1724274600000, + "modification_time_in_millis": 1724274600000, "created_by": { "id": "1f4e7b2d-9c3a-4e6f-8b1d-3e7c5a9b2f4e", "name": "jennifer_patel" @@ -16065,54 +16726,197 @@ "key": "X-API-Key", "value": "***" } - }, - "created_at": "2025-08-21T16:45:30.123456789Z", - "last_modified_at": "2025-08-21T16:45:30.123456789Z", - "created_by": { - "id": "9a5c2e8f-4b7d-4c1e-9f2a-6c8e3b5d7a4c", - "name": "david_thompson" - } - } - ], - "failed_webhooks": [] + }, + "creation_time_in_millis": 1724275530123, + "modification_time_in_millis": 1724275530123, + "created_by": { + "id": "9a5c2e8f-4b7d-4c1e-9f2a-6c8e3b5d7a4c", + "name": "david_thompson" + } + } + ], + "failed_webhooks": [] + } + }, + "example_2": { + "description": "Partial failure during deletion", + "value": { + "deleted_count": 1, + "failed_count": 1, + "deleted_webhooks": [ + { + "id": "c8f2a5e9-3d6b-4f1e-a8c2-7e4b1d9f5a3c", + "name": "Successfully Deleted Webhook", + "description": "This webhook was deleted successfully", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://service.example.com/webhook", + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "NO_AUTH": "" + }, + "creation_time_in_millis": 1724276415456, + "modification_time_in_millis": 1724276415456, + "created_by": { + "id": "6e9c4f2a-8b5d-4e1f-9c3a-5f8b2e7d4a6c", + "name": "emma_wang" + } + } + ], + "failed_webhooks": [ + { + "id": "a3f7c1e4-9b2d-4a6e-8f3c-1e5b7a9c4f2e", + "name": "Non-existent Webhook", + "error_message": "Webhook not found or access denied" + } + ] + } + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { + "get": { + "operationId": "getWebhookStorageConfig", + "description": "\nBeta Version: 26.4.0.cl or later\n\nGet storage config information for a webhook configuration. This endpoint provides ThoughtSpot's identity information and IAM policy configuration required for customers to set up cross-account access to their S3 buckets.\n\nThe setup info returned depends on the ThoughtSpot cluster type:\n- For AWS clusters: Returns `aws_config` with STS AssumeRole configuration\n- For GCP clusters: Returns `gcp_config` with STS AssumeRoleWithWebIdentity configuration\n\n**Note:** This endpoint only returns data if the webhook has a storage destination configured.\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": [ + "Webhooks", + "26.4.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "webhook_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the webhook configuration." + } + ], + "responses": { + "200": { + "description": "Storage setup information retrieved successfully", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "example_1": { + "description": "Storage setup info for AWS cluster deployment", + "value": { + "cluster_type": "AWS", + "storage_type": "AWS_S3", + "aws_config": { + "thoughtspot_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. Copy the trust policy template and attach it to your 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": "Partial failure during deletion", + "description": "Storage setup info for GCP cluster deployment", "value": { - "deleted_count": 1, - "failed_count": 1, - "deleted_webhooks": [ - { - "id": "c8f2a5e9-3d6b-4f1e-a8c2-7e4b1d9f5a3c", - "name": "Successfully Deleted Webhook", - "description": "This webhook was deleted successfully", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://service.example.com/webhook", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "NO_AUTH": "" - }, - "created_at": "2025-08-21T18:20:15.456789012Z", - "last_modified_at": "2025-08-21T18:20:15.456789012Z", - "created_by": { - "id": "6e9c4f2a-8b5d-4e1f-9c3a-5f8b2e7d4a6c", - "name": "emma_wang" - } - } - ], - "failed_webhooks": [ - { - "id": "a3f7c1e4-9b2d-4a6e-8f3c-1e5b7a9c4f2e", - "name": "Non-existent Webhook", - "error_message": "Webhook not found or access denied" - } - ] + "cluster_type": "GCP", + "storage_type": "AWS_S3", + "gcp_config": { + "thoughtspot_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 ThoughtSpot's 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" + ] + } } } } @@ -16120,7 +16924,7 @@ } }, "400": { - "description": "Invalid request.", + "description": "Invalid request. Webhook not found or does not have storage destination configured.", "content": { "application/json": { "schema": { @@ -16255,8 +17059,8 @@ "algorithm": "SHA256", "secret": "***" }, - "created_at": "2025-08-21T21:57:10.243089030Z", - "last_modified_at": "2025-08-21T22:10:15.123456789Z", + "creation_time_in_millis": 1724277430243, + "modification_time_in_millis": 1724278215123, "created_by": { "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", "name": "sarah_chen" @@ -16284,8 +17088,8 @@ "value": "***" } }, - "created_at": "2025-08-21T20:30:45.987654321Z", - "last_modified_at": "2025-08-21T20:30:45.987654321Z", + "creation_time_in_millis": 1724275845987, + "modification_time_in_millis": 1724275845987, "created_by": { "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", "name": "mike_rodriguez" @@ -16414,6 +17218,14 @@ "$ref": "#/components/schemas/WebhookSignatureVerificationInput" } ] + }, + "storage_destination": { + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/StorageDestinationInput" + } + ] } } } @@ -16796,6 +17608,11 @@ "description": "Locale for the user.", "nullable": true }, + "use_browser_language": { + "type": "boolean", + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", + "nullable": true + }, "extended_properties": { "type": "object", "description": "Properties for the user", @@ -17065,6 +17882,14 @@ "onboarding_content_url": { "type": "string", "nullable": true + }, + "saml_enabled": { + "type": "boolean", + "nullable": true + }, + "okta_enabled": { + "type": "boolean", + "nullable": true } } }, @@ -17075,115 +17900,344 @@ "type": "object", "nullable": true } - } + } + }, + "OrgPreferenceSearchCriteriaInput": { + "type": "object", + "required": [ + "org_identifier" + ], + "properties": { + "org_identifier": { + "type": "string", + "description": "Unique identifier or name of the org" + }, + "event_types": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] + }, + "description": "Event types to search for. If not provided, all event types for this org are returned.", + "nullable": true + } + } + }, + "CommunicationChannelPreferencesResponse": { + "type": "object", + "properties": { + "cluster_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfig" + }, + "description": "Cluster-level default configurations.", + "nullable": true + }, + "org_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrgChannelConfigResponse" + }, + "description": "Org-specific configurations.", + "nullable": true + } + } + }, + "EventChannelConfig": { + "type": "object", + "required": [ + "event_type", + "channels" + ], + "properties": { + "event_type": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Type of event for which communication channels are configured" + }, + "channels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "EMAIL", + "WEBHOOK" + ] + }, + "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." + } + } + }, + "OrgChannelConfigResponse": { + "type": "object", + "required": [ + "org", + "preferences" + ], + "properties": { + "org": { + "$ref": "#/components/schemas/OrgDetails", + "description": "Org details" + }, + "preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfig" + }, + "description": "Event-specific communication channel configurations for this org" + } + } + }, + "OrgDetails": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique id of the org" + }, + "name": { + "type": "string", + "description": "Name of the org" + } + } + }, + "SecuritySettingsResponse": { + "type": "object", + "properties": { + "cluster_preferences": { + "$ref": "#/components/schemas/SecuritySettingsClusterPreferences", + "description": "Cluster-level security preferences.", + "nullable": true + }, + "org_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SecuritySettingsOrgPreferences" + }, + "description": "Org-level security preferences.", + "nullable": true + } + }, + "description": "Response type for security settings search." + }, + "SecuritySettingsClusterPreferences": { + "type": "object", + "properties": { + "enable_partitioned_cookies": { + "type": "boolean", + "description": "Support embedded access when third-party cookies are blocked.", + "nullable": true + }, + "cors_whitelisted_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed origins for CORS.", + "nullable": true + }, + "csp_settings": { + "$ref": "#/components/schemas/CspSettings", + "description": "CSP (Content Security Policy) settings.", + "nullable": true + }, + "saml_redirect_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed redirect hosts for SAML login.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/ClusterNonEmbedAccess", + "description": "Non-embed access configuration at cluster level.", + "nullable": true + } + }, + "description": "Cluster-level security preferences." + }, + "CspSettings": { + "type": "object", + "properties": { + "connect_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for connect-src directive.", + "nullable": true + }, + "font_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for font-src directive.", + "nullable": true + }, + "visual_embed_hosts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed hosts for visual embed (frame-ancestors directive).", + "nullable": true + }, + "iframe_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for frame-src directive.", + "nullable": true + }, + "img_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for img-src directive.", + "nullable": true + }, + "script_src_urls": { + "$ref": "#/components/schemas/ScriptSrcUrls", + "description": "Script-src settings including URLs and enabled flag.", + "nullable": true + }, + "style_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for style-src directive.", + "nullable": true + } + }, + "description": "CSP (Content Security Policy) settings." }, - "OrgPreferenceSearchCriteriaInput": { + "ScriptSrcUrls": { "type": "object", - "required": [ - "org_identifier" - ], "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" + "enabled": { + "type": "boolean", + "description": "Whether script-src customization is enabled.", + "nullable": true }, - "event_types": { + "urls": { "type": "array", "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] + "type": "string" }, - "description": "Event types to search for. If not provided, all event types for this org are returned.", + "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", "nullable": true } - } + }, + "description": "Script-src CSP settings." }, - "CommunicationChannelPreferencesResponse": { + "ClusterNonEmbedAccess": { "type": "object", "properties": { - "cluster_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfig" - }, - "description": "Cluster-level default configurations.", + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", "nullable": true }, - "org_preferences": { + "groups_with_access": { "type": "array", "items": { - "$ref": "#/components/schemas/OrgChannelConfigResponse" + "$ref": "#/components/schemas/GroupInfo" }, - "description": "Org-specific configurations.", + "description": "Groups that have non-embed full app access.\nOnly applicable when orgs feature is disabled. Use org_preferences when org feature is enabled.", "nullable": true } - } + }, + "description": "Cluster-level non-embed access configuration." }, - "EventChannelConfig": { + "GroupInfo": { "type": "object", - "required": [ - "event_type", - "channels" - ], "properties": { - "event_type": { + "id": { "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ], - "description": "Type of event for which communication channels are configured" + "description": "Unique identifier of the group.", + "nullable": true }, - "channels": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "EMAIL", - "WEBHOOK" - ] - }, - "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." + "name": { + "type": "string", + "description": "Name of the group.", + "nullable": true } - } + }, + "description": "Group information for non-embed access." }, - "OrgChannelConfigResponse": { + "SecuritySettingsOrgPreferences": { "type": "object", - "required": [ - "org", - "preferences" - ], "properties": { "org": { - "$ref": "#/components/schemas/OrgDetails", - "description": "Org details" + "$ref": "#/components/schemas/SecuritySettingsOrgDetails", + "description": "Org details (id and name).", + "nullable": true }, - "preferences": { + "cors_whitelisted_urls": { "type": "array", "items": { - "$ref": "#/components/schemas/EventChannelConfig" + "type": "string" }, - "description": "Event-specific communication channel configurations for this org" + "description": "Allowed origins for CORS for this org.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/OrgNonEmbedAccess", + "description": "Non-embed access configuration for this org.", + "nullable": true } - } + }, + "description": "Org-level security preferences." }, - "OrgDetails": { + "SecuritySettingsOrgDetails": { "type": "object", - "required": [ - "id", - "name" - ], "properties": { "id": { - "type": "string", - "description": "Unique id of the org" + "type": "integer", + "format": "int32", + "description": "Unique identifier of the org.", + "nullable": true }, "name": { "type": "string", - "description": "Name of the org" + "description": "Name of the org.", + "nullable": true } - } + }, + "description": "Org details for security settings." + }, + "OrgNonEmbedAccess": { + "type": "object", + "properties": { + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", + "nullable": true + }, + "groups_with_access": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupInfo" + }, + "description": "Groups that have non-embed full app access.", + "nullable": true + } + }, + "description": "Org-level non-embed access configuration." }, "OrgResponse": { "type": "object", @@ -18362,6 +19416,35 @@ } } }, + "ObjectPrivilegesMetadataInput": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LOGICAL_TABLE" + ], + "description": "Type of metadata object.\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata object." + } + } + }, + "ObjectPrivilegesOfMetadataResponse": { + "type": "object", + "properties": { + "metadata_object_privileges": { + "type": "object", + "nullable": true + } + } + }, "PrincipalsInput": { "type": "object", "required": [ @@ -19226,7 +20309,8 @@ "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] }, "description": "Privileges granted to the role." @@ -19950,6 +21034,11 @@ "description": "Unique ID or name of the principal", "nullable": true }, + "model_identifier": { + "type": "string", + "description": "Unique ID of the model
Beta Version: 26.3.0.cl or later", + "nullable": true + }, "priority": { "type": "integer", "format": "int32", @@ -20115,6 +21204,14 @@ "PROCESSES" ], "nullable": true + }, + "same_as_parent": { + "type": "boolean", + "nullable": true + }, + "policy_process_options": { + "$ref": "#/components/schemas/PolicyProcessOptions", + "nullable": true } } }, @@ -20135,6 +21232,15 @@ } } }, + "PolicyProcessOptions": { + "type": "object", + "properties": { + "impersonate_user": { + "type": "string", + "nullable": true + } + } + }, "WebhookSortOptionsInput": { "type": "object", "properties": { @@ -20258,6 +21364,11 @@ "$ref": "#/components/schemas/WebhookUser", "description": "User who last modified the webhook.", "nullable": true + }, + "storage_destination": { + "$ref": "#/components/schemas/StorageDestination", + "description": "Storage destination configuration for webhook payload delivery.", + "nullable": true } } }, @@ -20403,41 +21514,223 @@ "type": "string", "description": "Unique identifier of the user." }, - "name": { + "name": { + "type": "string", + "description": "Name of the user." + } + } + }, + "StorageDestination": { + "type": "object", + "required": [ + "storage_type", + "storage_config" + ], + "properties": { + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "storage_config": { + "$ref": "#/components/schemas/StorageConfig", + "description": "Storage-specific configuration settings." + } + }, + "description": "Storage destination configuration for webhook payload delivery." + }, + "StorageConfig": { + "type": "object", + "properties": { + "aws_s3_config": { + "$ref": "#/components/schemas/AwsS3Config", + "description": "AWS S3 storage configuration.", + "nullable": true + } + }, + "description": "Storage configuration containing provider-specific settings." + }, + "AwsS3Config": { + "type": "object", + "required": [ + "bucket_name", + "region", + "role_arn" + ], + "properties": { + "bucket_name": { + "type": "string", + "description": "Name of the S3 bucket where webhook payloads are stored." + }, + "region": { + "type": "string", + "description": "AWS region where the S3 bucket is located." + }, + "role_arn": { + "type": "string", + "description": "ARN of the IAM role used for S3 access." + }, + "external_id": { + "type": "string", + "description": "External ID for secure cross-account role assumption.", + "nullable": true + }, + "path_prefix": { + "type": "string", + "description": "Path prefix for organizing objects within the bucket.", + "nullable": true + } + }, + "description": "AWS S3 storage configuration details." + }, + "WebhookPagination": { + "type": "object", + "required": [ + "record_offset", + "record_size", + "total_count", + "has_more" + ], + "properties": { + "record_offset": { + "type": "integer", + "format": "int32", + "description": "The starting record number from where the records are included." + }, + "record_size": { + "type": "integer", + "format": "int32", + "description": "The number of records included in the response." + }, + "total_count": { + "type": "integer", + "format": "int32", + "description": "Total number of webhook configurations available." + }, + "has_more": { + "type": "boolean", + "description": "Indicates whether more records are available beyond the current response." + } + } + }, + "AWSStorageSetupInfo": { + "type": "object", + "required": [ + "cluster_type", + "storage_type", + "aws_config" + ], + "properties": { + "cluster_type": { + "type": "string", + "enum": [ + "AWS", + "GCP" + ], + "description": "The type of ThoughtSpot cluster deployment.\nAlways 'AWS' for this type." + }, + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "aws_config": { + "$ref": "#/components/schemas/AWSAssumeRoleSetup", + "description": "Setup info for AWS clusters using STS AssumeRole." + } + }, + "description": "Storage setup information when ThoughtSpot cluster is deployed on AWS.\nUses STS AssumeRole for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"AWS\",\n \"storage_type: \"AWS_S3\",\n \"aws_config\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n }\n}" + }, + "AWSAssumeRoleSetup": { + "type": "object", + "required": [ + "thoughtspot_aws_account_id", + "trust_policy_template" + ], + "properties": { + "thoughtspot_aws_account_id": { + "type": "string", + "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.\nExample: \"123456789012\"" + }, + "trust_policy_template": { + "type": "object", + "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nExample: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } } }] }" + }, + "setup_instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", + "nullable": true + } + }, + "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" + }, + "GCPStorageSetupInfo": { + "type": "object", + "required": [ + "cluster_type", + "storage_type", + "gcp_config" + ], + "properties": { + "cluster_type": { + "type": "string", + "enum": [ + "AWS", + "GCP" + ], + "description": "The type of ThoughtSpot cluster deployment.\nAlways 'GCP' for this type." + }, + "storage_type": { "type": "string", - "description": "Name of the user." + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "gcp_config": { + "$ref": "#/components/schemas/GCPWebIdentitySetup", + "description": "Setup info for GCP clusters using STS AssumeRoleWithWebIdentity." } - } + }, + "description": "Storage setup information when ThoughtSpot cluster is deployed on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"GCP\",\n \"storage_type: \"AWS_S3\",\n \"gcp_config\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" }, - "WebhookPagination": { + "GCPWebIdentitySetup": { "type": "object", "required": [ - "record_offset", - "record_size", - "total_count", - "has_more" + "thoughtspot_gcp_service_account_id", + "trust_policy_template" ], "properties": { - "record_offset": { - "type": "integer", - "format": "int32", - "description": "The starting record number from where the records are included." + "thoughtspot_gcp_service_account_id": { + "type": "string", + "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.\nExample: \"115663769112811637952\"" }, - "record_size": { - "type": "integer", - "format": "int32", - "description": "The number of records included in the response." + "oidc_provider": { + "type": "string", + "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"", + "nullable": true }, - "total_count": { - "type": "integer", - "format": "int32", - "description": "Total number of webhook configurations available." + "trust_policy_template": { + "type": "object", + "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nExample: { \"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\" } } }] }" }, - "has_more": { - "type": "boolean", - "description": "Indicates whether more records are available beyond the current response." + "setup_instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", + "nullable": true } - } + }, + "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" }, "GenericInfo": { "type": "object", @@ -21162,6 +22455,45 @@ }, "description": "Metadata objects to add to the user's favorites list.", "nullable": true + }, + "preferred_locale": { + "type": "string", + "description": "Locale for the user.", + "nullable": true, + "enum": [ + "en-CA", + "en-GB", + "en-US", + "de-DE", + "ja-JP", + "zh-CN", + "pt-BR", + "fr-FR", + "fr-CA", + "es-US", + "da-DK", + "es-ES", + "fi-FI", + "sv-SE", + "nb-NO", + "pt-PT", + "nl-NL", + "it-IT", + "ru-RU", + "en-IN", + "de-CH", + "en-NZ", + "es-MX", + "en-AU", + "zh-Hant", + "ko-KR", + "en-DE" + ] + }, + "use_browser_language": { + "type": "boolean", + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", + "nullable": true } } }, @@ -21276,6 +22608,185 @@ } } }, + "SecuritySettingsClusterPreferencesInput": { + "type": "object", + "properties": { + "enable_partitioned_cookies": { + "type": "boolean", + "description": "Support embedded access when third-party cookies are blocked.", + "nullable": true + }, + "cors_whitelisted_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed origins for CORS.", + "nullable": true + }, + "csp_settings": { + "$ref": "#/components/schemas/CspSettingsInput", + "description": "CSP (Content Security Policy) settings.", + "nullable": true + }, + "saml_redirect_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed redirect hosts for SAML login.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/ClusterNonEmbedAccessInput", + "description": "Non-embed access configuration at cluster level.", + "nullable": true + } + }, + "description": "Input for cluster-level security preferences configuration." + }, + "CspSettingsInput": { + "type": "object", + "properties": { + "connect_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for connect-src directive.", + "nullable": true + }, + "font_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for font-src directive.", + "nullable": true + }, + "visual_embed_hosts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed hosts for visual embed (frame-ancestors directive).", + "nullable": true + }, + "iframe_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for frame-src directive.", + "nullable": true + }, + "img_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for img-src directive.", + "nullable": true + }, + "script_src_urls": { + "$ref": "#/components/schemas/ScriptSrcUrlsInput", + "description": "Script-src settings including URLs and enabled flag.", + "nullable": true + }, + "style_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for style-src directive.", + "nullable": true + } + }, + "description": "Input for CSP (Content Security Policy) settings." + }, + "ScriptSrcUrlsInput": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether script-src customization is enabled.", + "nullable": true + }, + "urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", + "nullable": true + } + }, + "description": "Input for script-src CSP settings." + }, + "ClusterNonEmbedAccessInput": { + "type": "object", + "properties": { + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", + "nullable": true + }, + "groups_identifiers_with_access": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Group identifiers that are allowed non-embed full app access.\nCan only be set when orgs feature is disabled and block_full_app_access is true.", + "nullable": true + } + }, + "description": "Input for cluster-level non-embed access configuration." + }, + "SecuritySettingsOrgPreferencesInput": { + "type": "object", + "required": [ + "org_identifier" + ], + "properties": { + "org_identifier": { + "type": "string", + "description": "Unique identifier or name of the org" + }, + "cors_whitelisted_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed origins for CORS for this org.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/OrgNonEmbedAccessInput", + "description": "Non-embed access configuration for this org.", + "nullable": true + } + }, + "description": "Input for org-level security preferences configuration.\nNote: cross-org operations are not supported currently." + }, + "OrgNonEmbedAccessInput": { + "type": "object", + "properties": { + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", + "nullable": true + }, + "groups_identifiers_with_access": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Group identifiers that are allowed non-embed full app access. Can only be set if block_full_app_access is true.", + "nullable": true + } + }, + "description": "Input for org-level non-embed access configuration." + }, "TagMetadataTypeInput": { "type": "object", "required": [ @@ -21364,7 +22875,8 @@ "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] }, "description": "Privileges that will be assigned to the group.", @@ -22271,6 +23783,18 @@ } } }, + "RevokeRefreshTokensResponse": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "string", + "description": "Result message describing the outcome of the refresh token revocation operation." + } + } + }, "RoleResponse": { "type": "object", "required": [ @@ -22357,7 +23881,8 @@ "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA" + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" ] }, "description": "Privileges granted to the role." @@ -23778,6 +25303,16 @@ "type": "string", "description": "Company website URL (HTTP/HTTPS only)", "nullable": true + }, + "contact_support_url": { + "type": "string", + "description": "Contact support url (HTTP/HTTPS only).
Version: 26.2.0.cl or later", + "nullable": true + }, + "hide_contact_support_url": { + "type": "boolean", + "description": "Whether to hide contact support url.
Version: 26.2.0.cl or later", + "nullable": true } }, "description": "Email customization configuration properties" @@ -23811,6 +25346,15 @@ } } }, + "PolicyProcessOptionsInput": { + "type": "object", + "properties": { + "impersonate_user": { + "type": "string", + "nullable": true + } + } + }, "WebhookAuthenticationInput": { "type": "object", "properties": { @@ -23925,6 +25469,71 @@ } } }, + "StorageDestinationInput": { + "type": "object", + "required": [ + "storage_type", + "storage_config" + ], + "properties": { + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination.\nExample: \"AWS_S3\"" + }, + "storage_config": { + "$ref": "#/components/schemas/StorageConfigInput", + "description": "Storage-specific configuration settings.\nExample: {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}" + } + }, + "description": "Input type for storage destination configuration." + }, + "StorageConfigInput": { + "type": "object", + "properties": { + "aws_s3_config": { + "$ref": "#/components/schemas/AwsS3ConfigInput", + "description": "AWS S3 storage configuration.\nExample: {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}", + "nullable": true + } + }, + "description": "Input type for storage configuration." + }, + "AwsS3ConfigInput": { + "type": "object", + "required": [ + "bucket_name", + "region", + "role_arn" + ], + "properties": { + "bucket_name": { + "type": "string", + "description": "Name of the S3 bucket where webhook payloads will be stored.\nExample: \"my-webhook-files\"" + }, + "region": { + "type": "string", + "description": "AWS region where the S3 bucket is located.\nExample: \"us-west-2\"" + }, + "role_arn": { + "type": "string", + "description": "ARN of the IAM role to assume for S3 access.\nExample: \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\"" + }, + "external_id": { + "type": "string", + "description": "External ID for secure cross-account role assumption.\nExample: \"ts-webhook-a1b2c3d4-7890\"", + "nullable": true + }, + "path_prefix": { + "type": "string", + "description": "Optional path prefix for organizing objects within the bucket.\nExample: \"thoughtspot-webhooks/\"", + "nullable": true + } + }, + "description": "Input type for AWS S3 storage configuration." + }, "WebhookDeleteResponse": { "type": "object", "required": [ From 7cc58e8bd05d0858a79ba9125d040abcf0273976 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Fri, 6 Mar 2026 00:14:38 +0530 Subject: [PATCH 18/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 30190 ++++++++++++++++-------------- 1 file changed, 16082 insertions(+), 14108 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 881f88654..3dceb4a61 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -61,6 +61,14 @@ ], "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", @@ -180,14 +188,6 @@ "9.7.0.cl" ], "description": "Roles for version 9.7.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" } ], "tags": [], @@ -195,7 +195,7 @@ "/api/rest/2.0/ai/agent/conversation/create": { "post": { "operationId": "createAgentConversation", - "description": "Beta Version: 10.13.0.cl or later", + "description": "\nBeta Version: 10.13.0.cl or later\n\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.13.0.cl" @@ -204,29 +204,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_context": { - "description": "Context for the conversation.", - "allOf": [ - { - "$ref": "#/components/schemas/ContextPayloadV2Input" - } - ] - }, - "conversation_settings": { - "description": "Conversation settings.", - "allOf": [ - { - "$ref": "#/components/schemas/ConversationSettingsInput" - } - ] - } - }, - "required": [ - "metadata_context", - "conversation_settings" - ] + "$ref": "#/components/schemas/CreateAgentConversationRequest" } } }, @@ -289,20 +267,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the conversation.", - "type": "string" - }, - "tokens": { - "description": "Token string to set the context for the conversation. For example,`[sales],[item type],[state]`.", - "type": "string" - } - }, - "required": [ - "metadata_identifier" - ] + "$ref": "#/components/schemas/CreateConversationRequest" } } }, @@ -365,16 +330,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "query": { - "description": "User query used to suggest data sources.", - "type": "string" - } - }, - "required": [ - "query" - ] + "$ref": "#/components/schemas/GetDataSourceSuggestionsRequest" } } }, @@ -437,16 +393,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data_source_identifier": { - "description": "Unique ID or name of the data-model for which to retrieve NL instructions.", - "type": "string" - } - }, - "required": [ - "data_source_identifier" - ] + "$ref": "#/components/schemas/GetNLInstructionsRequest" } } }, @@ -509,43 +456,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_context": { - "description": "metadata for the query to enable generation of relevant sub-questions; at least one context identifier is required.", - "allOf": [ - { - "$ref": "#/components/schemas/MetadataContext" - } - ] - }, - "limit_relevant_questions": { - "description": "Maximum number of relevant questions that is allowed in the response, default = 5.", - "type": "integer", - "format": "int32" - }, - "bypass_cache": { - "description": "If true, results are not returned from cache & calculated every time.", - "type": "boolean", - "nullable": true - }, - "query": { - "description": "A user query that requires breaking down into smaller, more manageable analytical questions to facilitate better understanding and analysis.", - "type": "string" - }, - "ai_context": { - "description": "Additional context to guide the response.", - "allOf": [ - { - "$ref": "#/components/schemas/AIContext" - } - ] - } - }, - "required": [ - "metadata_context", - "query" - ] + "$ref": "#/components/schemas/GetRelevantQuestionsRequest" } } }, @@ -599,7 +510,7 @@ "/api/rest/2.0/ai/analytical-questions": { "post": { "operationId": "queryGetDecomposedQuery", - "description": "Beta Version: 10.7.0.cl or later", + "description": "\nBeta Version: 10.7.0.cl or later\n\n\n\n\n\n#### Endpoint URL\n", "deprecated": true, "tags": [ "AI", @@ -609,54 +520,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "answerIds": { - "description": "List of answer unique identifiers (GUIDs) whose data will be used to guide the response.", - "type": "array", - "items": { - "type": "string" - } - }, - "content": { - "description": "User provided content like text data, csv data as a string message to provide context & potentially improve the quality of the response.", - "type": "array", - "items": { - "type": "string" - } - }, - "conversationId": { - "description": "Unique identifier to denote current conversation.", - "type": "string" - }, - "liveboardIds": { - "description": "List of liveboard unique identifiers (GUIDs) whose data will be used to guide the response.", - "type": "array", - "items": { - "type": "string" - } - }, - "maxDecomposedQueries": { - "description": "Maximum number of decomposed queries that is allowed in the response, default = 5.", - "type": "integer", - "format": "int32" - }, - "nlsRequest": { - "description": "NLSRequest object containing user query & instructions.", - "allOf": [ - { - "$ref": "#/components/schemas/Input_eureka_NLSRequest" - } - ] - }, - "worksheetIds": { - "description": "List of worksheetIds to provide context for decomposing user query into analytical queries that can be run on them.", - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/components/schemas/QueryGetDecomposedQueryRequest" } } }, @@ -719,19 +583,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "messages": { - "description": "messages to be sent to the agent", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "messages" - ] + "$ref": "#/components/schemas/SendAgentMessageRequest" } } }, @@ -804,24 +656,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "conversation_identifier": { - "description": "Unique identifier for the conversation (used to track context)", - "type": "string" - }, - "messages": { - "description": "messages to be sent to the agent", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "conversation_identifier", - "messages" - ] + "$ref": "#/components/schemas/SendAgentMessageStreamingRequest" } } }, @@ -884,21 +719,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the conversation.", - "type": "string" - }, - "message": { - "description": "A message string with the follow-up question to continue the conversation.", - "type": "string" - } - }, - "required": [ - "metadata_identifier", - "message" - ] + "$ref": "#/components/schemas/SendMessageRequest" } } }, @@ -977,24 +798,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data_source_identifier": { - "description": "Unique ID or name of the data-model for which to set NL instructions.", - "type": "string" - }, - "nl_instructions_info": { - "description": "List of NL instructions to set for the data-model.", - "type": "array", - "items": { - "$ref": "#/components/schemas/NLInstructionsInfoInput" - } - } - }, - "required": [ - "data_source_identifier", - "nl_instructions_info" - ] + "$ref": "#/components/schemas/SetNLInstructionsRequest" } } }, @@ -1057,21 +861,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "query": { - "description": "A natural language query string to generate the Answer.", - "type": "string" - }, - "metadata_identifier": { - "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the query.", - "type": "string" - } - }, - "required": [ - "query", - "metadata_identifier" - ] + "$ref": "#/components/schemas/SingleAnswerRequest" } } }, @@ -1125,7 +915,7 @@ "/api/rest/2.0/auth/session/user": { "get": { "operationId": "getCurrentUserInfo", - "description": "\n Version: 9.0.0.cl or later\n\nRetrieves details of the current user session for the token provided in the request header.\n\nAny ThoughtSpot user can access this endpoint and send an API request. The data returned in the API response varies according to user's privilege and object access permissions.\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 9.0.0.cl or later\n\nRetrieves details of the current user session for the token provided in the request header.\n\nAny ThoughtSpot user can access this endpoint and send an API request. The data returned in the API response varies according to user's privilege and object access permissions.\n\n**NOTE**: In ThoughtSpot, users with cluster administration privileges can access all Orgs by default. However, unless the administrator is explicitly added to an Org, the Orgs list in the session information returned by the API will include only the Primary Org. To include other Orgs in the API response, you must explicitly add the administrator to each Org in the Admin settings page in the UI or via user REST API.\n\n\n\n#### Endpoint URL\n", "tags": [ "Authentication", "9.0.0.cl" @@ -1251,7 +1041,7 @@ "/api/rest/2.0/auth/token/custom": { "post": { "operationId": "getCustomAccessToken", - "description": "\n Version: 10.4.0.cl or later\n\nGets an authentication token with custom rules and security attributes and creates a full session in ThoughtSpot for a given user. By default, the token obtained from ThoughtSpot remains valid for 5 mins.\n\nTo add a new user and assign privileges during auto creation, you need `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege and edit access to the data source is required.\n\nTo assign security attributes with filter rules and Parameters to the JWT token, you'll need administrator privileges and edit access to the data source (Worksheet or Model). If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege and edit access to the data source is required.\n\n#### Usage guidelines\n\nYou can generate the token for a user by providing a `username` and `password`, or by using the cluster’s `secret_key`.\n\nTo generate a `secret_key` on your cluster, the administrator must enable [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable) in the **Develop** > **Customizations** > **Security Settings** page.\n\n**Note**: When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n\nIf Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\n##### Attribute-Based Access Control (ABAC) with tokens\n\nTo implement Attribute-Based Access Control (ABAC) and assign security entitlements to users during session creation, you can generate a token with custom filtering rules and Parameters in the `filter_rules` and `parameter_values` array respectively. These attributes can be configured to persist on a specific set of objects for user sessions initiated using the token. Once defined, the rules are added to the user's `access_control_properties` object, after which all sessions will use the persisted values.\n\nSpecify the object type as `LOGICAL_TABLE`. \n\nFor more information, see [ABAC via tokens Documentation](https://developers.thoughtspot.com/docs/api-authv2#_get_tokens_with_custom_rules_and_filter_conditions).\n\n##### Just-in-time provisioning\n\nFor just-in-time user creation and provisioning, define the following attributes:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `groups`\n\nSet `auto_create` to `true` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true` in the API request, the user properties such as the display name, email, Org and group assignment will not be updated with new values. If `auto_create` is set to `true`, it won't create formula variables and hence won't be applicable for `variable_values`.\n\nFor more information, see [Just-in-time provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning).\n\n##### Important point to note\nAll options in the token creation APIs that define access to the content in ThoughtSpot will do so during the token creation and not when the token is being used for authentication. For example, `auto_create:true` will create the user when the authentication token is created. Persist options such as `APPEND`, `REPLACE`, `RESET` will persist security parameters on the user profile when the token is created, while Persist option `NONE` will not persist anything but will be honoured in the session.\n\n##### Formula Variables\nBefore using variables_values, variables must be created using Create Variable API with type as Formula_Variable (/api/rest/2.0/template/variables/create)\nThe persist_option RESET and NONE cannot be used when variable_values are provided in the request.\nIf you are working with variable_values, you must use other (APPEND, REPLACE) supported modes.\nIf you want to use RESET or NONE, do not pass any variable_values. In such cases, variable_values will remain unaffected.\nWhen using object_id with variable_values, models are supported. \n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 10.4.0.cl or later\n\nCreates an authentication token that provides values for the formula variables in the Row Level Security (RLS) rules for a given user. Recommended for use cases that require Attribute-based access control (ABAC) via RLS.\n\n#### Required privileges\n\nTo add a new user and assign privileges during auto-creation, the `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege is required. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH` (**Can Enable or Disable Trusted Authentication**) privilege and edit access to the data source are required.\n\nTo configure formula variables for all Orgs on your instance or the Primary Org, cluster administration privileges are required. Org administrators can configure formula variables for their respective Orgs. If Role-Based Access Control (RBAC) is enabled, users with the `CAN_MANAGE_VARIABLES` (**Can manage variables**) role privilege can also create and manage variables for their Org context.\n\n#### Usage guidelines\n\nYou can generate a token by providing a `username` and `password`, or by using a `secret_key`. To generate a `secret_key`, the administrator must enable [Trusted authentication](https://developers.thoughtspot.com/docs/trusted-auth-secret-key) in the **Develop** > **Customizations** > **Security Settings** page.\n\n**Note**:\n* When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n* If [Multi-Factor Authentication (MFA)](https://docs.thoughtspot.com/cloud/latest/authentication-local-mfa) is enabled on your instance, the API login request with `username` and `password` returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\nThe token obtained from ThoughtSpot is valid for 5 minutes by default. You can configure the token expiration time as required.\n\n#### ABAC via RLS\n\nTo implement ABAC via RLS and assign security entitlements to users during session creation, generate a token with custom variable values. The values set in the authentication token are applied to the formula variables referenced in RLS rules at the table level, which determines the data each user can access based on their entitlements.\n\nThe variable values can be configured to persist for a specific set of Models in user sessions initiated with the token, allowing different RLS rules to be set for different data models. Once defined, the rules are added to the user's `variable_values` object, after which all sessions will use the persisted values.\n\nFor more information, see [ABAC via tokens Documentation](https://developers.thoughtspot.com/docs/abac-via-rls-variables).\n\n##### Formula variables\nBefore defining variable values, ensure the variables are created and available on your instance. To create a formula variable, you can use the **Create variable** (`/api/rest/2.0/template/variables/create`) REST API endpoint, with the variable `type` set as `Formula_Variable` in the API request.\n\nThe API doesn't support `\"persist_option\": \"RESET\"` and `\"persist_option\": \"NONE\"` when `variable_values` are defined in the request. If you are using `variable_values` for token generation, you must use other supported persist options such as `APPEND` or `REPLACE`.\n\nIf you want to use `RESET` or `NONE`, do not pass any `variable_values`. In such cases, `variable_values` will remain unaffected.\n\n#### Supported objects\n\nThe supported object type is `LOGICAL_TABLE`. When using `object_id` with `variable_values`, models are supported.\n\n#### Just-in-time provisioning\n\nFor [just-in-time user creation and provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning), specify the following attributes in the API request:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `groups`\n\nSet `auto_create` to `true` if the username does not exist in ThoughtSpot. If the username already exists in ThoughtSpot and `auto_create` is set to `true`, user properties such as display name, email, Org and group entitlements will not be updated with new values. Setting `auto_create` to `true` does not create formula variables. Hence, this setting will not be applicable to `variable_values`.\n\n#### Important point to note\nAll options in the token creation APIs that define user access to data in ThoughtSpot will take effect during token creation, not when the token is used for authentication. For example, `auto_create:true` will create the user when the authentication token is created. Persist options such as `APPEND` and `REPLACE` will persist `variable_values` on the user profile when the token is created.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Authentication", "10.4.0.cl" @@ -1260,96 +1050,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "username": { - "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", - "type": "string" - }, - "password": { - "description": "Password of the user account", - "default": "", - "type": "string" - }, - "secret_key": { - "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", - "default": "", - "type": "string" - }, - "validity_time_in_sec": { - "description": "Token validity duration in seconds", - "default": 300, - "type": "integer", - "format": "int32" - }, - "org_identifier": { - "description": "ID or name of the Org context to log in to. If the Org ID or name is not specified but a secret key is provided, the user will be logged into the Org associated with the secret key. If neither the Org ID/name nor the secret key is provided, the user will be logged into the Org context from their previous login session.", - "type": "string" - }, - "persist_option": { - "description": "Indicates whether the specified attributes should be persisted or not. RESET and NONE are not applicable if you are setting variable_values.", - "type": "string", - "enum": [ - "REPLACE", - "APPEND", - "NONE", - "RESET" - ] - }, - "filter_rules": { - "description": "Filter rules.", - "type": "array", - "items": { - "$ref": "#/components/schemas/FilterRules" - } - }, - "parameter_values": { - "description": "Allows developers to assign parameter values for existing parameters to a user at login. Note: Using parameter values for row level security use cases will ultimately be deprecated. Developers can still pass data security values via the Custom Access token via the variable_values field and create RLS rules based on custom variables. Please refer to the [ABAC via RLS documentation](https://developers.thoughtspot.com/docs/abac-user-parameters) for more details.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ParameterValues" - } - }, - "variable_values": { - "description": "List of variable values where `name` references an existing formula variable and `values` is any value from the corresponding column.
Version: 10.14.0.cl or later", - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableValues" - } - }, - "objects": { - "description": "Objects on which the parameter and variable values should be applied to", - "type": "array", - "items": { - "$ref": "#/components/schemas/TokenAccessScopeObject" - } - }, - "email": { - "description": "(just-in-time (JIT) provisioning)Email address of the user. Specify this attribute when creating a new user.", - "type": "string" - }, - "display_name": { - "description": "(just-in-time (JIT) provisioning) Indicates display name of the user. Specify this attribute when creating a new user.", - "type": "string" - }, - "groups": { - "description": "(just-in-time (JIT) provisioning) ID or name of the groups to which the newly created user belongs. Specify this attribute when creating a new user.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Group_Object" - } - }, - "auto_create": { - "description": " Creates a new user if the specified username does not exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. New formula variables won't be created.
Version: 10.5.0.cl or later", - "default": true, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "username", - "persist_option" - ] + "$ref": "#/components/schemas/GetCustomAccessTokenRequest" } } }, @@ -1414,7 +1115,7 @@ "/api/rest/2.0/auth/token/full": { "post": { "operationId": "getFullAccessToken", - "description": "\n Version: 9.0.0.cl or later\n\nGets an authentication token and creates a full session in ThoughtSpot for a given user. By default, the token obtained from ThoughtSpot remains valid for 5 mins.\n\nYou can generate the token for a user by providing a `username` and `password`, or by using the cluster’s `secret_key` (for [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable)).\n\nTo generate a `secret_key` on your cluster, the administrator must enable **Trusted authentication** in the **Develop** > **Customizations** > **Security Settings** page. For more information, see [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable).\n\n**Note**: When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n\nIf Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\n#### Just-in-time provisioning\n\nFor just-in-time user creation and provisioning, define the following attributes:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `group_identifiers`\n\nSet `auto_create` to `True` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true`, the API call will update user properties like display name, email and group assignment.\n\nFor more information, see [Just-in-time provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning).\n\nTo add a new user and assign privileges, you need `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege is required.\n\n#### Important point to note\nAll options in the token creation APIs changing the content in ThoughtSpot will do so during the token creation and not when the token is being used for authentication. For example, `auto_create:true` will create the user when the authentication token is created.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 9.0.0.cl or later\n\nGenerates an authentication token for creating a full session in ThoughtSpot for a given user. Recommended for use cases that do not require Attribute-based access control (ABAC) via Row Level Security (RLS).\n\n#### Usage guidelines\n\nYou can generate a token for a user by providing a `username` and `password`, or by using the `secret_key` generated for your instance. To generate a `secret_key`, the administrator must enable [Trusted authentication](https://developers.thoughtspot.com/docs/trusted-auth-secret-key) in the **Develop** > **Customizations** > **Security Settings** page.\n\n**Note**:\n* When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n* If [Multi-Factor Authentication (MFA)](https://docs.thoughtspot.com/cloud/latest/authentication-local-mfa) is enabled on your instance, the API login request with `username` and `password` returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\nThe token obtained from ThoughtSpot is valid for 5 minutes by default. You can configure the token expiration time as required.\n\n#### Just-in-time provisioning\n\nFor [just-in-time user creation and provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning), specify the following attributes in the API request:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `group_identifiers`\n\nSet `auto_create` to `true` if the username does not exist in ThoughtSpot. If the user already exists in ThoughtSpot and `auto_create` is set to `true`, user properties such as display name, email and group assignment will be updated.\n\nTo add a new user and assign privileges during auto-creation, the `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege is required. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH` (**Can Enable or Disable Trusted Authentication**) privilege is required.\n\n#### Important point to note\nAll options in the token creation APIs that define user access to data in ThoughtSpot will take effect during token creation, not when the token is used for authentication. For example, `auto_create:true` will create the user when the authentication token is created.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Authentication", "9.0.0.cl" @@ -1423,66 +1124,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "username": { - "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", - "type": "string" - }, - "password": { - "description": "Password of the user account", - "default": "", - "type": "string" - }, - "secret_key": { - "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", - "default": "", - "type": "string" - }, - "validity_time_in_sec": { - "description": "Token validity duration in seconds", - "default": 300, - "type": "integer", - "format": "int32" - }, - "org_id": { - "description": "ID of the Org context to log in to. If the Org ID is not specified and secret key is provided then user will be logged into the org corresponding to the secret key, and if secret key is not provided then user will be logged in to the Org context of their previous login session.", - "type": "integer", - "format": "int32" - }, - "email": { - "description": "Email address of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", - "type": "string" - }, - "display_name": { - "description": "Indicates display name of the user. Use this parameter to provision a user just-in-time (JIT).", - "type": "string" - }, - "auto_create": { - "description": " Creates a new user if the specified username does not already exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. ", - "default": false, - "type": "boolean", - "nullable": true - }, - "group_identifiers": { - "description": "ID or name of the groups to which the newly created user belongs. Use this parameter to provision a user just-in-time (JIT).", - "type": "array", - "items": { - "type": "string" - } - }, - "user_parameters": { - "description": "
Version: 9.10.5.cl or laterDeprecated: 10.4.0.cl and later
\n\nDefine attributes such as Runtime filters and Runtime parameters to send security entitlements to a user session. For more information, see [Documentation](https://developers.thoughtspot.com/docs/abac-user-parameters).", - "allOf": [ - { - "$ref": "#/components/schemas/User_Parameter_Options" - } - ] - } - }, - "required": [ - "username" - ] + "$ref": "#/components/schemas/GetFullAccessTokenRequest" } } }, @@ -1547,7 +1189,7 @@ "/api/rest/2.0/auth/token/object": { "post": { "operationId": "getObjectAccessToken", - "description": "\n Version: 9.0.0.cl or later\n\nGets an authentication token that provides access to a specific metadata object. By default, the token obtained from ThoughtSpot remains valid for 5 mins.\n\nYou can generate the token for a user by providing a `username` and `password`, or by using the cluster’s `secret key` (for [Trusted authentication](https://developers.thoughtspot.com/docs/?pageid=trusted-auth#trusted-auth-enable)).\n\nTo generate a `secret_key` on your cluster, the administrator must enable **Trusted authentication** in the **Develop** > **Customizations** > **Security Settings** page.\n\n**Note**: When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n\nIf Multi-Factor Authentication (MFA) is enabled on your instance, the API login request with basic authentication (`username` and `password` ) returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\n#### Just-in-time provisioning\n\nFor just-in-time user creation and provisioning, define the following attributes:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `group_identifiers`\n\nSet `auto_create` to `True` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true`, the API call will update user properties like display name, email and group assignment.\n\nFor more information, see [Just-in-time provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning).\n\nTo add a new user and assign privileges, you need `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege is required.\n\n#### Important point to note\nAll options in the token creation APIs changing the content in ThoughtSpot will do so during the token creation and not when the token is being used for authentication. For example, `auto_create:true` will create the user when the authentication token is created.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 9.0.0.cl or later\n\nGenerates an authentication token that provides access to a specific metadata object. This object list is intersected with the list of objects the user is allowed to access via group membership. For more information, see [Object security](https://docs.thoughtspot.com/cloud/latest/security-data-object#object_security).\n\n#### Usage guidelines\n\nYou can generate a token for a user by providing a `username` and `password`, or by using the `secret_key` generated for your instance. To generate a `secret_key`, the administrator must enable [Trusted authentication](https://developers.thoughtspot.com/docs/trusted-auth-secret-key) in the **Develop** > **Customizations** > **Security Settings** page.\n\n**Note**:\n* When both `password` and `secret_key` are included in the API request, `password` takes precedence.\n* If [Multi-Factor Authentication (MFA)](https://docs.thoughtspot.com/cloud/latest/authentication-local-mfa) is enabled on your instance, the API login request with `username` and `password` returns an error. You can switch to token-based authentication with `secret_key` or contact ThoughtSpot Support for assistance.\n\nThe token obtained from ThoughtSpot is valid for 5 minutes by default. You can configure the token expiration time as required.\n\n#### Just-in-time provisioning\n\nFor [just-in-time user creation and provisioning](https://developers.thoughtspot.com/docs/just-in-time-provisioning), specify the following attributes in the API request:\n\n* `auto_create`\n* `username`\n* `display_name`\n* `email`\n* `group_identifiers`\n\nSet `auto_create` to `true` if the user is not available in ThoughtSpot. If the user already exists in ThoughtSpot and the `auto_create` parameter is set to `true`, user properties such as display name, email, and group assignment will be updated.\n\nTo add a new user and assign privileges, the `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege is required. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH`(**Can Enable or Disable Trusted Authentication**) privilege is required.\n\n#### Important point to note\n\nAll options in the token creation APIs that define user access to data in ThoughtSpot will take effect during token creation, not when the token is used for authentication. For example, `auto_create:true` will create the user when the authentication token is created.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Authentication", "9.0.0.cl" @@ -1556,70 +1198,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "username": { - "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", - "type": "string" - }, - "object_id": { - "description": "GUID of the ThoughtSpot metadata object that the user can access. The bearer will only have access to the object specified in the API request.", - "type": "string" - }, - "password": { - "description": "Password of the user account", - "default": "", - "type": "string" - }, - "secret_key": { - "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", - "default": "", - "type": "string" - }, - "validity_time_in_sec": { - "description": "Token validity duration in seconds", - "default": 300, - "type": "integer", - "format": "int32" - }, - "org_id": { - "description": "ID of the Org context to log in to. If the Org ID is not specified and secret key is provided then user will be logged into the org corresponding to the secret key, and if secret key is not provided then user will be logged in to the Org context of their previous login session.", - "type": "integer", - "format": "int32" - }, - "email": { - "description": "Email address of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", - "type": "string" - }, - "display_name": { - "description": "Display name of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", - "type": "string" - }, - "auto_create": { - "description": " Creates a new user if the specified username does not exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. ", - "default": false, - "type": "boolean", - "nullable": true - }, - "group_identifiers": { - "description": "Unique ID or name of the groups to which you want to assign the new user. You can specify this attribute to dynamically assign privileges during just-in-time (JIT) provisioning.", - "type": "array", - "items": { - "type": "string" - } - }, - "user_parameters": { - "description": "
Version: 9.10.5.cl or laterDeprecated: 10.4.0.cl and later
\n\nDefine attributes such as Runtime filters and Runtime parameters to send security entitlements to a user session. For more information, see [Documentation](https://developers.thoughtspot.com/docs/abac-user-parameters).", - "allOf": [ - { - "$ref": "#/components/schemas/User_Parameter_Options" - } - ] - } - }, - "required": [ - "username" - ] + "$ref": "#/components/schemas/GetObjectAccessTokenRequest" } } }, @@ -1693,27 +1272,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "username": { - "description": "Username of the ThoughtSpot user", - "type": "string" - }, - "password": { - "description": "Password of the user account", - "type": "string" - }, - "org_identifier": { - "description": "ID of the Org context to log in to. If Org ID is not specified, the user will be logged in to the Org context of their previous login session.", - "type": "string" - }, - "remember_me": { - "description": "A flag to remember the user session. When set to true, a session cookie is created and used in subsequent API requests.", - "default": false, - "type": "boolean", - "nullable": true - } - } + "$ref": "#/components/schemas/LoginRequest" } } }, @@ -1835,15 +1394,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "user_identifier": { - "type": "string" - }, - "token": { - "type": "string" - } - } + "$ref": "#/components/schemas/RevokeTokenRequest" } } }, @@ -1909,15 +1460,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - } - }, - "required": [ - "token" - ] + "$ref": "#/components/schemas/ValidateTokenRequest" } } }, @@ -1978,41 +1521,19 @@ } } }, - "/api/rest/2.0/connection-configurations/search": { + "/api/rest/2.0/collections/create": { "post": { - "operationId": "connectionConfigurationSearch", - "description": "\n Version: 10.12.0.cl or later\n\nGets connection configuration objects.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n* To get a list of all configurations available in the ThoughtSpot system, send the API request with only the connection name or GUID in the request body.\n* To fetch details of a configuration object, specify the configuration object name or GUID.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createCollection", + "description": "\n Version: 26.4.0.cl or later\n\nCreates a new collection in ThoughtSpot.\n\nCollections allow you to organize and group related metadata objects such as Liveboards, Answers, worksheets, and other data objects. You can also create nested collections (sub-collections) to build a hierarchical structure.\n\n#### Supported operations\n\nThe API endpoint lets you perform the following operations:\n\n* Create a new collection\n* Add metadata objects (Liveboards, Answers, Logical Tables) to the collection\n* Create nested collections by adding sub-collections\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connection Configurations", - "10.12.0.cl" + "Collections", + "26.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - }, - "configuration_identifier": { - "description": "Unique ID or name of the configuration.", - "type": "string" - }, - "policy_type": { - "description": "Type of policy.", - "type": "string", - "enum": [ - "NO_POLICY", - "PRINCIPALS", - "PROCESSES" - ] - } - }, - "required": [ - "connection_identifier" - ] + "$ref": "#/components/schemas/CreateCollectionRequest" } } }, @@ -2021,14 +1542,11 @@ "parameters": [], "responses": { "200": { - "description": "Configuration fetched successfully.", + "description": "Collection created successfully", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ConnectionConfigurationResponse" - } + "$ref": "#/components/schemas/Collection" } } } @@ -2076,96 +1594,19 @@ } } }, - "/api/rest/2.0/connection-configurations/create": { + "/api/rest/2.0/collections/delete": { "post": { - "operationId": "createConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n#### Parameterized Connection Support\nFor parameterized connections that use OAuth authentication, only the same_as_parent and policy_process_options attributes are allowed in the API request. These attributes are not applicable to connections that are not parameterized.\n\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteCollection", + "description": "\n Version: 26.4.0.cl or later\n\nDeletes one or more collections from ThoughtSpot.\n\n#### Delete options\n\n* **delete_children**: When set to `true`, deletes the child objects (metadata items) within the collection that the user has access to. Objects that the user does not have permission to delete will be skipped.\n* **dry_run**: When set to `true`, performs a preview of the deletion operation without actually deleting anything. The response shows what would be deleted, allowing you to review before committing the deletion.\n\n#### Response\n\nThe response includes:\n* **metadata_deleted**: List of metadata objects that were successfully deleted\n* **metadata_skipped**: List of metadata objects that were skipped due to lack of permissions or other constraints\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connection Configurations", - "10.12.0.cl" + "Collections", + "26.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Unique name for the configuration.", - "type": "string" - }, - "description": { - "description": "Description of the configuration.", - "type": "string" - }, - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - }, - "same_as_parent": { - "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", - "default": false, - "type": "boolean", - "nullable": true - }, - "policy_process_options": { - "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/PolicyProcessOptionsInput" - } - ] - }, - "authentication_type": { - "description": "Type of authentication used for the connection.", - "default": "SERVICE_ACCOUNT", - "type": "string", - "enum": [ - "SERVICE_ACCOUNT", - "KEY_PAIR", - "PERSONAL_ACCESS_TOKEN", - "OAUTH_WITH_SERVICE_PRINCIPAL", - "OAUTH_CLIENT_CREDENTIALS" - ] - }, - "configuration": { - "description": "Configuration properties in JSON.", - "type": "object" - }, - "policy_type": { - "description": "Type of policy.", - "default": "NO_POLICY", - "type": "string", - "enum": [ - "NO_POLICY", - "PRINCIPALS", - "PROCESSES" - ] - }, - "policy_principals": { - "description": "Unique ID or name of the User and User Groups.", - "type": "array", - "items": { - "type": "string" - } - }, - "policy_processes": { - "description": "Action that the query performed on the data warehouse, such as SAGE_INDEXING and ROW_COUNT_STATS.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "SAGE_INDEXING", - "ROW_COUNT_STATS" - ] - } - } - }, - "required": [ - "name", - "connection_identifier", - "configuration" - ] + "$ref": "#/components/schemas/DeleteCollectionRequest" } } }, @@ -2174,11 +1615,11 @@ "parameters": [], "responses": { "200": { - "description": "Connection configuration successfully created.", + "description": "Collections deleted successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConnectionConfigurationResponse" + "$ref": "#/components/schemas/CollectionDeleteResponse" } } } @@ -2213,6 +1654,16 @@ } } }, + "404": { + "description": "Resource not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -2226,33 +1677,19 @@ } } }, - "/api/rest/2.0/connection-configurations/delete": { + "/api/rest/2.0/collections/search": { "post": { - "operationId": "deleteConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nDeletes connection configuration objects.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchCollections", + "description": "\n Version: 26.4.0.cl or later\n\nGets a list of collections available in ThoughtSpot.\n\nTo get details of a specific collection, specify the collection GUID or name. You can also filter the API response based on the collection name pattern, author, and other criteria.\n\n#### Search options\n\n* **name_pattern**: Use '%' as a wildcard character to match collection names\n* **collection_identifiers**: Search for specific collections by their GUIDs or names\n* **include_metadata**: When set to `true`, includes the metadata objects within each collection in the response\n\n**NOTE**: If the API returns an empty list, consider increasing the value of the `record_size` parameter. To search across all available collections, set `record_size` to `-1`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connection Configurations", - "10.12.0.cl" + "Collections", + "26.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "configuration_identifier": { - "description": "Unique ID or name of the configuration.", - "type": "string" - }, - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - } - }, - "required": [ - "configuration_identifier", - "connection_identifier" - ] + "$ref": "#/components/schemas/SearchCollectionsRequest" } } }, @@ -2260,8 +1697,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Connection Configurations successfully deleted." + "200": { + "description": "Successfully retrieved list of collections", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionSearchResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -2306,102 +1750,19 @@ } } }, - "/api/rest/2.0/connection-configurations/{configuration_identifier}/update": { + "/api/rest/2.0/collections/{collection_identifier}/update": { "post": { - "operationId": "updateConnectionConfiguration", - "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n#### Parameterized Connection Support\nFor parameterized oauth based connections, only the `same_as_parent` and `policy_process_options` attributes are allowed. These attributes are not applicable to connections that are not parameterized.\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateCollection", + "description": "\n Version: 26.4.0.cl or later\n\nUpdates an existing collection in ThoughtSpot.\n\n#### Supported operations\n\nThis API endpoint lets you perform the following operations:\n\n* Update collection name and description\n* Change visibility settings\n* Add metadata objects to the collection (operation: ADD)\n* Remove metadata objects from the collection (operation: REMOVE)\n* Replace all metadata objects in the collection (operation: REPLACE)\n\n#### Operation types\n\n* **ADD**: Adds the specified metadata objects to the existing collection without removing current items\n* **REMOVE**: Removes only the specified metadata objects from the collection\n* **REPLACE**: Replaces all existing metadata objects with the specified items (default behavior)\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connection Configurations", - "10.12.0.cl" + "Collections", + "26.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - }, - "name": { - "description": "Name of the configuration to update.", - "type": "string" - }, - "description": { - "description": "Description of the configuration.", - "type": "string" - }, - "same_as_parent": { - "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", - "default": false, - "type": "boolean", - "nullable": true - }, - "policy_process_options": { - "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/PolicyProcessOptionsInput" - } - ] - }, - "authentication_type": { - "description": "Type of authentication.", - "type": "string", - "enum": [ - "SERVICE_ACCOUNT", - "OAUTH", - "OAUTH_WITH_SERVICE_PRINCIPAL", - "EXTOAUTH", - "KEY_PAIR", - "EXTOAUTH_WITH_PKCE", - "OAUTH_WITH_PKCE", - "PERSONAL_ACCESS_TOKEN", - "OAUTH_CLIENT_CREDENTIALS" - ] - }, - "configuration": { - "description": "Configuration properties in JSON.", - "type": "object" - }, - "policy_type": { - "description": "Type of policy.", - "type": "string", - "enum": [ - "NO_POLICY", - "PRINCIPALS", - "PROCESSES" - ] - }, - "policy_principals": { - "description": "Unique ID or name of the User and User Groups.", - "type": "array", - "items": { - "type": "string" - } - }, - "policy_processes": { - "description": "Action that the query performed on the data warehouse, such as SAGE_INDEXING and ROW_COUNT_STATS.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "SAGE_INDEXING", - "ROW_COUNT_STATS" - ] - } - }, - "disable": { - "description": "Indicates whether the configuration enable/disable.", - "default": false, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "connection_identifier" - ] + "$ref": "#/components/schemas/UpdateCollectionRequest" } } }, @@ -2410,17 +1771,17 @@ "parameters": [ { "in": "path", - "name": "configuration_identifier", + "name": "collection_identifier", "required": true, "schema": { "type": "string" }, - "description": "Unique ID or name of the configuration." + "description": "Unique GUID of the collection. Note: Collection names cannot be used as\nidentifiers since duplicate names are allowed." } ], "responses": { "204": { - "description": "Connection configuration successfully updated." + "description": "Collection updated successfully. No content returned." }, "400": { "description": "Invalid request.", @@ -2452,6 +1813,16 @@ } } }, + "404": { + "description": "Resource not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -2465,83 +1836,19 @@ } } }, - "/api/rest/2.0/connection/create": { + "/api/rest/2.0/connection-configurations/search": { "post": { - "operationId": "createConnection", - "description": "\n Version: 9.2.0.cl or later\n\nCreates a connection to a data warehouse for live query services. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Create a connection without tables\n\nTo create a connection without tables:\n\n1. Pass these parameters in your API request.\n * Name of the connection.\n * Type of the data warehouse to connect to.\n * A JSON map of configuration attributes in `data_warehouse_config`. The following example shows the configuration attributes for a SnowFlake connection:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n\n ]\n }\n ```\n2. Set `validate` to `false`.\n\n#### Create a connection with tables\n\nTo create a connection with tables:\n\n1. Pass these parameters in your API request.\n * Name of the connection.\n * Type of the data warehouse to connect to.\n * A JSON map of configuration attributes, database details, and table properties in `data_warehouse_config` as shown in the following example:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n {\n \"name\":\"AllDatatypes\",\n \"isAutoCreated\":false,\n \"schemas\":[\n {\n \"name\":\"alldatatypes\",\n \"tables\":[\n {\n \"name\":\"allDatatypes\",\n \"type\":\"TABLE\",\n \"description\":\"\",\n \"selected\":true,\n \"linked\":true,\n \"columns\":[\n {\n \"name\":\"CNUMBER\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n },\n {\n \"name\":\"CDECIMAL\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ```\n2. Set `validate` to `true`.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "connectionConfigurationSearch", + "description": "\n Version: 10.12.0.cl or later\n\nGets connection configuration objects.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n* To get a list of all configurations available in the ThoughtSpot system, send the API request with only the connection name or GUID in the request body.\n* To fetch details of a configuration object, specify the configuration object name or GUID.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "9.2.0.cl" + "Connection Configurations", + "10.12.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Unique name for the connection.", - "type": "string" - }, - "description": { - "description": "Description of the connection.", - "type": "string" - }, - "data_warehouse_type": { - "description": "Type of the data warehouse.", - "type": "string", - "enum": [ - "SNOWFLAKE", - "AMAZON_REDSHIFT", - "GOOGLE_BIGQUERY", - "AZURE_SYNAPSE", - "TERADATA", - "SAP_HANA", - "STARBURST", - "ORACLE_ADW", - "DATABRICKS", - "DENODO", - "DREMIO", - "TRINO", - "PRESTO", - "POSTGRES", - "SQLSERVER", - "MYSQL", - "GENERIC_JDBC", - "AMAZON_RDS_POSTGRESQL", - "AMAZON_AURORA_POSTGRESQL", - "AMAZON_RDS_MYSQL", - "AMAZON_AURORA_MYSQL", - "LOOKER", - "AMAZON_ATHENA", - "SINGLESTORE", - "GCP_SQLSERVER", - "GCP_ALLOYDB_POSTGRESQL", - "GCP_POSTGRESQL", - "GCP_MYSQL", - "MODE", - "GOOGLE_SHEETS", - "FALCON", - "FALCON_ONPREM", - "CLICKHOUSE" - ] - }, - "data_warehouse_config": { - "description": "Connection configuration attributes in JSON format. To create a connection with tables, include table attributes. See the documentation above for sample JSON.", - "type": "object" - }, - "validate": { - "description": "Validates the connection metadata if tables are included. If you are creating a connection without tables, specify `false`.", - "default": true, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "name", - "data_warehouse_type", - "data_warehouse_config" - ] + "$ref": "#/components/schemas/ConnectionConfigurationSearchRequest" } } }, @@ -2550,11 +1857,14 @@ "parameters": [], "responses": { "200": { - "description": "Connection to the datasource successfully created.", + "description": "Configuration fetched successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateConnectionResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/ConnectionConfigurationResponse" + } } } } @@ -2602,29 +1912,19 @@ } } }, - "/api/rest/2.0/connection/delete": { + "/api/rest/2.0/connection-configurations/create": { "post": { - "operationId": "deleteConnection", - "description": "\n Version: 9.2.0.cl or later\n\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Delete Connection V2](#/http/api-endpoints/connections/delete-connection-v2) endpoint to delete your connection objects. \n\n#### Usage guidelines\n\nDeletes a connection object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n**Note**: If a connection has dependent objects, make sure you remove its associations before the delete operation.\n\n\n\n#### Endpoint URL\n", - "deprecated": true, + "operationId": "createConnectionConfiguration", + "description": "\n Version: 10.12.0.cl or later\n\nCreates an additional configuration to an existing connection to a data warehouse. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Usage guidelines\n\n * A JSON map of configuration attributes in `configuration`. The following example shows the configuration attributes:\n ```\n {\n \"user\":\"DEV_USER\",\n \"password\":\"TestConn123\",\n \"role\":\"DEV\",\n \"warehouse\":\"DEV_WH\"\n }\n ```\n\n* If the `policy_type` is `PRINCIPALS`, then `policy_principals` is a required field.\n* If the `policy_type` is `PROCESSES`, then `policy_processes` is a required field.\n* If the `policy_type` is `NO_POLICY`, then `policy_principals` and `policy_processes` are not required fields.\n\n#### Parameterized Connection Support\nFor parameterized connections that use OAuth authentication, only the same_as_parent and policy_process_options attributes are allowed in the API request. These attributes are not applicable to connections that are not parameterized.\n\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "9.2.0.cl" + "Connection Configurations", + "10.12.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - } - }, - "required": [ - "connection_identifier" - ] + "$ref": "#/components/schemas/CreateConnectionConfigurationRequest" } } }, @@ -2632,8 +1932,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Connection successfully deleted." + "200": { + "description": "Connection configuration successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionConfigurationResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -2678,28 +1985,28 @@ } } }, - "/api/rest/2.0/connections/{connection_identifier}/delete": { + "/api/rest/2.0/connection-configurations/delete": { "post": { - "operationId": "deleteConnectionV2", - "description": "\n Version: 10.4.0.cl or later\n\nDeletes a connection object.\n\n**Note**: If a connection has dependent objects, make sure you remove its associations before the delete operation.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteConnectionConfiguration", + "description": "\n Version: 10.12.0.cl or later\n\nDeletes connection configuration objects.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "10.4.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "connection_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the connection." - } + "Connection Configurations", + "10.12.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteConnectionConfigurationRequest" + } + } + }, + "required": true + }, + "parameters": [], "responses": { "204": { - "description": "Connection successfully deleted." + "description": "Connection Configurations successfully deleted." }, "400": { "description": "Invalid request.", @@ -2744,31 +2051,38 @@ } } }, - "/api/rest/2.0/connections/download-connection-metadata-changes/{connection_identifier}": { + "/api/rest/2.0/connection-configurations/{configuration_identifier}/update": { "post": { - "operationId": "downloadConnectionMetadataChanges", - "description": "\n Version: 9.9.0.cl or later\n\nExports the difference in connection metadata between CDW and ThoughtSpot\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required: \n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\nTo download the connection metadata difference between ThoughtSpot and CDW, pass the connection GUID as `connection_identifier` in the API request.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateConnectionConfiguration", + "description": "\n Version: 10.12.0.cl or later\n\nUpdates a connection configuration object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Supported operations\nThis API endpoint lets you perform the following operations in a single API request:\n\n * Edit the name or description of the configuration\n * Edit the configuration properties\n * Edit the `policy_type`\n * Edit the type of authentication\n * Enable or disable a configuration\n\n#### Parameterized Connection Support\nFor parameterized oauth based connections, only the `same_as_parent` and `policy_process_options` attributes are allowed. These attributes are not applicable to connections that are not parameterized.\n\n **NOTE**: When updating a configuration where `disabled` is `true`, you must reset `disabled` to `true` in your update request payload. If not explicitly set again, the API will default `disabled` to `false`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Connections", - "9.9.0.cl" + "Connection Configurations", + "10.12.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateConnectionConfigurationRequest" + } + } + }, + "required": true + }, "parameters": [ { "in": "path", - "name": "connection_identifier", + "name": "configuration_identifier", "required": true, "schema": { "type": "string" }, - "description": "GUID of the connection" + "description": "Unique ID or name of the configuration." } ], "responses": { - "200": { - "description": "Export metadata changes.", - "content": { - "application/octet-stream": {} - } + "204": { + "description": "Connection configuration successfully updated." }, "400": { "description": "Invalid request.", @@ -2813,32 +2127,32 @@ } } }, - "/api/rest/2.0/connections/fetch-connection-diff-status/{connection_identifier}": { + "/api/rest/2.0/connection/create": { "post": { - "operationId": "fetchConnectionDiffStatus", - "description": "\n Version: 9.9.0.cl or later\n\nValidates the difference in connection metadata between CDW and ThoughtSpot.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\nReturns a boolean indicating whether there is any difference between the connection metadata at ThoughtSpot and CDW.\n\nTo get the connection metadata difference status, pass the connection GUID as `connection_identifier` in the API request.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createConnection", + "description": "\n Version: 9.2.0.cl or later\n\nCreates a connection to a data warehouse for live query services. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n#### Create a connection without tables\n\nTo create a connection without tables:\n\n1. Pass these parameters in your API request.\n * Name of the connection.\n * Type of the data warehouse to connect to.\n * A JSON map of configuration attributes in `data_warehouse_config`. The following example shows the configuration attributes for a SnowFlake connection:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"authenticationType\": \"SERVICE_ACCOUNT\",\n \"externalDatabases\":[\n\n ]\n }\n ```\n2. Set `validate` to `false`.\n\n**NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n#### Create a connection with tables\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) and `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege is required.\n\nTo create a connection with tables:\n\n1. Pass these parameters in your API request.\n * Name of the connection.\n * Type of the data warehouse to connect to.\n * A JSON map of configuration attributes, database details, and table properties in `data_warehouse_config` as shown in the following example:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"authenticationType\": \"SERVICE_ACCOUNT\",\n \"externalDatabases\":[\n {\n \"name\":\"AllDatatypes\",\n \"isAutoCreated\":false,\n \"schemas\":[\n {\n \"name\":\"alldatatypes\",\n \"tables\":[\n {\n \"name\":\"allDatatypes\",\n \"type\":\"TABLE\",\n \"description\":\"\",\n \"selected\":true,\n \"linked\":true,\n \"columns\":[\n {\n \"name\":\"CNUMBER\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n },\n {\n \"name\":\"CDECIMAL\",\n \"type\":\"INT64\",\n \"canImport\":true,\n \"selected\":true,\n \"isLinkedActive\":true,\n \"isImported\":false,\n \"tableName\":\"allDatatypes\",\n \"schemaName\":\"alldatatypes\",\n \"dbName\":\"AllDatatypes\"\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ```\n2. Set `validate` to `true`.\n\n**NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connections", - "9.9.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "connection_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "GUID of the connection" - } + "9.2.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateConnectionRequest" + } + } + }, + "required": true + }, + "parameters": [], "responses": { "200": { - "description": "true/false", + "description": "Connection to the datasource successfully created.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FetchConnectionDiffStatusResponse" + "$ref": "#/components/schemas/CreateConnectionResponse" } } } @@ -2886,68 +2200,29 @@ } } }, - "/api/rest/2.0/connections/{connection_identifier}/revoke-refresh-tokens": { + "/api/rest/2.0/connection/delete": { "post": { - "operationId": "revokeRefreshTokens", - "description": "\n Version: 26.2.0.cl or later\n\nRevokes OAuth refresh tokens for users who no longer require access to a data warehouse connection.\nWhen a token is revoked, the affected user's session for that connection is terminated, and they must re-authenticate to regain access.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on the ThoughtSpot instance, users with `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege can also make API requests to revoke tokens for connection users.\n\n#### Usage guidelines\n\nYou can specify different combinations of identifiers to control which refresh tokens are revoked.\n\n- **connection_identifier**: Revokes refresh tokens for all users of the connection, except the connection author.\n- **connection_identifier** and **user_identifiers**: Revokes refresh tokens only for the users specified in the request. If the name or ID of the connection author is included in the request, their token will also be revoked.\n- **connection_identifier** and **configuration_identifiers**: Revokes refresh tokens for all users on the specified configurations, except the configuration author.\n- **connection_identifier**, **configuration_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users on the specified configurations.\n- **connection_identifier** and **org_identifiers**: Revokes refresh tokens for the specified Orgs. Applicable only for published connections.\n- **connection_identifier**, **org_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users in the specified Orgs. Applicable only for published connections.\n\n**NOTE**: The `org_identifiers` parameter is only applicable for published connections. Using this parameter for unpublished connections will result in an error. Ensure that the connections are published before making the API request.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteConnection", + "description": "\n Version: 9.2.0.cl or later\n\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Delete Connection V2](#/http/api-endpoints/connections/delete-connection-v2) endpoint to delete your connection objects. \n\n#### Usage guidelines\n\nDeletes a connection object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n**Note**: If a connection has dependent objects, make sure you remove its associations before the delete operation.\n\n\n\n#### Endpoint URL\n", + "deprecated": true, "tags": [ "Connections", - "26.2.0.cl" + "9.2.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "configuration_identifiers": { - "description": "Unique ID or name of the configuration. When provided, the refresh tokens of the users associated with the connection configuration will be revoked.", - "type": "array", - "items": { - "type": "string" - } - }, - "user_identifiers": { - "description": "Unique ID or name of the users. When provided, the refresh tokens of the specified users will be revoked. If the request includes the user ID or name of the connection author, their token will also be revoked.", - "type": "array", - "items": { - "type": "string" - } - }, - "org_identifiers": { - "description": "Unique ID or name of the Org. When provided, the refresh tokens of all users associated with the published connection in the Org will be revoked. This parameter is valid only for published connections. Using it with unpublished connections will result in an error.", - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/components/schemas/DeleteConnectionRequest" } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "connection_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the connection whose refresh tokens need to be revoked. All the users associated with the connection will have their refresh tokens revoked except the author." - } - ], + "parameters": [], "responses": { - "200": { - "description": "Token(s) successfully revoked.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RevokeRefreshTokensResponse" - } - } - } + "204": { + "description": "Connection successfully deleted." }, "400": { "description": "Invalid request.", @@ -2979,26 +2254,6 @@ } } }, - "404": { - "description": "Object not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, "500": { "description": "Unexpected error", "content": { @@ -3012,159 +2267,28 @@ } } }, - "/api/rest/2.0/connection/search": { + "/api/rest/2.0/connections/{connection_identifier}/delete": { "post": { - "operationId": "searchConnection", - "description": "\n Version: 9.2.0.cl or later\n\nGets connection objects.\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n- To get a list of all connections available in the ThoughtSpot system, send the API request without any attributes in the request body.\n- To get the connection objects for a specific type of data warehouse, specify the type in `data_warehouse_types`.\n- To fetch details of a connection object, specify the connection object GUID or name. The `name_pattern` attribute allows passing partial text with `%` for a wildcard match.\n- To get details of the database, schemas, tables, or columns from a data connection object, specify `data_warehouse_object_type`.\n- To get a specific database, schema, table, or column from a connection object, define the object type in `data_warehouse_object_type` and object properties in the `data_warehouse_objects` array. For example, to search for a column, you must pass the database, schema, and table names in the API request.\n Note that in the following example, object properties are set in a hierarchical order (`database` > `schema` > `table` > `column`).\n\n```\n{\n \"connections\": [\n {\n \"identifier\": \"b9d1f2ef-fa65-4a4b-994e-30fa2d57b0c2\",\n \"data_warehouse_objects\": [\n {\n \"database\": \"NEBULADEV\",\n \"schema\": \"INFORMATION_SCHEMA\",\n \"table\": \"APPLICABLE_ROLES\",\n \"column\": \"ROLE_NAME\"\n }\n ]\n }\n ],\n \"data_warehouse_object_type\": \"COLUMN\"\n}\n```\n\n- To fetch data by `configuration`, specify `data_warehouse_object_type`. For example, to fetch columns from the `DEVELOPMENT` database, specify the `data_warehouse_object_type` as `DATABASE` and define the `configuration` string as `{\"database\":\"DEVELOPMENT\"}`. To get column data for a specific table, specify the table, for example,`{\"database\":\"RETAILAPPAREL\",\"table\":\"PIPES\"}`.\n- To query connections by `authentication_type`, specify `data_warehouse_object_type`. Supported values for `authentication_type` are:\n - `SERVICE_ACCOUNT`: For connections that require service account credentials to authenticate to the Cloud Data Warehouse and fetch data.\n - `OAUTH`: For connections that require OAuth credentials to authenticate to the Cloud Data Warehouse and fetch data. Teradata, Oracle, and Presto Cloud Data Warehouses do not support the OAuth authentication type.\n - `IAM`: For connections that have the IAM OAuth set up. This authentication type is supported on Amazon Redshift connections only.\n - `EXTOAUTH`: For connections that have External OAuth set up. ThoughtSpot supports external [OAuth with Microsoft Azure Active Directory (AD)](https://docs.thoughtspot.com/cloud/latest/ connections-snowflake-azure-ad-oauth) and [Okta for Snowflake data connections](https://docs.thoughtspot.com/cloud/latest/connections-snowflake-okta-oauth).\n - `KEY_PAIR`: For connections that require Key Pair account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n - `OAUTH_WITH_PKCE`: For connections that require OAuth with PKCE account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake, Starburst, Databricks, Denodo connections only.\n - `EXTOAUTH_WITH_PKCE`: For connections that require External OAuth With PKCE account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n - `OAUTH_WITH_PEZ`: For connections that require OAuth With PEZ account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Amazon Redshift connections only.\n - `OAUTH_WITH_SERVICE_PRINCIPAL`: For connections that require OAuth With Service Principal account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Databricks connections only.\n - `PERSONAL_ACCESS_TOKEN`: For connections that require Personal Access Token account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Databricks connections only.\n - `OAUTH_CLIENT_CREDENTIALS`: For connections that require OAuth Client Credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n- To include more details about connection objects in the API response, set `include_details` to `true`.\n- You can also sort the output by field names and filter connections by tags.\n\n**NOTE**: When filtering connection records by parameters other than `data_warehouse_types` or `tag_identifiers`, ensure that you set `record_size` to `-1` and `record_offset` to `0` for precise results.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteConnectionV2", + "description": "\n Version: 10.4.0.cl or later\n\nDeletes a connection object.\n\n**Note**: If a connection has dependent objects, make sure you remove its associations before the delete operation.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connections", - "9.2.0.cl" + "10.4.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the connection." + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "connections": { - "description": "List of connections and name pattern", - "type": "array", - "items": { - "$ref": "#/components/schemas/ConnectionInput" - } - }, - "data_warehouse_types": { - "description": "Array of types of data warehouse defined for the connection.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "SNOWFLAKE", - "AMAZON_REDSHIFT", - "GOOGLE_BIGQUERY", - "AZURE_SYNAPSE", - "TERADATA", - "SAP_HANA", - "STARBURST", - "ORACLE_ADW", - "DATABRICKS", - "DENODO", - "DREMIO", - "TRINO", - "PRESTO", - "POSTGRES", - "SQLSERVER", - "MYSQL", - "GENERIC_JDBC", - "AMAZON_RDS_POSTGRESQL", - "AMAZON_AURORA_POSTGRESQL", - "AMAZON_RDS_MYSQL", - "AMAZON_AURORA_MYSQL", - "LOOKER", - "AMAZON_ATHENA", - "SINGLESTORE", - "GCP_SQLSERVER", - "GCP_ALLOYDB_POSTGRESQL", - "GCP_POSTGRESQL", - "GCP_MYSQL", - "MODE", - "GOOGLE_SHEETS", - "FALCON", - "FALCON_ONPREM", - "CLICKHOUSE" - ] - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "tag_identifiers": { - "description": "Unique ID or name of tags.", - "type": "array", - "items": { - "type": "string" - } - }, - "data_warehouse_object_type": { - "description": "Data warehouse object type.", - "type": "string", - "enum": [ - "DATABASE", - "SCHEMA", - "TABLE", - "COLUMN" - ] - }, - "sort_options": { - "description": "Sort options.", - "allOf": [ - { - "$ref": "#/components/schemas/SortOptionInput" - } - ] - }, - "include_details": { - "description": "Indicates whether to include complete details of the connection objects.", - "type": "boolean", - "nullable": true - }, - "configuration": { - "description": "Configuration values. If empty we are fetching configuration from datasource based on given connection id. If required you can provide config details to fetch specific details. Example input: {}, {\"warehouse\":\"SMALL_WH\",\"database\":\"DEVELOPMENT\"}. This is only applicable when data_warehouse_object_type is selected.", - "type": "object" - }, - "authentication_type": { - "description": "List of authentication types to fetch data_ware_house_objects from external Data warehouse. This is only applicable when data_warehouse_object_type is selected.", - "default": "SERVICE_ACCOUNT", - "type": "string", - "enum": [ - "SERVICE_ACCOUNT", - "OAUTH", - "IAM", - "EXTOAUTH", - "OAUTH_WITH_SERVICE_PRINCIPAL", - "PERSONAL_ACCESS_TOKEN", - "KEY_PAIR", - "OAUTH_WITH_PKCE", - "EXTOAUTH_WITH_PKCE", - "OAUTH_WITH_PEZ", - "OAUTH_CLIENT_CREDENTIALS" - ] - }, - "show_resolved_parameters": { - "description": "
Version: 10.9.0.cl or later
\n\nIndicates whether to show resolved parameterised values.", - "default": false, - "type": "boolean", - "nullable": true - } - } - } - } - }, - "required": true - }, - "parameters": [], "responses": { - "200": { - "description": "List of connections to the datasource.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SearchConnectionResponse" - } - } - } - } + "204": { + "description": "Connection successfully deleted." }, "400": { "description": "Invalid request.", @@ -3209,56 +2333,31 @@ } } }, - "/api/rest/2.0/connection/update": { + "/api/rest/2.0/connections/download-connection-metadata-changes/{connection_identifier}": { "post": { - "operationId": "updateConnection", - "description": "\n Version: 9.2.0.cl or later\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Update connection V2](#/http/api-endpoints/connections/update-connection-v2) endpoint to update your connection objects.\n\n#### Usage guidelines\n\nUpdates a connection object. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n\n\n\n#### Endpoint URL\n", - "deprecated": true, + "operationId": "downloadConnectionMetadataChanges", + "description": "\n Version: 9.9.0.cl or later\n\nExports the difference in connection metadata between CDW and ThoughtSpot\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required: \n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\nTo download the connection metadata difference between ThoughtSpot and CDW, pass the connection GUID as `connection_identifier` in the API request.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connections", - "9.2.0.cl" + "9.9.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "GUID of the connection" + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - }, - "name": { - "description": "Updated name of the connection.", - "type": "string" - }, - "description": { - "description": "Updated description of the connection.", - "type": "string" - }, - "data_warehouse_config": { - "description": "Configuration of the data warehouse in JSON.", - "type": "object" - }, - "validate": { - "description": "Indicates whether to validate the connection details.", - "default": true, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "connection_identifier" - ] - } - } - }, - "required": true - }, - "parameters": [], "responses": { - "204": { - "description": "Connection successfully updated." + "200": { + "description": "Export metadata changes.", + "content": { + "application/octet-stream": {} + } }, "400": { "description": "Invalid request.", @@ -3303,44 +2402,14 @@ } } }, - "/api/rest/2.0/connections/{connection_identifier}/update": { + "/api/rest/2.0/connections/fetch-connection-diff-status/{connection_identifier}": { "post": { - "operationId": "updateConnectionV2", - "description": "\n Version: 10.4.0.cl or later\n\nUpdates a connection object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n \n **NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n * A JSON map of configuration attributes, database details, and table properties in `data_warehouse_config` as shown in the following example:\n * This is an example of updating a single table in a empty connection:\n \n ```\n {\n \"authenticationType\": \"SERVICE_ACCOUNT\",\n \"externalDatabases\": [\n {\n \"name\": \"DEVELOPMENT\",\n \"isAutoCreated\": false,\n \"schemas\": [\n {\n \"name\": \"TS_dataset\",\n \"tables\": [\n {\n \"name\": \"DEMORENAME\",\n \"type\": \"TABLE\",\n \"description\": \"\",\n \"selected\": true,\n \"linked\": true,\n \"gid\": 0,\n \"datasetId\": \"-1\",\n \"subType\": \"\",\n \"reportId\": \"\",\n \"viewId\": \"\",\n \"columns\": [\n {\n \"name\": \"Col1\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col2\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col3\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col312\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col4\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n }\n ],\n \"relationships\": []\n }\n ]\n }\n ]\n }\n ],\n \"configuration\": {\n \"password\": \"\",\n \"database\": \"DEVELOPMENT\",\n \"role\": \"DEV\",\n \"accountName\": \"thoughtspot_partner\",\n \"warehouse\": \"DEMO_WH\",\n \"user\": \"DEV_USER\"\n }\n }\n ```\n \n* This is an example of updating a single table in an existing connection with tables:\n \n ```\n {\n \"authenticationType\": \"SERVICE_ACCOUNT\",\n \"externalDatabases\": [\n {\n \"name\": \"DEVELOPMENT\",\n \"isAutoCreated\": false,\n \"schemas\": [\n {\n \"name\": \"TS_dataset\",\n \"tables\": [\n {\n \"name\": \"CUSTOMER\",\n \"type\": \"TABLE\",\n \"description\": \"\",\n \"selected\": true,\n \"linked\": true,\n \"gid\": 0,\n \"datasetId\": \"-1\",\n \"subType\": \"\",\n \"reportId\": \"\",\n \"viewId\": \"\",\n \"columns\": [],\n \"relationships\": []\n },\n {\n \"name\": \"tpch5k_falcon_default_schema_users\",\n \"type\": \"TABLE\",\n \"description\": \"\",\n \"selected\": true,\n \"linked\": true,\n \"gid\": 0,\n \"datasetId\": \"-1\",\n \"subType\": \"\",\n \"reportId\": \"\",\n \"viewId\": \"\",\n \"columns\": [\n {\n \"name\": \"user_id\",\n \"type\": \"INT64\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"product_id\",\n \"type\": \"INT64\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"user_cost\",\n \"type\": \"INT64\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n }\n ],\n \"relationships\": []\n }\n ]\n }\n ]\n }\n ],\n \"configuration\": {\n \"password\": \"\",\n \"database\": \"DEVELOPMENT\",\n \"role\": \"DEV\",\n \"accountName\": \"thoughtspot_partner\",\n \"warehouse\": \"DEMO_WH\",\n \"user\": \"DEV_USER\"\n }\n }\n ```\n\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n **NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n * A JSON map of configuration attributes in `data_warehouse_config`. The following example shows the configuration attributes for a Snowflake connection:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n\n ]\n }\n ```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchConnectionDiffStatus", + "description": "\n Version: 9.9.0.cl or later\n\nValidates the difference in connection metadata between CDW and ThoughtSpot.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\nReturns a boolean indicating whether there is any difference between the connection metadata at ThoughtSpot and CDW.\n\nTo get the connection metadata difference status, pass the connection GUID as `connection_identifier` in the API request.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connections", - "10.4.0.cl" + "9.9.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Updated name of the connection.", - "type": "string" - }, - "description": { - "description": "Updated description of the connection.", - "type": "string" - }, - "data_warehouse_config": { - "description": "Configuration of the data warehouse in JSON.", - "type": "object" - }, - "validate": { - "description": "Indicates whether to validate the connection details.", - "default": true, - "type": "boolean", - "nullable": true - } - } - } - } - }, - "required": true - }, "parameters": [ { "in": "path", @@ -3349,12 +2418,19 @@ "schema": { "type": "string" }, - "description": "Unique ID or name of the connection." + "description": "GUID of the connection" } ], "responses": { - "204": { - "description": "Connection successfully updated." + "200": { + "description": "true/false", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FetchConnectionDiffStatusResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -3399,90 +2475,42 @@ } } }, - "/api/rest/2.0/customization/custom-actions": { + "/api/rest/2.0/connections/{connection_identifier}/revoke-refresh-tokens": { "post": { - "operationId": "createCustomAction", - "description": "\n Version: 9.6.0.cl or later\n\nCreates a custom action that appears as a menu action on a saved Answer or Liveboard visualization.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n#### Usage Guidelines\n\nThe API lets you create the following types of custom actions:\n\n* URL-based action \n Allows pushing data to an external URL.\n* Callback action \n Triggers a callback to the host application and initiates a response payload on an embedded ThoughtSpot instance.\n\nBy default, custom actions are visible to only administrator or developer users. To make a custom action available to other users, and specify the groups in `group_identifiers`.\n\nBy default, the custom action is set as a _global_ action on all visualizations and saved Answers. To assign a custom action to specific Liveboard visualization, saved Answer, or Worksheet, set `visibility` to `false` in `default_action_config` property and specify the GUID or name of the object in `associate_metadata`.\n\nFor more information, see [Custom actions](https://developers.thoughtspot.com/docs/custom-action-intro).\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Custom Action", - "9.6.0.cl" + "operationId": "revokeRefreshTokens", + "description": "\n Version: 26.2.0.cl or later\n\nRevokes OAuth refresh tokens for users who no longer require access to a data warehouse connection.\nWhen a token is revoked, the affected user's session for that connection is terminated, and they must re-authenticate to regain access.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on the ThoughtSpot instance, users with `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege can also make API requests to revoke tokens for connection users.\n\n#### Usage guidelines\n\nYou can specify different combinations of identifiers to control which refresh tokens are revoked.\n\n- **connection_identifier**: Revokes refresh tokens for all users of the connection, except the connection author.\n- **connection_identifier** and **user_identifiers**: Revokes refresh tokens only for the users specified in the request. If the name or ID of the connection author is included in the request, their token will also be revoked.\n- **connection_identifier** and **configuration_identifiers**: Revokes refresh tokens for all users on the specified configurations, except the configuration author.\n- **connection_identifier**, **configuration_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users on the specified configurations.\n- **connection_identifier** and **org_identifiers**: Revokes refresh tokens for the specified Orgs. Applicable only for published connections.\n- **connection_identifier**, **org_identifiers**, and **user_identifiers**: Revokes refresh tokens for the specified users in the specified Orgs. Applicable only for published connections.\n\n**NOTE**: The `org_identifiers` parameter is only applicable for published connections. Using this parameter for unpublished connections will result in an error. Ensure that the connections are published before making the API request.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Connections", + "26.2.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the custom action. The custom action name must be unique.", - "type": "string" - }, - "action_details": { - "description": "Action details includes `Type` and Configuration data for Custom Actions, either Callback or URL is required.", - "allOf": [ - { - "$ref": "#/components/schemas/Action_Details_Input_Create" - } - ] - }, - "associate_metadata": { - "description": "Metadata objects to which the custom action needs to be associated.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Associate_Metadata_Input_Create" - } - }, - "default_action_config": { - "description": "Default Custom action configuration. This includes if the custom action is available on all visualizations. By default, a custom action is added to all visualizations and Answers.", - "allOf": [ - { - "$ref": "#/components/schemas/Default_Action_Config_Input_Create" - } - ] - }, - "group_identifiers": { - "description": "Unique ID or name of the groups that can view and access the custom action.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "name", - "action_details" - ] + "$ref": "#/components/schemas/RevokeRefreshTokensRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the connection whose refresh tokens need to be revoked. All the users associated with the connection will have their refresh tokens revoked except the author." + } + ], "responses": { "200": { - "description": "Custom action created successfully.", + "description": "Token(s) successfully revoked.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResponseCustomAction" - }, - "examples": { - "example_1": { - "value": { - "action_details": { - "CALLBACK": { - "reference": "customaction" - } - }, - "default_action_config": { - "visibility": true - }, - "id": "3d3cad0f-e57b-4faa-8e24-da596c727ee0", - "metadata_association": [], - "name": "customactionsample", - "user_groups": [] - } - } + "$ref": "#/components/schemas/RevokeRefreshTokensResponse" } } } @@ -3517,6 +2545,26 @@ } } }, + "404": { + "description": "Object not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -3530,28 +2578,38 @@ } } }, - "/api/rest/2.0/customization/custom-actions/{custom_action_identifier}/delete": { + "/api/rest/2.0/connection/search": { "post": { - "operationId": "deleteCustomAction", - "description": "\n Version: 9.6.0.cl or later\n\nRemoves the custom action specified in the API request.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchConnection", + "description": "\n Version: 9.2.0.cl or later\n\nGets connection objects.\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\n- To get a list of all connections available in the ThoughtSpot system, send the API request without any attributes in the request body.\n- To get the connection objects for a specific type of data warehouse, specify the type in `data_warehouse_types`.\n- To fetch details of a connection object, specify the connection object GUID or name. The `name_pattern` attribute allows passing partial text with `%` for a wildcard match.\n- To get details of the database, schemas, tables, or columns from a data connection object, specify `data_warehouse_object_type`.\n- To get a specific database, schema, table, or column from a connection object, define the object type in `data_warehouse_object_type` and object properties in the `data_warehouse_objects` array. For example, to search for a column, you must pass the database, schema, and table names in the API request.\n Note that in the following example, object properties are set in a hierarchical order (`database` > `schema` > `table` > `column`).\n\n```\n{\n \"connections\": [\n {\n \"identifier\": \"b9d1f2ef-fa65-4a4b-994e-30fa2d57b0c2\",\n \"data_warehouse_objects\": [\n {\n \"database\": \"NEBULADEV\",\n \"schema\": \"INFORMATION_SCHEMA\",\n \"table\": \"APPLICABLE_ROLES\",\n \"column\": \"ROLE_NAME\"\n }\n ]\n }\n ],\n \"data_warehouse_object_type\": \"COLUMN\"\n}\n```\n\n- To fetch data by `configuration`, specify `data_warehouse_object_type`. For example, to fetch columns from the `DEVELOPMENT` database, specify the `data_warehouse_object_type` as `DATABASE` and define the `configuration` string as `{\"database\":\"DEVELOPMENT\"}`. To get column data for a specific table, specify the table, for example,`{\"database\":\"RETAILAPPAREL\",\"table\":\"PIPES\"}`.\n- To query connections by `authentication_type`, specify `data_warehouse_object_type`. Supported values for `authentication_type` are:\n - `SERVICE_ACCOUNT`: For connections that require service account credentials to authenticate to the Cloud Data Warehouse and fetch data.\n - `OAUTH`: For connections that require OAuth credentials to authenticate to the Cloud Data Warehouse and fetch data. Teradata, Oracle, and Presto Cloud Data Warehouses do not support the OAuth authentication type.\n - `IAM`: For connections that have the IAM OAuth set up. This authentication type is supported on Amazon Redshift connections only.\n - `EXTOAUTH`: For connections that have External OAuth set up. ThoughtSpot supports external [OAuth with Microsoft Azure Active Directory (AD)](https://docs.thoughtspot.com/cloud/latest/ connections-snowflake-azure-ad-oauth) and [Okta for Snowflake data connections](https://docs.thoughtspot.com/cloud/latest/connections-snowflake-okta-oauth).\n - `KEY_PAIR`: For connections that require Key Pair account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n - `OAUTH_WITH_PKCE`: For connections that require OAuth with PKCE account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake, Starburst, Databricks, Denodo connections only.\n - `EXTOAUTH_WITH_PKCE`: For connections that require External OAuth With PKCE account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n - `OAUTH_WITH_PEZ`: For connections that require OAuth With PEZ account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Amazon Redshift connections only.\n - `OAUTH_WITH_SERVICE_PRINCIPAL`: For connections that require OAuth With Service Principal account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Databricks connections only.\n - `PERSONAL_ACCESS_TOKEN`: For connections that require Personal Access Token account credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Databricks connections only.\n - `OAUTH_CLIENT_CREDENTIALS`: For connections that require OAuth Client Credentials to authenticate to the Cloud Data Warehouse and fetch data. This authentication type is supported on Snowflake connections only.\n- To include more details about connection objects in the API response, set `include_details` to `true`.\n- You can also sort the output by field names and filter connections by tags.\n\n**NOTE**: When filtering connection records by parameters other than `data_warehouse_types` or `tag_identifiers`, ensure that you set `record_size` to `-1` and `record_offset` to `0` for precise results.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Action", - "9.6.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "custom_action_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the custom action." - } + "Connections", + "9.2.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchConnectionRequest" + } + } + }, + "required": true + }, + "parameters": [], "responses": { - "204": { - "description": "Custom action is successfully deleted." + "200": { + "description": "List of connections to the datasource.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchConnectionResponse" + } + } + } + } }, "400": { "description": "Invalid request.", @@ -3596,64 +2654,20 @@ } } }, - "/api/rest/2.0/customization/custom-actions/search": { + "/api/rest/2.0/connection/update": { "post": { - "operationId": "searchCustomActions", - "description": "\n Version: 9.6.0.cl or later\n\nGets custom actions configured on the cluster.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateConnection", + "description": "\n Version: 9.2.0.cl or later\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Update connection V2](#/http/api-endpoints/connections/update-connection-v2) endpoint to update your connection objects.\n\n#### Usage guidelines\n\nUpdates a connection object. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n\n\n\n#### Endpoint URL\n", + "deprecated": true, "tags": [ - "Custom Action", - "9.6.0.cl" + "Connections", + "9.2.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "custom_action_identifier": { - "description": "Name or ID of the custom action.", - "type": "string" - }, - "name_pattern": { - "description": "A pattern to match case-insensitive name of the custom-action object.", - "type": "string" - }, - "default_action_config": { - "description": "Default Custom action configuration. This includes if the custom action is available on all visualizations. By default, a custom action is added to all visualizations and Answers.", - "allOf": [ - { - "$ref": "#/components/schemas/Default_Action_Config_Search_Input" - } - ] - }, - "include_group_associations": { - "description": "When set to true, returns the associated groups for a custom action.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_metadata_associations": { - "description": "When set to true, returns the associated metadata for a custom action.", - "default": false, - "type": "boolean", - "nullable": true - }, - "metadata": { - "description": "Search with a given metadata identifier.", - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomActionMetadataTypeInput" - } - }, - "type": { - "description": "Filter the action objects based on type", - "type": "string", - "enum": [ - "CALLBACK", - "URL" - ] - } - } + "$ref": "#/components/schemas/UpdateConnectionRequest" } } }, @@ -3661,36 +2675,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Custom action search is successful.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResponseCustomAction" - } - }, - "examples": { - "example_1": { - "value": [ - { - "action_details": { - "CALLBACK": { - "reference": "LEDE" - } - }, - "default_action_config": { - "visibility": true - }, - "id": "c59262df-cf9e-4947-96fa-52d494688797", - "name": "LEDE" - } - ] - } - } - } - } + "204": { + "description": "Connection successfully updated." }, "400": { "description": "Invalid request.", @@ -3735,64 +2721,19 @@ } } }, - "/api/rest/2.0/customization/custom-actions/{custom_action_identifier}/update": { + "/api/rest/2.0/connections/{connection_identifier}/update": { "post": { - "operationId": "updateCustomAction", - "description": "\n Version: 9.6.0.cl or later\n\nUpdates a custom action.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n#### Usage Guidelines\n\nThe API allows you to modify the following properties:\n\n* Name of the custom action\n* Action availability to groups\n* Association to metadata objects\n* Authentication settings for a URL-based action\n\nFor more information, see [Custom actions](https://developers.thoughtspot.com/docs/custom-action-intro).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateConnectionV2", + "description": "\n Version: 10.4.0.cl or later\n\nUpdates a connection object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n \n **NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n * A JSON map of configuration attributes, database details, and table properties in `data_warehouse_config` as shown in the following example:\n * This is an example of updating a single table in a empty connection:\n \n ```\n {\n \"authenticationType\": \"SERVICE_ACCOUNT\",\n \"externalDatabases\": [\n {\n \"name\": \"DEVELOPMENT\",\n \"isAutoCreated\": false,\n \"schemas\": [\n {\n \"name\": \"TS_dataset\",\n \"tables\": [\n {\n \"name\": \"DEMORENAME\",\n \"type\": \"TABLE\",\n \"description\": \"\",\n \"selected\": true,\n \"linked\": true,\n \"gid\": 0,\n \"datasetId\": \"-1\",\n \"subType\": \"\",\n \"reportId\": \"\",\n \"viewId\": \"\",\n \"columns\": [\n {\n \"name\": \"Col1\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col2\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col3\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col312\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"Col4\",\n \"type\": \"VARCHAR\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n }\n ],\n \"relationships\": []\n }\n ]\n }\n ]\n }\n ],\n \"configuration\": {\n \"password\": \"\",\n \"database\": \"DEVELOPMENT\",\n \"role\": \"DEV\",\n \"accountName\": \"thoughtspot_partner\",\n \"warehouse\": \"DEMO_WH\",\n \"user\": \"DEV_USER\"\n }\n }\n ```\n \n* This is an example of updating a single table in an existing connection with tables:\n \n ```\n {\n \"authenticationType\": \"SERVICE_ACCOUNT\",\n \"externalDatabases\": [\n {\n \"name\": \"DEVELOPMENT\",\n \"isAutoCreated\": false,\n \"schemas\": [\n {\n \"name\": \"TS_dataset\",\n \"tables\": [\n {\n \"name\": \"CUSTOMER\",\n \"type\": \"TABLE\",\n \"description\": \"\",\n \"selected\": true,\n \"linked\": true,\n \"gid\": 0,\n \"datasetId\": \"-1\",\n \"subType\": \"\",\n \"reportId\": \"\",\n \"viewId\": \"\",\n \"columns\": [],\n \"relationships\": []\n },\n {\n \"name\": \"tpch5k_falcon_default_schema_users\",\n \"type\": \"TABLE\",\n \"description\": \"\",\n \"selected\": true,\n \"linked\": true,\n \"gid\": 0,\n \"datasetId\": \"-1\",\n \"subType\": \"\",\n \"reportId\": \"\",\n \"viewId\": \"\",\n \"columns\": [\n {\n \"name\": \"user_id\",\n \"type\": \"INT64\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"product_id\",\n \"type\": \"INT64\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n },\n {\n \"name\": \"user_cost\",\n \"type\": \"INT64\",\n \"canImport\": true,\n \"selected\": true,\n \"description\": \"\",\n \"isLinkedActive\": true,\n \"isAggregate\": false\n }\n ],\n \"relationships\": []\n }\n ]\n }\n ]\n }\n ],\n \"configuration\": {\n \"password\": \"\",\n \"database\": \"DEVELOPMENT\",\n \"role\": \"DEV\",\n \"accountName\": \"thoughtspot_partner\",\n \"warehouse\": \"DEMO_WH\",\n \"user\": \"DEV_USER\"\n }\n }\n ```\n\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n **NOTE:** If the `authentication_type` is anything other than SERVICE_ACCOUNT, you must explicitly provide the authenticationType property in the payload. If you do not specify authenticationType, the API will default to SERVICE_ACCOUNT as the authentication type.\n\n * A JSON map of configuration attributes in `data_warehouse_config`. The following example shows the configuration attributes for a Snowflake connection:\n ```\n {\n \"configuration\":{\n \"accountName\":\"thoughtspot_partner\",\n \"user\":\"tsadmin\",\n \"password\":\"TestConn123\",\n \"role\":\"sysadmin\",\n \"warehouse\":\"MEDIUM_WH\"\n },\n \"externalDatabases\":[\n\n ]\n }\n ```\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Action", - "9.6.0.cl" + "Connections", + "10.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "action_details": { - "description": "Action details includes `Type` and Configuration for Custom Actions, either Callback or URL is required.", - "allOf": [ - { - "$ref": "#/components/schemas/Action_Details_Input" - } - ] - }, - "associate_metadata": { - "description": "Metadata objects to which the custom action needs to be associated.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Associate_Metadata_Input" - } - }, - "default_action_config": { - "description": "Default Custom action configuration. This includes if the custom action available on visualizations and Answers. By default, a custom action is added to all visualizations and Answers.", - "allOf": [ - { - "$ref": "#/components/schemas/Default_Action_Config_Input" - } - ] - }, - "group_identifiers": { - "description": "Unique ID or name of the groups that can view and access the custom action.", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Name of the custom action. The custom action name must be unique.", - "type": "string" - }, - "operation": { - "description": "Type of update operation. Default operation type is ADD", - "default": "ADD", - "type": "string", - "enum": [ - "ADD", - "REMOVE" - ] - } - } + "$ref": "#/components/schemas/UpdateConnectionV2Request" } } }, @@ -3801,17 +2742,17 @@ "parameters": [ { "in": "path", - "name": "custom_action_identifier", + "name": "connection_identifier", "required": true, "schema": { "type": "string" }, - "description": "Unique ID or name of the custom action." + "description": "Unique ID or name of the connection." } ], "responses": { "204": { - "description": "Custom action updated successfully." + "description": "Connection successfully updated." }, "400": { "description": "Invalid request.", @@ -3856,108 +2797,19 @@ } } }, - "/api/rest/2.0/calendars/create": { + "/api/rest/2.0/customization/custom-actions": { "post": { - "operationId": "createCalendar", - "description": "\n Version: 10.12.0.cl or later\n\nCreates a new [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n\n#### Usage guidelines\n\nYou can create a custom calendar from scratch or an existing Table in ThoughtSpot. For both methods of calendar creation, the following parameters are required:\n\n* Name of the custom calendar.\n* Calendar creation method. To create a calendar from an existing table, specify the method:\n\n - `FROM_EXISTING_TABLE` - Creates calendar from the table reference provided in the API request.\n - `FROM_INPUT_PARAMS` - Creates a calendar from the parameters defined in the API request.\n\n* Connection ID and Table name\n* Database and schema name attributes:\n For most Cloud Data Warehouse (CDW) connectors, both `database_name` and `schema_name` attributes are required. \n However, the attribute requirements are conditional and vary based on the connector type and its metadata structure. For example, for connectors such as Teradata, MySQL, SingleSore, Amazon Aurora MySQL, Amazon RDS MySQL, Oracle, and GCP_MYSQL, the `schema_name` is required, whereas the `database_name` attribute is not.\n Similarly, connectors such as ClickHouse require you to specify the `database_name` and the schema specification in such cases is optional.\n\n**NOTE**: If you are creating a calendar from an existing table, ensure that the referenced table matches the required DDL for custom calendars. If the schema does not match, the API returns an error.\n\n##### Calendar type\nThe API allows you to create the following types of calendars:\n\n* `MONTH_OFFSET`. The default calendar type. A `MONTH_OFFSET` calendar is offset by a few months from the standard calendar months (January to December) and the year begins with the month defined in the request. For example, if the `month_offset` value is set as `April`, the calendar year begins in April.\n\n* `4-4-5`. Each quarter in the calendar will include two 4-week months followed by one 5-week month.\n* `4-5-4`. Each quarter in the calendar will include two 4-week months with a 5-week month between.\n* `5-4-4`. Each quarter begins with a 5-week month, followed by two 4-week months.\n\nTo start and end the calendar on a specific date, specify the dates in the `MM/DD/YYYY` format. For `MONTH_OFFSET` calendars, ensure that the `start_date` matches the month specified in the `month_offset` attribute.\n\nYou can also set the starting day of the week and customize the prefixes for year and quarter labels.\n\n#### Examples\n\nTo create a calendar from an existing table:\n\n```\n{\n \"name\": \"MyCustomCalendar1\",\n \"table_reference\": {\n \"connection_identifier\": \"4db8ea22-2ff4-4224-b05a-26674717e468\",\n \"table_name\": \"MyCalendarTable\",\n \"database_name\": \"RETAILAPPAREL\",\n \"schema_name\": \"PUBLIC\"\n },\n \"creation_method\": \"FROM_EXISTING_TABLE\",\n}\n```\n\nTo create a calendar from scratch:\n\n```\n{\n \"name\": \"MyCustomCalendar1\",\n \"table_reference\": {\n \"connection_identifier\": \"4db8ea22-2ff4-4224-b05a-26674717e468\",\n \"table_name\": \"MyCalendarTable\",\n \"database_name\": \"RETAILAPPAREL\",\n \"schema_name\": \"PUBLIC\"\n },\n \"creation_method\": \"FROM_INPUT_PARAMS\",\n \"calendar_type\": \"MONTH_OFFSET\",\n \"month_offset\": \"April\",\n \"start_day_of_week\": \"Monday\",\n \"quarter_name_prefix\": \"Q\",\n \"year_name_prefix\": \"FY\",\n \"start_date\": \"04/01/2025\",\n \"end_date\": \"04/31/2025\"\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createCustomAction", + "description": "\n Version: 9.6.0.cl or later\n\nCreates a custom action that appears as a menu action on a saved Answer or Liveboard visualization.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n#### Usage Guidelines\n\nThe API lets you create the following types of custom actions:\n\n* URL-based action \n Allows pushing data to an external URL.\n* Callback action \n Triggers a callback to the host application and initiates a response payload on an embedded ThoughtSpot instance.\n\nBy default, custom actions are visible to only administrator or developer users. To make a custom action available to other users, and specify the groups in `group_identifiers`.\n\nBy default, the custom action is set as a _global_ action on all visualizations and saved Answers. To assign a custom action to specific Liveboard visualization, saved Answer, or Worksheet, set `visibility` to `false` in `default_action_config` property and specify the GUID or name of the object in `associate_metadata`.\n\nFor more information, see [Custom actions](https://developers.thoughtspot.com/docs/custom-action-intro).\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Calendars", - "10.12.0.cl" + "Custom Action", + "9.6.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the custom calendar.", - "type": "string" - }, - "creation_method": { - "description": "Type of create operation.", - "type": "string", - "enum": [ - "FROM_INPUT_PARAMS", - "FROM_EXISTING_TABLE" - ] - }, - "table_reference": { - "description": "Table reference containing connection identifier and table details in this format: `{\"connection_identifier\":\"conn1\", \"database_name\":\"db1\", \"schema_name\":\"sc1\", \"table_name\":\"tb1\"}`. The given table will be created if `creation_method` is set as `FROM_INPUT_PARAMS`.", - "allOf": [ - { - "$ref": "#/components/schemas/ExternalTableInput" - } - ] - }, - "start_date": { - "description": "Start date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `creation_method` is set as `FROM_INPUT_PARAMS`.", - "type": "string" - }, - "end_date": { - "description": "End date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `creation_method` is set as `FROM_INPUT_PARAMS`.", - "type": "string" - }, - "calendar_type": { - "description": "Type of the calendar.", - "default": "MONTH_OFFSET", - "type": "string", - "enum": [ - "MONTH_OFFSET", - "FOUR_FOUR_FIVE", - "FOUR_FIVE_FOUR", - "FIVE_FOUR_FOUR" - ] - }, - "month_offset": { - "description": "Specify the month in which the fiscal or custom calendar year should start. For example, if you set `month_offset` to \"April\", the custom calendar will treat \"April\" as the first month of the year, and the related attributes such as quarters and start date will be based on this offset. The default value is `January`, which represents the standard calendar year (January to December).", - "default": "January", - "type": "string", - "enum": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ] - }, - "start_day_of_week": { - "description": "Specify the starting day of the week.", - "default": "Sunday", - "type": "string", - "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] - }, - "quarter_name_prefix": { - "description": "Prefix to add before the quarter.", - "default": "", - "type": "string" - }, - "year_name_prefix": { - "description": "Prefix to add before the year.", - "default": "", - "type": "string" - } - }, - "required": [ - "name", - "creation_method", - "table_reference" - ] + "$ref": "#/components/schemas/CreateCustomActionRequest" } } }, @@ -3966,11 +2818,29 @@ "parameters": [], "responses": { "200": { - "description": "Custom calendar created successfully.", + "description": "Custom action created successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CalendarResponse" + "$ref": "#/components/schemas/ResponseCustomAction" + }, + "examples": { + "example_1": { + "value": { + "action_details": { + "CALLBACK": { + "reference": "customaction" + } + }, + "default_action_config": { + "visibility": true + }, + "id": "3d3cad0f-e57b-4faa-8e24-da596c727ee0", + "metadata_association": [], + "name": "customactionsample", + "user_groups": [] + } + } } } } @@ -4018,28 +2888,28 @@ } } }, - "/api/rest/2.0/calendars/{calendar_identifier}/delete": { + "/api/rest/2.0/customization/custom-actions/{custom_action_identifier}/delete": { "post": { - "operationId": "deleteCalendar", - "description": "\n Version: 10.12.0.cl or later\n\nDeletes a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\nTo delete a custom calendar, specify the calendar ID as a path parameter in the request URL. \n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteCustomAction", + "description": "\n Version: 9.6.0.cl or later\n\nRemoves the custom action specified in the API request.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Calendars", - "10.12.0.cl" + "Custom Action", + "9.6.0.cl" ], "parameters": [ { "in": "path", - "name": "calendar_identifier", + "name": "custom_action_identifier", "required": true, "schema": { "type": "string" }, - "description": "Unique ID or name of the Calendar." + "description": "Unique ID or name of the custom action." } ], "responses": { "204": { - "description": "Custom calendar successfully deleted." + "description": "Custom action is successfully deleted." }, "400": { "description": "Invalid request.", @@ -4084,85 +2954,19 @@ } } }, - "/api/rest/2.0/calendars/generate-csv": { + "/api/rest/2.0/customization/custom-actions/search": { "post": { - "operationId": "generateCSV", - "description": "\n Version: 10.12.0.cl or later\n\nExports a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal) in the CSV format.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nUse this API to download a custom calendar in the CSV file format. In your API request, specify the following parameters.\n\n* Start and end date of the calendar. For \"month offset\" calendars, the start date must match the month defined in the `month_offset` attribute.\n\nYou can also specify optional parameters such as the starting day of the week and prefixes for the quarter and year labels.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchCustomActions", + "description": "\n Version: 9.6.0.cl or later\n\nGets custom actions configured on the cluster.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Calendars", - "10.12.0.cl" + "Custom Action", + "9.6.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "start_date": { - "description": "Start date for the calendar in `MM/dd/yyyy` format.", - "type": "string" - }, - "end_date": { - "description": "End date for the calendar in `MM/dd/yyyy` format.", - "type": "string" - }, - "calendar_type": { - "description": "Type of the calendar.", - "default": "MONTH_OFFSET", - "type": "string", - "enum": [ - "MONTH_OFFSET", - "FOUR_FOUR_FIVE", - "FOUR_FIVE_FOUR", - "FIVE_FOUR_FOUR" - ] - }, - "month_offset": { - "description": "Month offset to start calendar from `January`.", - "default": "January", - "type": "string", - "enum": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ] - }, - "start_day_of_week": { - "description": "Specify the starting day of the week.", - "default": "Sunday", - "type": "string", - "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] - }, - "quarter_name_prefix": { - "description": "Prefix to add before the quarter.", - "type": "string" - }, - "year_name_prefix": { - "description": "Prefix to add before the year.", - "type": "string" - } - }, - "required": [ - "start_date", - "end_date" - ] + "$ref": "#/components/schemas/SearchCustomActionsRequest" } } }, @@ -4171,11 +2975,32 @@ "parameters": [], "responses": { "200": { - "description": "Generate custom calendar data based on specifications, as a CSV file.", + "description": "Custom action search is successful.", "content": { "application/json": { "schema": { - "type": "object" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseCustomAction" + } + }, + "examples": { + "example_1": { + "value": [ + { + "action_details": { + "CALLBACK": { + "reference": "LEDE" + } + }, + "default_action_config": { + "visibility": true + }, + "id": "c59262df-cf9e-4947-96fa-52d494688797", + "name": "LEDE" + } + ] + } } } } @@ -4223,68 +3048,38 @@ } } }, - "/api/rest/2.0/calendars/search": { + "/api/rest/2.0/customization/custom-actions/{custom_action_identifier}/update": { "post": { - "operationId": "searchCalendars", - "description": "\n Version: 10.12.0.cl or later\n\nGets a list of [custom calendars](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nBy default, the API returns a list of custom calendars for all connection objects. To retrieve custom calendar details for a particular connection, specify the connection ID. You can also use other search parameters such as `name_pattern` and `sort_options` as search filters.\n\nThe `name_pattern` parameter filters and returns only those objects that match the specified pattern. Use `%` as a wildcard for pattern matching.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateCustomAction", + "description": "\n Version: 9.6.0.cl or later\n\nUpdates a custom action.\n\nRequires `DEVELOPER` (**Has Developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n#### Usage Guidelines\n\nThe API allows you to modify the following properties:\n\n* Name of the custom action\n* Action availability to groups\n* Association to metadata objects\n* Authentication settings for a URL-based action\n\nFor more information, see [Custom actions](https://developers.thoughtspot.com/docs/custom-action-intro).\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Custom Calendars", - "10.12.0.cl" + "Custom Action", + "9.6.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "connection_identifier": { - "description": "Unique ID or name of the connection.", - "type": "string" - }, - "name_pattern": { - "description": "Pattern to match for calendar names (use '%' for wildcard match).", - "type": "string" - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "sort_options": { - "description": "Sort options.", - "allOf": [ - { - "$ref": "#/components/schemas/SortOption" - } - ] - } - } + "$ref": "#/components/schemas/UpdateCustomActionRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "custom_action_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the custom action." + } + ], "responses": { - "200": { - "description": "Custom calendar fetched successfully.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CalendarResponse" - } - } - } - } + "204": { + "description": "Custom action updated successfully." }, "400": { "description": "Invalid request.", @@ -4329,10 +3124,10 @@ } } }, - "/api/rest/2.0/calendars/{calendar_identifier}/update": { + "/api/rest/2.0/calendars/create": { "post": { - "operationId": "updateCalendar", - "description": "\n Version: 10.12.0.cl or later\n\nUpdates the properties of a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nYou can update the properties of a calendar using one of the following methods:\n* `FROM_INPUT_PARAMS` to update the calendar properties with the values defined in the API request.\n* `FROM_EXISTING_TABLE` Creates a calendar from the parameters defined in the API request.\n\nTo update a custom calendar, specify the calendar ID as a path parameter in the request URL and the following parameters in the request body: \n\n* Connection ID and Table name\n* Database and schema name attributes:\n For most Cloud Data Warehouse (CDW) connectors, both `database_name` and `schema_name` attributes are required. \n However, the attribute requirements are conditional and vary based on the connector type and its metadata structure. For example, for connectors such as Teradata, MySQL, SingleSore, Amazon Aurora MySQL, Amazon RDS MySQL, Oracle, and GCP_MYSQL, the `schema_name` is required, whereas the `database_name` attribute is not.\n Similarly, connectors such as ClickHouse require you to specify the `database_name` and the schema specification in such cases is optional.\n\nThe API allows you to modify the calendar type, month offset value, start and end date, starting day of the week, and prefixes assigned to the year and quarter labels. \n\n#### Examples\n\nUpdate a custom calendar using an existing Table in ThoughtSpot:\n\n```\n{\n \"update_method\": \"FROM_EXISTING_TABLE\",\n \"table_reference\": {\n \"connection_identifier\": \"Connection1\",\n \"database_name\": \"db1\",\n \"table_name\": \"custom_calendar_2025\",\n \"schame_name\": \"schemaVar\"\n }\n}\n```\n\nUpdate a custom calendar with the attributes defined in the API request:\n\n```\n{\n \"update_method\": \"FROM_INPUT_PARAMS\",\n \"table_reference\": {\n \"connection_identifier\": \"Connection1\",\n \"database_name\": \"db1\",\n \"table_name\": \"custom_calendar_2025\",\n \"schame_name\": \"schemaVar\"\n },\n \"month_offset\": \"August\",\n \"start_day_of_week\": \"Monday\",\n \"start_date\": \"08/01/2025\",\n \"end_date\": \"07/31/2026\"\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createCalendar", + "description": "\n Version: 10.12.0.cl or later\n\nCreates a new [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n\n#### Usage guidelines\n\nYou can create a custom calendar from scratch or an existing Table in ThoughtSpot. For both methods of calendar creation, the following parameters are required:\n\n* Name of the custom calendar.\n* Calendar creation method. To create a calendar from an existing table, specify the method:\n\n - `FROM_EXISTING_TABLE` - Creates calendar from the table reference provided in the API request.\n - `FROM_INPUT_PARAMS` - Creates a calendar from the parameters defined in the API request.\n\n* Connection ID and Table name\n* Database and schema name attributes:\n For most Cloud Data Warehouse (CDW) connectors, both `database_name` and `schema_name` attributes are required. \n However, the attribute requirements are conditional and vary based on the connector type and its metadata structure. For example, for connectors such as Teradata, MySQL, SingleSore, Amazon Aurora MySQL, Amazon RDS MySQL, Oracle, and GCP_MYSQL, the `schema_name` is required, whereas the `database_name` attribute is not.\n Similarly, connectors such as ClickHouse require you to specify the `database_name` and the schema specification in such cases is optional.\n\n**NOTE**: If you are creating a calendar from an existing table, ensure that the referenced table matches the required DDL for custom calendars. If the schema does not match, the API returns an error.\n\n##### Calendar type\nThe API allows you to create the following types of calendars:\n\n* `MONTH_OFFSET`. The default calendar type. A `MONTH_OFFSET` calendar is offset by a few months from the standard calendar months (January to December) and the year begins with the month defined in the request. For example, if the `month_offset` value is set as `April`, the calendar year begins in April.\n\n* `4-4-5`. Each quarter in the calendar will include two 4-week months followed by one 5-week month.\n* `4-5-4`. Each quarter in the calendar will include two 4-week months with a 5-week month between.\n* `5-4-4`. Each quarter begins with a 5-week month, followed by two 4-week months.\n\nTo start and end the calendar on a specific date, specify the dates in the `MM/DD/YYYY` format. For `MONTH_OFFSET` calendars, ensure that the `start_date` matches the month specified in the `month_offset` attribute.\n\nYou can also set the starting day of the week and customize the prefixes for year and quarter labels.\n\n#### Examples\n\nTo create a calendar from an existing table:\n\n```\n{\n \"name\": \"MyCustomCalendar1\",\n \"table_reference\": {\n \"connection_identifier\": \"4db8ea22-2ff4-4224-b05a-26674717e468\",\n \"table_name\": \"MyCalendarTable\",\n \"database_name\": \"RETAILAPPAREL\",\n \"schema_name\": \"PUBLIC\"\n },\n \"creation_method\": \"FROM_EXISTING_TABLE\",\n}\n```\n\nTo create a calendar from scratch:\n\n```\n{\n \"name\": \"MyCustomCalendar1\",\n \"table_reference\": {\n \"connection_identifier\": \"4db8ea22-2ff4-4224-b05a-26674717e468\",\n \"table_name\": \"MyCalendarTable\",\n \"database_name\": \"RETAILAPPAREL\",\n \"schema_name\": \"PUBLIC\"\n },\n \"creation_method\": \"FROM_INPUT_PARAMS\",\n \"calendar_type\": \"MONTH_OFFSET\",\n \"month_offset\": \"April\",\n \"start_day_of_week\": \"Monday\",\n \"quarter_name_prefix\": \"Q\",\n \"year_name_prefix\": \"FY\",\n \"start_date\": \"04/01/2025\",\n \"end_date\": \"04/31/2025\"\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Custom Calendars", "10.12.0.cl" @@ -4341,110 +3136,23 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "update_method": { - "description": "Type of update operation.", - "default": "FROM_INPUT_PARAMS", - "type": "string", - "enum": [ - "FROM_INPUT_PARAMS", - "FROM_EXISTING_TABLE" - ] - }, - "table_reference": { - "description": "Table reference containing connection identifier and table details in this format: `{\"connection_identifier\":\"conn1\", \"database_name\":\"db1\", \"schema_name\":\"sc1\", \"table_name\":\"tb1\"}`.", - "allOf": [ - { - "$ref": "#/components/schemas/ExternalTableInput" - } - ] - }, - "start_date": { - "description": "Start date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `update_method` is set as `FROM_INPUT_PARAMS`.", - "type": "string" - }, - "end_date": { - "description": "End date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `update_method` is set as `FROM_INPUT_PARAMS`.", - "type": "string" - }, - "calendar_type": { - "description": "Type of the calendar.", - "default": "MONTH_OFFSET", - "type": "string", - "enum": [ - "MONTH_OFFSET", - "FOUR_FOUR_FIVE", - "FOUR_FIVE_FOUR", - "FIVE_FOUR_FOUR" - ] - }, - "month_offset": { - "description": "Specify the month in which the fiscal or custom calendar year should start. For example, if you set `month_offset` to \"April\", the custom calendar will treat \"April\" as the first month of the year, and the related attributes such as quarters and start date will be based on this offset. The default value is `January`, which represents the standard calendar year (January to December).", - "default": "January", - "type": "string", - "enum": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ] - }, - "start_day_of_week": { - "description": "Specify the starting day of the week", - "default": "Sunday", - "type": "string", - "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] - }, - "quarter_name_prefix": { - "description": "Prefix to add before the quarter.", - "default": "", - "type": "string" - }, - "year_name_prefix": { - "description": "Prefix to add before the year.", - "default": "", - "type": "string" - } - }, - "required": [ - "table_reference" - ] + "$ref": "#/components/schemas/CreateCalendarRequest" } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "calendar_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique Id or name of the calendar." - } - ], + "parameters": [], "responses": { - "204": { - "description": "Custom calendar updated successfully." + "200": { + "description": "Custom calendar created successfully.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CalendarResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -4489,77 +3197,28 @@ } } }, - "/api/rest/2.0/metadata/answer/data": { + "/api/rest/2.0/calendars/{calendar_identifier}/delete": { "post": { - "operationId": "fetchAnswerData", - "description": "\n Version: 9.0.0.cl or later\n\nFetches data from a saved Answer.\n\nRequires at least view access to the saved Answer.\n\nThe `record_size` attribute determines the number of records to retrieve in an API call. For more information about pagination, record size, and maximum row limit, see [Pagination and record size settings](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_pagination_settings_for_data_and_report_apis).\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteCalendar", + "description": "\n Version: 10.12.0.cl or later\n\nDeletes a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\nTo delete a custom calendar, specify the calendar ID as a path parameter in the request URL. \n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Data", - "9.0.0.cl" + "Custom Calendars", + "10.12.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "calendar_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the Calendar." + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "GUID or name of the Answer.", - "type": "string" - }, - "data_format": { - "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", - "default": "COMPACT", - "type": "string", - "enum": [ - "FULL", - "COMPACT" - ] - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records to include in a batch.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "runtime_filter": { - "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", - "type": "object" - }, - "runtime_sort": { - "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", - "type": "object" - }, - "runtime_param_override": { - "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", - "type": "object" - } - }, - "required": [ - "metadata_identifier" - ] - } - } - }, - "required": true - }, - "parameters": [], "responses": { - "200": { - "description": "Fetching data of specified metadata object is successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AnswerDataResponse" - } - } - } + "204": { + "description": "Custom calendar successfully deleted." }, "400": { "description": "Invalid request.", @@ -4604,72 +3263,19 @@ } } }, - "/api/rest/2.0/metadata/liveboard/data": { + "/api/rest/2.0/calendars/generate-csv": { "post": { - "operationId": "fetchLiveboardData", - "description": "\n Version: 9.0.0.cl or later\n\nGets data from a Liveboard object and its visualization. \n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To get data for specific visualizations, add the GUIDs or names of the visualizations in the API request.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes. If the new Liveboard experience mode, the transient content includes ad hoc changes to visualizations such as sorting, toggling of legends, and data drill down.\n\nFor more information, and see [Liveboard data API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_fetch_liveboard_data_api).\n\n\n\n#### Endpoint URL\n", + "operationId": "generateCSV", + "description": "\n Version: 10.12.0.cl or later\n\nExports a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal) in the CSV format.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nUse this API to download a custom calendar in the CSV file format. In your API request, specify the following parameters.\n\n* Start and end date of the calendar. For \"month offset\" calendars, the start date must match the month defined in the `month_offset` attribute.\n\nYou can also specify optional parameters such as the starting day of the week and prefixes for the quarter and year labels.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Data", - "9.0.0.cl" + "Custom Calendars", + "10.12.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "GUID or name of the Liveboard.", - "type": "string" - }, - "visualization_identifiers": { - "description": "GUIDs or names of the visualizations on the Liveboard.", - "type": "array", - "items": { - "type": "string" - } - }, - "transient_content": { - "description": "Transient content of the Liveboard.", - "type": "string" - }, - "data_format": { - "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", - "default": "COMPACT", - "type": "string", - "enum": [ - "FULL", - "COMPACT" - ] - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records to include in a batch.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "runtime_filter": { - "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", - "type": "object" - }, - "runtime_sort": { - "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", - "type": "object" - }, - "runtime_param_override": { - "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", - "type": "object" - } - }, - "required": [ - "metadata_identifier" - ] + "$ref": "#/components/schemas/GenerateCSVRequest" } } }, @@ -4678,11 +3284,11 @@ "parameters": [], "responses": { "200": { - "description": "Fetching data of specified metadata object is successful.", + "description": "Generate custom calendar data based on specifications, as a CSV file.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LiveboardDataResponse" + "type": "object" } } } @@ -4730,66 +3336,19 @@ } } }, - "/api/rest/2.0/searchdata": { + "/api/rest/2.0/calendars/search": { "post": { - "operationId": "searchData", - "description": "\n Version: 9.0.0.cl or later\n\nGenerates an Answer from a given data source.\n\nRequires at least view access to the data source object (Worksheet or View).\n\n#### Usage guidelines\n\nTo search data, specify the data source GUID in `logical_table_identifier`. The data source can be a Worksheet, View, Table, or SQL view.\n\nPass search tokens in the `query_string` attribute in the API request as shown in the following example:\n\n```\n{\n \"query_string\": \"[sales] by [store]\",\n \"logical_table_identifier\": \"cd252e5c-b552-49a8-821d-3eadaa049cca\",\n}\n```\n\nFor more information about the `query_string` format and data source attribute, see [Search data API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_data_api). \n\nThe `record_size` attribute determines the number of records to retrieve in an API call. For more information about pagination, record size, and maximum row limit, see [Pagination and record size settings](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_pagination_settings_for_data_and_report_api). \n\n\n\n#### Endpoint URL\n", + "operationId": "searchCalendars", + "description": "\n Version: 10.12.0.cl or later\n\nGets a list of [custom calendars](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nBy default, the API returns a list of custom calendars for all connection objects. To retrieve custom calendar details for a particular connection, specify the connection ID. You can also use other search parameters such as `name_pattern` and `sort_options` as search filters.\n\nThe `name_pattern` parameter filters and returns only those objects that match the specified pattern. Use `%` as a wildcard for pattern matching.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Data", - "9.0.0.cl" + "Custom Calendars", + "10.12.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "query_string": { - "description": "Query string with search tokens. For example, [Sales][Region]. See [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_data_api)", - "type": "string" - }, - "logical_table_identifier": { - "description": "GUID of the data source object, such as a Worksheet, View, or Table. You can find the GUID of a data object from the UI or via API. See [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_query) for more details.", - "type": "string" - }, - "data_format": { - "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", - "default": "COMPACT", - "type": "string", - "enum": [ - "FULL", - "COMPACT" - ] - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records to include in a batch.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "runtime_filter": { - "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", - "type": "object" - }, - "runtime_sort": { - "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", - "type": "object" - }, - "runtime_param_override": { - "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", - "type": "object" - } - }, - "required": [ - "query_string", - "logical_table_identifier" - ] + "$ref": "#/components/schemas/SearchCalendarsRequest" } } }, @@ -4798,11 +3357,14 @@ "parameters": [], "responses": { "200": { - "description": "Fetching data of specified metadata object is successful.", + "description": "Custom calendar fetched successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SearchDataResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/CalendarResponse" + } } } } @@ -4850,87 +3412,38 @@ } } }, - "/api/rest/2.0/dbt/dbt-connection": { + "/api/rest/2.0/calendars/{calendar_identifier}/update": { "post": { - "operationId": "dbtConnection", - "description": "\n Version: 9.9.0.cl or later\n\nCreates a DBT connection object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About create DBT connection\nDBT connection in ThoughtSpot is used by the user to define DBT credentials for cloud . The API needs embrace connection, embrace database name, DBT url, import type, DBT account identifier, DBT project identifier, DBT access token and environment details (or) embrace connection, embrace database name, import type, file_content to create a connection object. To know more about DBT, see ThoughtSpot Product Documentation.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateCalendar", + "description": "\n Version: 10.12.0.cl or later\n\nUpdates the properties of a [custom calendar](https://docs.thoughtspot.com/cloud/latest/connections-cust-cal).\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your ThoughtSpot instance, the `CAN_MANAGE_CUSTOM_CALENDAR` (**Can manage custom calendars**) privilege is required.\n\n#### Usage guidelines\n\nYou can update the properties of a calendar using one of the following methods:\n* `FROM_INPUT_PARAMS` to update the calendar properties with the values defined in the API request.\n* `FROM_EXISTING_TABLE` Creates a calendar from the parameters defined in the API request.\n\nTo update a custom calendar, specify the calendar ID as a path parameter in the request URL and the following parameters in the request body: \n\n* Connection ID and Table name\n* Database and schema name attributes:\n For most Cloud Data Warehouse (CDW) connectors, both `database_name` and `schema_name` attributes are required. \n However, the attribute requirements are conditional and vary based on the connector type and its metadata structure. For example, for connectors such as Teradata, MySQL, SingleSore, Amazon Aurora MySQL, Amazon RDS MySQL, Oracle, and GCP_MYSQL, the `schema_name` is required, whereas the `database_name` attribute is not.\n Similarly, connectors such as ClickHouse require you to specify the `database_name` and the schema specification in such cases is optional.\n\nThe API allows you to modify the calendar type, month offset value, start and end date, starting day of the week, and prefixes assigned to the year and quarter labels. \n\n#### Examples\n\nUpdate a custom calendar using an existing Table in ThoughtSpot:\n\n```\n{\n \"update_method\": \"FROM_EXISTING_TABLE\",\n \"table_reference\": {\n \"connection_identifier\": \"Connection1\",\n \"database_name\": \"db1\",\n \"table_name\": \"custom_calendar_2025\",\n \"schame_name\": \"schemaVar\"\n }\n}\n```\n\nUpdate a custom calendar with the attributes defined in the API request:\n\n```\n{\n \"update_method\": \"FROM_INPUT_PARAMS\",\n \"table_reference\": {\n \"connection_identifier\": \"Connection1\",\n \"database_name\": \"db1\",\n \"table_name\": \"custom_calendar_2025\",\n \"schame_name\": \"schemaVar\"\n },\n \"month_offset\": \"August\",\n \"start_day_of_week\": \"Monday\",\n \"start_date\": \"08/01/2025\",\n \"end_date\": \"07/31/2026\"\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" + "Custom Calendars", + "10.12.0.cl" ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "type": "object", - "properties": { - "connection_name": { - "description": "Name of the connection.", - "type": "string" - }, - "database_name": { - "description": "Name of the Database.", - "type": "string" - }, - "import_type": { - "description": "Mention type of Import", - "default": "DBT_CLOUD", - "type": "string", - "enum": [ - "DBT_CLOUD", - "ZIP_FILE" - ] - }, - "access_token": { - "description": "Access token is mandatory when Import_Type is DBT_CLOUD.", - "type": "string" - }, - "dbt_url": { - "description": "DBT URL is mandatory when Import_Type is DBT_CLOUD.", - "type": "string" - }, - "account_id": { - "description": "Account ID is mandatory when Import_Type is DBT_CLOUD", - "type": "string" - }, - "project_id": { - "description": "Project ID is mandatory when Import_Type is DBT_CLOUD", - "type": "string" - }, - "dbt_env_id": { - "description": "DBT Environment ID\"", - "type": "string" - }, - "project_name": { - "description": "Name of the project", - "type": "string" - }, - "file_content": { - "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is Mandatory when Import Type is 'ZIP_FILE'", - "type": "string", - "format": "binary" - } - }, - "required": [ - "connection_name", - "database_name" - ] + "$ref": "#/components/schemas/UpdateCalendarRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "calendar_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique Id or name of the calendar." + } + ], "responses": { - "200": { - "description": "Succesfully created DBT Connection.", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } + "204": { + "description": "Custom calendar updated successfully." }, "400": { "description": "Invalid request.", @@ -4975,33 +3488,19 @@ } } }, - "/api/rest/2.0/dbt/generate-sync-tml": { + "/api/rest/2.0/metadata/answer/data": { "post": { - "operationId": "dbtGenerateSyncTml", - "description": "\n Version: 9.9.0.cl or later\n\nResynchronize the existing list of models, tables, worksheet tml’s and import them to Thoughtspot based on the DBT connection object.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchAnswerData", + "description": "\n Version: 9.0.0.cl or later\n\nFetches data from a saved Answer.\n\nRequires at least view access to the saved Answer.\n\nThe `record_size` attribute determines the number of records to retrieve in an API call. For more information about pagination, record size, and maximum row limit, see [Pagination and record size settings](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_pagination_settings_for_data_and_report_apis).\n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" + "Data", + "9.0.0.cl" ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "type": "object", - "properties": { - "dbt_connection_identifier": { - "description": "Unique ID of the DBT connection.", - "type": "string" - }, - "file_content": { - "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is mandatory if the connection was created with import_type ‘ZIP_FILE’", - "type": "string", - "format": "binary" - } - }, - "required": [ - "dbt_connection_identifier" - ] + "$ref": "#/components/schemas/FetchAnswerDataRequest" } } }, @@ -5010,11 +3509,11 @@ "parameters": [], "responses": { "200": { - "description": "Sync Table and Worksheet TML's are successfully generated.", + "description": "Fetching data of specified metadata object is successful.", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/AnswerDataResponse" } } } @@ -5062,54 +3561,19 @@ } } }, - "/api/rest/2.0/dbt/generate-tml": { + "/api/rest/2.0/metadata/liveboard/data": { "post": { - "operationId": "dbtGenerateTml", - "description": "\n Version: 9.9.0.cl or later\n\nGenerate required table and worksheet and import them.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About generate TML\nModels and Worksheets to be imported can be selected by the user as part of the API.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchLiveboardData", + "description": "\n Version: 9.0.0.cl or later\n\nGets data from a Liveboard object and its visualization. \n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To get data for specific visualizations, add the GUIDs or names of the visualizations in the API request.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes. If the new Liveboard experience mode, the transient content includes ad hoc changes to visualizations such as sorting, toggling of legends, and data drill down.\n\nFor more information, and see [Liveboard data API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_fetch_liveboard_data_api).\n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" + "Data", + "9.0.0.cl" ], "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "type": "object", - "properties": { - "dbt_connection_identifier": { - "description": "Unique ID of the DBT connection.", - "type": "string" - }, - "model_tables": { - "description": "List of Models and their respective Tables\nExample: '[{\"model_name\": \"model_name\", \"tables\": [\"table_name\"]}]'", - "type": "string", - "format": "json" - }, - "import_worksheets": { - "description": "Mention the worksheet tmls to import", - "type": "string", - "enum": [ - "ALL", - "NONE", - "SELECTED" - ] - }, - "worksheets": { - "description": "List of worksheets is mandatory when import_Worksheets is type SELECTED\nExample: [\"worksheet_name\"]", - "type": "string", - "format": "json" - }, - "file_content": { - "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is mandatory if the connection was created with import_type ‘ZIP_FILE’", - "type": "string", - "format": "binary" - } - }, - "required": [ - "dbt_connection_identifier", - "model_tables", - "import_worksheets" - ] + "$ref": "#/components/schemas/FetchLiveboardDataRequest" } } }, @@ -5118,11 +3582,11 @@ "parameters": [], "responses": { "200": { - "description": "Required Table and Worksheet TML's are successfully generated.", + "description": "Fetching data of specified metadata object is successful.", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/LiveboardDataResponse" } } } @@ -5170,94 +3634,35 @@ } } }, - "/api/rest/2.0/dbt/search": { + "/api/rest/2.0/searchdata": { "post": { - "operationId": "dbtSearch", - "description": "\n Version: 9.9.0.cl or later\n\nGets a list of DBT connection objects by user and organization, available on the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About search DBT connection\nTo get details of a specific DBT connection identifier, database connection identifier, database connection name, database name, project name, project identifier, environment identifier , import type and author.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchData", + "description": "\n Version: 9.0.0.cl or later\n\nGenerates an Answer from a given data source.\n\nRequires at least view access to the data source object (Worksheet or View).\n\n#### Usage guidelines\n\nTo search data, specify the data source GUID in `logical_table_identifier`. The data source can be a Worksheet, View, Table, or SQL view.\n\nPass search tokens in the `query_string` attribute in the API request as shown in the following example:\n\n```\n{\n \"query_string\": \"[sales] by [store]\",\n \"logical_table_identifier\": \"cd252e5c-b552-49a8-821d-3eadaa049cca\",\n}\n```\n\nFor more information about the `query_string` format and data source attribute, see [Search data API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_data_api). \n\nThe `record_size` attribute determines the number of records to retrieve in an API call. For more information about pagination, record size, and maximum row limit, see [Pagination and record size settings](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_pagination_settings_for_data_and_report_api). \n\n\n\n#### Endpoint URL\n", "tags": [ - "DBT", - "9.9.0.cl" + "Data", + "9.0.0.cl" ], - "parameters": [], - "responses": { - "200": { - "description": "Retrieved list of DBT connections successfully.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DbtSearchResponse" - } - } - } - } - }, - "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" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchDataRequest" } } }, - "500": { - "description": "Unexpected error", + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Fetching data of specified metadata object is successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "$ref": "#/components/schemas/SearchDataResponse" } } } - } - } - } - }, - "/api/rest/2.0/dbt/{dbt_connection_identifier}/delete": { - "post": { - "operationId": "deleteDbtConnection", - "description": "\n Version: 9.9.0.cl or later\n\nRemoves the specified DBT connection object from the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "DBT", - "9.9.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "dbt_connection_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID of the DBT Connection." - } - ], - "responses": { - "204": { - "description": "DBT Connection successfully deleted." }, "400": { "description": "Invalid request.", @@ -5302,10 +3707,10 @@ } } }, - "/api/rest/2.0/dbt/update-dbt-connection": { + "/api/rest/2.0/dbt/dbt-connection": { "post": { - "operationId": "updateDbtConnection", - "description": "\n Version: 9.9.0.cl or later\n\nUpdates a DBT connection object.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data ThoughtSpot**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About update DBT connection\nYou can modify DBT connection object properties such as embrace connection name, embrace database name, import type, account identifier, access token, project identifier and environment (or) embrace connection, embrace database name, import type, file_content settings.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "dbtConnection", + "description": "\n Version: 9.9.0.cl or later\n\nCreates a DBT connection object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About create DBT connection\nDBT connection in ThoughtSpot is used by the user to define DBT credentials for cloud . The API needs embrace connection, embrace database name, DBT url, import type, DBT account identifier, DBT project identifier, DBT access token and environment details (or) embrace connection, embrace database name, import type, file_content to create a connection object. To know more about DBT, see ThoughtSpot Product Documentation.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "DBT", "9.9.0.cl" @@ -5316,10 +3721,6 @@ "schema": { "type": "object", "properties": { - "dbt_connection_identifier": { - "description": "Unique ID of the DBT Connection.", - "type": "string" - }, "connection_name": { "description": "Name of the connection.", "type": "string" @@ -5368,7 +3769,8 @@ } }, "required": [ - "dbt_connection_identifier" + "connection_name", + "database_name" ] } } @@ -5378,7 +3780,7 @@ "parameters": [], "responses": { "200": { - "description": "DBT Connection successfully updated.", + "description": "Succesfully created DBT Connection.", "content": { "application/json": { "schema": { @@ -5430,35 +3832,32 @@ } } }, - "/api/rest/2.0/customization/email": { + "/api/rest/2.0/dbt/generate-sync-tml": { "post": { - "operationId": "createEmailCustomization", - "description": "\nBeta Version: 10.10.0.cl or later\n\nCreates a customization configuration for the notification email.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\nTo create a custom configuration pass these parameters in your API request:\n\n- A JSON map of configuration attributes `template_properties`. The following example shows a sample set of customization configuration:\n\n```\n{\n {\n \"cta_button_bg_color\": \"#444DEA\",\n \t\"cta_text_font_color\": \"#FFFFFF\",\n \t\"primary_bg_color\": \"#D3DEF0\",\n \"logo_url\": \"https://storage.pardot.com/710713/1642089901EbkRibJq/TS_fullworkmark_darkmode.png\",\n \t \"font_family\": \"\",\n \t\"product_name\": \"ThoughtSpot\",\n \t\"footer_address\": \"444 Castro St, Suite 1000 Mountain View, CA 94041\",\n\t \"footer_phone\": \"(800) 508-7008\",\n \"replacement_value_for_liveboard\": \"Dashboard\",\n \t\"replacement_value_for_answer\": \"Chart\",\n \t\"replacement_value_for_spot_iq\": \"AI Insights\",\n \t \"hide_footer_phone\": false,\n \"hide_footer_address\": false,\n \"hide_product_name\": false,\n \t\"hide_manage_notification\": false,\n \t\"hide_mobile_app_nudge\": false,\n \t\"hide_privacy_policy\": false,\n \t\"hide_ts_vocabulary_definitions\": false,\n \t\"hide_error_message\": false,\n \t\"hide_unsubscribe_link\": false,\n \"hide_notification_status\": false,\n \t\"hide_modify_alert\": false,\n \t\"company_website_url\": \"https://your-website.com/\",\n \t\"company_privacy_policy_url\" : \"https://link-to-privacy-policy.com/\",\n \"contact_support_url\": \"https://link-to-contact-support.com/\",\n \"hide_contact_support_url\": false\n }\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "dbtGenerateSyncTml", + "description": "\n Version: 9.9.0.cl or later\n\nResynchronize the existing list of models, tables, worksheet tml’s and import them to Thoughtspot based on the DBT connection object.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Email Customization", - "10.10.0.cl" + "DBT", + "9.9.0.cl" ], "requestBody": { "content": { - "application/json": { + "multipart/form-data": { "schema": { "type": "object", "properties": { - "template_properties": { - "description": "Email customization configuration as key value pair", - "allOf": [ - { - "$ref": "#/components/schemas/Template_Properties_Input_Create" - } - ] - }, - "org_identifier": { - "description": "Unique ID or name of org
Version: 10.12.0.cl or later", + "dbt_connection_identifier": { + "description": "Unique ID of the DBT connection.", "type": "string" + }, + "file_content": { + "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is mandatory if the connection was created with import_type ‘ZIP_FILE’", + "type": "string", + "format": "binary" } }, "required": [ - "template_properties" + "dbt_connection_identifier" ] } } @@ -5468,11 +3867,11 @@ "parameters": [], "responses": { "200": { - "description": "OK", + "description": "Sync Table and Worksheet TML's are successfully generated.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateEmailCustomizationResponse" + "type": "object" } } } @@ -5487,7 +3886,7 @@ } } }, - "403": { + "401": { "description": "Unauthorized access.", "content": { "application/json": { @@ -5497,6 +3896,16 @@ } } }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -5510,29 +3919,70 @@ } } }, - "/api/rest/2.0/customization/email/{template_identifier}/delete": { + "/api/rest/2.0/dbt/generate-tml": { "post": { - "operationId": "deleteEmailCustomization", - "description": "\nBeta Version: 10.10.0.cl or later\n\nDeletes the configuration for the email customization.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\n- Call the search API endpoint to get the `template_identifier` from the response.\n- Use that `template_identifier` as a parameter in this API request.\n\n\n\n\n#### Endpoint URL\n", - "deprecated": true, + "operationId": "dbtGenerateTml", + "description": "\n Version: 9.9.0.cl or later\n\nGenerate required table and worksheet and import them.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About generate TML\nModels and Worksheets to be imported can be selected by the user as part of the API.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Email Customization", - "10.10.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "template_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the email customization." - } + "DBT", + "9.9.0.cl" ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "dbt_connection_identifier": { + "description": "Unique ID of the DBT connection.", + "type": "string" + }, + "model_tables": { + "description": "List of Models and their respective Tables\nExample: '[{\"model_name\": \"model_name\", \"tables\": [\"table_name\"]}]'", + "type": "string", + "format": "json" + }, + "import_worksheets": { + "description": "Mention the worksheet tmls to import", + "type": "string", + "enum": [ + "ALL", + "NONE", + "SELECTED" + ] + }, + "worksheets": { + "description": "List of worksheets is mandatory when import_Worksheets is type SELECTED\nExample: [\"worksheet_name\"]", + "type": "string", + "format": "json" + }, + "file_content": { + "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is mandatory if the connection was created with import_type ‘ZIP_FILE’", + "type": "string", + "format": "binary" + } + }, + "required": [ + "dbt_connection_identifier", + "model_tables", + "import_worksheets" + ] + } + } + }, + "required": true + }, + "parameters": [], "responses": { - "204": { - "description": "Email Customization configuration successfully deleted." + "200": { + "description": "Required Table and Worksheet TML's are successfully generated.", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } }, "400": { "description": "Invalid request.", @@ -5544,7 +3994,7 @@ } } }, - "403": { + "401": { "description": "Unauthorized access.", "content": { "application/json": { @@ -5554,6 +4004,16 @@ } } }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -5567,38 +4027,29 @@ } } }, - "/api/rest/2.0/customization/email/delete": { + "/api/rest/2.0/dbt/search": { "post": { - "operationId": "deleteOrgEmailCustomization", - "description": "\nBeta Version: 10.12.0.cl or later\n\nDeletes the configuration for the email customization.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\n- Call the search API endpoint to get the `org_identifier` from the response.\n- Use that `org_identifier` as a parameter in this API request.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "dbtSearch", + "description": "\n Version: 9.9.0.cl or later\n\nGets a list of DBT connection objects by user and organization, available on the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About search DBT connection\nTo get details of a specific DBT connection identifier, database connection identifier, database connection name, database name, project name, project identifier, environment identifier , import type and author.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Email Customization", - "10.12.0.cl" + "DBT", + "9.9.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "org_identifiers": { - "description": "Unique identifier of the organization.", - "type": "array", - "items": { - "type": "string" - } + "parameters": [], + "responses": { + "200": { + "description": "Retrieved list of DBT connections successfully.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DbtSearchResponse" } } } } }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Email Customization configuration successfully deleted." - }, "400": { "description": "Invalid request.", "content": { @@ -5620,7 +4071,7 @@ } }, "403": { - "description": "Unauthorized access.", + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -5642,50 +4093,41 @@ } } }, - "/api/rest/2.0/customization/email/search": { + "/api/rest/2.0/dbt/{dbt_connection_identifier}/delete": { "post": { - "operationId": "searchEmailCustomization", - "description": "\nBeta Version: 10.10.0.cl or later\n\nSearch the email customization configuration if any set for the ThoughtSpot system.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteDbtConnection", + "description": "\n Version: 9.9.0.cl or later\n\nRemoves the specified DBT connection object from the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DATAMANAGEMENT` (**Can manage data ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Email Customization", - "10.10.0.cl" + "DBT", + "9.9.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "dbt_connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID of the DBT Connection." + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "org_identifiers": { - "description": "Unique ID or name of org
Version: 10.12.0.cl or later", - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "required": true - }, - "parameters": [], "responses": { - "200": { - "description": "OK", + "204": { + "description": "DBT Connection successfully deleted." + }, + "400": { + "description": "Invalid request.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CreateEmailCustomizationResponse" - } + "$ref": "#/components/schemas/ErrorResponse" } } } }, - "400": { - "description": "Invalid request.", + "401": { + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -5695,7 +4137,7 @@ } }, "403": { - "description": "Unauthorized access.", + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -5717,35 +4159,73 @@ } } }, - "/api/rest/2.0/customization/email/update": { + "/api/rest/2.0/dbt/update-dbt-connection": { "post": { - "operationId": "updateEmailCustomization", - "description": "\nBeta Version: 10.12.0.cl or later\n\nUpdates a customization configuration for the notification email.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\nTo update a custom configuration pass these parameters in your API request:\n\n- A JSON map of configuration attributes `template_properties`. The following example shows a sample set of customization configuration:\n\n```\n{\n {\n \"cta_button_bg_color\": \"#444DEA\",\n \t\"cta_text_font_color\": \"#FFFFFF\",\n \t\"primary_bg_color\": \"#D3DEF0\",\n \"logo_url\": \"https://storage.pardot.com/710713/1642089901EbkRibJq/TS_fullworkmark_darkmode.png\",\n \t \"font_family\": \"\",\n \t\"product_name\": \"ThoughtSpot\",\n \t\"footer_address\": \"444 Castro St, Suite 1000 Mountain View, CA 94041\",\n\t \"footer_phone\": \"(800) 508-7008\",\n \"replacement_value_for_liveboard\": \"Dashboard\",\n \t\"replacement_value_for_answer\": \"Chart\",\n \t\"replacement_value_for_spot_iq\": \"AI Insights\",\n \t \"hide_footer_phone\": false,\n \"hide_footer_address\": false,\n \"hide_product_name\": false,\n \t\"hide_manage_notification\": false,\n \t\"hide_mobile_app_nudge\": false,\n \t\"hide_privacy_policy\": false,\n \t\"hide_ts_vocabulary_definitions\": false,\n \t\"hide_error_message\": false,\n \t\"hide_unsubscribe_link\": false,\n \"hide_notification_status\": false,\n \t\"hide_modify_alert\": false,\n \t\"company_website_url\": \"https://your-website.com/\",\n \t\"company_privacy_policy_url\" : \"https://link-to-privacy-policy.com/\",\n \"contact_support_url\": \"https://link-to-contact-support.com/\",\n \"hide_contact_support_url\": false\n }\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateDbtConnection", + "description": "\n Version: 9.9.0.cl or later\n\nUpdates a DBT connection object.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege or `DATAMANAGEMENT` (**Can manage data ThoughtSpot**) privilege, along with an existing DBT connection.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following data control privileges may be required:\n\n- `CAN_MANAGE_CUSTOM_CALENDAR`(**Can manage custom calendars**)\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### About update DBT connection\nYou can modify DBT connection object properties such as embrace connection name, embrace database name, import type, account identifier, access token, project identifier and environment (or) embrace connection, embrace database name, import type, file_content settings.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Email Customization", - "10.12.0.cl" + "DBT", + "9.9.0.cl" ], "requestBody": { "content": { - "application/json": { + "multipart/form-data": { "schema": { "type": "object", "properties": { - "template_properties": { - "description": "Email customization configuration as key value pair", - "allOf": [ - { - "$ref": "#/components/schemas/Template_Properties_Input_Create" - } + "dbt_connection_identifier": { + "description": "Unique ID of the DBT Connection.", + "type": "string" + }, + "connection_name": { + "description": "Name of the connection.", + "type": "string" + }, + "database_name": { + "description": "Name of the Database.", + "type": "string" + }, + "import_type": { + "description": "Mention type of Import", + "default": "DBT_CLOUD", + "type": "string", + "enum": [ + "DBT_CLOUD", + "ZIP_FILE" ] }, - "org_identifier": { - "description": "Unique ID or name of org", + "access_token": { + "description": "Access token is mandatory when Import_Type is DBT_CLOUD.", + "type": "string" + }, + "dbt_url": { + "description": "DBT URL is mandatory when Import_Type is DBT_CLOUD.", + "type": "string" + }, + "account_id": { + "description": "Account ID is mandatory when Import_Type is DBT_CLOUD", + "type": "string" + }, + "project_id": { + "description": "Project ID is mandatory when Import_Type is DBT_CLOUD", + "type": "string" + }, + "dbt_env_id": { + "description": "DBT Environment ID\"", + "type": "string" + }, + "project_name": { + "description": "Name of the project", "type": "string" + }, + "file_content": { + "description": "Upload DBT Manifest and Catalog artifact files as a ZIP file. This field is Mandatory when Import Type is 'ZIP_FILE'", + "type": "string", + "format": "binary" } }, "required": [ - "template_properties" + "dbt_connection_identifier" ] } } @@ -5754,21 +4234,18 @@ }, "parameters": [], "responses": { - "204": { - "description": "Email Customization configuration successfully updated." - }, - "400": { - "description": "Invalid request.", + "200": { + "description": "DBT Connection successfully updated.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "object" } } } }, - "401": { - "description": "Unauthorized access.", + "400": { + "description": "Invalid request.", "content": { "application/json": { "schema": { @@ -5777,7 +4254,7 @@ } } }, - "403": { + "401": { "description": "Unauthorized access.", "content": { "application/json": { @@ -5787,44 +4264,8 @@ } } }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/customization/email/validate": { - "post": { - "operationId": "validateEmailCustomization", - "description": "\nBeta Version: 10.10.0.cl or later\n\nValidates the email customization configuration if any set for the ThoughtSpot system.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Email Customization", - "10.10.0.cl" - ], - "parameters": [], - "responses": { - "204": { - "description": "Triggered test email for customization configuration" - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, "403": { - "description": "Unauthorized access.", + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -5846,127 +4287,19 @@ } } }, - "/api/rest/2.0/groups/create": { + "/api/rest/2.0/customization/email": { "post": { - "operationId": "createUserGroup", - "description": "\n Version: 9.0.0.cl or later\n\nCreates a group object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n#### About groups\nGroups in ThoughtSpot are used by the administrators to define privileges and organize users based on their roles and access requirements. To know more about groups and privileges, see [ThoughtSpot Product Documentation](https://docs.thoughtspot.com/cloud/latest/groups-privileges).\n\n#### Supported operations\n\nThe API endpoint lets you perform the following operations:\n\n* Assign privileges\n* Add users\n* Define sharing visibility\n* Add sub-groups\n* Assign a default Liveboard\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createEmailCustomization", + "description": "\nBeta Version: 10.10.0.cl or later\n\nCreates a customization configuration for the notification email.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\nTo create a custom configuration pass these parameters in your API request:\n\n- A JSON map of configuration attributes `template_properties`. The following example shows a sample set of customization configuration:\n\n```\n{\n {\n \"cta_button_bg_color\": \"#444DEA\",\n \"cta_text_font_color\": \"#FFFFFF\",\n \"primary_bg_color\": \"#D3DEF0\",\n \"logo_url\": \"https://storage.pardot.com/710713/1642089901EbkRibJq/TS_fullworkmark_darkmode.png\",\n \t \"font_family\": \"\",\n \"product_name\": \"ThoughtSpot\",\n \"footer_address\": \"444 Castro St, Suite 1000 Mountain View, CA 94041\",\n\t \"footer_phone\": \"(800) 508-7008\",\n \"replacement_value_for_liveboard\": \"Dashboard\",\n \"replacement_value_for_answer\": \"Chart\",\n \"replacement_value_for_spot_iq\": \"AI Insights\",\n \t \"hide_footer_phone\": false,\n \"hide_footer_address\": false,\n \"hide_product_name\": false,\n \"hide_manage_notification\": false,\n \"hide_mobile_app_nudge\": false,\n \"hide_privacy_policy\": false,\n \"hide_ts_vocabulary_definitions\": false,\n \"hide_error_message\": false,\n \"hide_unsubscribe_link\": false,\n \"hide_notification_status\": false,\n \"hide_modify_alert\": false,\n \"company_website_url\": \"https://your-website.com/\",\n \"company_privacy_policy_url\" : \"https://link-to-privacy-policy.com/\",\n \"contact_support_url\": \"https://link-to-contact-support.com/\",\n \"hide_contact_support_url\": false,\n\t \"hide_logo_url\" : false\n }\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Groups", - "9.0.0.cl" + "Email Customization", + "10.10.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the group. The group name must be unique.", - "type": "string" - }, - "display_name": { - "description": "Display name for the group.", - "type": "string" - }, - "default_liveboard_identifiers": { - "description": "GUID of the Liveboards to assign as default Liveboards to the users in the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "Description of the group", - "type": "string" - }, - "privileges": { - "description": "Privileges to assign to the group", - "type": "array", - "items": { - "type": "string", - "enum": [ - "ADMINISTRATION", - "AUTHORING", - "USERDATAUPLOADING", - "DATADOWNLOADING", - "USERMANAGEMENT", - "DATAMANAGEMENT", - "SHAREWITHALL", - "JOBSCHEDULING", - "A3ANALYSIS", - "EXPERIMENTALFEATUREPRIVILEGE", - "BYPASSRLS", - "RANALYSIS", - "DEVELOPER", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "SYNCMANAGEMENT", - "CAN_CREATE_CATALOG", - "DISABLE_PINBOARD_CREATION", - "LIVEBOARD_VERIFIER", - "PREVIEW_THOUGHTSPOT_SAGE", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "ALLOW_NON_EMBED_FULL_APP_ACCESS", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "CAN_MODIFY_FOLDERS", - "CAN_MANAGE_VARIABLES", - "CAN_VIEW_FOLDERS", - "PREVIEW_DOCUMENT_SEARCH", - "CAN_SETUP_VERSION_CONTROL", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" - ] - } - }, - "sub_group_identifiers": { - "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Group type.", - "default": "LOCAL_GROUP", - "type": "string", - "enum": [ - "LOCAL_GROUP", - "LDAP_GROUP", - "TEAM_GROUP", - "TENANT_GROUP" - ] - }, - "user_identifiers": { - "description": "GUID or name of the users to assign to the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "visibility": { - "description": "Visibility of the group. To make a group visible to other users and groups,\nset the visibility to SHAREABLE.", - "default": "SHARABLE", - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ] - }, - "role_identifiers": { - "description": "Role identifiers of the roles that should be assigned to the group.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "name", - "display_name" - ] + "$ref": "#/components/schemas/CreateEmailCustomizationRequest" } } }, @@ -5975,11 +4308,11 @@ "parameters": [], "responses": { "200": { - "description": "User group successfully created.", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserGroupResponse" + "$ref": "#/components/schemas/CreateEmailCustomizationResponse" } } } @@ -5994,18 +4327,8 @@ } } }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -6027,28 +4350,29 @@ } } }, - "/api/rest/2.0/groups/{group_identifier}/delete": { + "/api/rest/2.0/customization/email/{template_identifier}/delete": { "post": { - "operationId": "deleteUserGroup", - "description": "\n Version: 9.0.0.cl or later\n\nRemoves the specified group object from the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteEmailCustomization", + "description": "\nBeta Version: 10.10.0.cl or later\n\nDeletes the configuration for the email customization.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\n- Call the search API endpoint to get the `template_identifier` from the response.\n- Use that `template_identifier` as a parameter in this API request.\n\n\n\n\n#### Endpoint URL\n", + "deprecated": true, "tags": [ - "Groups", - "9.0.0.cl" + "Email Customization", + "10.10.0.cl" ], "parameters": [ { "in": "path", - "name": "group_identifier", + "name": "template_identifier", "required": true, "schema": { "type": "string" }, - "description": "GUID or name of the group." + "description": "Unique ID or name of the email customization." } ], "responses": { "204": { - "description": "User group successfully deleted." + "description": "Email Customization configuration successfully deleted." }, "400": { "description": "Invalid request.", @@ -6060,18 +4384,8 @@ } } }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -6093,40 +4407,19 @@ } } }, - "/api/rest/2.0/groups/import": { + "/api/rest/2.0/customization/email/delete": { "post": { - "operationId": "importUserGroups", - "description": "\n Version: 9.0.0.cl or later\n\nImports group objects from external databases into ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\nDuring the import operation:\n\n* If the specified group is not available in ThoughtSpot, it will be added to ThoughtSpot.\n* If `delete_unspecified_groups` is set to `true`, the groups not specified in the API request, excluding administrator and system user groups, are deleted.\n* If the specified groups are already available in ThoughtSpot, the object properties of these groups are modified and synchronized as per the input data in the API request.\n\nA successful API call returns the object that represents the changes made in the ThoughtSpot system.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteOrgEmailCustomization", + "description": "\nBeta Version: 10.12.0.cl or later\n\nDeletes the configuration for the email customization.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\n- Call the search API endpoint to get the `org_identifier` from the response.\n- Use that `org_identifier` as a parameter in this API request.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Groups", - "9.0.0.cl" + "Email Customization", + "10.12.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "groups": { - "description": "Details of groups which are to be imported", - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupsImportListInput" - } - }, - "delete_unspecified_groups": { - "description": "If set to true, removes groups that are not specified in the API request.", - "default": false, - "type": "boolean", - "nullable": true - }, - "dry_run": { - "description": "If true, the API performs a test operation and returns user IDs whose\ndata will be edited after the import.", - "default": true, - "type": "boolean", - "nullable": true - } - } + "$ref": "#/components/schemas/DeleteOrgEmailCustomizationRequest" } } }, @@ -6134,15 +4427,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Import user groups operation successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ImportUserGroupsResponse" - } - } - } + "204": { + "description": "Email Customization configuration successfully deleted." }, "400": { "description": "Invalid request.", @@ -6165,7 +4451,7 @@ } }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -6187,174 +4473,19 @@ } } }, - "/api/rest/2.0/groups/search": { + "/api/rest/2.0/customization/email/search": { "post": { - "operationId": "searchUserGroups", - "description": "\n Version: 9.0.0.cl or later\n\nGets a list of user group objects from the ThoughtSpot system.\n\nTo get details of a specific user group, specify the user group GUID or name. You can also filter the API response based on User ID, Org ID, Role ID, type of group, sharing visibility, privileges assigned to the group, and the Liveboard IDs assigned to the users in the group.\n\nAvailable to all users. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view all users properties.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n**NOTE**: If you do not get precise results, try setting `record_size` to `-1` and `record_offset` to `0`.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchEmailCustomization", + "description": "\nBeta Version: 10.10.0.cl or later\n\nSearch the email customization configuration if any set for the ThoughtSpot system.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Groups", - "9.0.0.cl" + "Email Customization", + "10.10.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "default_liveboard_identifiers": { - "description": "GUID of Liveboards that are assigned as default Liveboards to the users in the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "Description of the group", - "type": "string" - }, - "display_name": { - "description": "Display name of the group", - "type": "string" - }, - "name_pattern": { - "description": "A pattern to match case-insensitive name of the Group object.", - "type": "string" - }, - "group_identifier": { - "description": "GUID or name of the group", - "type": "string" - }, - "org_identifiers": { - "description": "ID or name of the Org to which the group belongs", - "type": "array", - "items": { - "type": "string" - } - }, - "privileges": { - "description": "Privileges assigned to the group.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "ADMINISTRATION", - "AUTHORING", - "USERDATAUPLOADING", - "DATADOWNLOADING", - "USERMANAGEMENT", - "DATAMANAGEMENT", - "SHAREWITHALL", - "JOBSCHEDULING", - "A3ANALYSIS", - "EXPERIMENTALFEATUREPRIVILEGE", - "BYPASSRLS", - "RANALYSIS", - "DEVELOPER", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "SYNCMANAGEMENT", - "CAN_CREATE_CATALOG", - "DISABLE_PINBOARD_CREATION", - "LIVEBOARD_VERIFIER", - "PREVIEW_THOUGHTSPOT_SAGE", - "APPLICATION_ADMINISTRATION", - "SYSTEM_INFO_ADMINISTRATION", - "ORG_ADMINISTRATION", - "ROLE_ADMINISTRATION", - "AUTHENTICATION_ADMINISTRATION", - "BILLING_INFO_ADMINISTRATION", - "CAN_MANAGE_CUSTOM_CALENDAR", - "CAN_CREATE_OR_EDIT_CONNECTIONS", - "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "ALLOW_NON_EMBED_FULL_APP_ACCESS", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "PREVIEW_DOCUMENT_SEARCH", - "CAN_MODIFY_FOLDERS", - "CAN_MANAGE_VARIABLES", - "CAN_VIEW_FOLDERS", - "CAN_SETUP_VERSION_CONTROL", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" - ] - } - }, - "sub_group_identifiers": { - "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Group type.", - "type": "string", - "enum": [ - "LOCAL_GROUP", - "LDAP_GROUP", - "TEAM_GROUP", - "TENANT_GROUP" - ] - }, - "user_identifiers": { - "description": "GUID or name of the users assigned to the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "visibility": { - "description": "Visibility of the group. To make a group visible to other users and groups,\nset the visibility to SHAREABLE.", - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ] - }, - "role_identifiers": { - "description": "Filter groups with a list of Roles assigned to a group", - "type": "array", - "items": { - "type": "string" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "sort_options": { - "description": "Sort options to filter group details.", - "allOf": [ - { - "$ref": "#/components/schemas/SortOptions" - } - ] - }, - "include_users": { - "description": "
Version: 10.10.0.cl or later
\n\nDefine Parameter to consider if the users should be included in group search response.", - "default": true, - "type": "boolean", - "nullable": true - }, - "include_sub_groups": { - "description": "
Version: 10.10.0.cl or later
\n\nDefine Parameter to consider if the sub groups should be included in group search response.", - "default": true, - "type": "boolean", - "nullable": true - } - } + "$ref": "#/components/schemas/SearchEmailCustomizationRequest" } } }, @@ -6363,13 +4494,13 @@ "parameters": [], "responses": { "200": { - "description": "User group search result.", + "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/UserGroupResponse" + "$ref": "#/components/schemas/CreateEmailCustomizationResponse" } } } @@ -6385,18 +4516,8 @@ } } }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -6418,150 +4539,28 @@ } } }, - "/api/rest/2.0/groups/{group_identifier}/update": { + "/api/rest/2.0/customization/email/update": { "post": { - "operationId": "updateUserGroup", - "description": "\n Version: 9.0.0.cl or later\n\nUpdates the properties of a group object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n#### Supported operations\n\nThis API endpoint lets you perform the following operations in a single API request:\n\n* Edit [privileges](https://developers.thoughtspot.com/docs/?pageid=api-user-management#group-privileges)\n* Add or remove users\n* Change sharing visibility settings\n* Add or remove sub-groups\n* Assign a default Liveboard or update the existing settings\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateEmailCustomization", + "description": "\nBeta Version: 10.12.0.cl or later\n\nUpdates a customization configuration for the notification email.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n#### Usage guidelines\n\nTo update a custom configuration pass these parameters in your API request:\n\n- A JSON map of configuration attributes `template_properties`. The following example shows a sample set of customization configuration:\n\n```\n{\n {\n \"cta_button_bg_color\": \"#444DEA\",\n \t\"cta_text_font_color\": \"#FFFFFF\",\n \t\"primary_bg_color\": \"#D3DEF0\",\n \"logo_url\": \"https://storage.pardot.com/710713/1642089901EbkRibJq/TS_fullworkmark_darkmode.png\",\n \t \"font_family\": \"\",\n \t\"product_name\": \"ThoughtSpot\",\n \t\"footer_address\": \"444 Castro St, Suite 1000 Mountain View, CA 94041\",\n\t \"footer_phone\": \"(800) 508-7008\",\n \"replacement_value_for_liveboard\": \"Dashboard\",\n \t\"replacement_value_for_answer\": \"Chart\",\n \t\"replacement_value_for_spot_iq\": \"AI Insights\",\n \t \"hide_footer_phone\": false,\n \"hide_footer_address\": false,\n \"hide_product_name\": false,\n \t\"hide_manage_notification\": false,\n \t\"hide_mobile_app_nudge\": false,\n \t\"hide_privacy_policy\": false,\n \t\"hide_ts_vocabulary_definitions\": false,\n \t\"hide_error_message\": false,\n \t\"hide_unsubscribe_link\": false,\n \"hide_notification_status\": false,\n \t\"hide_modify_alert\": false,\n \t\"company_website_url\": \"https://your-website.com/\",\n \t\"company_privacy_policy_url\" : \"https://link-to-privacy-policy.com/\",\n \"contact_support_url\": \"https://link-to-contact-support.com/\",\n \"hide_contact_support_url\": false,\n\t \"hide_logo_url\" : false\n }\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Groups", - "9.0.0.cl" + "Email Customization", + "10.12.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the group to modify.", - "type": "string" - }, - "default_liveboard_identifiers": { - "description": "ID of the Liveboards to be assigned as default Liveboards to the users in the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "Description for the group.", - "type": "string" - }, - "display_name": { - "description": "Display name of the group.", - "type": "string" - }, - "privileges": { - "description": "Privileges to assign to the group.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "ADMINISTRATION", - "AUTHORING", - "USERDATAUPLOADING", - "DATADOWNLOADING", - "USERMANAGEMENT", - "DATAMANAGEMENT", - "SHAREWITHALL", - "JOBSCHEDULING", - "A3ANALYSIS", - "EXPERIMENTALFEATUREPRIVILEGE", - "BYPASSRLS", - "RANALYSIS", - "DEVELOPER", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "SYNCMANAGEMENT", - "CAN_CREATE_CATALOG", - "DISABLE_PINBOARD_CREATION", - "LIVEBOARD_VERIFIER", - "PREVIEW_THOUGHTSPOT_SAGE", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "ALLOW_NON_EMBED_FULL_APP_ACCESS", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "CAN_MODIFY_FOLDERS", - "CAN_MANAGE_VARIABLES", - "CAN_VIEW_FOLDERS", - "PREVIEW_DOCUMENT_SEARCH", - "CAN_SETUP_VERSION_CONTROL", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" - ] - } - }, - "sub_group_identifiers": { - "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of the group", - "type": "string", - "enum": [ - "LOCAL_GROUP", - "LDAP_GROUP", - "TEAM_GROUP", - "TENANT_GROUP" - ] - }, - "user_identifiers": { - "description": "GUID or name of the users to assign to the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "visibility": { - "description": "Visibility of the group. To make a group visible to other users and\ngroups, set the visibility to SHAREABLE.", - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ] - }, - "role_identifiers": { - "description": "Role identifiers of the Roles that should be assigned to the group.", - "type": "array", - "items": { - "type": "string" - } - }, - "operation": { - "description": "Type of update operation. Default operation type is REPLACE", - "default": "REPLACE", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "REPLACE" - ] - } - } + "$ref": "#/components/schemas/UpdateEmailCustomizationRequest" } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "group_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "GUID or name of the group." - } - ], + "parameters": [], "responses": { "204": { - "description": "User group successfully updated." + "description": "Email Customization configuration successfully updated." }, "400": { "description": "Invalid request.", @@ -6584,7 +4583,7 @@ } }, "403": { - "description": "Forbidden access.", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -6606,47 +4605,65 @@ } } }, - "/api/rest/2.0/logs/fetch": { + "/api/rest/2.0/customization/email/validate": { "post": { - "operationId": "fetchLogs", - "description": "\n Version: 9.0.0.cl or later\n\nFetches security audit logs. \n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the [Admin Control](https://developers.thoughtspot.com/docs/rbac#_admin_control) privileges are required.\n\n\n#### Usage guidelines\n\nBy default, the API retrieves logs for the last 24 hours. You can set a custom duration in EPOCH time. Make sure the log duration specified in your API request doesn’t exceed 24 hours. If you must fetch logs for a longer time range, modify the duration and make multiple sequential API requests.\n\nUpon successful execution, the API returns logs with the following information:\n* timestamp of the event\n* event ID\n* event type\n* name and GUID of the user\n* IP address of ThoughtSpot instance\n\nFor more information see [Audit logs Documentation](https://developers.thoughtspot.com/docs/audit-logs).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "validateEmailCustomization", + "description": "\nBeta Version: 10.10.0.cl or later\n\nValidates the email customization configuration if any set for the ThoughtSpot system.\n\n#### Pre-requisites\n\nRequires `DEVELOPER` (**has developer privilege**) or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `DEVELOPER` (**Has developer privilege**) privilege is required.\n\n**NOTE**:This endpoint in currently in beta. Contact ThoughtSpot support to enable this on your instance.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Log", + "Email Customization", + "10.10.0.cl" + ], + "parameters": [], + "responses": { + "204": { + "description": "Triggered test email for customization configuration" + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/groups/create": { + "post": { + "operationId": "createUserGroup", + "description": "\n Version: 9.0.0.cl or later\n\nCreates a group object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n#### About groups\nGroups in ThoughtSpot are used by the administrators to define privileges and organize users based on their roles and access requirements. To know more about groups and privileges, see [ThoughtSpot Product Documentation](https://docs.thoughtspot.com/cloud/latest/groups-privileges).\n\n#### Supported operations\n\nThe API endpoint lets you perform the following operations:\n\n* Assign privileges\n* Add users\n* Define sharing visibility\n* Add sub-groups\n* Assign a default Liveboard\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Groups", "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "log_type": { - "description": "Name of the log type", - "type": "string", - "enum": [ - "SECURITY_AUDIT" - ] - }, - "start_epoch_time_in_millis": { - "description": "Start time in EPOCH format", - "type": "number", - "format": "float" - }, - "end_epoch_time_in_millis": { - "description": "End time in EPOCH format", - "type": "number", - "format": "float" - }, - "get_all_logs": { - "description": "Fetch all the logs. This is available from 9.10.5.cl", - "default": true, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "log_type" - ] + "$ref": "#/components/schemas/CreateUserGroupRequest" } } }, @@ -6655,14 +4672,11 @@ "parameters": [], "responses": { "200": { - "description": "Log fetched successfully.", + "description": "User group successfully created.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LogResponse" - } + "$ref": "#/components/schemas/UserGroupResponse" } } } @@ -6710,63 +4724,28 @@ } } }, - "/api/rest/2.0/metadata/worksheets/convert": { + "/api/rest/2.0/groups/{group_identifier}/delete": { "post": { - "operationId": "convertWorksheetToModel", - "description": "\nConvert worksheets to models
Version: 10.6.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (Can manage data models).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **worksheet_ids** \n - **Description:** A comma-separated list of GUIDs (Globally Unique Identifiers) specifying the Worksheets to be converted. \n - **Usage:** \n - Used only when `convert_all` is set to `false`. \n - Leave empty or omit when `convert_all` is set to `true`.\n\n2. **exclude_worksheet_ids** \n - **Description:** A comma-separated list of GUIDs specifying Worksheets to be excluded from conversion. \n - **Usage:** \n - Useful when `convert_all` is set to `true` and specific Worksheets should not be converted.\n\n3. **convert_all** \n - **Description:** Sets the scope of conversion.\n - **Options:** \n - `true`: Converts all Worksheets in the system, except those specified in `exclude_worksheet_ids`. \n - `false`: Converts only the Worksheets listed in `worksheet_ids`.\n\n4. **apply_changes** \n - **Description:** Specifies whether to apply changes directly to ThoughtSpot or to generate a preview before applying any changes.Used for validation of conversion.\n - **Options:** \n - `true`: Applies conversion changes directly to ThoughtSpot.\n - `false`: Generates only a preview of the changes and does not apply any changes to ThoughtSpot\n\n---\n\n## Best Practices\n\n1. **Backup Before Conversion:** \n Always export metadata as a backup before initiating the conversion process\n\n2. **Partial Conversion for Testing:** \n Test the conversion process by setting `convert_all` to `false` and specifying a small number of `worksheet_ids`.\n\n3. **Verify Dependencies:** \n Check for dependent objects, such as Tables and Connections, to avoid invalid references.\n\n4. **Review Changes:** \n Use `apply_changes: false` to preview the impact of the conversion before applying changes.\n\n---\n\n## Examples\n\n### Convert Specific Worksheets\n```json\n{\n \"worksheet_ids\": [\"guid1\", \"guid2\", \"guid3\"],\n \"exclude_worksheet_ids\": [],\n \"convert_all\": false,\n \"apply_changes\": true\n}\n```\n\n### Convert All Accessible Worksheets\n```json\n{\n \"worksheet_ids\": [],\n \"exclude_worksheet_ids\": [],\n \"convert_all\": true,\n \"apply_changes\": true\n}\n```\n\n### Exclude Specific Worksheets While Converting All Accessible Worksheets\n```json\n{\n \"worksheet_ids\": [],\n \"exclude_worksheet_ids\": [\"abc\"],\n \"convert_all\": true,\n \"apply_changes\": true\n}\n```\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteUserGroup", + "description": "\n Version: 9.0.0.cl or later\n\nRemoves the specified group object from the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Metadata", - "10.6.0.cl" + "Groups", + "9.0.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "group_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "GUID or name of the group." + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "worksheet_ids": { - "description": "List of Worksheet IDs.", - "type": "array", - "items": { - "type": "string" - } - }, - "exclude_worksheet_ids": { - "description": "List of Worksheet IDs to be excluded.", - "type": "array", - "items": { - "type": "string" - } - }, - "convert_all": { - "description": "Indicates whether all the worksheet needs to be converted to models.", - "default": false, - "type": "boolean", - "nullable": true - }, - "apply_changes": { - "description": "Indicates whether the changes should be applied to database.", - "default": false, - "type": "boolean", - "nullable": true - } - } - } - } - }, - "required": true - }, - "parameters": [], "responses": { - "200": { - "description": "Conversion of worksheets to model done successfully.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResponseWorksheetToModelConversion" - } - } - } + "204": { + "description": "User group successfully deleted." }, "400": { "description": "Invalid request.", @@ -6811,44 +4790,19 @@ } } }, - "/api/rest/2.0/metadata/copyobject": { + "/api/rest/2.0/groups/import": { "post": { - "operationId": "copyObject", - "description": "\nMakes a copy of an Answer or Liveboard
Version: 10.3.0.cl or later\n\nCreates a copy of a metadata object.\n\nRequires at least view access to the metadata object being copied.\n\nUpon successful execution, the API creates a copy of the metadata object specified in the API request and returns the ID of the new object.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "importUserGroups", + "description": "\n Version: 9.0.0.cl or later\n\nImports group objects from external databases into ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\nDuring the import operation:\n\n* If the specified group is not available in ThoughtSpot, it will be added to ThoughtSpot.\n* If `delete_unspecified_groups` is set to `true`, the groups not specified in the API request, excluding administrator and system user groups, are deleted.\n* If the specified groups are already available in ThoughtSpot, the object properties of these groups are modified and synchronized as per the input data in the API request.\n\nA successful API call returns the object that represents the changes made in the ThoughtSpot system.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Metadata", - "10.3.0.cl" + "Groups", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "description": { - "description": "Description of the new object", - "type": "string" - }, - "identifier": { - "description": "GUID of metadata object to be copied (answer id or liveboard id)", - "type": "string" - }, - "type": { - "description": "Type of metadata object", - "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER" - ] - }, - "title": { - "description": "Title of the new object", - "type": "string" - } - }, - "required": [ - "identifier" - ] + "$ref": "#/components/schemas/ImportUserGroupsRequest" } } }, @@ -6857,11 +4811,11 @@ "parameters": [], "responses": { "200": { - "description": "Successfully created a copy of the object", + "description": "Import user groups operation successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResponseCopyObject" + "$ref": "#/components/schemas/ImportUserGroupsResponse" } } } @@ -6896,16 +4850,6 @@ } } }, - "404": { - "description": "Object not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, "500": { "description": "Unexpected error", "content": { @@ -6919,37 +4863,19 @@ } } }, - "/api/rest/2.0/metadata/delete": { + "/api/rest/2.0/groups/search": { "post": { - "operationId": "deleteMetadata", - "description": "\n Version: 9.0.0.cl or later\n\nRemoves the specified metadata object from the ThoughtSpot system.\n\nRequires edit access to the metadata object. \n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchUserGroups", + "description": "\n Version: 9.0.0.cl or later\n\nGets a list of user group objects from the ThoughtSpot system.\n\nTo get details of a specific user group, specify the user group GUID or name. You can also filter the API response based on User ID, Org ID, Role ID, type of group, sharing visibility, privileges assigned to the group, and the Liveboard IDs assigned to the users in the group.\n\nAvailable to all users. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view all users properties.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n**NOTE**: If you do not get precise results, try setting `record_size` to `-1` and `record_offset` to `0`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Metadata", + "Groups", "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/DeleteMetadataTypeInput" - } - }, - "delete_disabled_objects": { - "description": "Indicates whether to delete disabled metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "metadata" - ] + "$ref": "#/components/schemas/SearchUserGroupsRequest" } } }, @@ -6957,8 +4883,18 @@ }, "parameters": [], "responses": { - "204": { - "description": "Metadata objects successfully deleted." + "200": { + "description": "User group search result.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroupResponse" + } + } + } + } }, "400": { "description": "Invalid request.", @@ -7003,107 +4939,38 @@ } } }, - "/api/rest/2.0/metadata/tml/export": { + "/api/rest/2.0/groups/{group_identifier}/update": { "post": { - "operationId": "exportMetadataTML", - "description": "\n Version: 9.0.0.cl or later\n\nExports the [TML](https://docs.thoughtspot.com/cloud/latest/tml) representation of metadata objects in JSON or YAML format.\n\nRequires `DATADOWNLOADING` (**Can download Data**) and at least view access to the metadata object.\n\n#### Usage guidelines\n\n* You can export one or several objects by passing metadata object GUIDs in the `metadata` array.\n* When exporting TML content for a Liveboard or Answer object, you can set `export_associated` to `true` to retrieve TML content for underlying Worksheets, Tables, or Views, including the GUID of each object within the headers. When `export_associated` is set to `true`, consider retrieving one metadata object at a time.\n* Set `export_fqns` to `true` to add FQNs of the referenced objects in the TML content. For example, if you send an API request to retrieve TML for a Liveboard and its associated objects, the API returns the TML content with FQNs of the referenced Worksheet. Exporting TML with FQNs is useful if ThoughtSpot has multiple objects with the same name and you want to eliminate ambiguity when importing TML files into ThoughtSpot. It eliminates the need for adding FQNs of the referenced objects manually during the import operation.\n* To export only the TML of feedbacks associated with an object, set the GUID of the object as `identifier`, and set the `type` as `FEEDBACK` in the `metadata` array.\n* To export the TML of an object along with the feedbacks associated with it, set the GUID of the object as `identifier`, set the `type` as `LOGIAL_TABLE` in the `metadata` array, and set `export_with_associated_feedbacks` in `export_options` to true.\n\nFor more information, see [TML Documentation](https://developers.thoughtspot.com/docs/tml#_export_a_tml).\n\nFor more information on feedbacks, see [Feedback Documentation](https://docs.thoughtspot.com/cloud/latest/sage-feedback).\n\n\n\n#### Endpoint URL\n", + "operationId": "updateUserGroup", + "description": "\n Version: 9.0.0.cl or later\n\nUpdates the properties of a group object in ThoughtSpot.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `GROUP_ADMINISTRATION` (**Can manage groups**) privilege is required.\n\n#### Supported operations\n\nThis API endpoint lets you perform the following operations in a single API request:\n\n* Edit [privileges](https://developers.thoughtspot.com/docs/?pageid=api-user-management#group-privileges)\n* Add or remove users\n* Change sharing visibility settings\n* Add or remove sub-groups\n* Assign a default Liveboard or update the existing settings\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Metadata", + "Groups", "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExportMetadataTypeInput" - } - }, - "export_associated": { - "description": "Indicates whether to export associated metadata objects of specified metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "export_fqn": { - "description": "Adds FQNs of the referenced objects. For example, if you are exporting a Liveboard and its associated objects,\nthe API returns the Liveboard TML data with the FQNs of the referenced worksheet.\nIf the exported TML data includes FQNs, you don't need to manually add FQNs of the referenced objects during TML import.", - "default": false, - "type": "boolean", - "nullable": true - }, - "edoc_format": { - "description": "TML EDOC content format.\n\n**Note: exporting in YAML format currently requires manual formatting of the output. For more details on the workaround, please click [here](https://developers.thoughtspot.com/docs/known-issues#_version_9_12_0_cl)**", - "default": "JSON", - "type": "string", - "enum": [ - "JSON", - "YAML" - ] - }, - "export_schema_version": { - "description": "Indicates whether to export worksheet TML in DEFAULT or V1 or V2 version.", - "default": "DEFAULT", - "type": "string", - "enum": [ - "DEFAULT", - "V1", - "V2" - ] - }, - "export_dependent": { - "description": "Indicates whether to export table while exporting connection.", - "default": false, - "type": "boolean", - "nullable": true - }, - "export_connection_as_dependent": { - "description": "Indicates whether to export connection as dependent while exporting table/worksheet/answer/liveboard.\nThis will only be active when export_associated is true.", - "default": false, - "type": "boolean", - "nullable": true - }, - "all_orgs_override": { - "description": "Indicates whether to export is happening from all orgs context.", - "default": false, - "type": "boolean", - "nullable": true - }, - "export_options": { - "description": "Flags to specify additional options for export.
Version: 10.6.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/Export_Options" - } - ] - } - }, - "required": [ - "metadata" - ] + "$ref": "#/components/schemas/UpdateUserGroupRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "group_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "GUID or name of the group." + } + ], "responses": { - "200": { - "description": "Export TMLs of specified metadata objects is successful.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object" - } - } - } - } + "204": { + "description": "User group successfully updated." }, "400": { "description": "Invalid request.", @@ -7148,66 +5015,19 @@ } } }, - "/api/rest/2.0/metadata/tml/export/batch": { + "/api/rest/2.0/jobs/history/communication-channels/search": { "post": { - "operationId": "exportMetadataTMLBatched", - "description": "\n Version: 10.1.0.cl or later\n\nExports the [TML](https://docs.thoughtspot.com/cloud/latest/tml) representation of metadata objects in JSON or YAML format.\n\n### **Permissions Required**\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and `USERMANAGEMENT` (**Can manage users**) privileges.\n\n#### **Usage Guidelines**\n\nThis API is only applicable for `USER`, `GROUP`, and `ROLES` metadata types.\n\n- `batch_offset` Indicates the starting position within the complete dataset from which the API should begin returning objects. Useful for paginating results efficiently.\n- `batch_size` Specifies the number of objects or items to retrieve in a single request. Helps control response size for better performance.\n- `edoc_format` Defines the format of the TML content. The exported metadata can be in JSON or YAML format.\n- `export_dependent` Specifies whether to include dependent metadata objects in the export. Ensures related objects are also retrieved if needed.\n- `all_orgs_override` Indicates whether the export operation applies across all organizations. Useful for multi-tenant environments where cross-org exports are required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchChannelHistory", + "description": "\n Version: 26.4.0.cl or later\n\nSearches delivery history for communication channels such as webhooks. Returns channel-level delivery status for each job execution record. Use this to monitor channel health and delivery success rates across events.\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**NOTE**: When `channel_type` is `WEBHOOK`, the following constraints apply:\n\n- `job_ids`, `channel_identifiers`, and `events` each accept at most one element.\n- When `job_ids` is provided, it is used as the sole lookup key and other filter fields are ignored.\n- When `job_ids` is not provided, `channel_identifiers` and `events` are both required. Each must contain exactly one element, and the event object must include the `identifier` field.\n- Records older than the configured retention period are not returned.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Metadata", - "10.1.0.cl" + "Jobs", + "26.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_type": { - "description": "Type of metadata object to export, can be one of USER | ROLE | USER_GROUP", - "type": "string", - "enum": [ - "USER", - "USER_GROUP", - "ROLE" - ] - }, - "batch_offset": { - "description": "Indicates the position within the complete set from where the API should begin returning objects.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "batch_size": { - "description": "Determines the number of objects or items to be retrieved in a single request.", - "default": 20, - "type": "integer", - "format": "int32" - }, - "edoc_format": { - "description": "TML EDOC content format.", - "default": "JSON", - "type": "string", - "enum": [ - "JSON", - "YAML" - ] - }, - "export_dependent": { - "description": "Indicates whether to export dependent metadata objects of specified metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "all_orgs_override": { - "description": "Indicates whether to export is happening from all orgs context.", - "default": false, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "metadata_type" - ] + "$ref": "#/components/schemas/SearchChannelHistoryRequest" } } }, @@ -7216,11 +5036,90 @@ "parameters": [], "responses": { "200": { - "description": "Export TMLs of specified metadata objects is successful.", + "description": "Channel status logs retrieved successfully.", "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/SearchChannelHistoryResponse" + }, + "examples": { + "example_1": { + "description": "Search webhook channel history by channel identifier and event", + "value": { + "jobs": [ + { + "id": "n.6170538a-a4d4-4712-91bf-39b353db2b72", + "status": "SUCCESS", + "creation_time_in_millis": 1771599720674, + "event": { + "type": "LIVEBOARD_SCHEDULE", + "id": "2bb2ff83-b8d9-4d2b-8913-b2589bb6831b", + "name": "schedule-identifier", + "run_id": "90c4f1b0-08c9-4a6c-8e61-49cffd9f1550" + }, + "recipients": [ + { + "type": "USER", + "id": "d211f619-8b72-45d3-92a7-69dde41159c7", + "name": "admin-user", + "email": "admin@example.com" + } + ], + "detail": "", + "try_count": 1 + }, + { + "id": "n.5c5bbedb-c425-48c0-8b54-a17267b08e7c", + "status": "SUCCESS", + "creation_time_in_millis": 1771599600508, + "event": { + "type": "LIVEBOARD_SCHEDULE", + "id": "2bb2ff83-b8d9-4d2b-8913-b2589bb6831b", + "name": "schedule-identifier", + "run_id": "b9834966-fe85-4fa9-8a10-9889c01d4826" + }, + "recipients": [ + { + "type": "USER", + "id": "d211f619-8b72-45d3-92a7-69dde41159c7", + "name": "admin-user", + "email": "admin@example.com" + } + ], + "detail": "", + "try_count": 1 + } + ] + } + }, + "example_2": { + "description": "Search webhook channel history by job ID", + "value": { + "jobs": [ + { + "id": "n.5c5bbedb-c425-48c0-8b54-a17267b08e7c", + "status": "SUCCESS", + "creation_time_in_millis": 1771599600508, + "event": { + "type": "LIVEBOARD_SCHEDULE", + "id": "2bb2ff83-b8d9-4d2b-8913-b2589bb6831b", + "name": "schedule-identifier", + "run_id": "b9834966-fe85-4fa9-8a10-9889c01d4826" + }, + "recipients": [ + { + "type": "USER", + "id": "d211f619-8b72-45d3-92a7-69dde41159c7", + "name": "admin-user", + "email": "admin@example.com" + } + ], + "detail": "", + "try_count": 1 + } + ] + } + } } } } @@ -7268,28 +5167,19 @@ } } }, - "/api/rest/2.0/metadata/answer/sql": { + "/api/rest/2.0/logs/fetch": { "post": { - "operationId": "fetchAnswerSqlQuery", - "description": "\n Version: 9.0.0.cl or later\n\nFetches the underlying SQL query data for an Answer object.\n\nRequires at least view access to the Answer object.\n\nUpon successful execution, the API returns the SQL queries for the specified object as shown in this example:\n```\n{\n \"metadata_id\":\"8fbe44a8-46ad-4b16-8d39-184b2fada490\",\n \"metadata_name\":\"Total sales\",\n \"metadata_type\":\"ANSWER\",\n \"sql_queries\":[\n {\n \"metadata_id\":\"8fbe44a8-46ad-4b16-8d39-184b2fada490\",\n \"metadata_name\":\"Total sales -test\",\n \"sql_query\":\"SELECT \\n \\\"ta_1\\\".\\\"REGION\\\" \\\"ca_1\\\", \\n \\\"ta_2\\\".\\\"PRODUCTNAME\\\" \\\"ca_2\\\", \\n \\\"ta_1\\\".\\\"STORENAME\\\" \\\"ca_3\\\", \\n CASE\\n WHEN sum(\\\"ta_3\\\".\\\"SALES\\\") IS NOT NULL THEN sum(\\\"ta_3\\\".\\\"SALES\\\")\\n ELSE 0\\n END \\\"ca_4\\\", \\n CASE\\n WHEN sum(\\\"ta_3\\\".\\\"QUANTITYPURCHASED\\\") IS NOT NULL THEN sum(\\\"ta_3\\\".\\\"QUANTITYPURCHASED\\\")\\n ELSE 0\\n END \\\"ca_5\\\"\\nFROM \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"FACT_RETAPP_SALES\\\" \\\"ta_3\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_STORES\\\" \\\"ta_1\\\"\\n ON \\\"ta_3\\\".\\\"STOREID\\\" = \\\"ta_1\\\".\\\"STOREID\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_PRODUCTS\\\" \\\"ta_2\\\"\\n ON \\\"ta_3\\\".\\\"PRODUCTID\\\" = \\\"ta_2\\\".\\\"PRODUCTID\\\"\\nGROUP BY \\n \\\"ca_1\\\", \\n \\\"ca_2\\\", \\n \\\"ca_3\\\"\\n\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchLogs", + "description": "\n Version: 9.0.0.cl or later\n\nFetches security audit logs. \n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the [Admin Control](https://developers.thoughtspot.com/docs/rbac#_admin_control) privileges are required.\n\n\n#### Usage guidelines\n\nBy default, the API retrieves logs for the last 24 hours. You can set a custom duration in EPOCH time. Make sure the log duration specified in your API request doesn’t exceed 24 hours. If you must fetch logs for a longer time range, modify the duration and make multiple sequential API requests.\n\nUpon successful execution, the API returns logs with the following information:\n* timestamp of the event\n* event ID\n* event type\n* name and GUID of the user\n* IP address of ThoughtSpot instance\n\nFor more information see [Audit logs Documentation](https://developers.thoughtspot.com/docs/audit-logs).\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Metadata", + "Log", "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "ID or name of an Answer.", - "type": "string" - } - }, - "required": [ - "metadata_identifier" - ] + "$ref": "#/components/schemas/FetchLogsRequest" } } }, @@ -7298,11 +5188,14 @@ "parameters": [], "responses": { "200": { - "description": "Fetching SQL query of specified metadata object is successful.", + "description": "Log fetched successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SqlQueryResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/LogResponse" + } } } } @@ -7350,63 +5243,19 @@ } } }, - "/api/rest/2.0/metadata/tml/async/status": { + "/api/rest/2.0/metadata/worksheets/convert": { "post": { - "operationId": "fetchAsyncImportTaskStatus", - "description": "\n Version: 10.4.0.cl or later\n\nGets information about the status of the TML async import task scheduled using the `/api/rest/2.0/metadata/tml/async/import` API call.\n\nTo fetch the task details, specify the ID of the TML async import task. \n\nRequires access to the task ID. The API allows users who initiated the asynchronous TML import via `/api/rest/2.0/metadata/tml/async/import` to view the status of their tasks. Users with administration privilege can view the status of all import tasks initiated by the users in their Org.\n\n#### Usage guidelines\n\nSee [TML API Documentation](https://developers.thoughtspot.com/docs/tml#_fetch_status_of_the_tml_import_task) for usage guidelines.\n\n\n\n#### Endpoint URL\n", + "operationId": "convertWorksheetToModel", + "description": "\nConvert worksheets to models
Version: 10.6.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (Can manage data models).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **worksheet_ids** \n - **Description:** A comma-separated list of GUIDs (Globally Unique Identifiers) specifying the Worksheets to be converted. \n - **Usage:** \n - Used only when `convert_all` is set to `false`. \n - Leave empty or omit when `convert_all` is set to `true`.\n\n2. **exclude_worksheet_ids** \n - **Description:** A comma-separated list of GUIDs specifying Worksheets to be excluded from conversion. \n - **Usage:** \n - Useful when `convert_all` is set to `true` and specific Worksheets should not be converted.\n\n3. **convert_all** \n - **Description:** Sets the scope of conversion.\n - **Options:** \n - `true`: Converts all Worksheets in the system, except those specified in `exclude_worksheet_ids`. \n - `false`: Converts only the Worksheets listed in `worksheet_ids`.\n\n4. **apply_changes** \n - **Description:** Specifies whether to apply changes directly to ThoughtSpot or to generate a preview before applying any changes.Used for validation of conversion.\n - **Options:** \n - `true`: Applies conversion changes directly to ThoughtSpot.\n - `false`: Generates only a preview of the changes and does not apply any changes to ThoughtSpot\n\n---\n\n## Best Practices\n\n1. **Backup Before Conversion:** \n Always export metadata as a backup before initiating the conversion process\n\n2. **Partial Conversion for Testing:** \n Test the conversion process by setting `convert_all` to `false` and specifying a small number of `worksheet_ids`.\n\n3. **Verify Dependencies:** \n Check for dependent objects, such as Tables and Connections, to avoid invalid references.\n\n4. **Review Changes:** \n Use `apply_changes: false` to preview the impact of the conversion before applying changes.\n\n---\n\n## Examples\n\n### Convert Specific Worksheets\n```json\n{\n \"worksheet_ids\": [\"guid1\", \"guid2\", \"guid3\"],\n \"exclude_worksheet_ids\": [],\n \"convert_all\": false,\n \"apply_changes\": true\n}\n```\n\n### Convert All Accessible Worksheets\n```json\n{\n \"worksheet_ids\": [],\n \"exclude_worksheet_ids\": [],\n \"convert_all\": true,\n \"apply_changes\": true\n}\n```\n\n### Exclude Specific Worksheets While Converting All Accessible Worksheets\n```json\n{\n \"worksheet_ids\": [],\n \"exclude_worksheet_ids\": [\"abc\"],\n \"convert_all\": true,\n \"apply_changes\": true\n}\n```\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.4.0.cl" + "10.6.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "task_ids": { - "description": "List of task IDs to fetch status for.", - "type": "array", - "items": { - "type": "string" - } - }, - "task_status": { - "description": "List of task statuses to filter on. Valid values: [IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED]", - "type": "array", - "items": { - "type": "string", - "enum": [ - "COMPLETED", - "IN_QUEUE", - "IN_PROGRESS", - "FAILED" - ] - } - }, - "author_identifier": { - "description": "Author GUID or name of async import tasks to filter on.", - "type": "string" - }, - "record_offset": { - "description": "The offset point, starting from where the task status should be included in the response.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of task statuses that should be included in the response starting from offset position.", - "default": 5, - "type": "integer", - "format": "int32" - }, - "include_import_response": { - "description": "Boolean flag to specify whether to include import response in the task status objects.", - "default": false, - "type": "boolean", - "nullable": true - } - } + "$ref": "#/components/schemas/ConvertWorksheetToModelRequest" } } }, @@ -7415,11 +5264,11 @@ "parameters": [], "responses": { "200": { - "description": "Async TML Import Task statuses fetched successfully.", + "description": "Conversion of worksheets to model done successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetAsyncImportStatusResponse" + "$ref": "#/components/schemas/ResponseWorksheetToModelConversion" } } } @@ -7467,35 +5316,19 @@ } } }, - "/api/rest/2.0/metadata/liveboard/sql": { + "/api/rest/2.0/metadata/copyobject": { "post": { - "operationId": "fetchLiveboardSqlQuery", - "description": "\n Version: 9.0.0.cl or later\n\nFetches the underlying SQL query data for a Liveboard object and its visualizations.\n\nRequires at least view access to the Liveboard object.\n\nTo get SQL query data for a Liveboard, specify the GUID of the Liveboard. Optionally, you can add an array of visualization GUIDs to retrieve the SQL query data for visualizations in the Liveboard.\n\nUpon successful execution, the API returns the SQL queries for the specified object as shown in this example:\n```\n{\n \"metadata_id\": \"fa68ae91-7588-4136-bacd-d71fb12dda69\",\n \"metadata_name\": \"Total Sales\",\n \"metadata_type\": \"LIVEBOARD\",\n \"sql_queries\": [\n {\n \"metadata_id\": \"b3b6d2b9-089a-490c-8e16-b144650b7843\",\n \"metadata_name\": \"Total quantity purchased, Total sales by region\",\n \"sql_query\": \"SELECT \\n \\\"ta_1\\\".\\\"REGION\\\" \\\"ca_1\\\", \\n CASE\\n WHEN sum(\\\"ta_2\\\".\\\"QUANTITYPURCHASED\\\") IS NOT NULL THEN sum(\\\"ta_2\\\".\\\"QUANTITYPURCHASED\\\")\\n ELSE 0\\n END \\\"ca_2\\\", \\n CASE\\n WHEN sum(\\\"ta_2\\\".\\\"SALES\\\") IS NOT NULL THEN sum(\\\"ta_2\\\".\\\"SALES\\\")\\n ELSE 0\\n END \\\"ca_3\\\"\\nFROM \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"FACT_RETAPP_SALES\\\" \\\"ta_2\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_STORES\\\" \\\"ta_1\\\"\\n ON \\\"ta_2\\\".\\\"STOREID\\\" = \\\"ta_1\\\".\\\"STOREID\\\"\\nGROUP BY \\\"ca_1\\\"\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "copyObject", + "description": "\nMakes a copy of an Answer or Liveboard
Version: 10.3.0.cl or later\n\nCreates a copy of a metadata object.\n\nRequires at least view access to the metadata object being copied.\n\nUpon successful execution, the API creates a copy of the metadata object specified in the API request and returns the ID of the new object.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "9.0.0.cl" + "10.3.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "ID or name of the Liveboard.", - "type": "string" - }, - "visualization_identifiers": { - "description": "Unique ID or name of visualizations.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "metadata_identifier" - ] + "$ref": "#/components/schemas/CopyObjectRequest" } } }, @@ -7504,11 +5337,11 @@ "parameters": [], "responses": { "200": { - "description": "Fetching SQL query of specified metadata object is successful.", + "description": "Successfully created a copy of the object", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SqlQueryResponse" + "$ref": "#/components/schemas/ResponseCopyObject" } } } @@ -7543,6 +5376,16 @@ } } }, + "404": { + "description": "Object not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -7556,10 +5399,10 @@ } } }, - "/api/rest/2.0/metadata/tml/import": { + "/api/rest/2.0/metadata/delete": { "post": { - "operationId": "importMetadataTML", - "description": "\n Version: 9.0.0.cl or later\n\nImports [TML](https://docs.thoughtspot.com/cloud/latest/tml) files into ThoughtSpot.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtsSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### Usage guidelines\n\n* Import all related objects in a single TML Import API call. For example, Tables that use the same Connection object and Worksheets connected to these Tables.\n* Include the `fqn` property to distinguish objects that have the same name.\n For example, if you have multiple Connections or Worksheets with the same name on ThoughtSpot and the Connection or Worksheet referenced in your TML file does not have a unique name to distinguish, it may result in invalid object references.\n Adding `fqn` helps ThoughtSpot differentiate a Table from another with the same name.\n We recommend [exporting TML with FQNs](#/http/api-endpoints/metadata/export-metadata-tml) and using these during the import operation.\n* You can upload multiple TML files at a time.\n If you import a Worksheet along with Liveboards, Answers, and other dependent objects in a single API call, the imported objects will be immediately available for use.\n When you import only a Worksheet object, it may take some time for the Worksheet to become available in the ThoughtSpot system. Please wait for a few minutes, and then proceed to create an Answer and Liveboard from the newly imported Worksheet.\n\nFor more information, see [TML Documentation](https://developers.thoughtspot.com/docs/tml#_import_a_tml).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteMetadata", + "description": "\n Version: 9.0.0.cl or later\n\nRemoves the specified metadata object from the ThoughtSpot system.\n\nRequires edit access to the metadata object. \n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "9.0.0.cl" @@ -7568,54 +5411,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_tmls": { - "description": "Details of TML objects.\n\n**Note: importing TML in YAML format, when coming directly from our Playground, is currently requires manual formatting. For more details on the workaround, please click [here](https://developers.thoughtspot.com/docs/known-issues#_version_9_12_0_cl)**", - "type": "array", - "items": { - "type": "string" - } - }, - "import_policy": { - "description": "Specifies the import policy for the TML import.", - "default": "PARTIAL", - "type": "string", - "enum": [ - "PARTIAL", - "ALL_OR_NONE", - "VALIDATE_ONLY", - "PARTIAL_OBJECT" - ] - }, - "create_new": { - "description": "If selected, creates TML objects with new GUIDs.", - "default": false, - "type": "boolean", - "nullable": true - }, - "all_orgs_override": { - "description": "If import is happening from all orgs context.", - "default": false, - "type": "boolean", - "nullable": true - }, - "skip_diff_check": { - "description": "
Version: 10.6.0.cl or later
\n\nBoolean Flag to skip TML diff check before processing object TMLs.", - "default": false, - "type": "boolean", - "nullable": true - }, - "enable_large_metadata_validation": { - "description": "
Version: 10.5.0.cl or later
\n\nBoolean to indicate if the large metadata validation should be enabled.", - "default": false, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "metadata_tmls" - ] + "$ref": "#/components/schemas/DeleteMetadataRequest" } } }, @@ -7623,18 +5419,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Import metadata objects using specified TMLs is successful.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object" - } - } - } - } + "204": { + "description": "Metadata objects successfully deleted." }, "400": { "description": "Invalid request.", @@ -7679,66 +5465,19 @@ } } }, - "/api/rest/2.0/metadata/tml/async/import": { + "/api/rest/2.0/metadata/tml/export": { "post": { - "operationId": "importMetadataTMLAsync", - "description": "\n Version: 10.4.0.cl or later\n\nSchedules a task to import [TML](https://docs.thoughtspot.com/cloud/latest/tml) files into ThoughtSpot. You can use this API endpoint to process TML objects asynchronously when importing TMLs of large and complex metadata objects into ThoughtSpot. Unlike the synchronous import TML operation, the API processes TML data in the background and returns a task ID, which can be used to check the status of the import task via `/api/rest/2.0/metadata/tml/async/status` API endpoint.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtsSpot**) privilege, and edit access to the TML objects.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### Usage guidelines\n\nSee [Async TML API Documentation](https://developers.thoughtspot.com/docs/tml#_import_tml_objects_asynchronously) for usage guidelines.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "exportMetadataTML", + "description": "\n Version: 9.0.0.cl or later\n\nExports the [TML](https://docs.thoughtspot.com/cloud/latest/tml) representation of metadata objects in JSON or YAML format.\n\nRequires `DATADOWNLOADING` (**Can download Data**) and at least view access to the metadata object.\n\n#### Usage guidelines\n\n* You can export one or several objects by passing metadata object GUIDs in the `metadata` array.\n* When exporting TML content for a Liveboard or Answer object, you can set `export_associated` to `true` to retrieve TML content for underlying Worksheets, Tables, or Views, including the GUID of each object within the headers. When `export_associated` is set to `true`, consider retrieving one metadata object at a time.\n* Set `export_fqns` to `true` to add FQNs of the referenced objects in the TML content. For example, if you send an API request to retrieve TML for a Liveboard and its associated objects, the API returns the TML content with FQNs of the referenced Worksheet. Exporting TML with FQNs is useful if ThoughtSpot has multiple objects with the same name and you want to eliminate ambiguity when importing TML files into ThoughtSpot. It eliminates the need for adding FQNs of the referenced objects manually during the import operation.\n* To export only the TML of feedbacks associated with an object, set the GUID of the object as `identifier`, and set the `type` as `FEEDBACK` in the `metadata` array.\n* To export the TML of an object along with the feedbacks associated with it, set the GUID of the object as `identifier`, set the `type` as `LOGIAL_TABLE` in the `metadata` array, and set `export_with_associated_feedbacks` in `export_options` to true.\n\nFor more information, see [TML Documentation](https://developers.thoughtspot.com/docs/tml#_export_a_tml).\n\nFor more information on feedbacks, see [Feedback Documentation](https://docs.thoughtspot.com/cloud/latest/sage-feedback).\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.4.0.cl" + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_tmls": { - "description": "Details of TML objects.", - "type": "array", - "items": { - "type": "string" - } - }, - "create_new": { - "description": "If selected, creates TML objects with new GUIDs.", - "default": false, - "type": "boolean", - "nullable": true - }, - "all_orgs_override": { - "description": "If import is happening from all orgs context.", - "default": false, - "type": "boolean", - "nullable": true - }, - "import_policy": { - "description": "
Version: 10.5.0.cl or later
\n\nPolicy to be followed while importing the TML. Valid values are [PARTIAL_OBJECT, PARTIAL, VALIDATE_ONLY, ALL_OR_NONE]", - "default": "PARTIAL_OBJECT", - "type": "string", - "enum": [ - "PARTIAL", - "ALL_OR_NONE", - "VALIDATE_ONLY", - "PARTIAL_OBJECT" - ] - }, - "skip_diff_check": { - "description": "
Version: 10.6.0.cl or later
\n\nBoolean Flag to skip TML diff check before processing object TMLs.", - "default": false, - "type": "boolean", - "nullable": true - }, - "enable_large_metadata_validation": { - "description": "
Version: 10.5.0.cl or later
\n\nBoolean to indicate if the large metadata validation should be enabled.", - "default": false, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "metadata_tmls" - ] + "$ref": "#/components/schemas/ExportMetadataTMLRequest" } } }, @@ -7747,11 +5486,14 @@ "parameters": [], "responses": { "200": { - "description": "Async TML Import Task submitted successfully.", + "description": "Export TMLs of specified metadata objects is successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ImportEPackAsyncTaskStatus" + "type": "array", + "items": { + "type": "object" + } } } } @@ -7799,56 +5541,19 @@ } } }, - "/api/rest/2.0/metadata/parameterize": { + "/api/rest/2.0/metadata/tml/export/batch": { "post": { - "operationId": "parameterizeMetadata", - "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be parameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", + "operationId": "exportMetadataTMLBatched", + "description": "\n Version: 10.1.0.cl or later\n\nExports the [TML](https://docs.thoughtspot.com/cloud/latest/tml) representation of metadata objects in JSON or YAML format.\n\n### **Permissions Required**\n\nRequires `DATAMANAGEMENT` (**Can manage data**) and `USERMANAGEMENT` (**Can manage users**) privileges.\n\n#### **Usage Guidelines**\n\nThis API is only applicable for `USER`, `GROUP`, and `ROLES` metadata types.\n\n- `batch_offset` Indicates the starting position within the complete dataset from which the API should begin returning objects. Useful for paginating results efficiently.\n- `batch_size` Specifies the number of objects or items to retrieve in a single request. Helps control response size for better performance.\n- `edoc_format` Defines the format of the TML content. The exported metadata can be in JSON or YAML format.\n- `export_dependent` Specifies whether to include dependent metadata objects in the export. Ensures related objects are also retrieved if needed.\n- `all_orgs_override` Indicates whether the export operation applies across all organizations. Useful for multi-tenant environments where cross-org exports are required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.9.0.cl" + "10.1.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_type": { - "description": "Type of metadata object to parameterize.", - "type": "string", - "enum": [ - "LOGICAL_TABLE", - "CONNECTION", - "CONNECTION_CONFIG" - ] - }, - "metadata_identifier": { - "description": "Unique ID or name of the metadata object to parameterize.", - "type": "string" - }, - "field_type": { - "description": "Type of field in the metadata to parameterize.", - "type": "string", - "enum": [ - "ATTRIBUTE", - "CONNECTION_PROPERTY" - ] - }, - "field_name": { - "description": "Name of the field which needs to be parameterized.", - "type": "string" - }, - "variable_identifier": { - "description": "Unique ID or name of the variable to use for parameterization", - "type": "string" - } - }, - "required": [ - "metadata_identifier", - "field_type", - "field_name", - "variable_identifier" - ] + "$ref": "#/components/schemas/ExportMetadataTMLBatchedRequest" } } }, @@ -7856,8 +5561,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Parameterize successful." + "200": { + "description": "Export TMLs of specified metadata objects is successful.", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } }, "400": { "description": "Invalid request.", @@ -7902,10 +5614,10 @@ } } }, - "/api/rest/2.0/metadata/search": { + "/api/rest/2.0/metadata/answer/sql": { "post": { - "operationId": "searchMetadata", - "description": "\n Version: 9.0.0.cl or later\n\nGets a list of metadata objects available on the ThoughtSpot system.\n\nThis API endpoint is available to all users who have view access to the object. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view data for all metadata objects, including users and groups.\n\n#### Usage guidelines\n\n- To get all metadata objects, send the API request without any attributes.\n- To get metadata objects of a specific type, set the `type` attribute. For example, to fetch a Worksheet, set the type as `LOGICAL_TABLE`.\n- To filter metadata objects within type `LOGICAL_TABLE`, set the `subtypes` attribute. For example, to fetch a Worksheet, set the type as `LOGICAL_TABLE` & subtypes as `[WORKSHEET]`.\n- To get a specific metadata object, specify the GUID.\n- To customize your search and filter the API response, you can use several parameters.\n You can search for objects created or modified by specific users, by tags applied to the objects, or by using the include parameters like `include_auto_created_objects`, `include_dependent_objects`, `include_headers`, `include_incomplete_objects`, and so on.\n You can also define sorting options to sort the data retrieved in the API response.\n- To get discoverable objects when linientmodel is enabled you can use `include_discoverable_objects` as true else false. Default value is true.\n- For liveboard metadata type, to get the newer format, set the `liveboard_response_format` as V2. Default value is V1.\n- To retrieve only objects that are published, set the `include_only_published_objects` as true. Default value is false.\n\n**NOTE**: The following parameters support pagination of metadata records:\n\n- `tag_identifiers`\n- `type`\n- `subtypes`\n- `created_by_user_identifiers`\n- `modified_by_user_identifiers`\n- `owned_by_user_identifiers`\n- `exclude_objects`\n- `include_auto_created_objects`\n- `favorite_object_options`\n- `include_only_published_objects`\nIf you are using other parameters to search metadata, set `record_size` to `-1` and `record_offset` to `0`.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchAnswerSqlQuery", + "description": "\n Version: 9.0.0.cl or later\n\nFetches the underlying SQL query data for an Answer object.\n\nRequires at least view access to the Answer object.\n\nUpon successful execution, the API returns the SQL queries for the specified object as shown in this example:\n```\n{\n \"metadata_id\":\"8fbe44a8-46ad-4b16-8d39-184b2fada490\",\n \"metadata_name\":\"Total sales\",\n \"metadata_type\":\"ANSWER\",\n \"sql_queries\":[\n {\n \"metadata_id\":\"8fbe44a8-46ad-4b16-8d39-184b2fada490\",\n \"metadata_name\":\"Total sales -test\",\n \"sql_query\":\"SELECT \\n \\\"ta_1\\\".\\\"REGION\\\" \\\"ca_1\\\", \\n \\\"ta_2\\\".\\\"PRODUCTNAME\\\" \\\"ca_2\\\", \\n \\\"ta_1\\\".\\\"STORENAME\\\" \\\"ca_3\\\", \\n CASE\\n WHEN sum(\\\"ta_3\\\".\\\"SALES\\\") IS NOT NULL THEN sum(\\\"ta_3\\\".\\\"SALES\\\")\\n ELSE 0\\n END \\\"ca_4\\\", \\n CASE\\n WHEN sum(\\\"ta_3\\\".\\\"QUANTITYPURCHASED\\\") IS NOT NULL THEN sum(\\\"ta_3\\\".\\\"QUANTITYPURCHASED\\\")\\n ELSE 0\\n END \\\"ca_5\\\"\\nFROM \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"FACT_RETAPP_SALES\\\" \\\"ta_3\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_STORES\\\" \\\"ta_1\\\"\\n ON \\\"ta_3\\\".\\\"STOREID\\\" = \\\"ta_1\\\".\\\"STOREID\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_PRODUCTS\\\" \\\"ta_2\\\"\\n ON \\\"ta_3\\\".\\\"PRODUCTID\\\" = \\\"ta_2\\\".\\\"PRODUCTID\\\"\\nGROUP BY \\n \\\"ca_1\\\", \\n \\\"ca_2\\\", \\n \\\"ca_3\\\"\\n\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", "9.0.0.cl" @@ -7914,174 +5626,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects such as Liveboards, Answers, and Worksheets.", - "type": "array", - "items": { - "$ref": "#/components/schemas/MetadataListItemInput" - } - }, - "permissions": { - "description": "Object permission details to search by.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PermissionInput" - } - }, - "created_by_user_identifiers": { - "description": "GUID or name of user who created the metadata object.", - "type": "array", - "items": { - "type": "string" - } - }, - "dependent_object_version": { - "description": "Version of the dependent table of the metadata objects like Worksheets.", - "default": "V1", - "type": "string", - "enum": [ - "V1", - "V2" - ] - }, - "exclude_objects": { - "description": "List of metadata objects to exclude from search.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExcludeMetadataListItemInput" - } - }, - "favorite_object_options": { - "description": "Options to sort the API response by objects set as favorites\nfor the logged-in user or the users specified in the API request.", - "allOf": [ - { - "$ref": "#/components/schemas/FavoriteObjectOptionsInput" - } - ] - }, - "include_auto_created_objects": { - "description": "Includes system-generated metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_dependent_objects": { - "description": "Includes dependents of the metadata object specified in the API request.\nFor example, a worksheet can consist of dependent objects such as Liveboards or Answers.", - "default": false, - "type": "boolean", - "nullable": true - }, - "dependent_objects_record_size": { - "description": "The maximum number of dependents to include per metadata object.", - "default": 50, - "type": "integer", - "format": "int32" - }, - "include_details": { - "description": "Includes complete details of the metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_headers": { - "description": "Includes headers of the metadata objects.", - "default": true, - "type": "boolean", - "nullable": true - }, - "include_hidden_objects": { - "description": "Includes details of the hidden objects, such as a column in a worksheet or a table.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_incomplete_objects": { - "description": "Includes objects with incomplete metadata.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_visualization_headers": { - "description": "Includes visualization headers of the specified Liveboard object.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_worksheet_search_assist_data": { - "description": "If search assistance lessons are configured on a worksheet,\nthe API returns the search assist data for Worksheet objects.", - "type": "boolean", - "nullable": true - }, - "modified_by_user_identifiers": { - "description": "Includes ID or names of the users who modified the metadata object.", - "type": "array", - "items": { - "type": "string" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included. It is recommended to use a smaller `record_size` when fetching dependent objects or any of the additional metadata detail options.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "sort_options": { - "description": "Sort options to filter metadata details.", - "allOf": [ - { - "$ref": "#/components/schemas/MetadataSearchSortOptions" - } - ] - }, - "tag_identifiers": { - "description": "Tags to filter metadata objects by", - "type": "array", - "items": { - "type": "string" - } - }, - "include_stats": { - "description": "Indicates whether to include stats of the metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_discoverable_objects": { - "description": "
Version: 10.7.0.cl or later
\n\nBoolean to indicate whether to include discoverable metadata objects.", - "default": true, - "type": "boolean", - "nullable": true - }, - "show_resolved_parameters": { - "description": "
Version: 10.9.0.cl or later
\n\nIndicates whether to show resolved parameterised values.", - "default": false, - "type": "boolean", - "nullable": true - }, - "liveboard_response_version": { - "description": "Indicates the model version of Liveboard to be attached in metadata detail.", - "default": "V1", - "type": "string", - "enum": [ - "V1", - "V2" - ] - }, - "include_only_published_objects": { - "description": "
Version: 10.11.0.cl or later
\n\nIf only published objects should be returned", - "default": false, - "type": "boolean", - "nullable": true - } - } + "$ref": "#/components/schemas/FetchAnswerSqlQueryRequest" } } }, @@ -8090,14 +5635,11 @@ "parameters": [], "responses": { "200": { - "description": "Metadata objects search result.", + "description": "Fetching SQL query of specified metadata object is successful.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MetadataSearchResponse" - } + "$ref": "#/components/schemas/SqlQueryResponse" } } } @@ -8145,56 +5687,19 @@ } } }, - "/api/rest/2.0/metadata/unparameterize": { + "/api/rest/2.0/metadata/tml/async/status": { "post": { - "operationId": "unparameterizeMetadata", - "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be unparameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchAsyncImportTaskStatus", + "description": "\n Version: 10.4.0.cl or later\n\nGets information about the status of the TML async import task scheduled using the `/api/rest/2.0/metadata/tml/async/import` API call.\n\nTo fetch the task details, specify the ID of the TML async import task. \n\nRequires access to the task ID. The API allows users who initiated the asynchronous TML import via `/api/rest/2.0/metadata/tml/async/import` to view the status of their tasks. Users with administration privilege can view the status of all import tasks initiated by the users in their Org.\n\n#### Usage guidelines\n\nSee [TML API Documentation](https://developers.thoughtspot.com/docs/tml#_fetch_status_of_the_tml_import_task) for usage guidelines.\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.9.0.cl" + "10.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_type": { - "description": "Type of metadata object to unparameterize.", - "type": "string", - "enum": [ - "LOGICAL_TABLE", - "CONNECTION", - "CONNECTION_CONFIG" - ] - }, - "metadata_identifier": { - "description": "Unique ID or name of the metadata object to unparameterize.", - "type": "string" - }, - "field_type": { - "description": "Type of field in the metadata to unparameterize.", - "type": "string", - "enum": [ - "ATTRIBUTE", - "CONNECTION_PROPERTY" - ] - }, - "field_name": { - "description": "Name of the field which needs to be unparameterized.", - "type": "string" - }, - "value": { - "description": "The value to use in place of the variable for the field", - "type": "string" - } - }, - "required": [ - "metadata_identifier", - "field_type", - "field_name", - "value" - ] + "$ref": "#/components/schemas/FetchAsyncImportTaskStatusRequest" } } }, @@ -8202,8 +5707,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Successfuly removed parameters." + "200": { + "description": "Async TML Import Task statuses fetched successfully.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetAsyncImportStatusResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -8248,35 +5760,19 @@ } } }, - "/api/rest/2.0/metadata/headers/update": { + "/api/rest/2.0/metadata/liveboard/sql": { "post": { - "operationId": "updateMetadataHeader", - "description": "\nUpdate header attributes for a given list of header objects.
Beta Version: 10.6.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `ORG_ADMINISTRATION` (Can manage orgs).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **headers_update** \n - **Description:** List of header objects with their attributes to be updated. Each object contains a list of attributes to be updated in the header.\n - **Usage:**\n - You must provide either `identifier` or `obj_identifier`, but not both. Both fields cannot be empty.\n - When `org_identifier` is set to `-1`, only the `identifier` value is accepted; `obj_identifier` is not allowed.\n\n2. **org_identifier** \n - **Description:** GUID (Globally Unique Identifier) or name of the organization. \n - **Usage:**\n - Leaving this field empty assumes that the changes should be applied to the current organization \n - Provide `org_guid` or `org_name` to uniquely identify the organization where changes need to be applied. .\n - Provide `-1` if changes have to be applied across all the org.\n\n---\n\n## Note\nCurrently, this API is enabled only for updating the `obj_identifier` attribute. Only `text` will be allowed in attribute's value.\n\n## Best Practices\n\n1. **Backup Before Conversion:** \n Always export metadata as a backup before initiating the update process\n\n---\n\n## Examples\n\n### Only `identifier` is given \n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"obj_identifier\": \"\",\n \"type\": \"LOGICAL_COLUMN\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": \"orgGuid\"\n}\n```\n\n### Only `obj_identifier` is given\n```json\n{\n \"headers_update\":\n [\n {\n \"obj_identifier\": \"custom_object_id\",\n \"type\": \"ANSWER\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": \"orgName\"\n}\n```\n\n### Executing update for all org `-1`\n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"type\": \"ANSWER\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": -1\n}\n```\n\n### Optional `type` is not provided\n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": -1\n}\n```\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchLiveboardSqlQuery", + "description": "\n Version: 9.0.0.cl or later\n\nFetches the underlying SQL query data for a Liveboard object and its visualizations.\n\nRequires at least view access to the Liveboard object.\n\nTo get SQL query data for a Liveboard, specify the GUID of the Liveboard. Optionally, you can add an array of visualization GUIDs to retrieve the SQL query data for visualizations in the Liveboard.\n\nUpon successful execution, the API returns the SQL queries for the specified object as shown in this example:\n```\n{\n \"metadata_id\": \"fa68ae91-7588-4136-bacd-d71fb12dda69\",\n \"metadata_name\": \"Total Sales\",\n \"metadata_type\": \"LIVEBOARD\",\n \"sql_queries\": [\n {\n \"metadata_id\": \"b3b6d2b9-089a-490c-8e16-b144650b7843\",\n \"metadata_name\": \"Total quantity purchased, Total sales by region\",\n \"sql_query\": \"SELECT \\n \\\"ta_1\\\".\\\"REGION\\\" \\\"ca_1\\\", \\n CASE\\n WHEN sum(\\\"ta_2\\\".\\\"QUANTITYPURCHASED\\\") IS NOT NULL THEN sum(\\\"ta_2\\\".\\\"QUANTITYPURCHASED\\\")\\n ELSE 0\\n END \\\"ca_2\\\", \\n CASE\\n WHEN sum(\\\"ta_2\\\".\\\"SALES\\\") IS NOT NULL THEN sum(\\\"ta_2\\\".\\\"SALES\\\")\\n ELSE 0\\n END \\\"ca_3\\\"\\nFROM \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"FACT_RETAPP_SALES\\\" \\\"ta_2\\\"\\n JOIN \\\"RETAILAPPAREL\\\".\\\"PUBLIC\\\".\\\"DIM_RETAPP_STORES\\\" \\\"ta_1\\\"\\n ON \\\"ta_2\\\".\\\"STOREID\\\" = \\\"ta_1\\\".\\\"STOREID\\\"\\nGROUP BY \\\"ca_1\\\"\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.6.0.cl" + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "headers_update": { - "description": "List of header objects to update.", - "type": "array", - "items": { - "$ref": "#/components/schemas/HeaderUpdateInput" - } - }, - "org_identifier": { - "description": "Unique ID or name of the organization.", - "type": "string" - } - }, - "required": [ - "headers_update" - ] + "$ref": "#/components/schemas/FetchLiveboardSqlQueryRequest" } } }, @@ -8284,8 +5780,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Headers update was successful." + "200": { + "description": "Fetching SQL query of specified metadata object is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SqlQueryResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -8330,31 +5833,19 @@ } } }, - "/api/rest/2.0/metadata/update-obj-id": { + "/api/rest/2.0/metadata/tml/import": { "post": { - "operationId": "updateMetadataObjId", - "description": "\nUpdate object IDs for given metadata objects.
Beta Version: 10.8.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `ORG_ADMINISTRATION` (Can manage orgs).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **metadata** \n - **Description:** List of metadata objects to update their object IDs.\n - **Usage:**\n - Use either `current_obj_id` alone OR use `metadata_identifier` with `type` (when needed).\n - When using `metadata_identifier`, the `type` field is required if using a name instead of a GUID.\n - The `new_obj_id` field is always required.\n\n---\n\n## Note\nThis API is specifically designed for updating object IDs of metadata objects. It internally uses the header update mechanism to perform the changes.\n\n## Best Practices\n\n1. **Backup Before Update:** \n Always export metadata as a backup before initiating the update process.\n\n2. **Validation:**\n - When using `current_obj_id`, ensure it matches the existing object ID exactly.\n - When using `metadata_identifier` with a name, ensure the `type` is specified correctly.\n - Verify that the `new_obj_id` follows your naming conventions and is unique within your system.\n\n---\n\n## Examples\n\n### Using current_obj_id\n```json\n{\n \"metadata\": [\n {\n \"current_obj_id\": \"existing_object_id\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Using metadata_identifier with GUID\n```json\n{\n \"metadata\": [\n {\n \"metadata_identifier\": \"01234567-89ab-cdef-0123-456789abcdef\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Using metadata_identifier with name and type\n```json\n{\n \"metadata\": [\n {\n \"metadata_identifier\": \"My Answer\",\n \"type\": \"ANSWER\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Multiple objects update\n```json\n{\n \"metadata\": [\n {\n \"current_obj_id\": \"existing_object_id_1\",\n \"new_obj_id\": \"new_object_id_1\"\n },\n {\n \"metadata_identifier\": \"My Worksheet\",\n \"type\": \"LOGICAL_TABLE\",\n \"new_obj_id\": \"new_object_id_2\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "operationId": "importMetadataTML", + "description": "\n Version: 9.0.0.cl or later\n\nImports [TML](https://docs.thoughtspot.com/cloud/latest/tml) files into ThoughtSpot.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtsSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### Usage guidelines\n\n* Import all related objects in a single TML Import API call. For example, Tables that use the same Connection object and Worksheets connected to these Tables.\n* Include the `fqn` property to distinguish objects that have the same name.\n For example, if you have multiple Connections or Worksheets with the same name on ThoughtSpot and the Connection or Worksheet referenced in your TML file does not have a unique name to distinguish, it may result in invalid object references.\n Adding `fqn` helps ThoughtSpot differentiate a Table from another with the same name.\n We recommend [exporting TML with FQNs](#/http/api-endpoints/metadata/export-metadata-tml) and using these during the import operation.\n* You can upload multiple TML files at a time.\n If you import a Worksheet along with Liveboards, Answers, and other dependent objects in a single API call, the imported objects will be immediately available for use.\n When you import only a Worksheet object, it may take some time for the Worksheet to become available in the ThoughtSpot system. Please wait for a few minutes, and then proceed to create an Answer and Liveboard from the newly imported Worksheet.\n\nFor more information, see [TML Documentation](https://developers.thoughtspot.com/docs/tml#_import_a_tml).\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.8.0.cl" + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "List of metadata objects to update their object IDs.", - "type": "array", - "items": { - "$ref": "#/components/schemas/UpdateObjIdInput" - } - } - }, - "required": [ - "metadata" - ] + "$ref": "#/components/schemas/ImportMetadataTMLRequest" } } }, @@ -8362,8 +5853,18 @@ }, "parameters": [], "responses": { - "204": { - "description": "Headers update was successful." + "200": { + "description": "Import metadata objects using specified TMLs is successful.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object" + } + } + } + } }, "400": { "description": "Invalid request.", @@ -8408,32 +5909,19 @@ } } }, - "/api/rest/2.0/orgs/create": { + "/api/rest/2.0/metadata/tml/async/import": { "post": { - "operationId": "createOrg", - "description": "\n Version: 9.0.0.cl or later\n\nCreates an Org object.\n\nTo use this API, the [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview) feature must be enabled in your cluster.\n\nRequires cluster administration (**Can administer Org**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "importMetadataTMLAsync", + "description": "\n Version: 10.4.0.cl or later\n\nSchedules a task to import [TML](https://docs.thoughtspot.com/cloud/latest/tml) files into ThoughtSpot. You can use this API endpoint to process TML objects asynchronously when importing TMLs of large and complex metadata objects into ThoughtSpot. Unlike the synchronous import TML operation, the API processes TML data in the background and returns a task ID, which can be used to check the status of the import task via `/api/rest/2.0/metadata/tml/async/status` API endpoint.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) or `ADMINISTRATION` (**Can administer ThoughtsSpot**) privilege, and edit access to the TML objects.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the following Data control privileges may be required:\n- `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**)\n\n#### Usage guidelines\n\nSee [Async TML API Documentation](https://developers.thoughtspot.com/docs/tml#_import_tml_objects_asynchronously) for usage guidelines.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Orgs", - "9.0.0.cl" + "Metadata", + "10.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the Org.", - "type": "string" - }, - "description": { - "description": "Description of the Org.", - "type": "string" - } - }, - "required": [ - "name" - ] + "$ref": "#/components/schemas/ImportMetadataTMLAsyncRequest" } } }, @@ -8442,22 +5930,11 @@ "parameters": [], "responses": { "200": { - "description": "Organization successfully created.", + "description": "Async TML Import Task submitted successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrgResponse" - }, - "examples": { - "example_1": { - "value": { - "id": 1980035173, - "name": "test_org", - "status": "ACTIVE", - "description": "test_org", - "visibility": "SHOW" - } - } + "$ref": "#/components/schemas/ImportEPackAsyncTaskStatus" } } } @@ -8505,28 +5982,29 @@ } } }, - "/api/rest/2.0/orgs/{org_identifier}/delete": { + "/api/rest/2.0/metadata/parameterize": { "post": { - "operationId": "deleteOrg", - "description": "\n Version: 9.0.0.cl or later\n\nDeletes an Org object from the ThoughtSpot system.\n\nRequires cluster administration (**Can administer Org**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\nWhen you delete an Org, all its users and objects created in that Org context are removed. However, if the users in the deleted Org also exists in other Orgs, they are removed only from the deleted Org.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "parameterizeMetadata", + "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be parameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", + "deprecated": true, "tags": [ - "Orgs", - "9.0.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "org_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "ID or name of the Org" - } + "Metadata", + "10.9.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ParameterizeMetadataRequest" + } + } + }, + "required": true + }, + "parameters": [], "responses": { "204": { - "description": "Organization successfully deleted." + "description": "Parameterize successful." }, "400": { "description": "Invalid request.", @@ -8571,52 +6049,19 @@ } } }, - "/api/rest/2.0/orgs/search": { + "/api/rest/2.0/metadata/parameterize-fields": { "post": { - "operationId": "searchOrgs", - "description": "\n Version: 9.0.0.cl or later\n\nGets a list of Orgs configured on the ThoughtSpot system. To get details of a specific Org, specify the Org ID or name. You can also pass parameters such as status, visibility, and user identifiers to get a specific list of Orgs.\n\nRequires cluster administration (**Can administer Org**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "parameterizeMetadataFields", + "description": "\nParameterize multiple fields of metadata objects. For example [schemaName, databaseName] for LOGICAL_TABLE.
Version: 26.4.0.cl or later\n\nAllows parameterizing multiple fields of metadata objects in ThoughtSpot. For example, you can parameterize [schemaName, databaseName] for LOGICAL_TABLE.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table, the field type must be `ATTRIBUTE` and field names can include:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_names specifies the exact properties of the Connection or Connection Config that need to be parameterized.\n\nFor Connection Config, supported field names include:\n* impersonate_user\n\nYou can parameterize multiple fields at once by providing an array of field names.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Orgs", - "9.0.0.cl" + "Metadata", + "26.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "org_identifier": { - "description": "ID or name of the Org", - "type": "string" - }, - "description": { - "description": "Description of the Org", - "type": "string" - }, - "visibility": { - "description": "Visibility of the Org", - "type": "string", - "enum": [ - "SHOW", - "HIDDEN" - ] - }, - "status": { - "description": "Status of the Org", - "type": "string", - "enum": [ - "ACTIVE", - "IN_ACTIVE" - ] - }, - "user_identifiers": { - "description": "GUIDs or names of the users for which you want to retrieve the Orgs data", - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/components/schemas/ParameterizeMetadataFieldsRequest" } } }, @@ -8624,38 +6069,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Organization search result.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrgResponse" - } - }, - "examples": { - "example_1": { - "value": [ - { - "id": 0, - "name": "Primary", - "status": "ACTIVE", - "description": "Primary Org", - "visibility": "SHOW" - }, - { - "id": 583464508, - "name": "test_org", - "status": "ACTIVE", - "description": "test_org", - "visibility": "SHOW" - } - ] - } - } - } - } + "204": { + "description": "Parameterize successful." }, "400": { "description": "Invalid request.", @@ -8700,72 +6115,38 @@ } } }, - "/api/rest/2.0/orgs/{org_identifier}/update": { + "/api/rest/2.0/metadata/search": { "post": { - "operationId": "updateOrg", - "description": "\n Version: 9.0.0.cl or later\n\nUpdates an Org object. You can modify Org properties such as name, description, and user associations.\n\nRequires cluster administration (**Can administer Org**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchMetadata", + "description": "\n Version: 9.0.0.cl or later\n\nGets a list of metadata objects available on the ThoughtSpot system.\n\nThis API endpoint is available to all users who have view access to the object. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view data for all metadata objects, including users and groups.\n\n#### Usage guidelines\n\n- To get all metadata objects, send the API request without any attributes.\n- To get metadata objects of a specific type, set the `type` attribute. For example, to fetch a Worksheet, set the type as `LOGICAL_TABLE`.\n- To filter metadata objects within type `LOGICAL_TABLE`, set the `subtypes` attribute. For example, to fetch a Worksheet, set the type as `LOGICAL_TABLE` & subtypes as `[WORKSHEET]`.\n- To get a specific metadata object, specify the GUID.\n- To customize your search and filter the API response, you can use several parameters.\n You can search for objects created or modified by specific users, by tags applied to the objects, or by using the include parameters like `include_auto_created_objects`, `include_dependent_objects`, `include_headers`, `include_incomplete_objects`, and so on.\n You can also define sorting options to sort the data retrieved in the API response.\n- To get discoverable objects when linientmodel is enabled you can use `include_discoverable_objects` as true else false. Default value is true.\n- For liveboard metadata type, to get the newer format, set the `liveboard_response_format` as V2. Default value is V1.\n- To retrieve only objects that are published, set the `include_only_published_objects` as true. Default value is false.\n\n**NOTE**: The following parameters support pagination of metadata records:\n\n- `tag_identifiers`\n- `type`\n- `subtypes`\n- `created_by_user_identifiers`\n- `modified_by_user_identifiers`\n- `owned_by_user_identifiers`\n- `exclude_objects`\n- `include_auto_created_objects`\n- `favorite_object_options`\n- `include_only_published_objects`\nIf you are using other parameters to search metadata, set `record_size` to `-1` and `record_offset` to `0`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Orgs", + "Metadata", "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the Org", - "type": "string" - }, - "description": { - "description": "Description of the Org", - "type": "string" - }, - "user_identifiers": { - "description": "Add Users to an Org", - "type": "array", - "items": { - "type": "string" - } - }, - "group_identifiers": { - "description": "Add Default Groups to an Org", - "type": "array", - "items": { - "type": "string" - } - }, - "operation": { - "description": "Type of update operation. Default operation type is ADD", - "default": "ADD", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "REPLACE" - ] - } - } + "$ref": "#/components/schemas/SearchMetadataRequest" } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "org_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "ID or name of the Org" - } - ], + "parameters": [], "responses": { - "204": { - "description": "Organization successfully updated." + "200": { + "description": "Metadata objects search result.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataSearchResponse" + } + } + } + } }, "400": { "description": "Invalid request.", @@ -8810,65 +6191,19 @@ } } }, - "/api/rest/2.0/report/answer": { + "/api/rest/2.0/metadata/unparameterize": { "post": { - "operationId": "exportAnswerReport", - "description": "\n Version: 9.0.0.cl or later\n\nExports an Answer in the given file format. You can download the Answer data as a PDF, PNG, CSV, or XLSX file.\n\nRequires at least view access to the Answer.\n\n#### Usage guidelines\n\nIn the request body, the GUID or name of the Answer and set `file_format`. The default file format is CSV.\n\n**NOTE**:\n* The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n* HTML rendering is not supported for PDF exports of Answers with tables.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data. \n\n\n\n#### Endpoint URL\n", + "operationId": "unparameterizeMetadata", + "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be unparameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Reports", - "9.0.0.cl" + "Metadata", + "10.9.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "Unique ID or name of the metadata object.", - "type": "string" - }, - "session_identifier": { - "description": "Unique ID of the answer session.", - "type": "string" - }, - "generation_number": { - "description": "Generation number of the answer session.", - "type": "integer", - "format": "int32" - }, - "file_format": { - "description": "Export file format.", - "default": "CSV", - "type": "string", - "enum": [ - "CSV", - "PDF", - "XLSX", - "PNG" - ] - }, - "runtime_filter": { - "description": "JSON string representing runtime filter.\n{ col1:region, op1: EQ, val1: northeast }", - "type": "object" - }, - "runtime_sort": { - "description": "JSON string representing runtime sort.\n{ sortCol1: region, asc1 :true, sortCol2 : date }", - "type": "object" - }, - "runtime_param_override": { - "description": "JSON object for setting values of parameters in runtime.", - "type": "object" - }, - "regional_settings": { - "description": "Options for specific region specific overrides to support date/number/string/currency formatting.", - "allOf": [ - { - "$ref": "#/components/schemas/RegionalSettingsInput" - } - ] - } - } + "$ref": "#/components/schemas/UnparameterizeMetadataRequest" } } }, @@ -8876,11 +6211,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Export report file of specified metadata object is successful.", - "content": { - "application/octet-stream": {} - } + "204": { + "description": "Successfuly removed parameters." }, "400": { "description": "Invalid request.", @@ -8925,101 +6257,19 @@ } } }, - "/api/rest/2.0/report/liveboard": { + "/api/rest/2.0/metadata/headers/update": { "post": { - "operationId": "exportLiveboardReport", - "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF, PNG, CSV, or XLSX file format.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\nThe default `file_format` is CSV. For PDF exports, you can specify additional parameters to customize the page orientation and include or exclude the cover page, logo, footer text, and page numbers. Similar customization options are available for PNG exports. CSV and XLSX exports do not support customization options.\n\n**NOTE**: The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\nTo include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n**NOTE**: Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in CSV format. All visualizations in the Liveboard can be exported as individual CSV files. If multiple visualizations are selected or if the entire Liveboard is exported, the output is returned as a .zip file containing the CSV files for each visualization.\n\n**NOTE**: Starting with the ThoughtSpot Cloud 26.2.0.cl release, Liveboards can be exported in XLSX format. All selected visualizations are consolidated into a single Excel workbook (.xlsx), with each visualization placed in its own worksheet (tab). XLSX exports are limited to 255 worksheets (tabs) per workbook.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateMetadataHeader", + "description": "\nUpdate header attributes for a given list of header objects.
Beta Version: 10.6.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `ORG_ADMINISTRATION` (Can manage orgs).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **headers_update** \n - **Description:** List of header objects with their attributes to be updated. Each object contains a list of attributes to be updated in the header.\n - **Usage:**\n - You must provide either `identifier` or `obj_identifier`, but not both. Both fields cannot be empty.\n - When `org_identifier` is set to `-1`, only the `identifier` value is accepted; `obj_identifier` is not allowed.\n\n2. **org_identifier** \n - **Description:** GUID (Globally Unique Identifier) or name of the organization. \n - **Usage:**\n - Leaving this field empty assumes that the changes should be applied to the current organization \n - Provide `org_guid` or `org_name` to uniquely identify the organization where changes need to be applied. .\n - Provide `-1` if changes have to be applied across all the org.\n\n---\n\n## Note\nCurrently, this API is enabled only for updating the `obj_identifier` attribute. Only `text` will be allowed in attribute's value.\n\n## Best Practices\n\n1. **Backup Before Conversion:** \n Always export metadata as a backup before initiating the update process\n\n---\n\n## Examples\n\n### Only `identifier` is given \n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"obj_identifier\": \"\",\n \"type\": \"LOGICAL_COLUMN\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": \"orgGuid\"\n}\n```\n\n### Only `obj_identifier` is given\n```json\n{\n \"headers_update\":\n [\n {\n \"obj_identifier\": \"custom_object_id\",\n \"type\": \"ANSWER\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": \"orgName\"\n}\n```\n\n### Executing update for all org `-1`\n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"type\": \"ANSWER\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": -1\n}\n```\n\n### Optional `type` is not provided\n```json\n{\n \"headers_update\":\n [\n {\n \"identifier\": \"guid_1\",\n \"attributes\":\n [\n {\n \"name\": \"obj_id\",\n \"value\": \"custom_object_id\"\n }\n ]\n }\n ],\n \"org_identifier\": -1\n}\n```\n\n\n\n#### Endpoint URL\n", "tags": [ - "Reports", - "9.0.0.cl" + "Metadata", + "10.6.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "GUID or name of the Liveboard object.", - "type": "string" - }, - "tab_identifiers": { - "description": "GUID or name of the tab of the Liveboard object.
Version: 10.9.0.cl or later", - "type": "array", - "items": { - "type": "string" - } - }, - "personalised_view_identifier": { - "description": "GUID or name of the personalised view of the Liveboard object.
Version: 10.9.0.cl or later", - "type": "string" - }, - "visualization_identifiers": { - "description": "GUID or name of visualizations on the Liveboard. If this parameter is\nnot defined, the API returns a report with all visualizations saved on a Liveboard.", - "type": "array", - "items": { - "type": "string" - } - }, - "transient_content": { - "description": "Transient content of the Liveboard.", - "type": "string" - }, - "file_format": { - "description": "Export file format.", - "default": "PDF", - "type": "string", - "enum": [ - "PDF", - "PNG", - "CSV", - "XLSX" - ] - }, - "runtime_filter": { - "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"region\", \"op1\": \"EQ\", \"val1\": \"northeast\" }. You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", - "type": "object" - }, - "override_filters": { - "description": "Applied to the liveboard and overrides any filters already applied on the same columns in liveboard.\nFollowing example illustrate different kinds of filters:\n{\n \"override_filters\": [\n {\n \"column_name\": \"Color\",\n \"generic_filter\": {\n \"op\": \"IN\",\n \"values\": [\n \"almond\",\n \"turquoise\"\n ]\n },\n \"negate\": false\n },\n {\n \"column_name\": \"Commit Date\",\n \"date_filter\": {\n \"datePeriod\": \"HOUR\",\n \"number\": 3,\n \"type\": \"LAST_N_PERIOD\",\n \"op\": \"EQ\"\n }\n },\n {\n \"column_name\": \"Sales\",\n \"generic_filter\": {\n \"op\": \"BW_INC\",\n \"values\": [\n \"100000\",\n \"70000\"\n ]\n },\n \"negate\": true\n }\n ]\n}", - "type": "object" - }, - "runtime_sort": { - "description": "JSON string representing runtime sort. For example, {\"sortCol1\": \"region\", \"asc1\" : true}. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", - "type": "object" - }, - "pdf_options": { - "description": "Options for PDF export.", - "allOf": [ - { - "$ref": "#/components/schemas/PdfOptionsInput" - } - ] - }, - "png_options": { - "description": "Options for PNG export.", - "allOf": [ - { - "$ref": "#/components/schemas/PngOptionsInput" - } - ] - }, - "runtime_param_override": { - "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", - "type": "object" - }, - "regional_settings": { - "description": "Options for specific region specific overrides to support date/number/string/currency formatting.", - "allOf": [ - { - "$ref": "#/components/schemas/RegionalSettingsInput" - } - ] - } - }, - "required": [ - "metadata_identifier" - ] + "$ref": "#/components/schemas/UpdateMetadataHeaderRequest" } } }, @@ -9027,12 +6277,75 @@ }, "parameters": [], "responses": { - "200": { - "description": "Export report file of specified metadata object is successful.", + "204": { + "description": "Headers update was successful." + }, + "400": { + "description": "Invalid request.", "content": { - "application/octet-stream": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/metadata/update-obj-id": { + "post": { + "operationId": "updateMetadataObjId", + "description": "\nUpdate object IDs for given metadata objects.
Beta Version: 10.8.0.cl or later\n\n## Prerequisites\n- **Privileges Required:**\n - `DATAMANAGEMENT` (Can manage data) or `ADMINISTRATION` (Can administer ThoughtSpot).\n- **Additional Privileges (if RBAC is enabled):**\n - `ORG_ADMINISTRATION` (Can manage orgs).\n\n---\n\n## Usage Guidelines\n\n### Parameters\n\n1. **metadata** \n - **Description:** List of metadata objects to update their object IDs.\n - **Usage:**\n - Use either `current_obj_id` alone OR use `metadata_identifier` with `type` (when needed).\n - When using `metadata_identifier`, the `type` field is required if using a name instead of a GUID.\n - The `new_obj_id` field is always required.\n\n---\n\n## Note\nThis API is specifically designed for updating object IDs of metadata objects. It internally uses the header update mechanism to perform the changes.\n\n## Best Practices\n\n1. **Backup Before Update:** \n Always export metadata as a backup before initiating the update process.\n\n2. **Validation:**\n - When using `current_obj_id`, ensure it matches the existing object ID exactly.\n - When using `metadata_identifier` with a name, ensure the `type` is specified correctly.\n - Verify that the `new_obj_id` follows your naming conventions and is unique within your system.\n\n---\n\n## Examples\n\n### Using current_obj_id\n```json\n{\n \"metadata\": [\n {\n \"current_obj_id\": \"existing_object_id\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Using metadata_identifier with GUID\n```json\n{\n \"metadata\": [\n {\n \"metadata_identifier\": \"01234567-89ab-cdef-0123-456789abcdef\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Using metadata_identifier with name and type\n```json\n{\n \"metadata\": [\n {\n \"metadata_identifier\": \"My Answer\",\n \"type\": \"ANSWER\",\n \"new_obj_id\": \"new_object_id\"\n }\n ]\n}\n```\n\n### Multiple objects update\n```json\n{\n \"metadata\": [\n {\n \"current_obj_id\": \"existing_object_id_1\",\n \"new_obj_id\": \"new_object_id_1\"\n },\n {\n \"metadata_identifier\": \"My Worksheet\",\n \"type\": \"LOGICAL_TABLE\",\n \"new_obj_id\": \"new_object_id_2\"\n }\n ]\n}\n```\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Metadata", + "10.8.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMetadataObjIdRequest" + } } }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Headers update was successful." + }, "400": { "description": "Invalid request.", "content": { @@ -9076,87 +6389,19 @@ } } }, - "/api/rest/2.0/roles/create": { + "/api/rest/2.0/orgs/create": { "post": { - "operationId": "createRole", - "description": "\n Version: 9.5.0.cl or later\n\nCreates a Role object in ThoughtSpot.\n\nAvailable only if [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance. To create a Role, the `ROLE_ADMINISTRATION` (**Can manage roles**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createOrg", + "description": "\n Version: 9.0.0.cl or later\n\nCreates an Org object.\n\nTo use this API, the [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview) feature must be enabled in your cluster.\n\nRequires cluster administration (**Can administer Org**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Roles", - "9.5.0.cl" + "Orgs", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Unique name of the Role.", - "type": "string" - }, - "description": { - "description": "Description of the Role.", - "type": "string" - }, - "privileges": { - "description": "Privileges granted to the Role. See [Documentation](https://developers.thoughtspot.com/docs/rbac#_role_categories_and_privileges)for supported roles privileges.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "USERDATAUPLOADING", - "DATADOWNLOADING", - "DATAMANAGEMENT", - "SHAREWITHALL", - "JOBSCHEDULING", - "A3ANALYSIS", - "BYPASSRLS", - "DISABLE_PINBOARD_CREATION", - "DEVELOPER", - "APPLICATION_ADMINISTRATION", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "SYSTEM_INFO_ADMINISTRATION", - "SYNCMANAGEMENT", - "ORG_ADMINISTRATION", - "ROLE_ADMINISTRATION", - "AUTHENTICATION_ADMINISTRATION", - "BILLING_INFO_ADMINISTRATION", - "CONTROL_TRUSTED_AUTH", - "TAGMANAGEMENT", - "LIVEBOARD_VERIFIER", - "CAN_MANAGE_CUSTOM_CALENDAR", - "CAN_CREATE_OR_EDIT_CONNECTIONS", - "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "CAN_CREATE_CATALOG", - "ALLOW_NON_EMBED_FULL_APP_ACCESS", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "PREVIEW_DOCUMENT_SEARCH", - "CAN_MANAGE_VARIABLES", - "CAN_MODIFY_FOLDERS", - "CAN_VIEW_FOLDERS", - "CAN_SETUP_VERSION_CONTROL", - "PREVIEW_THOUGHTSPOT_SAGE", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" - ] - } - }, - "read_only": { - "description": "
Version: 10.5.0.cl or later
\n\nIndicates whether the role is read only. A readonly role can neither be updated nor deleted.", - "default": false, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "name" - ] + "$ref": "#/components/schemas/CreateOrgRequest" } } }, @@ -9165,17 +6410,28 @@ "parameters": [], "responses": { "200": { - "description": "Role successfully created.", + "description": "Organization successfully created.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RoleResponse" + "$ref": "#/components/schemas/OrgResponse" + }, + "examples": { + "example_1": { + "value": { + "id": 1980035173, + "name": "test_org", + "status": "ACTIVE", + "description": "test_org", + "visibility": "SHOW" + } + } } } } }, "400": { - "description": "Invalid parameters.", + "description": "Invalid request.", "content": { "application/json": { "schema": { @@ -9205,7 +6461,7 @@ } }, "500": { - "description": "Internal error", + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -9217,28 +6473,28 @@ } } }, - "/api/rest/2.0/roles/{role_identifier}/delete": { + "/api/rest/2.0/orgs/{org_identifier}/delete": { "post": { - "operationId": "deleteRole", - "description": "\n Version: 9.5.0.cl or later\n\nDeletes a Role object from the ThoughtSpot system.\n\nAvailable only if [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance. To delete a Role, the `ROLE_ADMINISTRATION` (**Can manage roles**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteOrg", + "description": "\n Version: 9.0.0.cl or later\n\nDeletes an Org object from the ThoughtSpot system.\n\nRequires cluster administration (**Can administer Org**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\nWhen you delete an Org, all its users and objects created in that Org context are removed. However, if the users in the deleted Org also exists in other Orgs, they are removed only from the deleted Org.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Roles", - "9.5.0.cl" + "Orgs", + "9.0.0.cl" ], "parameters": [ { "in": "path", - "name": "role_identifier", + "name": "org_identifier", "required": true, "schema": { "type": "string" }, - "description": "Unique ID or name of the Role. ReadOnly roles cannot be deleted." + "description": "ID or name of the Org" } ], "responses": { "204": { - "description": "Role successfully deleted." + "description": "Organization successfully deleted." }, "400": { "description": "Invalid request.", @@ -9271,7 +6527,7 @@ } }, "500": { - "description": "Internal error", + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -9283,134 +6539,19 @@ } } }, - "/api/rest/2.0/roles/search": { + "/api/rest/2.0/orgs/search": { "post": { - "operationId": "searchRoles", - "description": "\n Version: 9.5.0.cl or later\n\nGets a list of Role objects from the ThoughtSpot system.\n\nAvailable if [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance. To search for Roles, the `ROLE_ADMINISTRATION` (**Can manage roles**) privilege is required.\n\nTo get details of a specific Role object, specify the GUID or name. You can also filter the API response based on user group and Org identifiers, privileges assigned to the Role, and deprecation status.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchOrgs", + "description": "\n Version: 9.0.0.cl or later\n\nGets a list of Orgs configured on the ThoughtSpot system. To get details of a specific Org, specify the Org ID or name. You can also pass parameters such as status, visibility, and user identifiers to get a specific list of Orgs.\n\nRequires cluster administration (**Can administer Org**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Roles", - "9.5.0.cl" + "Orgs", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "role_identifiers": { - "description": "unique ID or name of the Roles", - "type": "array", - "items": { - "type": "string" - } - }, - "org_identifiers": { - "description": "Unique Id or name of the Organisation", - "type": "array", - "items": { - "type": "string" - } - }, - "group_identifiers": { - "description": "Unique Id or name of the User Group", - "type": "array", - "items": { - "type": "string" - } - }, - "privileges": { - "description": "Privileges assigned to the Role. See [Documentation](https://developers.thoughtspot.com/docs/rbac#_role_categories_and_privileges)for supported roles privileges.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "UNKNOWN", - "ADMINISTRATION", - "AUTHORING", - "USERDATAUPLOADING", - "DATADOWNLOADING", - "USERMANAGEMENT", - "SECURITYMANAGEMENT", - "LOGICALMODELING", - "DATAMANAGEMENT", - "TAGMANAGEMENT", - "SHAREWITHALL", - "SYSTEMMANAGEMENT", - "JOBSCHEDULING", - "A3ANALYSIS", - "EXPERIMENTALFEATUREPRIVILEGE", - "BYPASSRLS", - "RANALYSIS", - "DISABLE_PINBOARD_CREATION", - "DEVELOPER", - "APPLICATION_ADMINISTRATION", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "BACKUP_ADMINISTRATION", - "SYSTEM_INFO_ADMINISTRATION", - "ENABLESPOTAPPCREATION", - "SYNCMANAGEMENT", - "ORG_ADMINISTRATION", - "ROLE_ADMINISTRATION", - "AUTHENTICATION_ADMINISTRATION", - "BILLING_INFO_ADMINISTRATION", - "PREVIEW_THOUGHTSPOT_SAGE", - "LIVEBOARD_VERIFIER", - "CAN_MANAGE_CUSTOM_CALENDAR", - "CAN_CREATE_OR_EDIT_CONNECTIONS", - "CAN_CONFIGURE_CONNECTIONS", - "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "CONTROL_TRUSTED_AUTH", - "CAN_CREATE_CATALOG", - "ALLOW_NON_EMBED_FULL_APP_ACCESS", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "CAN_VIEW_FOLDERS", - "CAN_MODIDY_FOLDERS", - "CAN_MANAGE_VARIABLES", - "PREVIEW_DOCUMENT_SEARCH", - "CAN_SETUP_VERSION_CONTROL", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" - ] - } - }, - "deprecated": { - "description": "Indicates whether the Role is deprecated.", - "type": "boolean", - "deprecated": true, - "nullable": true - }, - "external": { - "description": "Indicates whether the Role is external", - "type": "boolean", - "deprecated": true, - "nullable": true - }, - "shared_via_connection": { - "description": "Indicates whether the Role is shared via connection", - "type": "boolean", - "deprecated": true, - "nullable": true - }, - "permissions": { - "description": "Permission details of the Role", - "type": "array", - "items": { - "type": "string", - "enum": [ - "READ_ONLY", - "MODIFY", - "NO_ACCESS" - ] - }, - "deprecated": true - } - } + "$ref": "#/components/schemas/SearchOrgsRequest" } } }, @@ -9419,13 +6560,33 @@ "parameters": [], "responses": { "200": { - "description": "Roles search result.", + "description": "Organization search result.", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/SearchRoleResponse" + "$ref": "#/components/schemas/OrgResponse" + } + }, + "examples": { + "example_1": { + "value": [ + { + "id": 0, + "name": "Primary", + "status": "ACTIVE", + "description": "Primary Org", + "visibility": "SHOW" + }, + { + "id": 583464508, + "name": "test_org", + "status": "ACTIVE", + "description": "test_org", + "visibility": "SHOW" + } + ] } } } @@ -9462,7 +6623,7 @@ } }, "500": { - "description": "Internal error", + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -9474,79 +6635,19 @@ } } }, - "/api/rest/2.0/roles/{role_identifier}/update": { + "/api/rest/2.0/orgs/{org_identifier}/update": { "post": { - "operationId": "updateRole", - "description": "\n Version: 9.5.0.cl or later\n\nUpdates the properties of a Role object.\n\nAvailable only if [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance. To update a Role, the `ROLE_ADMINISTRATION` (**Can manage roles**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateOrg", + "description": "\n Version: 9.0.0.cl or later\n\nUpdates an Org object. You can modify Org properties such as name, description, and user associations.\n\nRequires cluster administration (**Can administer Org**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `ORG_ADMINISTRATION` (**Can manage Orgs**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Roles", - "9.5.0.cl" + "Orgs", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the Role.", - "type": "string" - }, - "description": { - "description": "Description of the Role.", - "type": "string" - }, - "privileges": { - "description": "Privileges granted to the role. See [Documentation](https://developers.thoughtspot.com/docs/rbac#_role_categories_and_privileges)for supported roles privileges.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "USERDATAUPLOADING", - "DATADOWNLOADING", - "DATAMANAGEMENT", - "SHAREWITHALL", - "JOBSCHEDULING", - "A3ANALYSIS", - "BYPASSRLS", - "DISABLE_PINBOARD_CREATION", - "DEVELOPER", - "APPLICATION_ADMINISTRATION", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "SYSTEM_INFO_ADMINISTRATION", - "SYNCMANAGEMENT", - "ORG_ADMINISTRATION", - "ROLE_ADMINISTRATION", - "AUTHENTICATION_ADMINISTRATION", - "BILLING_INFO_ADMINISTRATION", - "CONTROL_TRUSTED_AUTH", - "TAGMANAGEMENT", - "LIVEBOARD_VERIFIER", - "CAN_MANAGE_CUSTOM_CALENDAR", - "CAN_CREATE_OR_EDIT_CONNECTIONS", - "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "CAN_CREATE_CATALOG", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "CAN_MODIFY_FOLDERS", - "CAN_MANAGE_VARIABLES", - "CAN_VIEW_FOLDERS", - "PREVIEW_DOCUMENT_SEARCH", - "PREVIEW_THOUGHTSPOT_SAGE", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" - ] - } - } - }, - "required": [ - "name" - ] + "$ref": "#/components/schemas/UpdateOrgRequest" } } }, @@ -9555,24 +6656,17 @@ "parameters": [ { "in": "path", - "name": "role_identifier", + "name": "org_identifier", "required": true, "schema": { "type": "string" }, - "description": "Unique ID or name of the Role." + "description": "ID or name of the Org" } ], "responses": { - "200": { - "description": "Role successfully updated.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RoleResponse" - } - } - } + "204": { + "description": "Organization successfully updated." }, "400": { "description": "Invalid request.", @@ -9617,731 +6711,19 @@ } } }, - "/api/rest/2.0/schedules/create": { + "/api/rest/2.0/report/answer": { "post": { - "operationId": "createSchedule", - "description": "\nCreate schedule.
Version: 9.4.0.cl or later\n\nCreates a Liveboard schedule job.\n\nRequires at least edit access to Liveboards. To create a schedule on behalf of another user, you need `ADMINISTRATION` (**Can administer Org**) or `JOBSCHEDULING` (**Can schedule for others**) privilege and edit access to the Liveboard.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `JOBSCHEDULING` (**Can schedule for others**) privilege is required.\n\n#### Usage guidelines\n\n* The description text is mandatory. The description text appears as **Description: ** in the Liveboard schedule email notifications.\n* For Liveboards with both charts and tables, schedule creation is only supported in PDF and XLS formats. Schedules created in CSV formats for such Liveboards will fail to run. If `PDF` is set as the `file_format`, enable `pdf_options` to get the correct attachment. Not doing so may cause the attachment to be rendered empty.\n* To include only specific visualizations, specify the visualization GUIDs in the `visualization_identifiers` array.\n* You can schedule a Liveboard job to run periodically by setting frequency parameters. You can set the schedule to run daily, weekly, monthly or every n minutes or hours. The scheduled job can also be configured to run at a specific time of the day or on specific days of the week or month. Please ensure that when setting the schedule frequency for _minute of the object_, only values that are multiples of 5 are included.\n* If the `frequency` parameters are defined, you can set the time zone to a value that matches your server's time zone. For example, `US/Central`, `Etc/UTC`, `CET`. The default time zone is `America/Los_Angeles`.\n\nFor more information about Liveboard jobs, see [ThoughtSpot Product Documentation](https://docs.thoughtspot.com/cloud/latest/liveboard-schedule).\n\n\n\n#### Endpoint URL\n", + "operationId": "exportAnswerReport", + "description": "\n Version: 9.0.0.cl or later\n\nExports an Answer in the given file format. You can download the Answer data as a PDF, PNG, CSV, or XLSX file.\n\nRequires at least view access to the Answer.\n\n#### Usage guidelines\n\nIn the request body, the GUID or name of the Answer and set `file_format`. The default file format is CSV.\n\n**NOTE**:\n* The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n* HTML rendering is not supported for PDF exports of Answers with tables.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data. \n\n\n\n#### Endpoint URL\n", "tags": [ - "Schedules", - "9.4.0.cl" + "Reports", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the scheduled job.", - "type": "string" - }, - "description": { - "description": "Description of the job.", - "type": "string" - }, - "metadata_type": { - "description": "Type of the metadata object.", - "type": "string", - "enum": [ - "LIVEBOARD" - ] - }, - "metadata_identifier": { - "description": "Unique ID or name of the metadata object.", - "type": "string" - }, - "file_format": { - "description": "Export file format.", - "default": "PDF", - "type": "string", - "enum": [ - "CSV", - "PDF", - "XLSX" - ] - }, - "liveboard_options": { - "description": "Options to specify details of Liveboard.", - "allOf": [ - { - "$ref": "#/components/schemas/LiveboardOptionsInput" - } - ] - }, - "pdf_options": { - "description": "PDF layout and orientation settings. Applicable only if the `file_format` is specified as `PDF`.", - "allOf": [ - { - "$ref": "#/components/schemas/SchedulesPdfOptionsInput" - } - ] - }, - "time_zone": { - "description": "Time zone", - "default": "America/Los_Angeles", - "type": "string", - "enum": [ - "Africa/Abidjan", - "Africa/Accra", - "Africa/Addis_Ababa", - "Africa/Algiers", - "Africa/Asmara", - "Africa/Asmera", - "Africa/Bamako", - "Africa/Bangui", - "Africa/Banjul", - "Africa/Bissau", - "Africa/Blantyre", - "Africa/Brazzaville", - "Africa/Bujumbura", - "Africa/Cairo", - "Africa/Casablanca", - "Africa/Ceuta", - "Africa/Conakry", - "Africa/Dakar", - "Africa/Dar_es_Salaam", - "Africa/Djibouti", - "Africa/Douala", - "Africa/El_Aaiun", - "Africa/Freetown", - "Africa/Gaborone", - "Africa/Harare", - "Africa/Johannesburg", - "Africa/Juba", - "Africa/Kampala", - "Africa/Khartoum", - "Africa/Kigali", - "Africa/Kinshasa", - "Africa/Lagos", - "Africa/Libreville", - "Africa/Lome", - "Africa/Luanda", - "Africa/Lubumbashi", - "Africa/Lusaka", - "Africa/Malabo", - "Africa/Maputo", - "Africa/Maseru", - "Africa/Mbabane", - "Africa/Mogadishu", - "Africa/Monrovia", - "Africa/Nairobi", - "Africa/Ndjamena", - "Africa/Niamey", - "Africa/Nouakchott", - "Africa/Ouagadougou", - "Africa/Porto-Novo", - "Africa/Sao_Tome", - "Africa/Timbuktu", - "Africa/Tripoli", - "Africa/Tunis", - "Africa/Windhoek", - "America/Adak", - "America/Anchorage", - "America/Anguilla", - "America/Antigua", - "America/Araguaina", - "America/Argentina/Buenos_Aires", - "America/Argentina/Catamarca", - "America/Argentina/ComodRivadavia", - "America/Argentina/Cordoba", - "America/Argentina/Jujuy", - "America/Argentina/La_Rioja", - "America/Argentina/Mendoza", - "America/Argentina/Rio_Gallegos", - "America/Argentina/Salta", - "America/Argentina/San_Juan", - "America/Argentina/San_Luis", - "America/Argentina/Tucuman", - "America/Argentina/Ushuaia", - "America/Aruba", - "America/Asuncion", - "America/Atikokan", - "America/Atka", - "America/Bahia", - "America/Bahia_Banderas", - "America/Barbados", - "America/Belem", - "America/Belize", - "America/Blanc-Sablon", - "America/Boa_Vista", - "America/Bogota", - "America/Boise", - "America/Buenos_Aires", - "America/Cambridge_Bay", - "America/Campo_Grande", - "America/Cancun", - "America/Caracas", - "America/Catamarca", - "America/Cayenne", - "America/Cayman", - "America/Chicago", - "America/Chihuahua", - "America/Coral_Harbour", - "America/Cordoba", - "America/Costa_Rica", - "America/Creston", - "America/Cuiaba", - "America/Curacao", - "America/Danmarkshavn", - "America/Dawson", - "America/Dawson_Creek", - "America/Denver", - "America/Detroit", - "America/Dominica", - "America/Edmonton", - "America/Eirunepe", - "America/El_Salvador", - "America/Ensenada", - "America/Fort_Nelson", - "America/Fort_Wayne", - "America/Fortaleza", - "America/Glace_Bay", - "America/Godthab", - "America/Goose_Bay", - "America/Grand_Turk", - "America/Grenada", - "America/Guadeloupe", - "America/Guatemala", - "America/Guayaquil", - "America/Guyana", - "America/Halifax", - "America/Havana", - "America/Hermosillo", - "America/Indiana/Indianapolis", - "America/Indiana/Knox", - "America/Indiana/Marengo", - "America/Indiana/Petersburg", - "America/Indiana/Tell_City", - "America/Indiana/Vevay", - "America/Indiana/Vincennes", - "America/Indiana/Winamac", - "America/Indianapolis", - "America/Inuvik", - "America/Iqaluit", - "America/Jamaica", - "America/Jujuy", - "America/Juneau", - "America/Kentucky/Louisville", - "America/Kentucky/Monticello", - "America/Knox_IN", - "America/Kralendijk", - "America/La_Paz", - "America/Lima", - "America/Los_Angeles", - "America/Louisville", - "America/Lower_Princes", - "America/Maceio", - "America/Managua", - "America/Manaus", - "America/Marigot", - "America/Martinique", - "America/Matamoros", - "America/Mazatlan", - "America/Mendoza", - "America/Menominee", - "America/Merida", - "America/Metlakatla", - "America/Mexico_City", - "America/Miquelon", - "America/Moncton", - "America/Monterrey", - "America/Montevideo", - "America/Montreal", - "America/Montserrat", - "America/Nassau", - "America/New_York", - "America/Nipigon", - "America/Nome", - "America/Noronha", - "America/North_Dakota/Beulah", - "America/North_Dakota/Center", - "America/North_Dakota/New_Salem", - "America/Nuuk", - "America/Ojinaga", - "America/Panama", - "America/Pangnirtung", - "America/Paramaribo", - "America/Phoenix", - "America/Port-au-Prince", - "America/Port_of_Spain", - "America/Porto_Acre", - "America/Porto_Velho", - "America/Puerto_Rico", - "America/Punta_Arenas", - "America/Rainy_River", - "America/Rankin_Inlet", - "America/Recife", - "America/Regina", - "America/Resolute", - "America/Rio_Branco", - "America/Rosario", - "America/Santa_Isabel", - "America/Santarem", - "America/Santiago", - "America/Santo_Domingo", - "America/Sao_Paulo", - "America/Scoresbysund", - "America/Shiprock", - "America/Sitka", - "America/St_Barthelemy", - "America/St_Johns", - "America/St_Kitts", - "America/St_Lucia", - "America/St_Thomas", - "America/St_Vincent", - "America/Swift_Current", - "America/Tegucigalpa", - "America/Thule", - "America/Thunder_Bay", - "America/Tijuana", - "America/Toronto", - "America/Tortola", - "America/Vancouver", - "America/Virgin", - "America/Whitehorse", - "America/Winnipeg", - "America/Yakutat", - "America/Yellowknife", - "Antarctica/Casey", - "Antarctica/Davis", - "Antarctica/DumontDUrville", - "Antarctica/Macquarie", - "Antarctica/Mawson", - "Antarctica/McMurdo", - "Antarctica/Palmer", - "Antarctica/Rothera", - "Antarctica/South_Pole", - "Antarctica/Syowa", - "Antarctica/Troll", - "Antarctica/Vostok", - "Arctic/Longyearbyen", - "Asia/Aden", - "Asia/Almaty", - "Asia/Amman", - "Asia/Anadyr", - "Asia/Aqtau", - "Asia/Aqtobe", - "Asia/Ashgabat", - "Asia/Ashkhabad", - "Asia/Atyrau", - "Asia/Baghdad", - "Asia/Bahrain", - "Asia/Baku", - "Asia/Bangkok", - "Asia/Barnaul", - "Asia/Beirut", - "Asia/Bishkek", - "Asia/Brunei", - "Asia/Calcutta", - "Asia/Chita", - "Asia/Choibalsan", - "Asia/Chongqing", - "Asia/Chungking", - "Asia/Colombo", - "Asia/Dacca", - "Asia/Damascus", - "Asia/Dhaka", - "Asia/Dili", - "Asia/Dubai", - "Asia/Dushanbe", - "Asia/Famagusta", - "Asia/Gaza", - "Asia/Harbin", - "Asia/Hebron", - "Asia/Ho_Chi_Minh", - "Asia/Hong_Kong", - "Asia/Hovd", - "Asia/Irkutsk", - "Asia/Istanbul", - "Asia/Jakarta", - "Asia/Jayapura", - "Asia/Jerusalem", - "Asia/Kabul", - "Asia/Kamchatka", - "Asia/Karachi", - "Asia/Kashgar", - "Asia/Kathmandu", - "Asia/Katmandu", - "Asia/Khandyga", - "Asia/Kolkata", - "Asia/Krasnoyarsk", - "Asia/Kuala_Lumpur", - "Asia/Kuching", - "Asia/Kuwait", - "Asia/Macao", - "Asia/Macau", - "Asia/Magadan", - "Asia/Makassar", - "Asia/Manila", - "Asia/Muscat", - "Asia/Nicosia", - "Asia/Novokuznetsk", - "Asia/Novosibirsk", - "Asia/Omsk", - "Asia/Oral", - "Asia/Phnom_Penh", - "Asia/Pontianak", - "Asia/Pyongyang", - "Asia/Qatar", - "Asia/Qostanay", - "Asia/Qyzylorda", - "Asia/Rangoon", - "Asia/Riyadh", - "Asia/Saigon", - "Asia/Sakhalin", - "Asia/Samarkand", - "Asia/Seoul", - "Asia/Shanghai", - "Asia/Singapore", - "Asia/Srednekolymsk", - "Asia/Taipei", - "Asia/Tashkent", - "Asia/Tbilisi", - "Asia/Tehran", - "Asia/Tel_Aviv", - "Asia/Thimbu", - "Asia/Thimphu", - "Asia/Tokyo", - "Asia/Tomsk", - "Asia/Ujung_Pandang", - "Asia/Ulaanbaatar", - "Asia/Ulan_Bator", - "Asia/Urumqi", - "Asia/Ust-Nera", - "Asia/Vientiane", - "Asia/Vladivostok", - "Asia/Yakutsk", - "Asia/Yangon", - "Asia/Yekaterinburg", - "Asia/Yerevan", - "Atlantic/Azores", - "Atlantic/Bermuda", - "Atlantic/Canary", - "Atlantic/Cape_Verde", - "Atlantic/Faeroe", - "Atlantic/Faroe", - "Atlantic/Jan_Mayen", - "Atlantic/Madeira", - "Atlantic/Reykjavik", - "Atlantic/South_Georgia", - "Atlantic/St_Helena", - "Atlantic/Stanley", - "Australia/ACT", - "Australia/Adelaide", - "Australia/Brisbane", - "Australia/Broken_Hill", - "Australia/Canberra", - "Australia/Currie", - "Australia/Darwin", - "Australia/Eucla", - "Australia/Hobart", - "Australia/LHI", - "Australia/Lindeman", - "Australia/Lord_Howe", - "Australia/Melbourne", - "Australia/NSW", - "Australia/North", - "Australia/Perth", - "Australia/Queensland", - "Australia/South", - "Australia/Sydney", - "Australia/Tasmania", - "Australia/Victoria", - "Australia/West", - "Australia/Yancowinna", - "Brazil/Acre", - "Brazil/DeNoronha", - "Brazil/East", - "Brazil/West", - "CET", - "CST6CDT", - "Canada/Atlantic", - "Canada/Central", - "Canada/Eastern", - "Canada/Mountain", - "Canada/Newfoundland", - "Canada/Pacific", - "Canada/Saskatchewan", - "Canada/Yukon", - "Chile/Continental", - "Chile/EasterIsland", - "Cuba", - "EET", - "EST5EDT", - "Egypt", - "Eire", - "Etc/GMT", - "Etc/GMT+0", - "Etc/GMT+1", - "Etc/GMT+10", - "Etc/GMT+11", - "Etc/GMT+12", - "Etc/GMT+2", - "Etc/GMT+3", - "Etc/GMT+4", - "Etc/GMT+5", - "Etc/GMT+6", - "Etc/GMT+7", - "Etc/GMT+8", - "Etc/GMT+9", - "Etc/GMT-0", - "Etc/GMT-1", - "Etc/GMT-10", - "Etc/GMT-11", - "Etc/GMT-12", - "Etc/GMT-13", - "Etc/GMT-14", - "Etc/GMT-2", - "Etc/GMT-3", - "Etc/GMT-4", - "Etc/GMT-5", - "Etc/GMT-6", - "Etc/GMT-7", - "Etc/GMT-8", - "Etc/GMT-9", - "Etc/GMT0", - "Etc/Greenwich", - "Etc/UCT", - "Etc/UTC", - "Etc/Universal", - "Etc/Zulu", - "Europe/Amsterdam", - "Europe/Andorra", - "Europe/Astrakhan", - "Europe/Athens", - "Europe/Belfast", - "Europe/Belgrade", - "Europe/Berlin", - "Europe/Bratislava", - "Europe/Brussels", - "Europe/Bucharest", - "Europe/Budapest", - "Europe/Busingen", - "Europe/Chisinau", - "Europe/Copenhagen", - "Europe/Dublin", - "Europe/Gibraltar", - "Europe/Guernsey", - "Europe/Helsinki", - "Europe/Isle_of_Man", - "Europe/Istanbul", - "Europe/Jersey", - "Europe/Kaliningrad", - "Europe/Kiev", - "Europe/Kirov", - "Europe/Kyiv", - "Europe/Lisbon", - "Europe/Ljubljana", - "Europe/London", - "Europe/Luxembourg", - "Europe/Madrid", - "Europe/Malta", - "Europe/Mariehamn", - "Europe/Minsk", - "Europe/Monaco", - "Europe/Moscow", - "Europe/Nicosia", - "Europe/Oslo", - "Europe/Paris", - "Europe/Podgorica", - "Europe/Prague", - "Europe/Riga", - "Europe/Rome", - "Europe/Samara", - "Europe/San_Marino", - "Europe/Sarajevo", - "Europe/Saratov", - "Europe/Simferopol", - "Europe/Skopje", - "Europe/Sofia", - "Europe/Stockholm", - "Europe/Tallinn", - "Europe/Tirane", - "Europe/Tiraspol", - "Europe/Ulyanovsk", - "Europe/Uzhgorod", - "Europe/Vaduz", - "Europe/Vatican", - "Europe/Vienna", - "Europe/Vilnius", - "Europe/Volgograd", - "Europe/Warsaw", - "Europe/Zagreb", - "Europe/Zaporozhye", - "Europe/Zurich", - "GB", - "GB-Eire", - "GMT", - "GMT0", - "Greenwich", - "Hongkong", - "Iceland", - "Indian/Antananarivo", - "Indian/Chagos", - "Indian/Christmas", - "Indian/Cocos", - "Indian/Comoro", - "Indian/Kerguelen", - "Indian/Mahe", - "Indian/Maldives", - "Indian/Mauritius", - "Indian/Mayotte", - "Indian/Reunion", - "Iran", - "Israel", - "Jamaica", - "Japan", - "Kwajalein", - "Libya", - "MET", - "MST7MDT", - "Mexico/BajaNorte", - "Mexico/BajaSur", - "Mexico/General", - "NZ", - "NZ-CHAT", - "Navajo", - "PRC", - "PST8PDT", - "Pacific/Apia", - "Pacific/Auckland", - "Pacific/Bougainville", - "Pacific/Chatham", - "Pacific/Chuuk", - "Pacific/Easter", - "Pacific/Efate", - "Pacific/Enderbury", - "Pacific/Fakaofo", - "Pacific/Fiji", - "Pacific/Funafuti", - "Pacific/Galapagos", - "Pacific/Gambier", - "Pacific/Guadalcanal", - "Pacific/Guam", - "Pacific/Honolulu", - "Pacific/Johnston", - "Pacific/Kanton", - "Pacific/Kiritimati", - "Pacific/Kosrae", - "Pacific/Kwajalein", - "Pacific/Majuro", - "Pacific/Marquesas", - "Pacific/Midway", - "Pacific/Nauru", - "Pacific/Niue", - "Pacific/Norfolk", - "Pacific/Noumea", - "Pacific/Pago_Pago", - "Pacific/Palau", - "Pacific/Pitcairn", - "Pacific/Pohnpei", - "Pacific/Ponape", - "Pacific/Port_Moresby", - "Pacific/Rarotonga", - "Pacific/Saipan", - "Pacific/Samoa", - "Pacific/Tahiti", - "Pacific/Tarawa", - "Pacific/Tongatapu", - "Pacific/Truk", - "Pacific/Wake", - "Pacific/Wallis", - "Pacific/Yap", - "Poland", - "Portugal", - "ROK", - "Singapore", - "SystemV/AST4", - "SystemV/AST4ADT", - "SystemV/CST6", - "SystemV/CST6CDT", - "SystemV/EST5", - "SystemV/EST5EDT", - "SystemV/HST10", - "SystemV/MST7", - "SystemV/MST7MDT", - "SystemV/PST8", - "SystemV/PST8PDT", - "SystemV/YST9", - "SystemV/YST9YDT", - "Turkey", - "UCT", - "US/Alaska", - "US/Aleutian", - "US/Arizona", - "US/Central", - "US/East-Indiana", - "US/Eastern", - "US/Hawaii", - "US/Indiana-Starke", - "US/Michigan", - "US/Mountain", - "US/Pacific", - "US/Samoa", - "UTC", - "Universal", - "W-SU", - "WET", - "Zulu", - "EST", - "HST", - "MST", - "ACT", - "AET", - "AGT", - "ART", - "AST", - "BET", - "BST", - "CAT", - "CNT", - "CST", - "CTT", - "EAT", - "ECT", - "IET", - "IST", - "JST", - "MIT", - "NET", - "NST", - "PLT", - "PNT", - "PRT", - "PST", - "SST", - "VST" - ] - }, - "frequency": { - "description": "Frequency settings for the scheduled job.", - "allOf": [ - { - "$ref": "#/components/schemas/FrequencyInput" - } - ] - }, - "recipient_details": { - "description": "Recipients of the scheduled job notifications. Add the GUID or name of the ThoughtSpot users or groups as recipients in the `principals` array. If a recipient is not a ThoughtSpot user, specify email address.", - "allOf": [ - { - "$ref": "#/components/schemas/RecipientDetailsInput" - } - ] - }, - "personalised_view_id": { - "description": "Personalised view id of the liveboard to be scheduled.", - "type": "string" - } - }, - "required": [ - "name", - "description", - "metadata_type", - "metadata_identifier", - "time_zone", - "recipient_details" - ] + "$ref": "#/components/schemas/ExportAnswerReportRequest" } } }, @@ -10350,13 +6732,9 @@ "parameters": [], "responses": { "200": { - "description": "Schedule successfully created.", + "description": "Export report file of specified metadata object is successful.", "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResponseSchedule" - } - } + "application/octet-stream": {} } }, "400": { @@ -10402,28 +6780,31 @@ } } }, - "/api/rest/2.0/schedules/{schedule_identifier}/delete": { + "/api/rest/2.0/report/liveboard": { "post": { - "operationId": "deleteSchedule", - "description": "\nDeletes a scheduled job.
Version: 9.4.0.cl or later\n\nDeletes a scheduled Liveboard job.\n\nRequires at least edit access to Liveboard or `ADMINISTRATION` (**Can administer Org**) privilege. \nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `JOBSCHEDULING` (**Can schedule for others**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "exportLiveboardReport", + "description": "\n Version: 9.0.0.cl or later\n\nExports a Liveboard and its visualizations in PDF, PNG, CSV, or XLSX file format.\nThe default `file_format` is CSV.\n\nRequires at least view access to the Liveboard.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Liveboard. To generate a Liveboard report with specific visualizations, add GUIDs or names of the visualizations.\n\n**NOTE**: \n\n* The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n\n* Optionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data.\n\n* To include unsaved changes in the report, pass the `transient_pinboard_content` script generated from the `getExportRequestForCurrentPinboard` method in the Visual Embed SDK. Upon successful execution, the API returns the report with unsaved changes, including ad hoc changes to visualizations. For more information, see [Liveboard Report API](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_liveboard_report_api). \n\n* Starting with ThoughtSpot Cloud 10.9.0.cl release, the Liveboard can be exported in the PNG format in the resolution of your choice. To enable this on your instance, contact ThoughtSpot support. When this feature is enabled, the options `include_cover_page`,`include_filter_page` within the `png_options` will not be available for PNG exports.\n\n* Starting with the ThoughtSpot Cloud 26.2.0.cl release,\n\n * Liveboards can be exported in CSV format. \n * All visualizations within a Liveboard can be exported as individual CSV files. \n * When exporting multiple visualizations or the entire Liveboard, the system returns the report as a compressed ZIP file containing the separate CSV files for each visualization.\n\n * Liveboards can also be exported in XLSX format. \n * All selected visualizations are consolidated into a single Excel workbook (.xlsx), with each visualization placed in its own worksheet (tab). \n * XLSX exports are limited to a maximum of 255 worksheets (tabs) per workbook.\n\n\n\n#### Endpoint URL\n", "tags": [ - "Schedules", - "9.4.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "schedule_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the scheduled job." - } + "Reports", + "9.0.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExportLiveboardReportRequest" + } + } + }, + "required": true + }, + "parameters": [], "responses": { - "204": { - "description": "Schedule successfully deleted." + "200": { + "description": "Export report file of specified metadata object is successful.", + "content": { + "application/octet-stream": {} + } }, "400": { "description": "Invalid request.", @@ -10468,61 +6849,19 @@ } } }, - "/api/rest/2.0/schedules/search": { + "/api/rest/2.0/roles/create": { "post": { - "operationId": "searchSchedules", - "description": "\nSearch Schedules
Version: 9.4.0.cl or later\n\nGets a list of scheduled jobs configured for a Liveboard.\n\nTo get details of a specific scheduled job, specify the name or GUID of the scheduled job.\n\nRequires at least view access to Liveboards.\n\n**NOTE**: When filtering schedules by parameters other than `metadata`, set `record_size` to `-1` and `record_offset` to `0` for accurate results.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createRole", + "description": "\n Version: 9.5.0.cl or later\n\nCreates a Role object in ThoughtSpot.\n\nAvailable only if [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance. To create a Role, the `ROLE_ADMINISTRATION` (**Can manage roles**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Schedules", - "9.4.0.cl" + "Roles", + "9.5.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects associated with the scheduled jobs.", - "type": "array", - "items": { - "$ref": "#/components/schemas/MetadataInput" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included.", - "type": "integer", - "format": "int32" - }, - "sort_options": { - "description": "Sort options.", - "allOf": [ - { - "$ref": "#/components/schemas/SortingOptions" - } - ] - }, - "history_runs_options": { - "description": "Options while fetching history runs for the schedule.", - "allOf": [ - { - "$ref": "#/components/schemas/ScheduleHistoryRunsOptionsInput" - } - ] - }, - "schedule_identifiers": { - "description": "unique ID or name of the Schedule", - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/components/schemas/CreateRoleRequest" } } }, @@ -10531,20 +6870,17 @@ "parameters": [], "responses": { "200": { - "description": "Schedule search result.", + "description": "Role successfully created.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResponseSchedule" - } + "$ref": "#/components/schemas/RoleResponse" } } } }, "400": { - "description": "Invalid request.", + "description": "Invalid parameters.", "content": { "application/json": { "schema": { @@ -10574,7 +6910,7 @@ } }, "500": { - "description": "Unexpected error", + "description": "Internal error", "content": { "application/json": { "schema": { @@ -10586,748 +6922,28 @@ } } }, - "/api/rest/2.0/schedules/{schedule_identifier}/update": { + "/api/rest/2.0/roles/{role_identifier}/delete": { "post": { - "operationId": "updateSchedule", - "description": "\nUpdate schedule.
Version: 9.4.0.cl or later\n\nUpdates a scheduled Liveboard job.\n\nRequires at least edit access to Liveboards. To update a schedule on behalf of another user, you need `ADMINISTRATION` (**Can administer Org**) or `JOBSCHEDULING` (**Can schedule for others**) privilege and edit access to the Liveboard.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `JOBSCHEDULING` (**Can schedule for others**) privilege is required.\n\nThe API endpoint allows you to pause a scheduled job, change the status of a paused job. You can also edit the recipients list, frequency of the job, format of the file to send to the recipients in email notifications, PDF options, and time zone setting.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteRole", + "description": "\n Version: 9.5.0.cl or later\n\nDeletes a Role object from the ThoughtSpot system.\n\nAvailable only if [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance. To delete a Role, the `ROLE_ADMINISTRATION` (**Can manage roles**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Schedules", - "9.4.0.cl" + "Roles", + "9.5.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the scheduled job.", - "type": "string" - }, - "description": { - "description": "Description of the scheduled job.", - "type": "string" - }, - "metadata_type": { - "description": "Type of metadata object.", - "type": "string", - "enum": [ - "LIVEBOARD" - ] - }, - "metadata_identifier": { - "description": "Unique ID or name of the metadata object.", - "type": "string" - }, - "file_format": { - "description": "Export file format.", - "type": "string", - "enum": [ - "CSV", - "PDF", - "XLSX" - ] - }, - "liveboard_options": { - "description": "Options to specify the details of a Liveboard.", - "allOf": [ - { - "$ref": "#/components/schemas/LiveboardOptionsInput" - } - ] - }, - "pdf_options": { - "description": "Options for PDF export.", - "allOf": [ - { - "$ref": "#/components/schemas/SchedulesPdfOptionsInput" - } - ] - }, - "time_zone": { - "description": "Time zone", - "type": "string", - "enum": [ - "Africa/Abidjan", - "Africa/Accra", - "Africa/Addis_Ababa", - "Africa/Algiers", - "Africa/Asmara", - "Africa/Asmera", - "Africa/Bamako", - "Africa/Bangui", - "Africa/Banjul", - "Africa/Bissau", - "Africa/Blantyre", - "Africa/Brazzaville", - "Africa/Bujumbura", - "Africa/Cairo", - "Africa/Casablanca", - "Africa/Ceuta", - "Africa/Conakry", - "Africa/Dakar", - "Africa/Dar_es_Salaam", - "Africa/Djibouti", - "Africa/Douala", - "Africa/El_Aaiun", - "Africa/Freetown", - "Africa/Gaborone", - "Africa/Harare", - "Africa/Johannesburg", - "Africa/Juba", - "Africa/Kampala", - "Africa/Khartoum", - "Africa/Kigali", - "Africa/Kinshasa", - "Africa/Lagos", - "Africa/Libreville", - "Africa/Lome", - "Africa/Luanda", - "Africa/Lubumbashi", - "Africa/Lusaka", - "Africa/Malabo", - "Africa/Maputo", - "Africa/Maseru", - "Africa/Mbabane", - "Africa/Mogadishu", - "Africa/Monrovia", - "Africa/Nairobi", - "Africa/Ndjamena", - "Africa/Niamey", - "Africa/Nouakchott", - "Africa/Ouagadougou", - "Africa/Porto-Novo", - "Africa/Sao_Tome", - "Africa/Timbuktu", - "Africa/Tripoli", - "Africa/Tunis", - "Africa/Windhoek", - "America/Adak", - "America/Anchorage", - "America/Anguilla", - "America/Antigua", - "America/Araguaina", - "America/Argentina/Buenos_Aires", - "America/Argentina/Catamarca", - "America/Argentina/ComodRivadavia", - "America/Argentina/Cordoba", - "America/Argentina/Jujuy", - "America/Argentina/La_Rioja", - "America/Argentina/Mendoza", - "America/Argentina/Rio_Gallegos", - "America/Argentina/Salta", - "America/Argentina/San_Juan", - "America/Argentina/San_Luis", - "America/Argentina/Tucuman", - "America/Argentina/Ushuaia", - "America/Aruba", - "America/Asuncion", - "America/Atikokan", - "America/Atka", - "America/Bahia", - "America/Bahia_Banderas", - "America/Barbados", - "America/Belem", - "America/Belize", - "America/Blanc-Sablon", - "America/Boa_Vista", - "America/Bogota", - "America/Boise", - "America/Buenos_Aires", - "America/Cambridge_Bay", - "America/Campo_Grande", - "America/Cancun", - "America/Caracas", - "America/Catamarca", - "America/Cayenne", - "America/Cayman", - "America/Chicago", - "America/Chihuahua", - "America/Coral_Harbour", - "America/Cordoba", - "America/Costa_Rica", - "America/Creston", - "America/Cuiaba", - "America/Curacao", - "America/Danmarkshavn", - "America/Dawson", - "America/Dawson_Creek", - "America/Denver", - "America/Detroit", - "America/Dominica", - "America/Edmonton", - "America/Eirunepe", - "America/El_Salvador", - "America/Ensenada", - "America/Fort_Nelson", - "America/Fort_Wayne", - "America/Fortaleza", - "America/Glace_Bay", - "America/Godthab", - "America/Goose_Bay", - "America/Grand_Turk", - "America/Grenada", - "America/Guadeloupe", - "America/Guatemala", - "America/Guayaquil", - "America/Guyana", - "America/Halifax", - "America/Havana", - "America/Hermosillo", - "America/Indiana/Indianapolis", - "America/Indiana/Knox", - "America/Indiana/Marengo", - "America/Indiana/Petersburg", - "America/Indiana/Tell_City", - "America/Indiana/Vevay", - "America/Indiana/Vincennes", - "America/Indiana/Winamac", - "America/Indianapolis", - "America/Inuvik", - "America/Iqaluit", - "America/Jamaica", - "America/Jujuy", - "America/Juneau", - "America/Kentucky/Louisville", - "America/Kentucky/Monticello", - "America/Knox_IN", - "America/Kralendijk", - "America/La_Paz", - "America/Lima", - "America/Los_Angeles", - "America/Louisville", - "America/Lower_Princes", - "America/Maceio", - "America/Managua", - "America/Manaus", - "America/Marigot", - "America/Martinique", - "America/Matamoros", - "America/Mazatlan", - "America/Mendoza", - "America/Menominee", - "America/Merida", - "America/Metlakatla", - "America/Mexico_City", - "America/Miquelon", - "America/Moncton", - "America/Monterrey", - "America/Montevideo", - "America/Montreal", - "America/Montserrat", - "America/Nassau", - "America/New_York", - "America/Nipigon", - "America/Nome", - "America/Noronha", - "America/North_Dakota/Beulah", - "America/North_Dakota/Center", - "America/North_Dakota/New_Salem", - "America/Nuuk", - "America/Ojinaga", - "America/Panama", - "America/Pangnirtung", - "America/Paramaribo", - "America/Phoenix", - "America/Port-au-Prince", - "America/Port_of_Spain", - "America/Porto_Acre", - "America/Porto_Velho", - "America/Puerto_Rico", - "America/Punta_Arenas", - "America/Rainy_River", - "America/Rankin_Inlet", - "America/Recife", - "America/Regina", - "America/Resolute", - "America/Rio_Branco", - "America/Rosario", - "America/Santa_Isabel", - "America/Santarem", - "America/Santiago", - "America/Santo_Domingo", - "America/Sao_Paulo", - "America/Scoresbysund", - "America/Shiprock", - "America/Sitka", - "America/St_Barthelemy", - "America/St_Johns", - "America/St_Kitts", - "America/St_Lucia", - "America/St_Thomas", - "America/St_Vincent", - "America/Swift_Current", - "America/Tegucigalpa", - "America/Thule", - "America/Thunder_Bay", - "America/Tijuana", - "America/Toronto", - "America/Tortola", - "America/Vancouver", - "America/Virgin", - "America/Whitehorse", - "America/Winnipeg", - "America/Yakutat", - "America/Yellowknife", - "Antarctica/Casey", - "Antarctica/Davis", - "Antarctica/DumontDUrville", - "Antarctica/Macquarie", - "Antarctica/Mawson", - "Antarctica/McMurdo", - "Antarctica/Palmer", - "Antarctica/Rothera", - "Antarctica/South_Pole", - "Antarctica/Syowa", - "Antarctica/Troll", - "Antarctica/Vostok", - "Arctic/Longyearbyen", - "Asia/Aden", - "Asia/Almaty", - "Asia/Amman", - "Asia/Anadyr", - "Asia/Aqtau", - "Asia/Aqtobe", - "Asia/Ashgabat", - "Asia/Ashkhabad", - "Asia/Atyrau", - "Asia/Baghdad", - "Asia/Bahrain", - "Asia/Baku", - "Asia/Bangkok", - "Asia/Barnaul", - "Asia/Beirut", - "Asia/Bishkek", - "Asia/Brunei", - "Asia/Calcutta", - "Asia/Chita", - "Asia/Choibalsan", - "Asia/Chongqing", - "Asia/Chungking", - "Asia/Colombo", - "Asia/Dacca", - "Asia/Damascus", - "Asia/Dhaka", - "Asia/Dili", - "Asia/Dubai", - "Asia/Dushanbe", - "Asia/Famagusta", - "Asia/Gaza", - "Asia/Harbin", - "Asia/Hebron", - "Asia/Ho_Chi_Minh", - "Asia/Hong_Kong", - "Asia/Hovd", - "Asia/Irkutsk", - "Asia/Istanbul", - "Asia/Jakarta", - "Asia/Jayapura", - "Asia/Jerusalem", - "Asia/Kabul", - "Asia/Kamchatka", - "Asia/Karachi", - "Asia/Kashgar", - "Asia/Kathmandu", - "Asia/Katmandu", - "Asia/Khandyga", - "Asia/Kolkata", - "Asia/Krasnoyarsk", - "Asia/Kuala_Lumpur", - "Asia/Kuching", - "Asia/Kuwait", - "Asia/Macao", - "Asia/Macau", - "Asia/Magadan", - "Asia/Makassar", - "Asia/Manila", - "Asia/Muscat", - "Asia/Nicosia", - "Asia/Novokuznetsk", - "Asia/Novosibirsk", - "Asia/Omsk", - "Asia/Oral", - "Asia/Phnom_Penh", - "Asia/Pontianak", - "Asia/Pyongyang", - "Asia/Qatar", - "Asia/Qostanay", - "Asia/Qyzylorda", - "Asia/Rangoon", - "Asia/Riyadh", - "Asia/Saigon", - "Asia/Sakhalin", - "Asia/Samarkand", - "Asia/Seoul", - "Asia/Shanghai", - "Asia/Singapore", - "Asia/Srednekolymsk", - "Asia/Taipei", - "Asia/Tashkent", - "Asia/Tbilisi", - "Asia/Tehran", - "Asia/Tel_Aviv", - "Asia/Thimbu", - "Asia/Thimphu", - "Asia/Tokyo", - "Asia/Tomsk", - "Asia/Ujung_Pandang", - "Asia/Ulaanbaatar", - "Asia/Ulan_Bator", - "Asia/Urumqi", - "Asia/Ust-Nera", - "Asia/Vientiane", - "Asia/Vladivostok", - "Asia/Yakutsk", - "Asia/Yangon", - "Asia/Yekaterinburg", - "Asia/Yerevan", - "Atlantic/Azores", - "Atlantic/Bermuda", - "Atlantic/Canary", - "Atlantic/Cape_Verde", - "Atlantic/Faeroe", - "Atlantic/Faroe", - "Atlantic/Jan_Mayen", - "Atlantic/Madeira", - "Atlantic/Reykjavik", - "Atlantic/South_Georgia", - "Atlantic/St_Helena", - "Atlantic/Stanley", - "Australia/ACT", - "Australia/Adelaide", - "Australia/Brisbane", - "Australia/Broken_Hill", - "Australia/Canberra", - "Australia/Currie", - "Australia/Darwin", - "Australia/Eucla", - "Australia/Hobart", - "Australia/LHI", - "Australia/Lindeman", - "Australia/Lord_Howe", - "Australia/Melbourne", - "Australia/NSW", - "Australia/North", - "Australia/Perth", - "Australia/Queensland", - "Australia/South", - "Australia/Sydney", - "Australia/Tasmania", - "Australia/Victoria", - "Australia/West", - "Australia/Yancowinna", - "Brazil/Acre", - "Brazil/DeNoronha", - "Brazil/East", - "Brazil/West", - "CET", - "CST6CDT", - "Canada/Atlantic", - "Canada/Central", - "Canada/Eastern", - "Canada/Mountain", - "Canada/Newfoundland", - "Canada/Pacific", - "Canada/Saskatchewan", - "Canada/Yukon", - "Chile/Continental", - "Chile/EasterIsland", - "Cuba", - "EET", - "EST5EDT", - "Egypt", - "Eire", - "Etc/GMT", - "Etc/GMT+0", - "Etc/GMT+1", - "Etc/GMT+10", - "Etc/GMT+11", - "Etc/GMT+12", - "Etc/GMT+2", - "Etc/GMT+3", - "Etc/GMT+4", - "Etc/GMT+5", - "Etc/GMT+6", - "Etc/GMT+7", - "Etc/GMT+8", - "Etc/GMT+9", - "Etc/GMT-0", - "Etc/GMT-1", - "Etc/GMT-10", - "Etc/GMT-11", - "Etc/GMT-12", - "Etc/GMT-13", - "Etc/GMT-14", - "Etc/GMT-2", - "Etc/GMT-3", - "Etc/GMT-4", - "Etc/GMT-5", - "Etc/GMT-6", - "Etc/GMT-7", - "Etc/GMT-8", - "Etc/GMT-9", - "Etc/GMT0", - "Etc/Greenwich", - "Etc/UCT", - "Etc/UTC", - "Etc/Universal", - "Etc/Zulu", - "Europe/Amsterdam", - "Europe/Andorra", - "Europe/Astrakhan", - "Europe/Athens", - "Europe/Belfast", - "Europe/Belgrade", - "Europe/Berlin", - "Europe/Bratislava", - "Europe/Brussels", - "Europe/Bucharest", - "Europe/Budapest", - "Europe/Busingen", - "Europe/Chisinau", - "Europe/Copenhagen", - "Europe/Dublin", - "Europe/Gibraltar", - "Europe/Guernsey", - "Europe/Helsinki", - "Europe/Isle_of_Man", - "Europe/Istanbul", - "Europe/Jersey", - "Europe/Kaliningrad", - "Europe/Kiev", - "Europe/Kirov", - "Europe/Kyiv", - "Europe/Lisbon", - "Europe/Ljubljana", - "Europe/London", - "Europe/Luxembourg", - "Europe/Madrid", - "Europe/Malta", - "Europe/Mariehamn", - "Europe/Minsk", - "Europe/Monaco", - "Europe/Moscow", - "Europe/Nicosia", - "Europe/Oslo", - "Europe/Paris", - "Europe/Podgorica", - "Europe/Prague", - "Europe/Riga", - "Europe/Rome", - "Europe/Samara", - "Europe/San_Marino", - "Europe/Sarajevo", - "Europe/Saratov", - "Europe/Simferopol", - "Europe/Skopje", - "Europe/Sofia", - "Europe/Stockholm", - "Europe/Tallinn", - "Europe/Tirane", - "Europe/Tiraspol", - "Europe/Ulyanovsk", - "Europe/Uzhgorod", - "Europe/Vaduz", - "Europe/Vatican", - "Europe/Vienna", - "Europe/Vilnius", - "Europe/Volgograd", - "Europe/Warsaw", - "Europe/Zagreb", - "Europe/Zaporozhye", - "Europe/Zurich", - "GB", - "GB-Eire", - "GMT", - "GMT0", - "Greenwich", - "Hongkong", - "Iceland", - "Indian/Antananarivo", - "Indian/Chagos", - "Indian/Christmas", - "Indian/Cocos", - "Indian/Comoro", - "Indian/Kerguelen", - "Indian/Mahe", - "Indian/Maldives", - "Indian/Mauritius", - "Indian/Mayotte", - "Indian/Reunion", - "Iran", - "Israel", - "Jamaica", - "Japan", - "Kwajalein", - "Libya", - "MET", - "MST7MDT", - "Mexico/BajaNorte", - "Mexico/BajaSur", - "Mexico/General", - "NZ", - "NZ-CHAT", - "Navajo", - "PRC", - "PST8PDT", - "Pacific/Apia", - "Pacific/Auckland", - "Pacific/Bougainville", - "Pacific/Chatham", - "Pacific/Chuuk", - "Pacific/Easter", - "Pacific/Efate", - "Pacific/Enderbury", - "Pacific/Fakaofo", - "Pacific/Fiji", - "Pacific/Funafuti", - "Pacific/Galapagos", - "Pacific/Gambier", - "Pacific/Guadalcanal", - "Pacific/Guam", - "Pacific/Honolulu", - "Pacific/Johnston", - "Pacific/Kanton", - "Pacific/Kiritimati", - "Pacific/Kosrae", - "Pacific/Kwajalein", - "Pacific/Majuro", - "Pacific/Marquesas", - "Pacific/Midway", - "Pacific/Nauru", - "Pacific/Niue", - "Pacific/Norfolk", - "Pacific/Noumea", - "Pacific/Pago_Pago", - "Pacific/Palau", - "Pacific/Pitcairn", - "Pacific/Pohnpei", - "Pacific/Ponape", - "Pacific/Port_Moresby", - "Pacific/Rarotonga", - "Pacific/Saipan", - "Pacific/Samoa", - "Pacific/Tahiti", - "Pacific/Tarawa", - "Pacific/Tongatapu", - "Pacific/Truk", - "Pacific/Wake", - "Pacific/Wallis", - "Pacific/Yap", - "Poland", - "Portugal", - "ROK", - "Singapore", - "SystemV/AST4", - "SystemV/AST4ADT", - "SystemV/CST6", - "SystemV/CST6CDT", - "SystemV/EST5", - "SystemV/EST5EDT", - "SystemV/HST10", - "SystemV/MST7", - "SystemV/MST7MDT", - "SystemV/PST8", - "SystemV/PST8PDT", - "SystemV/YST9", - "SystemV/YST9YDT", - "Turkey", - "UCT", - "US/Alaska", - "US/Aleutian", - "US/Arizona", - "US/Central", - "US/East-Indiana", - "US/Eastern", - "US/Hawaii", - "US/Indiana-Starke", - "US/Michigan", - "US/Mountain", - "US/Pacific", - "US/Samoa", - "UTC", - "Universal", - "W-SU", - "WET", - "Zulu", - "EST", - "HST", - "MST", - "ACT", - "AET", - "AGT", - "ART", - "AST", - "BET", - "BST", - "CAT", - "CNT", - "CST", - "CTT", - "EAT", - "ECT", - "IET", - "IST", - "JST", - "MIT", - "NET", - "NST", - "PLT", - "PNT", - "PRT", - "PST", - "SST", - "VST" - ] - }, - "frequency": { - "description": "Frequency of the scheduled job run.", - "allOf": [ - { - "$ref": "#/components/schemas/FrequencyInput" - } - ] - }, - "recipient_details": { - "description": "Recipients of the scheduled job notifications. You can add the ID or name of the ThoughtSpot users or groups as recipients in the `principals` array. If a recipient is not a ThoughtSpot user, specify email address.", - "allOf": [ - { - "$ref": "#/components/schemas/RecipientDetailsInput" - } - ] - }, - "status": { - "description": "Status of the schedule", - "type": "string", - "enum": [ - "ACTIVE", - "PAUSE" - ] - }, - "personalised_view_id": { - "description": "Personalised view id of the liveboard to be scheduled.", - "type": "string" - } - } - } - } - }, - "required": true - }, "parameters": [ { "in": "path", - "name": "schedule_identifier", + "name": "role_identifier", "required": true, "schema": { "type": "string" }, - "description": "Unique ID or name of the schedule." + "description": "Unique ID or name of the Role. ReadOnly roles cannot be deleted." } ], "responses": { "204": { - "description": "Schedule successfully updated." + "description": "Role successfully deleted." }, "400": { "description": "Invalid request.", @@ -11360,7 +6976,7 @@ } }, "500": { - "description": "Unexpected error", + "description": "Internal error", "content": { "application/json": { "schema": { @@ -11372,40 +6988,19 @@ } } }, - "/api/rest/2.0/security/metadata/assign": { + "/api/rest/2.0/roles/search": { "post": { - "operationId": "assignChangeAuthor", - "description": "\n Version: 9.0.0.cl or later\n\nTransfers the ownership of one or several objects from one user to another.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege and edit access to the objects are required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchRoles", + "description": "\n Version: 9.5.0.cl or later\n\nGets a list of Role objects from the ThoughtSpot system.\n\nAvailable if [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance. To search for Roles, the `ROLE_ADMINISTRATION` (**Can manage roles**) privilege is required.\n\nTo get details of a specific Role object, specify the GUID or name. You can also filter the API response based on user group and Org identifiers, privileges assigned to the Role, and deprecation status.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Security", - "9.0.0.cl" + "Roles", + "9.5.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "GUID or name of the metadata object.", - "type": "array", - "items": { - "$ref": "#/components/schemas/AuthorMetadataTypeInput" - } - }, - "user_identifier": { - "description": "GUID or name of the user who you want to assign as the author.", - "type": "string" - }, - "current_owner_identifier": { - "description": "GUID or name of the current author. When defined, the metadata objects\nauthored by the specified owner are filtered for the API operation.", - "type": "string" - } - }, - "required": [ - "metadata", - "user_identifier" - ] + "$ref": "#/components/schemas/SearchRolesRequest" } } }, @@ -11413,15 +7008,25 @@ }, "parameters": [], "responses": { - "204": { - "description": "Author assignment for given metadata objects is successful." - }, - "400": { - "description": "Invalid request.", + "200": { + "description": "Roles search result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchRoleResponse" + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" } } } @@ -11447,7 +7052,7 @@ } }, "500": { - "description": "Unexpected error", + "description": "Internal error", "content": { "application/json": { "schema": { @@ -11459,53 +7064,48 @@ } } }, - "/api/rest/2.0/security/column/rules/fetch": { + "/api/rest/2.0/roles/{role_identifier}/update": { "post": { - "operationId": "fetchColumnSecurityRules", - "description": "\nBeta Version: 10.12.0.cl or later\n\nFetches column security rules for specified tables.\n\nThis API endpoint retrieves column-level security rules configured for tables. It returns information about which columns are secured and which groups have access to those columns.\n\n#### Usage guidelines\n\n- Provide an array of table identifiers using either `identifier` (GUID or name) or `obj_identifier` (object ID)\n- At least one of `identifier` or `obj_identifier` must be provided for each table\n- The API returns column security rules for all specified tables\n- Users must have appropriate permissions to access security rules for the specified tables\n\n#### Required permissions\n\n- `ADMINISTRATION` - Can administer ThoughtSpot\n- `DATAMANAGEMENT` - Can manage data\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` - Can manage worksheet views and tables\n\n#### Example request\n\n```json\n{\n \"tables\": [\n {\n \"identifier\": \"table-guid\",\n \"obj_identifier\": \"table-object-id\"\n }\n ]\n}\n```\n\n#### Response format\n\nThe API returns an array of `ColumnSecurityRuleResponse` objects wrapped in a `data` field. Each `ColumnSecurityRuleResponse` object contains:\n- Table information (GUID and object ID) \n- Array of column security rules with column details, group access, and source table information\n\n#### Example response\n\n```json\n{\n \"data\": [\n {\n \"guid\": \"table-guid\",\n \"objId\": \"table-object-id\",\n \"columnSecurityRules\": [\n {\n \"column\": {\n \"id\": \"col_123\",\n \"name\": \"Salary\"\n },\n \"groups\": [\n {\n \"id\": \"group_1\",\n \"name\": \"HR Department\"\n }\n ],\n \"sourceTableDetails\": {\n \"id\": \"source-table-guid\",\n \"name\": \"Employee_Data\"\n }\n }\n ]\n }\n ]\n}\n```\n\n\n\n#### Endpoint URL\n", + "operationId": "updateRole", + "description": "\n Version: 9.5.0.cl or later\n\nUpdates the properties of a Role object.\n\nAvailable only if [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance. To update a Role, the `ROLE_ADMINISTRATION` (**Can manage roles**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Security", - "10.12.0.cl" + "Roles", + "9.5.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "tables": { - "description": "Array of table identifier objects for which to fetch column security rules", - "type": "array", - "items": { - "$ref": "#/components/schemas/ColumnSecurityRuleTableInput" - } - } - }, - "required": [ - "tables" - ] + "$ref": "#/components/schemas/UpdateRoleRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "role_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the Role." + } + ], "responses": { "200": { - "description": "Successfully fetched column security rules", + "description": "Role successfully updated.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ColumnSecurityRuleResponse" - } + "$ref": "#/components/schemas/RoleResponse" } } } }, "400": { - "description": "Bad request - Table not found or invalid parameters", + "description": "Invalid request.", "content": { "application/json": { "schema": { @@ -11525,7 +7125,7 @@ } }, "403": { - "description": "Forbidden - User doesn't have permission to access security rules for this table", + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -11535,7 +7135,7 @@ } }, "500": { - "description": "Internal server error", + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -11547,50 +7147,19 @@ } } }, - "/api/rest/2.0/security/metadata/fetch-object-privileges": { + "/api/rest/2.0/schedules/create": { "post": { - "operationId": "fetchObjectPrivileges", - "description": "\n Version: 26.3.0.cl or later\n\nThis API fetches the object privileges present for the given list of principals (user or group), on the given set of objects. It supports pagination, which can be enabled and configured using the request parameters. It provides users access to certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals for which you want to retrieve object privilege information in the `principals` array.\n- Specify the `type` (`LOGICAL_TABLE`) and `identifier` (either GUID or name) of the metadata objects for which you want to retrieve object privilege information in the `metadata` array. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- To control the offset from where principals have to be fetched, use `record_offset`. When `record_offset` is 0, information is fetched from the beginning.\n- To control the number of principals to be fetched, use `record_size`. Default `record_size` is 20.\n- Ensure `record_offset` for a subsequent request is one more than the value of `record_size` of the previous request.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org. \n\n#### Example request\n\n```json\n{\n \"principals\": [\n {\n \"type\": \"type-1\",\n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"metadata-type-1\",\n \"identifier\": \"metadata-guid-or-name-1\"\n },\n {\n \"type\": \"metadata-type-2\",\n \"identifier\": \"metadata-guid-or-name-2\"\n }\n ],\n \"record_offset\": 0,\n \"record_size\": 20\n}\n```\n\n\n#### Response format\n\nThe API returns an array of `metadata_object_privileges` objects wrapped in JSON. Each `metadata_object_privileges` object contains:\n- Metadata information (GUID, name and type)\n- Array of `principal_object_privilege_info`.\n- Each `principal_object_privilege_info` contains:\n - Principal type. All principals of this type are listed as described below.\n - Array of `principal_object_privileges`.\n - Each `principal_object_privileges` contains:\n - Principal information (GUID, name, subtype)\n - List of applied object level privileges.\n\n#### Example response\n\n```json\n{\n \"metadata_object_privileges\": [\n {\n \"metadata_id\": \"metadata-guid-1\",\n \"metadata_name\": \"metadata-name-1\",\n \"metadata_type\": \"metadata-type-1\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n }\n ]\n },\n {\n \"principal_type\": \"principal-type-2\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-3\",\n \"principal_name\": \"principal-guid-4\",\n \"principal_sub_type\": \"principal-sub-type-4\",\n \"object_privileges\": \"[object-privilege-1]\"\n }\n ]\n }\n ]\n },\n {\n \"metadata_id\": \"metadata-guid-2\",\n \"metadata_name\": \"metadata-name-2\",\n \"metadata_type\": \"metadata-type-2\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-3, object-privilege-4]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-4]\"\n }\n ]\n }\n ]\n }\n ]\n}\n```\n\n\n\n#### Endpoint URL\n", + "operationId": "createSchedule", + "description": "\nCreate schedule.
Version: 9.4.0.cl or later\n\nCreates a Liveboard schedule job.\n\nRequires at least edit access to Liveboards. To create a schedule on behalf of another user, you need `ADMINISTRATION` (**Can administer Org**) or `JOBSCHEDULING` (**Can schedule for others**) privilege and edit access to the Liveboard.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `JOBSCHEDULING` (**Can schedule for others**) privilege is required.\n\n#### Usage guidelines\n\n* The description text is mandatory. The description text appears as **Description: ** in the Liveboard schedule email notifications.\n* For Liveboards with both charts and tables, schedule creation is only supported in PDF and XLS formats. Schedules created in CSV formats for such Liveboards will fail to run. If `PDF` is set as the `file_format`, enable `pdf_options` to get the correct attachment. Not doing so may cause the attachment to be rendered empty.\n* To include only specific visualizations, specify the visualization GUIDs in the `visualization_identifiers` array.\n* You can schedule a Liveboard job to run periodically by setting frequency parameters. You can set the schedule to run daily, weekly, monthly or every n minutes or hours. The scheduled job can also be configured to run at a specific time of the day or on specific days of the week or month. Please ensure that when setting the schedule frequency for _minute of the object_, only values that are multiples of 5 are included.\n* If the `frequency` parameters are defined, you can set the time zone to a value that matches your server's time zone. For example, `US/Central`, `Etc/UTC`, `CET`. The default time zone is `America/Los_Angeles`.\n\nFor more information about Liveboard jobs, see [ThoughtSpot Product Documentation](https://docs.thoughtspot.com/cloud/latest/liveboard-schedule).\n\n\n\n#### Endpoint URL\n", "tags": [ - "Security", - "26.3.0.cl" + "Schedules", + "9.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects for which you want to fetch object privileges. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ObjectPrivilegesMetadataInput" - } - }, - "principals": { - "description": "User or group objects for which you want to fetch object privileges.\nIf not specified, the API returns all users and groups that\nhave object privileges on the specified metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PrincipalsInput" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included for each metadata type.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included for each metadata type.", - "default": 20, - "type": "integer", - "format": "int32" - } - }, - "required": [ - "metadata" - ] + "$ref": "#/components/schemas/CreateScheduleRequest" } } }, @@ -11599,11 +7168,11 @@ "parameters": [], "responses": { "200": { - "description": "Fetching defined object privileges of metadata objects is successful.", + "description": "Schedule successfully created.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ObjectPrivilegesOfMetadataResponse" + "$ref": "#/components/schemas/ResponseSchedule" } } } @@ -11651,62 +7220,85 @@ } } }, - "/api/rest/2.0/security/principals/fetch-permissions": { + "/api/rest/2.0/schedules/{schedule_identifier}/delete": { "post": { - "operationId": "fetchPermissionsOfPrincipals", - "description": "\n Version: 9.0.0.cl or later\n\nFetches object permission details for a given principal object such as a user and group.\n\nRequires view access to the metadata object. \n\n#### Usage guidelines\n\n* To get a list of all metadata objects that a user or group can access, specify the `type` and GUID or name of the principal.\n* To get permission details for a specific object, add the `type` and GUID or name of the metadata object to your API request.\n\nUpon successful execution, the API returns a list of metadata objects and permission details for each object. \n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteSchedule", + "description": "\nDeletes a scheduled job.
Version: 9.4.0.cl or later\n\nDeletes a scheduled Liveboard job.\n\nRequires at least edit access to Liveboard or `ADMINISTRATION` (**Can administer Org**) privilege. \nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `JOBSCHEDULING` (**Can schedule for others**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Security", - "9.0.0.cl" + "Schedules", + "9.4.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "schedule_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the scheduled job." + } + ], + "responses": { + "204": { + "description": "Schedule successfully deleted." + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/schedules/search": { + "post": { + "operationId": "searchSchedules", + "description": "\nSearch Schedules
Version: 9.4.0.cl or later\n\nGets a list of scheduled jobs configured for a Liveboard.\n\nTo get details of a specific scheduled job, specify the name or GUID of the scheduled job.\n\nRequires at least view access to Liveboards.\n\n**NOTE**: When filtering schedules by parameters other than `metadata`, set `record_size` to `-1` and `record_offset` to `0` for accurate results.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Schedules", + "9.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "principals": { - "description": "GUID or name of the user or group.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PrincipalsInput" - } - }, - "metadata": { - "description": "Metadata objects for which you want to fetch permission details.\nIf not specified, the API returns permission details for all\nmetadata objects that the specified users and groups can access.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PermissionsMetadataTypeInput" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included for each metadata type.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included for each metadata type.", - "default": -1, - "type": "integer", - "format": "int32" - }, - "default_metadata_type": { - "description": "When no metadata objects input is passed, metadata objects of this type are fetched.", - "type": "string", - "enum": [ - "ALL", - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "CONNECTION" - ] - } - }, - "required": [ - "principals" - ] + "$ref": "#/components/schemas/SearchSchedulesRequest" } } }, @@ -11715,46 +7307,13 @@ "parameters": [], "responses": { "200": { - "description": "Fetching permissions of principals is successful.", + "description": "Schedule search result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PermissionOfPrincipalsResponse" - }, - "examples": { - "example_1": { - "value": { - "principal_permission_details": [ - { - "principal_id": "7f5e7f87-09a1-487c-a1da-c4bb35e45270", - "principal_name": "test_user", - "principal_type": "USER", - "principal_sub_type": "LOCAL_USER", - "metadata_permission_info": [ - { - "metadata_type": "LIVEBOARD", - "metadata_permissions": [ - { - "metadata_id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", - "metadata_name": "Learn how to use ThoughtSpot", - "metadata_owner": { - "id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", - "name": "Learn how to use ThoughtSpot" - }, - "metadata_author": { - "id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "name": "tsadmin" - }, - "permission": "READ_ONLY", - "shared_permission": "NO_ACCESS", - "group_permission": [] - } - ] - } - ] - } - ] - } + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseSchedule" } } } @@ -11803,132 +7362,38 @@ } } }, - "/api/rest/2.0/security/metadata/fetch-permissions": { + "/api/rest/2.0/schedules/{schedule_identifier}/update": { "post": { - "operationId": "fetchPermissionsOnMetadata", - "description": "\n Version: 9.0.0.cl or later\n\nFetches permission details for a given metadata object.\n\nRequires view access to the metadata object.\n\n#### Usage guidelines\n\n* To fetch a list of users and groups for a metadata object, specify `type` and GUID or name of the metadata object.\n* To get permission details for a specific user or group, add `type` and GUID or name of the principal object to your API request.\n\nUpon successful execution, the API returns permission details and principal information for the object specified in the API request.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateSchedule", + "description": "\nUpdate schedule.
Version: 9.4.0.cl or later\n\nUpdates a scheduled Liveboard job.\n\nRequires at least edit access to Liveboards. To update a schedule on behalf of another user, you need `ADMINISTRATION` (**Can administer Org**) or `JOBSCHEDULING` (**Can schedule for others**) privilege and edit access to the Liveboard.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `JOBSCHEDULING` (**Can schedule for others**) privilege is required.\n\nThe API endpoint allows you to pause a scheduled job, change the status of a paused job. You can also edit the recipients list, frequency of the job, format of the file to send to the recipients in email notifications, PDF options, and time zone setting.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Security", - "9.0.0.cl" + "Schedules", + "9.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "GUID or name of the metadata object.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PermissionsMetadataTypeInput" - } - }, - "principals": { - "description": "User or group objects for which you want to fetch permissions.\nIf not specified, the API returns all users and groups that\ncan access the specified metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PrincipalsInput" - } - }, - "include_dependent_objects": { - "description": "Indicates whether to fetch permissions of dependent metadata objects.", - "default": false, - "type": "boolean", - "nullable": true - }, - "record_offset": { - "description": "The starting record number from where the records should be included for each metadata type.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included for each metadata type.", - "default": -1, - "type": "integer", - "format": "int32" - }, - "permission_type": { - "description": "
Version: 10.3.0.cl or later
\n\nSpecifies the type of permission. Valid values are:\n EFFECTIVE - If the user permission to the metadata objects is granted by the privileges assigned to the groups to which they belong.\n DEFINED - If a user or user group received access to metadata objects via object sharing by another user.", - "type": "string" - } - }, - "required": [ - "metadata" - ] + "$ref": "#/components/schemas/UpdateScheduleRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "schedule_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the schedule." + } + ], "responses": { - "200": { - "description": "Fetching permissions of metadata objects is successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PermissionOfMetadataResponse" - }, - "examples": { - "example_1": { - "value": { - "metadata_permission_details": [ - { - "metadata_id": "a62a5bf3-9f16-45b2-a174-7d30b3b577a9", - "metadata_name": "testing", - "metadata_type": "LIVEBOARD", - "metadata_owner": { - "id": "a62a5bf3-9f16-45b2-a174-7d30b3b577a9", - "name": "testing" - }, - "metadata_author": { - "id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "name": "tsadmin" - }, - "principal_permission_info": [ - { - "principal_type": "USER_GROUP", - "principal_sub_type": "LOCAL_GROUP", - "principal_permissions": [ - { - "principal_id": "d0326b56-ef23-4c8a-8327-a30e99bcc72b", - "principal_name": "Administrator", - "permission": "MODIFY", - "shared_permission": "NO_ACCESS", - "group_permission": [] - } - ] - }, - { - "principal_type": "USER", - "principal_sub_type": "LOCAL_USER", - "principal_permissions": [ - { - "principal_id": "0f0dd0f7-7411-4195-a4aa-0dc6b58413c9", - "principal_name": "su", - "permission": "MODIFY", - "shared_permission": "NO_ACCESS", - "group_permission": [] - }, - { - "principal_id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "principal_name": "tsadmin", - "permission": "MODIFY", - "shared_permission": "NO_ACCESS", - "group_permission": [] - } - ] - } - ] - } - ] - } - } - } - } - } + "204": { + "description": "Schedule successfully updated." }, "400": { "description": "Invalid request.", @@ -11973,67 +7438,19 @@ } } }, - "/api/rest/2.0/security/metadata/manage-object-privilege": { + "/api/rest/2.0/security/metadata/assign": { "post": { - "operationId": "manageObjectPrivilege", - "description": "\n Version: 26.3.0.cl or later\n\nThis API allows the addition or deletion of object level privileges for a set of users and groups, on a set of metadata objects. It provides users to access certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `operation`. The supported operations are: `ADD`, `REMOVE`.\n- Specify the type of the objects on which the object privileges are being provided in `metadata_type`. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- Specify the list of object privilege types in the `object_privilege_types` array. The supported object privilege types are: `SPOTTER_COACHING_PRIVILEGE`.\n- Specify the identifiers (either GUID or name) for the metadata objects in the `metadata_identifiers` array.\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals to which you want to apply the given operation and given object privileges in the `principals` array.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org.\n\n#### Example request\n\n```json\n{\n \"operation\": \"operation-type\",\n \"metadata_type\": \"metadata-type\",\n \"object_privilege_types\": [\"privilege-type-1\", \"privilege-type-2\"],\n \"metadata_identifiers\": [\"metadata-guid-or-name-1\", \"metadata-guid-or-name-1\"],\n \"principals\": [\n {\n \"type\": \"type-1\", \n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ]\n}\n```\n\n> ###### Note:\n> * Only admin users, users with edit access and users with coaching privilege on a given data-model can add or remove principals related to SPOTTER_COACHING_PRIVILEGE \n\n\n\n#### Endpoint URL\n", + "operationId": "assignChangeAuthor", + "description": "\n Version: 9.0.0.cl or later\n\nTransfers the ownership of one or several objects from one user to another.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege and edit access to the objects are required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "26.3.0.cl" + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "operation": { - "description": "Operation to perform to manage object privileges. Available operations are: `ADD`, `REMOVE`.", - "type": "string", - "enum": [ - "ADD", - "REMOVE" - ] - }, - "metadata_type": { - "description": "Type of metadata objects on which you want to perform the operation. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", - "type": "string", - "enum": [ - "LOGICAL_TABLE" - ] - }, - "object_privilege_types": { - "description": "List of object privilege types on which you want to perform the operation.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "SPOTTER_COACHING_PRIVILEGE" - ] - } - }, - "metadata_identifiers": { - "description": "List of metadata identifiers (GUID or name) on which you want to perform the operation.", - "type": "array", - "items": { - "type": "string" - } - }, - "principals": { - "description": "User or group objects (GUID or name) to which you want to apply the given operation and given object privileges.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PrincipalsInput" - } - } - }, - "required": [ - "operation", - "metadata_type", - "object_privilege_types", - "metadata_identifiers", - "principals" - ] + "$ref": "#/components/schemas/AssignChangeAuthorRequest" } } }, @@ -12042,10 +7459,10 @@ "parameters": [], "responses": { "204": { - "description": "Object privileges added/removed successfully" + "description": "Author assignment for given metadata objects is successful." }, "400": { - "description": "Invalid request", + "description": "Invalid request.", "content": { "application/json": { "schema": { @@ -12055,7 +7472,7 @@ } }, "401": { - "description": "Unauthorized access", + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -12065,7 +7482,7 @@ } }, "403": { - "description": "Forbidden access", + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -12087,44 +7504,19 @@ } } }, - "/api/rest/2.0/security/metadata/publish": { + "/api/rest/2.0/security/column/rules/fetch": { "post": { - "operationId": "publishMetadata", - "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchColumnSecurityRules", + "description": "\nBeta Version: 10.12.0.cl or later\n\nFetches column security rules for specified tables.\n\nThis API endpoint retrieves column-level security rules configured for tables. It returns information about which columns are secured and which groups have access to those columns.\n\n#### Usage guidelines\n\n- Provide an array of table identifiers using either `identifier` (GUID or name) or `obj_identifier` (object ID)\n- At least one of `identifier` or `obj_identifier` must be provided for each table\n- The API returns column security rules for all specified tables\n- Users must have appropriate permissions to access security rules for the specified tables\n\n#### Required permissions\n\n- `ADMINISTRATION` - Can administer ThoughtSpot\n- `DATAMANAGEMENT` - Can manage data\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` - Can manage worksheet views and tables\n\n#### Example request\n\n```json\n{\n \"tables\": [\n {\n \"identifier\": \"table-guid\",\n \"obj_identifier\": \"table-object-id\"\n }\n ]\n}\n```\n\n#### Response format\n\nThe API returns an array of `ColumnSecurityRuleResponse` objects wrapped in a `data` field. Each `ColumnSecurityRuleResponse` object contains:\n- Table information (GUID and object ID) \n- Array of column security rules with column details, group access, and source table information\n\n#### Example response\n\n```json\n{\n \"data\": [\n {\n \"guid\": \"table-guid\",\n \"objId\": \"table-object-id\",\n \"columnSecurityRules\": [\n {\n \"column\": {\n \"id\": \"col_123\",\n \"name\": \"Salary\"\n },\n \"groups\": [\n {\n \"id\": \"group_1\",\n \"name\": \"HR Department\"\n }\n ],\n \"sourceTableDetails\": {\n \"id\": \"source-table-guid\",\n \"name\": \"Employee_Data\"\n }\n }\n ]\n }\n ]\n}\n```\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "10.9.0.cl" + "10.12.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects to be published.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PublishMetadataListItem" - } - }, - "org_identifiers": { - "description": "Unique ID or name of orgs to which metadata objects should be published.", - "type": "array", - "items": { - "type": "string" - } - }, - "skip_validation": { - "description": "Skip validations of objects to be published.", - "type": "boolean", - "nullable": true - } - }, - "required": [ - "metadata", - "org_identifiers" - ] + "$ref": "#/components/schemas/FetchColumnSecurityRulesRequest" } } }, @@ -12132,11 +7524,21 @@ }, "parameters": [], "responses": { - "204": { - "description": "Publishing metadata objects is successful." + "200": { + "description": "Successfully fetched column security rules", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ColumnSecurityRuleResponse" + } + } + } + } }, "400": { - "description": "Invalid request.", + "description": "Bad request - Table not found or invalid parameters", "content": { "application/json": { "schema": { @@ -12156,7 +7558,7 @@ } }, "403": { - "description": "Forbidden access.", + "description": "Forbidden - User doesn't have permission to access security rules for this table", "content": { "application/json": { "schema": { @@ -12166,7 +7568,7 @@ } }, "500": { - "description": "Unexpected error", + "description": "Internal server error", "content": { "application/json": { "schema": { @@ -12178,94 +7580,19 @@ } } }, - "/api/rest/2.0/security/metadata/share": { + "/api/rest/2.0/security/metadata/fetch-object-privileges": { "post": { - "operationId": "shareMetadata", - "description": "\n Version: 9.0.0.cl or later\n\nAllows sharing one or several metadata objects with users and groups in ThoughtSpot.\n\nRequires edit access to the metadata object.\n\n#### Supported metadata objects:\n* Liveboards\n* Visualizations\n* Answers\n* Models\n* Views\n* Connections\n\n#### Object permissions\n\nYou can provide `READ_ONLY` or `MODIFY` access when sharing an object with another user or group. The `READ_ONLY` permission grants view access to the shared object, whereas `MODIFY` provides edit access.\n\nTo prevent a user or group from accessing the shared object, specify the GUID or name of the principal and set `shareMode` to `NO_ACCESS`.\n\n#### Sharing a visualization\n\n* Sharing a visualization implicitly shares the entire Liveboard with the recipient. \n* Object permissions set for a shared visualization also apply to the Liveboard unless overridden by another API request or via UI.\n* If email notifications for object sharing are enabled, a notification with a link to the shared visualization will be sent to the recipient’s email address. Although this link opens the shared visualization, recipients can also access other visualizations in the Liveboard.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchObjectPrivileges", + "description": "\n Version: 26.3.0.cl or later\n\nThis API fetches the object privileges present for the given list of principals (user or group), on the given set of objects. It supports pagination, which can be enabled and configured using the request parameters. It provides users access to certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals for which you want to retrieve object privilege information in the `principals` array.\n- Specify the `type` (`LOGICAL_TABLE`) and `identifier` (either GUID or name) of the metadata objects for which you want to retrieve object privilege information in the `metadata` array. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- To control the offset from where principals have to be fetched, use `record_offset`. When `record_offset` is 0, information is fetched from the beginning.\n- To control the number of principals to be fetched, use `record_size`. Default `record_size` is 20.\n- Ensure `record_offset` for a subsequent request is one more than the value of `record_size` of the previous request.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org. \n\n#### Example request\n\n```json\n{\n \"principals\": [\n {\n \"type\": \"type-1\",\n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"metadata-type-1\",\n \"identifier\": \"metadata-guid-or-name-1\"\n },\n {\n \"type\": \"metadata-type-2\",\n \"identifier\": \"metadata-guid-or-name-2\"\n }\n ],\n \"record_offset\": 0,\n \"record_size\": 20\n}\n```\n\n\n#### Response format\n\nThe API returns an array of `metadata_object_privileges` objects wrapped in JSON. Each `metadata_object_privileges` object contains:\n- Metadata information (GUID, name and type)\n- Array of `principal_object_privilege_info`.\n- Each `principal_object_privilege_info` contains:\n - Principal type. All principals of this type are listed as described below.\n - Array of `principal_object_privileges`.\n - Each `principal_object_privileges` contains:\n - Principal information (GUID, name, subtype)\n - List of applied object level privileges.\n\n#### Example response\n\n```json\n{\n \"metadata_object_privileges\": [\n {\n \"metadata_id\": \"metadata-guid-1\",\n \"metadata_name\": \"metadata-name-1\",\n \"metadata_type\": \"metadata-type-1\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-1, object-privilege-2]\"\n }\n ]\n },\n {\n \"principal_type\": \"principal-type-2\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-3\",\n \"principal_name\": \"principal-guid-4\",\n \"principal_sub_type\": \"principal-sub-type-4\",\n \"object_privileges\": \"[object-privilege-1]\"\n }\n ]\n }\n ]\n },\n {\n \"metadata_id\": \"metadata-guid-2\",\n \"metadata_name\": \"metadata-name-2\",\n \"metadata_type\": \"metadata-type-2\",\n \"principal_object_privilege_info\": [\n {\n \"principal_type\": \"principal-type-1\",\n \"principal_object_privileges\": [\n {\n \"principal_id\": \"principal-guid-1\",\n \"principal_name\": \"principal-name-1\",\n \"principal_sub_type\": \"principal-sub-type-1\",\n \"object_privileges\": \"[object-privilege-3, object-privilege-4]\"\n },\n {\n \"principal_id\": \"principal-guid-2\",\n \"principal_name\": \"principal-name-2\",\n \"principal_sub_type\": \"principal-sub-type-2\",\n \"object_privileges\": \"[object-privilege-4]\"\n }\n ]\n }\n ]\n }\n ]\n}\n```\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "9.0.0.cl" + "26.3.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_type": { - "description": "Type of metadata. Required if identifier in metadata_identifies is a name.\n1. Liveboard\n2. Answers\n3. LOGICAL_TABLE for any data object such as table, worksheet or view.\n4. LOGICAL_COLUMN\n5. Connection", - "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "CONNECTION" - ] - }, - "metadata_identifiers": { - "description": "Unique ID or name of metadata objects. Note: All the names should belong to same metadata_type", - "type": "array", - "items": { - "type": "string" - } - }, - "metadata": { - "description": "Metadata details for sharing objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ShareMetadataTypeInput" - } - }, - "permissions": { - "description": "Permission details for sharing the objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/SharePermissionsInput" - } - }, - "visualization_identifiers": { - "description": "Options to specify details of Liveboard. First Liveboard encountered in payload is considered to be the corresponding Liveboard.", - "type": "array", - "items": { - "type": "string" - } - }, - "emails": { - "description": "Email IDs to which notifications will be sent.", - "default": [], - "type": "array", - "items": { - "type": "string" - } - }, - "message": { - "description": "Message to be included in notification.", - "type": "string" - }, - "enable_custom_url": { - "description": "Sends object URLs in the customized format in email notifications.", - "default": false, - "type": "boolean", - "nullable": true - }, - "notify_on_share": { - "description": "Flag to notify user when any object is shared.", - "default": true, - "type": "boolean", - "nullable": true - }, - "has_lenient_discoverability": { - "description": "Flag to make the object discoverable.", - "default": false, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "permissions", - "message" - ] + "$ref": "#/components/schemas/FetchObjectPrivilegesRequest" } } }, @@ -12273,8 +7600,15 @@ }, "parameters": [], "responses": { - "204": { - "description": "Sharing metadata objects is successful." + "200": { + "description": "Fetching defined object privileges of metadata objects is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectPrivilegesOfMetadataResponse" + } + } + } }, "400": { "description": "Invalid request.", @@ -12319,49 +7653,19 @@ } } }, - "/api/rest/2.0/security/metadata/unpublish": { + "/api/rest/2.0/security/principals/fetch-permissions": { "post": { - "operationId": "unpublishMetadata", - "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows unpublishing metadata objects from organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows unpublishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nWhen unpublishing objects, you can:\n* Include dependencies by setting `include_dependencies` to true - this will unpublish all dependent objects if no other published object is using them\n* Force unpublish by setting `force` to true - this will break all dependent objects in the unpublished organizations\n\n\n\n\n#### Endpoint URL\n", + "operationId": "fetchPermissionsOfPrincipals", + "description": "\n Version: 9.0.0.cl or later\n\nFetches object permission details for a given principal object such as a user and group.\n\nRequires view access to the metadata object. \n\n#### Usage guidelines\n\n* To get a list of all metadata objects that a user or group can access, specify the `type` and GUID or name of the principal.\n* To get permission details for a specific object, add the `type` and GUID or name of the metadata object to your API request.\n\nUpon successful execution, the API returns a list of metadata objects and permission details for each object. \n\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "10.9.0.cl" + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "force": { - "description": "Force unpublishes the object. This will break all the dependent objects in the unpublished orgs.", - "type": "boolean", - "nullable": true - }, - "include_dependencies": { - "description": "Should we unpublish all the dependencies for the objects specified.\nThe dependencies will be unpublished if no other published object is using it.", - "type": "boolean" - }, - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/PublishMetadataListItem" - } - }, - "org_identifiers": { - "description": "Unique ID or name of orgs.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "include_dependencies", - "metadata", - "org_identifiers" - ] + "$ref": "#/components/schemas/FetchPermissionsOfPrincipalsRequest" } } }, @@ -12369,8 +7673,51 @@ }, "parameters": [], "responses": { - "204": { - "description": "Unpublishing metadata objects is successful." + "200": { + "description": "Fetching permissions of principals is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionOfPrincipalsResponse" + }, + "examples": { + "example_1": { + "value": { + "principal_permission_details": [ + { + "principal_id": "7f5e7f87-09a1-487c-a1da-c4bb35e45270", + "principal_name": "test_user", + "principal_type": "USER", + "principal_sub_type": "LOCAL_USER", + "metadata_permission_info": [ + { + "metadata_type": "LIVEBOARD", + "metadata_permissions": [ + { + "metadata_id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", + "metadata_name": "Learn how to use ThoughtSpot", + "metadata_owner": { + "id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", + "name": "Learn how to use ThoughtSpot" + }, + "metadata_author": { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "tsadmin" + }, + "permission": "READ_ONLY", + "shared_permission": "NO_ACCESS", + "group_permission": [] + } + ] + } + ] + } + ] + } + } + } + } + } }, "400": { "description": "Invalid request.", @@ -12415,44 +7762,19 @@ } } }, - "/api/rest/2.0/security/column/rules/update": { + "/api/rest/2.0/security/metadata/fetch-permissions": { "post": { - "operationId": "updateColumnSecurityRules", - "description": "\nBeta Version: 10.12.0.cl or later\n\nCreates, updates, or deletes column security rules for specified tables.\n\nThis API endpoint allows you to create, update, or delete column-level security rules on columns of a table. The operation follows an \"all or none\" policy: if defining security rules for any of the provided columns fails, the entire operation will be rolled back, and no rules will be created.\n\n#### Usage guidelines\n\n- Provide table identifier using either `identifier` (GUID or name) or `obj_identifier` (object ID)\n- Use `clear_csr: true` to remove all column security rules from the table\n- For each column, specify the security rule using `column_security_rules` array\n- Use `is_unsecured: true` to mark a specific column as unprotected\n- Use `group_access` operations to manage group associations:\n - `ADD`: Add groups to the column's access list\n - `REMOVE`: Remove groups from the column's access list\n - `REPLACE`: Replace all existing groups with the specified groups\n\n#### Required permissions\n\n- `ADMINISTRATION` - Can administer ThoughtSpot\n- `DATAMANAGEMENT` - Can manage data (if RBAC is disabled)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` - Can manage worksheet views and tables (if RBAC is enabled)\n\n#### Example request\n\n```json\n{\n \"identifier\": \"table-guid\",\n \"obj_identifier\": \"table-object-id\",\n \"clear_csr\": false,\n \"column_security_rules\": [\n {\n \"column_identifier\": \"col id or col name\",\n \"is_unsecured\": false,\n \"group_access\": [\n {\n \"operation\": \"ADD\",\n \"group_identifiers\": [\"hr_group_id\", \"hr_group_name\", \"finance_group_id\"]\n }\n ]\n },\n {\n \"column_identifier\": \"col id or col name\",\n \"is_unsecured\": true\n },\n {\n \"column_identifier\": \"col id or col name\",\n \"is_unsecured\": false,\n \"group_access\": [\n {\n \"operation\": \"REPLACE\",\n \"group_identifiers\": [\"management_group_id\", \"management_group_name\"]\n }\n ]\n }\n ]\n}\n```\n\n#### Request Body Schema\n\n- `identifier` (string, optional): GUID or name of the table for which we want to create column security rules\n- `obj_identifier` (string, optional): The object ID of the table\n- `clear_csr` (boolean, optional): If true, then all the secured columns will be marked as unprotected, and all the group associations will be removed\n- `column_security_rules` (array of objects, required): An array where each object defines the security rule for a specific column\n\nEach column security rule object contains:\n- `column_identifier` (string, required): Column identifier (col_id or name)\n- `is_unsecured` (boolean, optional): If true, the column will be marked as unprotected and all groups associated with it will be removed\n- `group_access` (array of objects, optional): Array of group operation objects\n\nEach group operation object contains:\n- `operation` (string, required): Operation type - ADD, REMOVE, or REPLACE\n- `group_identifiers` (array of strings, required): Array of group identifiers (name or GUID) on which the operation will be performed\n\n#### Response\n\nThis API does not return any response body. A successful operation returns HTTP 200 status code.\n\n#### Operation Types\n\n- **ADD**: Adds the specified groups to the column's access list\n- **REMOVE**: Removes the specified groups from the column's access list \n- **REPLACE**: Replaces all existing groups with the specified groups \n\n\n\n#### Endpoint URL\n", + "operationId": "fetchPermissionsOnMetadata", + "description": "\n Version: 9.0.0.cl or later\n\nFetches permission details for a given metadata object.\n\nRequires view access to the metadata object.\n\n#### Usage guidelines\n\n* To fetch a list of users and groups for a metadata object, specify `type` and GUID or name of the metadata object.\n* To get permission details for a specific user or group, add `type` and GUID or name of the principal object to your API request.\n\nUpon successful execution, the API returns permission details and principal information for the object specified in the API request.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "10.12.0.cl" + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "identifier": { - "description": "GUID or name of the table for which we want to create column security rules", - "type": "string" - }, - "obj_identifier": { - "description": "The object ID of the table", - "type": "string" - }, - "clear_csr": { - "description": "If true, then all the secured columns will be marked as unprotected, and all the group associations will be removed", - "type": "boolean", - "nullable": true - }, - "column_security_rules": { - "description": "Array where each object defines the security rule for a specific column", - "type": "array", - "items": { - "$ref": "#/components/schemas/ColumnSecurityRuleUpdate" - } - } - }, - "required": [ - "column_security_rules" - ] + "$ref": "#/components/schemas/FetchPermissionsOnMetadataRequest" } } }, @@ -12460,11 +7782,74 @@ }, "parameters": [], "responses": { - "204": { - "description": "Successfully updated column security rules" + "200": { + "description": "Fetching permissions of metadata objects is successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionOfMetadataResponse" + }, + "examples": { + "example_1": { + "value": { + "metadata_permission_details": [ + { + "metadata_id": "a62a5bf3-9f16-45b2-a174-7d30b3b577a9", + "metadata_name": "testing", + "metadata_type": "LIVEBOARD", + "metadata_owner": { + "id": "a62a5bf3-9f16-45b2-a174-7d30b3b577a9", + "name": "testing" + }, + "metadata_author": { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "tsadmin" + }, + "principal_permission_info": [ + { + "principal_type": "USER_GROUP", + "principal_sub_type": "LOCAL_GROUP", + "principal_permissions": [ + { + "principal_id": "d0326b56-ef23-4c8a-8327-a30e99bcc72b", + "principal_name": "Administrator", + "permission": "MODIFY", + "shared_permission": "NO_ACCESS", + "group_permission": [] + } + ] + }, + { + "principal_type": "USER", + "principal_sub_type": "LOCAL_USER", + "principal_permissions": [ + { + "principal_id": "0f0dd0f7-7411-4195-a4aa-0dc6b58413c9", + "principal_name": "su", + "permission": "MODIFY", + "shared_permission": "NO_ACCESS", + "group_permission": [] + }, + { + "principal_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "principal_name": "tsadmin", + "permission": "MODIFY", + "shared_permission": "NO_ACCESS", + "group_permission": [] + } + ] + } + ] + } + ] + } + } + } + } + } }, "400": { - "description": "Bad request - Invalid parameters or table not found", + "description": "Invalid request.", "content": { "application/json": { "schema": { @@ -12484,7 +7869,7 @@ } }, "403": { - "description": "Forbidden - User doesn't have permission to modify security rules for this table", + "description": "Forbidden access.", "content": { "application/json": { "schema": { @@ -12494,7 +7879,7 @@ } }, "500": { - "description": "Internal server error", + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -12506,35 +7891,19 @@ } } }, - "/api/rest/2.0/system/preferences/communication-channels/configure": { + "/api/rest/2.0/security/metadata/manage-object-privilege": { "post": { - "operationId": "configureCommunicationChannelPreferences", - "description": "\nBeta Version: 10.14.0.cl or later\n\nConfigure communication channel preferences.\n- Use `cluster_preferences` to update the default preferences for your ThoughtSpot application instance.\n- If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), use `org_preferences` to specify Org-specific preferences that override the defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "manageObjectPrivilege", + "description": "\n Version: 26.3.0.cl or later\n\nThis API allows the addition or deletion of object level privileges for a set of users and groups, on a set of metadata objects. It provides users to access certain features based on privilege based access control.\n\n#### Usage guidelines\n\n- Specify the `operation`. The supported operations are: `ADD`, `REMOVE`.\n- Specify the type of the objects on which the object privileges are being provided in `metadata_type`. Only `LOGICAL_TABLE` metadata type is supported for now. It may be extended for other metadata types in future.\n- Specify the list of object privilege types in the `object_privilege_types` array. The supported object privilege types are: `SPOTTER_COACHING_PRIVILEGE`.\n- Specify the identifiers (either GUID or name) for the metadata objects in the `metadata_identifiers` array.\n- Specify the `type` (`USER` or `USER_GROUP`) and `identifier` (either GUID or name) of the principals to which you want to apply the given operation and given object privileges in the `principals` array.\n- Ensure using correct Authorization Bearer Token corresponding to specific user & org.\n\n#### Example request\n\n```json\n{\n \"operation\": \"operation-type\",\n \"metadata_type\": \"metadata-type\",\n \"object_privilege_types\": [\"privilege-type-1\", \"privilege-type-2\"],\n \"metadata_identifiers\": [\"metadata-guid-or-name-1\", \"metadata-guid-or-name-1\"],\n \"principals\": [\n {\n \"type\": \"type-1\", \n \"identifier\": \"principal-guid-or-name-1\"\n },\n {\n \"type\": \"type-2\",\n \"identifier\": \"principal-guid-or-name-2\"\n }\n ]\n}\n```\n\n> ###### Note:\n> * Only admin users, users with edit access and users with coaching privilege on a given data-model can add or remove principals related to SPOTTER_COACHING_PRIVILEGE \n\n\n\n#### Endpoint URL\n", "tags": [ - "System", - "10.14.0.cl" + "Security", + "26.3.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "cluster_preferences": { - "description": "Cluster-level default configurations.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfigInput" - } - }, - "org_preferences": { - "description": "Org-specific configurations.", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrgChannelConfigInput" - } - } - } + "$ref": "#/components/schemas/ManageObjectPrivilegeRequest" } } }, @@ -12543,10 +7912,10 @@ "parameters": [], "responses": { "204": { - "description": "Communication channel preferences successfully updated." + "description": "Object privileges added/removed successfully" }, "400": { - "description": "Invalid request.", + "description": "Invalid request", "content": { "application/json": { "schema": { @@ -12556,7 +7925,7 @@ } }, "401": { - "description": "Unauthorized access.", + "description": "Unauthorized access", "content": { "application/json": { "schema": { @@ -12566,7 +7935,7 @@ } }, "403": { - "description": "Forbidden access.", + "description": "Forbidden access", "content": { "application/json": { "schema": { @@ -12588,36 +7957,19 @@ } } }, - "/api/rest/2.0/system/security-settings/configure": { + "/api/rest/2.0/security/metadata/publish": { "post": { - "operationId": "configureSecuritySettings", - "description": "\nBeta Version: 26.2.0.cl or later\n\nConfigure security settings for your ThoughtSpot application instance.\n- Use `cluster_preferences` to update cluster-level security settings including CORS whitelisted URLs, CSP settings, SAML redirect URLs, partitioned cookies, and non-embed access configuration.\n- Use `org_preferences` to configure Org-specific security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this allows configuring CORS and non-embed access settings specific to the Org.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. Cluster-level SAML and script-src settings require `ADMINISTRATION` privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", + "operationId": "publishMetadata", + "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "System", - "26.2.0.cl" + "Security", + "10.9.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "cluster_preferences": { - "description": "Cluster-level security preferences.", - "allOf": [ - { - "$ref": "#/components/schemas/SecuritySettingsClusterPreferencesInput" - } - ] - }, - "org_preferences": { - "description": "Org-level security preferences for the current org.", - "type": "array", - "items": { - "$ref": "#/components/schemas/SecuritySettingsOrgPreferencesInput" - } - } - } + "$ref": "#/components/schemas/PublishMetadataRequest" } } }, @@ -12626,7 +7978,7 @@ "parameters": [], "responses": { "204": { - "description": "Successfully configured the security settings." + "description": "Publishing metadata objects is successful." }, "400": { "description": "Invalid request.", @@ -12671,35 +8023,29 @@ } } }, - "/api/rest/2.0/system/config": { - "get": { - "operationId": "getSystemConfig", - "description": "\n Version: 9.0.0.cl or later\n\nRetrieves the current configuration details of the cluster. If the request is successful, the API returns a list configuration settings applied on the cluster.\n\nRequires `ADMINISTRATION`(**Can administer ThoughtSpot**) privilege to view these complete configuration settings of the cluster.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `SYSTEM_INFO_ADMINISTRATION` (**Can view system activities**) privilege is required.\n\nThis API does not require any parameters to be passed in the request.\n\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/security/metadata/share": { + "post": { + "operationId": "shareMetadata", + "description": "\n Version: 9.0.0.cl or later\n\nAllows sharing one or several metadata objects with users and groups in ThoughtSpot.\n\nRequires edit access to the metadata object.\n\n#### Supported metadata objects:\n* Liveboards\n* Visualizations\n* Answers\n* Models\n* Views\n* Connections\n\n#### Object permissions\n\nYou can provide `READ_ONLY` or `MODIFY` access when sharing an object with another user or group. The `READ_ONLY` permission grants view access to the shared object, whereas `MODIFY` provides edit access.\n\nTo prevent a user or group from accessing the shared object, specify the GUID or name of the principal and set `shareMode` to `NO_ACCESS`.\n\n#### Sharing a visualization\n\n* Sharing a visualization implicitly shares the entire Liveboard with the recipient. \n* Object permissions set for a shared visualization also apply to the Liveboard unless overridden by another API request or via UI.\n* If email notifications for object sharing are enabled, a notification with a link to the shared visualization will be sent to the recipient’s email address. Although this link opens the shared visualization, recipients can also access other visualizations in the Liveboard.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "System", + "Security", "9.0.0.cl" ], - "parameters": [], - "responses": { - "200": { - "description": "Cluster config information.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SystemConfig" - }, - "examples": { - "example_1": { - "value": { - "onboarding_content_url": "", - "saml_enabled": false, - "okta_enabled": false - } - } - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ShareMetadataRequest" } } }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Sharing metadata objects is successful." + }, "400": { "description": "Invalid request.", "content": { @@ -12743,55 +8089,29 @@ } } }, - "/api/rest/2.0/system": { - "get": { - "operationId": "getSystemInformation", - "description": "\n Version: 9.0.0.cl or later\n\nGets system information such as the release version, locale, time zone, deployment environment, date format, and date time format of the cluster.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `SYSTEM_INFO_ADMINISTRATION` (**Can view system activities**) privilege is required.\n\nThis API does not require any parameters to be passed in the request. \n\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/security/metadata/unpublish": { + "post": { + "operationId": "unpublishMetadata", + "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows unpublishing metadata objects from organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows unpublishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nWhen unpublishing objects, you can:\n* Include dependencies by setting `include_dependencies` to true - this will unpublish all dependent objects if no other published object is using them\n* Force unpublish by setting `force` to true - this will break all dependent objects in the unpublished organizations\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "System", - "9.0.0.cl" + "Security", + "10.9.0.cl" ], - "parameters": [], - "responses": { - "200": { - "description": "Cluster information.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SystemInfo" - }, - "examples": { - "example_1": { - "value": { - "id": "local", - "name": "local", - "release_version": "test", - "time_zone": "America/Los_Angeles", - "locale": "", - "date_format": "MM/dd/yyyy", - "api_version": "v1", - "type": "SW", - "environment": "DEV", - "license": "EAE", - "date_time_format": "MM/dd/yyyy h:mm a", - "time_format": "HH:mm:ss", - "system_user_id": "67e15c06-d153-4924-a4cd-ff615393b60f", - "super_user_id": "0f0dd0f7-7411-4195-a4aa-0dc6b58413c9", - "hidden_object_id": "31745bb4-defd-4e8b-8de9-8fd01db78827", - "system_group_id": "179d8867-cf36-4a8d-a019-63a226fd3196", - "tsadmin_user_id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "admin_group_id": "d0326b56-ef23-4c8a-8327-a30e99bcc72b", - "all_tables_connection_id": "bfc6feb4-8dac-402c-8ae8-78b43d318777", - "all_user_group_id": "b25ee394-9d13-49e3-9385-cd97f5b253b4", - "accept_language": "undefined", - "all_user_group_member_user_count": 13, - "logical_model_version": 43 - } - } - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnpublishMetadataRequest" } } }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Unpublishing metadata objects is successful." + }, "400": { "description": "Invalid request.", "content": { @@ -12835,28 +8155,31 @@ } } }, - "/api/rest/2.0/system/config-overrides": { - "get": { - "operationId": "getSystemOverrideInfo", - "description": "\n Version: 9.2.0.cl or later\n\nGets a list of configuration overrides applied on the cluster. \n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege is required.\n\nThis API does not require any parameters to be passed in the request. \n\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/security/column/rules/update": { + "post": { + "operationId": "updateColumnSecurityRules", + "description": "\nBeta Version: 10.12.0.cl or later\n\nCreates, updates, or deletes column security rules for specified tables.\n\nThis API endpoint allows you to create, update, or delete column-level security rules on columns of a table. The operation follows an \"all or none\" policy: if defining security rules for any of the provided columns fails, the entire operation will be rolled back, and no rules will be created.\n\n#### Usage guidelines\n\n- Provide table identifier using either `identifier` (GUID or name) or `obj_identifier` (object ID)\n- Use `clear_csr: true` to remove all column security rules from the table\n- For each column, specify the security rule using `column_security_rules` array\n- Use `is_unsecured: true` to mark a specific column as unprotected\n- Use `group_access` operations to manage group associations:\n - `ADD`: Add groups to the column's access list\n - `REMOVE`: Remove groups from the column's access list\n - `REPLACE`: Replace all existing groups with the specified groups\n\n#### Required permissions\n\n- `ADMINISTRATION` - Can administer ThoughtSpot\n- `DATAMANAGEMENT` - Can manage data (if RBAC is disabled)\n- `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` - Can manage worksheet views and tables (if RBAC is enabled)\n\n#### Example request\n\n```json\n{\n \"identifier\": \"table-guid\",\n \"obj_identifier\": \"table-object-id\",\n \"clear_csr\": false,\n \"column_security_rules\": [\n {\n \"column_identifier\": \"col id or col name\",\n \"is_unsecured\": false,\n \"group_access\": [\n {\n \"operation\": \"ADD\",\n \"group_identifiers\": [\"hr_group_id\", \"hr_group_name\", \"finance_group_id\"]\n }\n ]\n },\n {\n \"column_identifier\": \"col id or col name\",\n \"is_unsecured\": true\n },\n {\n \"column_identifier\": \"col id or col name\",\n \"is_unsecured\": false,\n \"group_access\": [\n {\n \"operation\": \"REPLACE\",\n \"group_identifiers\": [\"management_group_id\", \"management_group_name\"]\n }\n ]\n }\n ]\n}\n```\n\n#### Request Body Schema\n\n- `identifier` (string, optional): GUID or name of the table for which we want to create column security rules\n- `obj_identifier` (string, optional): The object ID of the table\n- `clear_csr` (boolean, optional): If true, then all the secured columns will be marked as unprotected, and all the group associations will be removed\n- `column_security_rules` (array of objects, required): An array where each object defines the security rule for a specific column\n\nEach column security rule object contains:\n- `column_identifier` (string, required): Column identifier (col_id or name)\n- `is_unsecured` (boolean, optional): If true, the column will be marked as unprotected and all groups associated with it will be removed\n- `group_access` (array of objects, optional): Array of group operation objects\n\nEach group operation object contains:\n- `operation` (string, required): Operation type - ADD, REMOVE, or REPLACE\n- `group_identifiers` (array of strings, required): Array of group identifiers (name or GUID) on which the operation will be performed\n\n#### Response\n\nThis API does not return any response body. A successful operation returns HTTP 200 status code.\n\n#### Operation Types\n\n- **ADD**: Adds the specified groups to the column's access list\n- **REMOVE**: Removes the specified groups from the column's access list \n- **REPLACE**: Replaces all existing groups with the specified groups \n\n\n\n#### Endpoint URL\n", "tags": [ - "System", - "9.2.0.cl" + "Security", + "10.12.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateColumnSecurityRulesRequest" + } + } + }, + "required": true + }, "parameters": [], "responses": { - "200": { - "description": "Cluster configuration which can be overridden.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SystemOverrideInfo" - } - } - } - }, - "400": { - "description": "Invalid request.", + "204": { + "description": "Successfully updated column security rules" + }, + "400": { + "description": "Bad request - Invalid parameters or table not found", "content": { "application/json": { "schema": { @@ -12876,7 +8199,7 @@ } }, "403": { - "description": "Forbidden access.", + "description": "Forbidden - User doesn't have permission to modify security rules for this table", "content": { "application/json": { "schema": { @@ -12886,7 +8209,7 @@ } }, "500": { - "description": "Unexpected error", + "description": "Internal server error", "content": { "application/json": { "schema": { @@ -12898,10 +8221,10 @@ } } }, - "/api/rest/2.0/system/preferences/communication-channels/search": { + "/api/rest/2.0/system/preferences/communication-channels/configure": { "post": { - "operationId": "searchCommunicationChannelPreferences", - "description": "\nBeta Version: 10.14.0.cl or later\n\nFetch communication channel preferences.\n- Use `cluster_preferences` to fetch the default preferences for your ThoughtSpot application instance.\n- If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), use `org_preferences` to fetch any Org-specific preferences that override the defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "configureCommunicationChannelPreferences", + "description": "\nBeta Version: 10.14.0.cl or later\n\nConfigure communication channel preferences.\n- Use `cluster_preferences` to update the default preferences for your ThoughtSpot application instance.\n- If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), use `org_preferences` to specify Org-specific preferences that override the defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "System", "10.14.0.cl" @@ -12910,26 +8233,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "cluster_preferences": { - "description": "Event types to search for in cluster-level preferences.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - } - }, - "org_preferences": { - "description": "Org-specific search criteria.", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrgPreferenceSearchCriteriaInput" - } - } - } + "$ref": "#/components/schemas/ConfigureCommunicationChannelPreferencesRequest" } } }, @@ -12937,45 +8241,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Communication channel preferences retrieved successfully.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CommunicationChannelPreferencesResponse" - }, - "examples": { - "example_1": { - "value": { - "cluster_preferences": [ - { - "event_type": "LIVEBOARD_SCHEDULE", - "channels": [ - "WEBHOOK" - ] - } - ], - "org_preferences": [ - { - "org": { - "id": "583464508", - "name": "test_org" - }, - "preferences": [ - { - "event_type": "LIVEBOARD_SCHEDULE", - "channels": [ - "EMAIL" - ] - } - ] - } - ] - } - } - } - } - } + "204": { + "description": "Communication channel preferences successfully updated." }, "400": { "description": "Invalid request.", @@ -13020,10 +8287,10 @@ } } }, - "/api/rest/2.0/system/security-settings/search": { + "/api/rest/2.0/system/security-settings/configure": { "post": { - "operationId": "searchSecuritySettings", - "description": "\nBeta Version: 26.2.0.cl or later\n\nFetch security settings for your ThoughtSpot application instance.\n- Use `scope: CLUSTER` to retrieve cluster-level security settings, including CORS and CSP allowlists, SAML redirect URLs, and settings that control access to non-embedded pages.\n- Use `scope: ORG` to retrieve Org-level security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this returns CORS and non-embed access settings specific to the Org.\n- If `scope` is not specified, returns both cluster and Org-specific settings based on user privileges.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", + "operationId": "configureSecuritySettings", + "description": "\n Version: 26.2.0.cl or later\n\nConfigure security settings for your ThoughtSpot application instance.\n- Use `cluster_preferences` to update cluster-level security settings including CORS whitelisted URLs, CSP settings, SAML redirect URLs, partitioned cookies, and non-embed access configuration.\n- Use `org_preferences` to configure Org-specific security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this allows configuring CORS and non-embed access settings specific to the Org.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. Cluster-level SAML and script-src settings require `ADMINISTRATION` privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", "tags": [ "System", "26.2.0.cl" @@ -13032,17 +8299,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "description": "Scope of security settings to retrieve. CLUSTER returns cluster-level settings,\nORG returns org-level settings for the current org.\nIf not specified, returns both cluster and org settings based on user privileges.", - "type": "string", - "enum": [ - "CLUSTER", - "ORG" - ] - } - } + "$ref": "#/components/schemas/ConfigureSecuritySettingsRequest" } } }, @@ -13050,79 +8307,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Successfully retrieved the list of security settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SecuritySettingsResponse" - }, - "examples": { - "example_1": { - "value": { - "cluster_preferences": { - "enable_partitioned_cookies": false, - "cors_whitelisted_urls": [ - "example.com" - ], - "csp_settings": { - "connect_src_urls": [ - "https://connect.example.com" - ], - "font_src_urls": [ - "https://font.example.com" - ], - "visual_embed_hosts": [ - "https://embed.example.com" - ], - "iframe_src_urls": [ - "https://embed.example.com" - ], - "img_src_urls": [ - "https://img.example.com" - ], - "script_src_urls": { - "enabled": true, - "urls": [ - "https://script.example.com" - ] - }, - "style_src_urls": [ - "https://style.example.com" - ] - }, - "saml_redirect_urls": [ - "https://saml.example.com" - ], - "non_embed_access": { - "block_full_app_access": true - } - }, - "org_preferences": [ - { - "org": { - "id": 0, - "name": "Primary" - }, - "cors_whitelisted_urls": [ - "https://cors.example.com" - ], - "non_embed_access": { - "block_full_app_access": true, - "groups_with_access": [ - { - "id": "1234567890", - "name": "Group Name" - } - ] - } - } - ] - } - } - } - } - } + "204": { + "description": "Successfully configured the security settings." }, "400": { "description": "Invalid request.", @@ -13167,38 +8353,35 @@ } } }, - "/api/rest/2.0/system/config-update": { - "post": { - "operationId": "updateSystemConfig", - "description": "\n Version: 9.2.0.cl or later\n\nUpdates the current configuration of the cluster. You must send the configuration data in JSON format.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/system/config": { + "get": { + "operationId": "getSystemConfig", + "description": "\n Version: 9.0.0.cl or later\n\nRetrieves the current configuration details of the cluster. If the request is successful, the API returns a list configuration settings applied on the cluster.\n\nRequires `ADMINISTRATION`(**Can administer ThoughtSpot**) privilege to view these complete configuration settings of the cluster.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `SYSTEM_INFO_ADMINISTRATION` (**Can view system activities**) privilege is required.\n\nThis API does not require any parameters to be passed in the request.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "System", - "9.2.0.cl" + "9.0.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "configuration": { - "description": "Configuration JSON with the key-value pair of configuration attributes to be updated.", - "type": "object" - } + "parameters": [], + "responses": { + "200": { + "description": "Cluster config information.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemConfig" }, - "required": [ - "configuration" - ] + "examples": { + "example_1": { + "value": { + "onboarding_content_url": "", + "saml_enabled": false, + "okta_enabled": false + } + } + } } } }, - "required": true - }, - "parameters": [], - "responses": { - "204": { - "description": "Configuration successfully updated." - }, "400": { "description": "Invalid request.", "content": { @@ -13242,147 +8425,49 @@ } } }, - "/api/rest/2.0/tags/assign": { - "post": { - "operationId": "assignTag", - "description": "\n Version: 9.0.0.cl or later\n\nAssigns tags to Liveboards, Answers, Tables, and Worksheets.\n\nRequires edit access to the metadata object.\n\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/system": { + "get": { + "operationId": "getSystemInformation", + "description": "\n Version: 9.0.0.cl or later\n\nGets system information such as the release version, locale, time zone, deployment environment, date format, and date time format of the cluster.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `SYSTEM_INFO_ADMINISTRATION` (**Can view system activities**) privilege is required.\n\nThis API does not require any parameters to be passed in the request. \n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Tags", + "System", "9.0.0.cl" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/TagMetadataTypeInput" - } - }, - "tag_identifiers": { - "description": "GUID or name of the tag.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "metadata", - "tag_identifiers" - ] - } - } - }, - "required": true - }, "parameters": [], "responses": { - "204": { - "description": "Tags successfully assigned." - }, - "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.", + "200": { + "description": "Cluster information.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/tags/create": { - "post": { - "operationId": "createTag", - "description": "\n Version: 9.0.0.cl or later\n\nCreates a tag object.\n\nTags are labels that identify a metadata object. For example, you can create a tag to designate subject areas, such as sales, HR, marketing, and finance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Tags", - "9.0.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the tag.", - "type": "string" - }, - "color": { - "description": "Hex color code to be assigned to the tag. For example, #ff78a9.", - "type": "string" - } - }, - "required": [ - "name" - ] - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Tag successfully created.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Tag" + "$ref": "#/components/schemas/SystemInfo" }, "examples": { "example_1": { "value": { - "name": "test5", - "id": "6abf5aec-3485-4f83-b25f-8c55b92e2b20", - "color": "#342323", - "deleted": false, - "hidden": false, - "external": false, - "deprecated": false, - "creation_time_in_millis": 1685441468684, - "modification_time_in_millis": 1685441468684, - "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "modifier_id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "owner_id": "6abf5aec-3485-4f83-b25f-8c55b92e2b20" + "id": "local", + "name": "local", + "release_version": "test", + "time_zone": "America/Los_Angeles", + "locale": "", + "date_format": "MM/dd/yyyy", + "api_version": "v1", + "type": "SW", + "environment": "DEV", + "license": "EAE", + "date_time_format": "MM/dd/yyyy h:mm a", + "time_format": "HH:mm:ss", + "system_user_id": "67e15c06-d153-4924-a4cd-ff615393b60f", + "super_user_id": "0f0dd0f7-7411-4195-a4aa-0dc6b58413c9", + "hidden_object_id": "31745bb4-defd-4e8b-8de9-8fd01db78827", + "system_group_id": "179d8867-cf36-4a8d-a019-63a226fd3196", + "tsadmin_user_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "admin_group_id": "d0326b56-ef23-4c8a-8327-a30e99bcc72b", + "all_tables_connection_id": "bfc6feb4-8dac-402c-8ae8-78b43d318777", + "all_user_group_id": "b25ee394-9d13-49e3-9385-cd97f5b253b4", + "accept_language": "undefined", + "all_user_group_member_user_count": 13, + "logical_model_version": 43 } } } @@ -13432,28 +8517,25 @@ } } }, - "/api/rest/2.0/tags/{tag_identifier}/delete": { - "post": { - "operationId": "deleteTag", - "description": "\n Version: 9.0.0.cl or later\n\nDeletes a tag object from the ThoughtSpot system\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", + "/api/rest/2.0/system/config-overrides": { + "get": { + "operationId": "getSystemOverrideInfo", + "description": "\n Version: 9.2.0.cl or later\n\nGets a list of configuration overrides applied on the cluster. \n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege is required.\n\nThis API does not require any parameters to be passed in the request. \n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Tags", - "9.0.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "tag_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Tag identifier Tag name or Tag id." - } + "System", + "9.2.0.cl" ], + "parameters": [], "responses": { - "204": { - "description": "Tag successfully deleted." + "200": { + "description": "Cluster configuration which can be overridden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemOverrideInfo" + } + } + } }, "400": { "description": "Invalid request.", @@ -13498,33 +8580,19 @@ } } }, - "/api/rest/2.0/tags/search": { + "/api/rest/2.0/system/preferences/communication-channels/search": { "post": { - "operationId": "searchTags", - "description": "\n Version: 9.0.0.cl or later\n\nGets a list of tag objects available on the ThoughtSpot system. To get details of a specific tag object, specify the GUID or name.\n\nAny authenticated user can search for tag objects.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchCommunicationChannelPreferences", + "description": "\nBeta Version: 10.14.0.cl or later\n\nFetch communication channel preferences.\n- Use `cluster_preferences` to fetch the default preferences for your ThoughtSpot application instance.\n- If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), use `org_preferences` to fetch any Org-specific preferences that override the defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Tags", - "9.0.0.cl" + "System", + "10.14.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "tag_identifier": { - "description": "Name or Id of the tag.", - "type": "string" - }, - "name_pattern": { - "description": "A pattern to match case-insensitive name of the Tag object.", - "type": "string" - }, - "color": { - "description": "Color of the tag.", - "type": "string" - } - } + "$ref": "#/components/schemas/SearchCommunicationChannelPreferencesRequest" } } }, @@ -13533,47 +8601,40 @@ "parameters": [], "responses": { "200": { - "description": "Tags search result.", + "description": "Communication channel preferences retrieved successfully.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } + "$ref": "#/components/schemas/CommunicationChannelPreferencesResponse" }, "examples": { "example_1": { - "value": [ - { - "name": "test4", - "id": "0935bbb5-17e2-43ab-b657-da6bf347cbb4", - "color": "#342323", - "deleted": false, - "hidden": false, - "external": false, - "deprecated": false, - "creation_time_in_millis": 1684937524885, - "modification_time_in_millis": 1684937524885, - "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "modifier_id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "owner_id": "0935bbb5-17e2-43ab-b657-da6bf347cbb4" - }, - { - "name": "test6", - "id": "65a5c39a-daf5-4cae-975f-44283628494e", - "color": "#342323", - "deleted": false, - "hidden": false, - "external": false, - "deprecated": false, - "creation_time_in_millis": 1684988834183, - "modification_time_in_millis": 1684988887888, - "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "modifier_id": "59481331-ee53-42be-a548-bd87be6ddd4a", - "owner_id": "65a5c39a-daf5-4cae-975f-44283628494e" - } - ] + "value": { + "cluster_preferences": [ + { + "event_type": "LIVEBOARD_SCHEDULE", + "channels": [ + "WEBHOOK" + ] + } + ], + "org_preferences": [ + { + "org": { + "id": "583464508", + "name": "test_org" + }, + "preferences": [ + { + "event_type": "LIVEBOARD_SCHEDULE", + "channels": [ + "EMAIL" + ] + } + ] + } + ] + } } } } @@ -13622,39 +8683,19 @@ } } }, - "/api/rest/2.0/tags/unassign": { + "/api/rest/2.0/system/security-settings/search": { "post": { - "operationId": "unassignTag", - "description": "\n Version: 9.0.0.cl or later\n\nRemoves the tags applied to a Liveboard, Answer, Table, or Worksheet.\n\nRequires edit access to the metadata object.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchSecuritySettings", + "description": "\n Version: 26.2.0.cl or later\n\nFetch security settings for your ThoughtSpot application instance.\n- Use `scope: CLUSTER` to retrieve cluster-level security settings, including CORS and CSP allowlists, SAML redirect URLs, and settings that control access to non-embedded pages.\n- Use `scope: ORG` to retrieve Org-level security settings. If your instance has [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview), this returns CORS and non-embed access settings specific to the Org.\n- If `scope` is not specified, returns both cluster and Org-specific settings based on user privileges.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\nSee [Security Settings](https://developers.thoughtspot.com/docs/security-settings) for more details.\n\n\n\n#### Endpoint URL\n", "tags": [ - "Tags", - "9.0.0.cl" + "System", + "26.2.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/TagMetadataTypeInput" - } - }, - "tag_identifiers": { - "description": "GUID or name of the tag.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "metadata", - "tag_identifiers" - ] + "$ref": "#/components/schemas/SearchSecuritySettingsRequest" } } }, @@ -13662,41 +8703,112 @@ }, "parameters": [], "responses": { - "204": { - "description": "Tags successfully unassigned." - }, - "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.", + "200": { + "description": "Successfully retrieved the list of security settings.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", + "$ref": "#/components/schemas/SecuritySettingsResponse" + }, + "examples": { + "example_1": { + "value": { + "cluster_preferences": { + "enable_partitioned_cookies": false, + "cors_whitelisted_urls": [ + "example.com" + ], + "csp_settings": { + "connect_src_urls": [ + "https://connect.example.com" + ], + "font_src_urls": [ + "https://font.example.com" + ], + "visual_embed_hosts": [ + "https://embed.example.com" + ], + "iframe_src_urls": [ + "https://embed.example.com" + ], + "img_src_urls": [ + "https://img.example.com" + ], + "script_src_urls": { + "enabled": true, + "urls": [ + "https://script.example.com" + ] + }, + "style_src_urls": [ + "https://style.example.com" + ] + }, + "saml_redirect_urls": [ + "https://saml.example.com" + ], + "non_embed_access": { + "block_full_app_access": true + } + }, + "org_preferences": [ + { + "org": { + "id": 0, + "name": "Primary" + }, + "cors_whitelisted_urls": [ + "https://cors.example.com" + ], + "non_embed_access": { + "block_full_app_access": true, + "groups_with_access": [ + { + "id": "1234567890", + "name": "Group Name" + } + ] + } + } + ] + } + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", "content": { "application/json": { "schema": { @@ -13708,48 +8820,28 @@ } } }, - "/api/rest/2.0/tags/{tag_identifier}/update": { + "/api/rest/2.0/system/config-update": { "post": { - "operationId": "updateTag", - "description": "\n Version: 9.0.0.cl or later\n\nUpdates a tag object.\n\nYou can modify the `name` and `color` properties of a tag object. \n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateSystemConfig", + "description": "\n Version: 9.2.0.cl or later\n\nUpdates the current configuration of the cluster. You must send the configuration data in JSON format.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `APPLICATION_ADMINISTRATION` (**Can manage application settings**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Tags", - "9.0.0.cl" + "System", + "9.2.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the tag.", - "type": "string" - }, - "color": { - "description": "Hex color code to be assigned to the tag. For example, #ff78a9.", - "type": "string" - } - } + "$ref": "#/components/schemas/UpdateSystemConfigRequest" } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "tag_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Name or Id of the tag." - } - ], + "parameters": [], "responses": { "204": { - "description": "Tag successfully updated." + "description": "Configuration successfully updated." }, "400": { "description": "Invalid request.", @@ -13794,42 +8886,19 @@ } } }, - "/api/rest/2.0/users/activate": { + "/api/rest/2.0/system/communication-channels/validate": { "post": { - "operationId": "activateUser", - "description": "\n Version: 9.7.0.cl or later\n\nActivates a deactivated user account.\n\nRequires `ADMINISTRATION` (**Can administer Thoughtspot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\nTo activate an inactive user account, the API request body must include the following information:\n\n- Username or the GUID of the user account.\n- Auth token generated for the deactivated user. The auth token is sent in the API response when a user is deactivated.\n- Password for the user account.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "validateCommunicationChannel", + "description": "\nBeta Version: 26.4.0.cl or later\n\nValidates a communication channel configuration to ensure it is properly set up and can receive events.\n- Use `channel_type` to specify the type of communication channel to validate (e.g., WEBHOOK).\n- Use `channel_identifier` to provide the unique identifier or name for the communication channel.\n- Use `event_type` to specify the event type to validate for this channel.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. For webhook channels, 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": [ - "Users", - "9.7.0.cl" + "System", + "26.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "user_identifier": { - "description": "Unique ID or name of the user.", - "type": "string" - }, - "auth_token": { - "description": "Auth token for the user.", - "type": "string" - }, - "password": { - "description": "New password for the user to access the account.", - "type": "string" - }, - "properties": { - "description": "Properties of the user.", - "type": "string" - } - }, - "required": [ - "user_identifier", - "auth_token", - "password" - ] + "$ref": "#/components/schemas/ValidateCommunicationChannelRequest" } } }, @@ -13838,11 +8907,11 @@ "parameters": [], "responses": { "200": { - "description": "User activated successfully.", + "description": "communication channel configuration validated successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/User" + "$ref": "#/components/schemas/CommunicationChannelValidateResponse" } } } @@ -13890,38 +8959,19 @@ } } }, - "/api/rest/2.0/users/change-password": { + "/api/rest/2.0/tags/assign": { "post": { - "operationId": "changeUserPassword", - "description": "\n Version: 9.0.0.cl or later\n\nUpdates the current password of the user.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "assignTag", + "description": "\n Version: 9.0.0.cl or later\n\nAssigns tags to Liveboards, Answers, Tables, and Worksheets.\n\nRequires edit access to the metadata object.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Users", + "Tags", "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "current_password": { - "description": "Current password of the user.", - "type": "string" - }, - "new_password": { - "description": "New password for the user.", - "type": "string" - }, - "user_identifier": { - "description": "GUID or name of the user.", - "type": "string" - } - }, - "required": [ - "current_password", - "new_password", - "user_identifier" - ] + "$ref": "#/components/schemas/AssignTagRequest" } } }, @@ -13930,7 +8980,7 @@ "parameters": [], "responses": { "204": { - "description": "User password change operation successful." + "description": "Tags successfully assigned." }, "400": { "description": "Invalid request.", @@ -13975,175 +9025,19 @@ } } }, - "/api/rest/2.0/users/create": { + "/api/rest/2.0/tags/create": { "post": { - "operationId": "createUser", - "description": "\n Version: 9.0.0.cl or later\n\nCreates a user in ThoughtSpot.\n\nThe API endpoint allows you to configure several user properties such as email address, account status, share notification preferences, and sharing visibility. You can provision the user to [groups](https://docs.thoughtspot.com/cloud/latest/groups-privileges) and [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview). You can also add Liveboard, Answer, and Worksheet objects to the user’s favorites list, assign a default Liveboard for the user, and set user preferences.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createTag", + "description": "\n Version: 9.0.0.cl or later\n\nCreates a tag object.\n\nTags are labels that identify a metadata object. For example, you can create a tag to designate subject areas, such as sales, HR, marketing, and finance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Users", + "Tags", "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the user. The username string must be unique.", - "type": "string" - }, - "display_name": { - "description": "A unique display name string for the user account, usually their first and last name", - "type": "string" - }, - "password": { - "description": "Password for the user account. For IAMv2 users, you must set this password if you do not want to trigger an activation email.", - "type": "string" - }, - "email": { - "description": "Email of the user account", - "type": "string" - }, - "account_type": { - "description": "Type of the account.", - "default": "LOCAL_USER", - "type": "string", - "enum": [ - "LOCAL_USER", - "LDAP_USER", - "SAML_USER", - "OIDC_USER", - "REMOTE_USER" - ] - }, - "account_status": { - "description": "Current status of the user account. The `SUSPENDED` user state indicates a transitional state applicable to IAMv2 users only.", - "default": "ACTIVE", - "type": "string", - "enum": [ - "ACTIVE", - "INACTIVE", - "EXPIRED", - "LOCKED", - "PENDING", - "SUSPENDED" - ] - }, - "org_identifiers": { - "description": "List of Org IDs to which the user belongs.", - "type": "array", - "items": { - "type": "string" - } - }, - "group_identifiers": { - "description": "GUIDs or names of the groups to which the newly created user belongs.", - "type": "array", - "items": { - "type": "string" - } - }, - "visibility": { - "description": "Visibility of the users. When set to SHARABLE, the user is visible to other users and groups when they try to share an object.", - "default": "SHARABLE", - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ] - }, - "notify_on_share": { - "description": "User preference for receiving email notifications when another ThoughtSpot\nuser shares a metadata object such as Answer, Liveboard, or Worksheet.", - "default": true, - "type": "boolean", - "nullable": true - }, - "show_onboarding_experience": { - "description": "The user preference for revisiting the onboarding experience.", - "default": true, - "type": "boolean", - "nullable": true - }, - "onboarding_experience_completed": { - "description": "flag to get the on-boarding experience is completed or not.", - "default": false, - "type": "boolean", - "nullable": true - }, - "home_liveboard_identifier": { - "description": "GUID of the Liveboard to set a default Liveboard for the user.\nThoughtSpot displays this Liveboard on the Home page when the user logs in.", - "type": "string" - }, - "favorite_metadata": { - "description": "Metadata objects to add to the user's favorites list.", - "type": "array", - "items": { - "$ref": "#/components/schemas/FavoriteMetadataInput" - } - }, - "preferred_locale": { - "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", - "type": "string", - "enum": [ - "en-CA", - "en-GB", - "en-US", - "de-DE", - "ja-JP", - "zh-CN", - "pt-BR", - "fr-FR", - "fr-CA", - "es-US", - "da-DK", - "es-ES", - "fi-FI", - "sv-SE", - "nb-NO", - "pt-PT", - "nl-NL", - "it-IT", - "ru-RU", - "en-IN", - "de-CH", - "en-NZ", - "es-MX", - "en-AU", - "zh-Hant", - "ko-KR", - "en-DE" - ] - }, - "use_browser_language": { - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", - "type": "boolean", - "nullable": true - }, - "extended_properties": { - "description": "Properties for the user", - "type": "object" - }, - "extended_preferences": { - "description": "Preferences for the user", - "type": "object" - }, - "trigger_welcome_email": { - "description": "Flag to indicate whether welcome email should be sent to user. This parameter is applied only on clusters on which IAM is disabled.", - "type": "boolean", - "nullable": true - }, - "trigger_activation_email": { - "description": "Flag to indicate whether activation email should be sent to the user. Default value for IAMv2 users is set to true. Users must either set this to false, or enter a valid \npassword if they do not want to trigger an activation email.", - "type": "boolean", - "nullable": true - } - }, - "required": [ - "name", - "display_name", - "email" - ] + "$ref": "#/components/schemas/CreateTagRequest" } } }, @@ -14152,11 +9046,29 @@ "parameters": [], "responses": { "200": { - "description": "User successfully created.", + "description": "Tag successfully created.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/User" + "$ref": "#/components/schemas/Tag" + }, + "examples": { + "example_1": { + "value": { + "name": "test5", + "id": "6abf5aec-3485-4f83-b25f-8c55b92e2b20", + "color": "#342323", + "deleted": false, + "hidden": false, + "external": false, + "deprecated": false, + "creation_time_in_millis": 1685441468684, + "modification_time_in_millis": 1685441468684, + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "modifier_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "owner_id": "6abf5aec-3485-4f83-b25f-8c55b92e2b20" + } + } } } } @@ -14204,33 +9116,85 @@ } } }, - "/api/rest/2.0/users/deactivate": { + "/api/rest/2.0/tags/{tag_identifier}/delete": { "post": { - "operationId": "deactivateUser", - "description": "\n Version: 9.7.0.cl or later\n\nDeactivates a user account.\n\nRequires `ADMINISTRATION` (**Can administer Thoughtspot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\nTo deactivate a user account, the API request body must include the following information:\n\n- Username or the GUID of the user account\n- Base URL of the ThoughtSpot instance\n\nIf the API request is successful, ThoughtSpot returns the activation URL in the response. The activation URL is valid for 14 days and can be used to re-activate the account and reset the password of the deactivated account.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteTag", + "description": "\n Version: 9.0.0.cl or later\n\nDeletes a tag object from the ThoughtSpot system\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Users", - "9.7.0.cl" + "Tags", + "9.0.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "tag_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Tag identifier Tag name or Tag id." + } + ], + "responses": { + "204": { + "description": "Tag successfully deleted." + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/tags/search": { + "post": { + "operationId": "searchTags", + "description": "\n Version: 9.0.0.cl or later\n\nGets a list of tag objects available on the ThoughtSpot system. To get details of a specific tag object, specify the GUID or name.\n\nAny authenticated user can search for tag objects.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Tags", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "user_identifier": { - "description": "Unique ID or name of the user.", - "type": "string" - }, - "base_url": { - "description": "Base url of the cluster.", - "type": "string" - } - }, - "required": [ - "user_identifier", - "base_url" - ] + "$ref": "#/components/schemas/SearchTagsRequest" } } }, @@ -14239,11 +9203,48 @@ "parameters": [], "responses": { "200": { - "description": "User deactivated successfully.", + "description": "Tags search result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResponseActivationURL" + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "examples": { + "example_1": { + "value": [ + { + "name": "test4", + "id": "0935bbb5-17e2-43ab-b657-da6bf347cbb4", + "color": "#342323", + "deleted": false, + "hidden": false, + "external": false, + "deprecated": false, + "creation_time_in_millis": 1684937524885, + "modification_time_in_millis": 1684937524885, + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "modifier_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "owner_id": "0935bbb5-17e2-43ab-b657-da6bf347cbb4" + }, + { + "name": "test6", + "id": "65a5c39a-daf5-4cae-975f-44283628494e", + "color": "#342323", + "deleted": false, + "hidden": false, + "external": false, + "deprecated": false, + "creation_time_in_millis": 1684988834183, + "modification_time_in_millis": 1684988887888, + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "modifier_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "owner_id": "65a5c39a-daf5-4cae-975f-44283628494e" + } + ] + } } } } @@ -14291,28 +9292,28 @@ } } }, - "/api/rest/2.0/users/{user_identifier}/delete": { + "/api/rest/2.0/tags/unassign": { "post": { - "operationId": "deleteUser", - "description": "\n Version: 9.0.0.cl or later\n\nDeletes a user from the ThoughtSpot system.\n\nIf you want to remove a user from a specific Org but not from ThoughtSpot, update the group and Org mapping properties of the user object via a POST API call to the [/api/rest/2.0/users/{user_identifier}/update](#/http/api-endpoints/users/update-user) endpoint.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "unassignTag", + "description": "\n Version: 9.0.0.cl or later\n\nRemoves the tags applied to a Liveboard, Answer, Table, or Worksheet.\n\nRequires edit access to the metadata object.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Users", + "Tags", "9.0.0.cl" ], - "parameters": [ - { - "in": "path", - "name": "user_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "GUID / name of the user" - } - ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnassignTagRequest" + } + } + }, + "required": true + }, + "parameters": [], "responses": { "204": { - "description": "User successfully deleted." + "description": "Tags successfully unassigned." }, "400": { "description": "Invalid request.", @@ -14357,37 +9358,38 @@ } } }, - "/api/rest/2.0/users/force-logout": { + "/api/rest/2.0/tags/{tag_identifier}/update": { "post": { - "operationId": "forceLogoutUsers", - "description": "\n Version: 9.0.0.cl or later\n\nEnforces logout on current user sessions. \n\nUse this API with caution as it may invalidate active user sessions and force users to re-login. Make sure you specify the usernames or GUIDs. If you pass null values in the API call, all user sessions on your cluster become invalid, and the users are forced to re-login.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateTag", + "description": "\n Version: 9.0.0.cl or later\n\nUpdates a tag object.\n\nYou can modify the `name` and `color` properties of a tag object. \n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `TAGMANAGEMENT` (**Can manage tags**) privilege is required to create, edit, and delete tags.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Users", + "Tags", "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "user_identifiers": { - "description": "GUID or name of the users for force logging out their sessions.", - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/components/schemas/UpdateTagRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "tag_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Name or Id of the tag." + } + ], "responses": { "204": { - "description": "Force logging out of users operation successful." + "description": "Tag successfully updated." }, "400": { "description": "Invalid request.", @@ -14432,47 +9434,19 @@ } } }, - "/api/rest/2.0/users/import": { + "/api/rest/2.0/users/activate": { "post": { - "operationId": "importUsers", - "description": "\n Version: 9.0.0.cl or later\n\nImports user data from external databases into ThoughtSpot. During the user import operation:\n\n* If the specified users are not available in ThoughtSpot, the users are created and assigned a default password. Defining a `default_password` in the API request is optional.\n* If `delete_unspecified_users` is set to `true`, the users not specified in the API request, excluding the `tsadmin`, `guest`, `system` and `su` users, are deleted.\n* If the specified user objects are already available in ThoughtSpot, the object properties are updated and synchronized as per the input data in the API request.\n\nA successful API call returns the object that represents the changes made in the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "activateUser", + "description": "\n Version: 9.7.0.cl or later\n\nActivates a deactivated user account.\n\nRequires `ADMINISTRATION` (**Can administer Thoughtspot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\nTo activate an inactive user account, the API request body must include the following information:\n\n- Username or the GUID of the user account.\n- Auth token generated for the deactivated user. The auth token is sent in the API response when a user is deactivated.\n- Password for the user account.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Users", - "9.0.0.cl" + "9.7.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "users": { - "description": "List of users needs to be imported.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ImportUser" - } - }, - "default_password": { - "description": "The default password to assign to users if they do not have a password assigned in ThoughtSpot.", - "type": "string" - }, - "dry_run": { - "description": "If true, the API performs a test operation and returns user IDs whose data will be edited after the import.", - "default": true, - "type": "boolean", - "nullable": true - }, - "delete_unspecified_users": { - "description": "If set to true, removes the users that are not specified in the API request.", - "default": false, - "type": "boolean", - "nullable": true - } - }, - "required": [ - "users" - ] + "$ref": "#/components/schemas/ActivateUserRequest" } } }, @@ -14481,11 +9455,11 @@ "parameters": [], "responses": { "200": { - "description": "Import users operation successful.", + "description": "User activated successfully.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ImportUsersResponse" + "$ref": "#/components/schemas/User" } } } @@ -14533,10 +9507,10 @@ } } }, - "/api/rest/2.0/users/reset-password": { + "/api/rest/2.0/users/change-password": { "post": { - "operationId": "resetUserPassword", - "description": "\n Version: 9.0.0.cl or later\n\nResets the password of a user account. Administrators can reset password on behalf of a user.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "changeUserPassword", + "description": "\n Version: 9.0.0.cl or later\n\nUpdates the current password of the user.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Users", "9.0.0.cl" @@ -14545,21 +9519,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "new_password": { - "description": "New password for the user.", - "type": "string" - }, - "user_identifier": { - "description": "GUID or name of the user.", - "type": "string" - } - }, - "required": [ - "new_password", - "user_identifier" - ] + "$ref": "#/components/schemas/ChangeUserPasswordRequest" } } }, @@ -14568,7 +9528,7 @@ "parameters": [], "responses": { "204": { - "description": "User password reset operation successful." + "description": "User password change operation successful." }, "400": { "description": "Invalid request.", @@ -14613,10 +9573,10 @@ } } }, - "/api/rest/2.0/users/search": { + "/api/rest/2.0/users/create": { "post": { - "operationId": "searchUsers", - "description": "\n Version: 9.0.0.cl or later\n\nGets a list of users available on the ThoughtSpot system.\n\nTo get details of a specific user, specify the user GUID or name. You can also filter the API response based on groups, Org ID, user visibility, account status, user type, and user preference settings and favorites.\n\nAvailable to all users. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view all users properties. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n**NOTE**: If the API returns an empty list, consider increasing the value of the `record_size` parameter. To search across all available users, set `record_size` to `-1`.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createUser", + "description": "\n Version: 9.0.0.cl or later\n\nCreates a user in ThoughtSpot.\n\nThe API endpoint allows you to configure several user properties such as email address, account status, share notification preferences, and sharing visibility. You can provision the user to [groups](https://docs.thoughtspot.com/cloud/latest/groups-privileges) and [Orgs](https://docs.thoughtspot.com/cloud/latest/orgs-overview). You can also add Liveboard, Answer, and Worksheet objects to the user’s favorites list, assign a default Liveboard for the user, and set user preferences.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Users", "9.0.0.cl" @@ -14625,187 +9585,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "user_identifier": { - "description": "GUID / name of the user to search", - "type": "string" - }, - "display_name": { - "description": "A unique display name string for the user account, usually their first and last name", - "type": "string" - }, - "name_pattern": { - "description": "A pattern to match case-insensitive name of the User object.", - "type": "string" - }, - "visibility": { - "description": "Visibility of the user", - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ] - }, - "email": { - "description": "Email of the user account", - "type": "string" - }, - "group_identifiers": { - "description": "GUID or name of the group to which the user belongs", - "type": "array", - "items": { - "type": "string" - } - }, - "privileges": { - "description": "Privileges assigned to the user", - "type": "array", - "items": { - "type": "string", - "enum": [ - "ADMINISTRATION", - "AUTHORING", - "USERDATAUPLOADING", - "DATADOWNLOADING", - "USERMANAGEMENT", - "DATAMANAGEMENT", - "SHAREWITHALL", - "JOBSCHEDULING", - "A3ANALYSIS", - "EXPERIMENTALFEATUREPRIVILEGE", - "BYPASSRLS", - "RANALYSIS", - "DEVELOPER", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "SYNCMANAGEMENT", - "CAN_CREATE_CATALOG", - "DISABLE_PINBOARD_CREATION", - "LIVEBOARD_VERIFIER", - "PREVIEW_THOUGHTSPOT_SAGE", - "APPLICATION_ADMINISTRATION", - "SYSTEM_INFO_ADMINISTRATION", - "ORG_ADMINISTRATION", - "ROLE_ADMINISTRATION", - "AUTHENTICATION_ADMINISTRATION", - "BILLING_INFO_ADMINISTRATION", - "CAN_MANAGE_CUSTOM_CALENDAR", - "CAN_CREATE_OR_EDIT_CONNECTIONS", - "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "ALLOW_NON_EMBED_FULL_APP_ACCESS", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "PREVIEW_DOCUMENT_SEARCH", - "CAN_MODIFY_FOLDERS", - "CAN_MANAGE_VARIABLES", - "CAN_VIEW_FOLDERS", - "CAN_SETUP_VERSION_CONTROL", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" - ] - } - }, - "account_type": { - "description": "Type of the account", - "type": "string", - "enum": [ - "LOCAL_USER", - "LDAP_USER", - "SAML_USER", - "OIDC_USER", - "REMOTE_USER" - ] - }, - "account_status": { - "description": "Current status of the user account.", - "type": "string", - "enum": [ - "ACTIVE", - "INACTIVE", - "EXPIRED", - "LOCKED", - "PENDING", - "SUSPENDED" - ] - }, - "notify_on_share": { - "description": "User preference for receiving email notifications when another ThoughtSpot user\nshares a metadata object such as Answer, Liveboard, or Worksheet.", - "type": "boolean", - "nullable": true - }, - "show_onboarding_experience": { - "description": "The user preference for revisiting the onboarding experience", - "type": "boolean", - "nullable": true - }, - "onboarding_experience_completed": { - "description": "Indicates if the user has completed the onboarding walkthrough", - "type": "boolean", - "nullable": true - }, - "org_identifiers": { - "description": "IDs or names of the Orgs to which the user belongs", - "type": "array", - "items": { - "type": "string" - } - }, - "home_liveboard_identifier": { - "description": "Unique ID or name of the user's home Liveboard.", - "type": "string" - }, - "favorite_metadata": { - "description": "Metadata objects which are assigned as favorites of the user.", - "type": "array", - "items": { - "$ref": "#/components/schemas/FavoriteMetadataInput" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included.", - "default": 10, - "type": "integer", - "format": "int32" - }, - "sort_options": { - "description": "Sort options.", - "allOf": [ - { - "$ref": "#/components/schemas/SortOptions" - } - ] - }, - "role_identifiers": { - "description": "Filters by the role assigned to the user.", - "type": "array", - "items": { - "type": "string" - } - }, - "include_favorite_metadata": { - "description": "Indicates if the user's favorite objects should be displayed.", - "default": false, - "type": "boolean", - "nullable": true - }, - "include_variable_values": { - "description": "Indicates if the user's formula variable values should be included in the response.", - "default": false, - "type": "boolean", - "nullable": true - } - } + "$ref": "#/components/schemas/CreateUserRequest" } } }, @@ -14814,14 +9594,11 @@ "parameters": [], "responses": { "200": { - "description": "User search result.", + "description": "User successfully created.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/User" - } + "$ref": "#/components/schemas/User" } } } @@ -14869,179 +9646,35 @@ } } }, - "/api/rest/2.0/users/{user_identifier}/update": { + "/api/rest/2.0/users/deactivate": { "post": { - "operationId": "updateUser", - "description": "\n Version: 9.0.0.cl or later\n\nUpdates the properties of a user object.\n\nYou can modify user properties such as username, email, and share notification settings. You can also assign new groups and Orgs, remove the user from a group or Org, reset password, and modify user preferences.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deactivateUser", + "description": "\n Version: 9.7.0.cl or later\n\nDeactivates a user account.\n\nRequires `ADMINISTRATION` (**Can administer Thoughtspot**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\nTo deactivate a user account, the API request body must include the following information:\n\n- Username or the GUID of the user account\n- Base URL of the ThoughtSpot instance\n\nIf the API request is successful, ThoughtSpot returns the activation URL in the response. The activation URL is valid for 14 days and can be used to re-activate the account and reset the password of the deactivated account.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Users", - "9.0.0.cl" + "9.7.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the user. The username string must be unique.", - "type": "string" - }, - "display_name": { - "description": "A unique display name string for the user account, usually their first and last name", - "type": "string" - }, - "visibility": { - "description": "Visibility of the users. When set to SHARABLE, the user is visible to other users and groups when they try to share an object.", - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ] - }, - "email": { - "description": "Email of the user account", - "type": "string" - }, - "account_status": { - "description": "Current status of the user account. The `SUSPENDED` user state indicates a transitional state applicable to IAMv2 users only.", - "type": "string", - "enum": [ - "ACTIVE", - "INACTIVE", - "EXPIRED", - "LOCKED", - "PENDING", - "SUSPENDED" - ] - }, - "notify_on_share": { - "description": "User preference for receiving email notifications when another ThoughtSpot user\nshares a metadata object such as Answer, Liveboard, or Worksheet.", - "type": "boolean", - "nullable": true - }, - "show_onboarding_experience": { - "description": "The user preference for revisiting the onboarding experience.", - "type": "boolean", - "nullable": true - }, - "onboarding_experience_completed": { - "description": "Indicates if the user has completed the onboarding and allows turning off the onboarding walkthrough.", - "type": "boolean", - "nullable": true - }, - "account_type": { - "description": "Type of the account.", - "type": "string", - "enum": [ - "LOCAL_USER", - "LDAP_USER", - "SAML_USER", - "OIDC_USER", - "REMOTE_USER" - ] - }, - "group_identifiers": { - "description": "GUIDs or names of the groups.", - "type": "array", - "items": { - "type": "string" - } - }, - "home_liveboard_identifier": { - "description": "GUID of the Liveboard to set a default Liveboard for the user. ThoughtSpot displays\nthis Liveboard on the Home page when the user logs in.", - "type": "string" - }, - "favorite_metadata": { - "description": "Metadata objects to add to the user's favorites list.", - "type": "array", - "items": { - "$ref": "#/components/schemas/FavoriteMetadataInput" - } - }, - "org_identifiers": { - "description": "IDs of the Orgs.", - "type": "array", - "items": { - "type": "string" - } - }, - "operation": { - "description": "Type of update operation. Default operation type is REPLACE", - "default": "REPLACE", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "REPLACE" - ] - }, - "preferred_locale": { - "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", - "type": "string", - "enum": [ - "en-CA", - "en-GB", - "en-US", - "de-DE", - "ja-JP", - "zh-CN", - "pt-BR", - "fr-FR", - "fr-CA", - "es-US", - "da-DK", - "es-ES", - "fi-FI", - "sv-SE", - "nb-NO", - "pt-PT", - "nl-NL", - "it-IT", - "ru-RU", - "en-IN", - "de-CH", - "en-NZ", - "es-MX", - "en-AU", - "zh-Hant", - "ko-KR", - "en-DE" - ] - }, - "use_browser_language": { - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", - "type": "boolean", - "nullable": true - }, - "extended_properties": { - "description": "Properties for the user", - "type": "object" - }, - "extended_preferences": { - "description": "Preferences for the user", - "type": "object" - } - } + "$ref": "#/components/schemas/DeactivateUserRequest" } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "user_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "GUID / name of the user" - } - ], + "parameters": [], "responses": { - "204": { - "description": "User successfully updated." + "200": { + "description": "User deactivated successfully.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseActivationURL" + } + } + } }, "400": { "description": "Invalid request.", @@ -15086,73 +9719,28 @@ } } }, - "/api/rest/2.0/template/variables/create": { + "/api/rest/2.0/users/{user_identifier}/delete": { "post": { - "operationId": "createVariable", - "description": "\nCreate a variable which can be used for parameterizing metadata objects
Beta Version: 10.14.0.cl or later\n\nAllows creating a variable which can be used for parameterizing metadata objects in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports the following types of variables:\n* CONNECTION_PROPERTY - For connection properties\n* TABLE_MAPPING - For table mappings\n* CONNECTION_PROPERTY_PER_PRINCIPAL - For connection properties per principal. In order to use this please contact support to enable this.\n* FORMULA_VARIABLE - For Formula variables, introduced in 10.15.0.cl\n\nWhen creating a variable, you need to specify:\n* The variable type\n* A unique name for the variable\n* Whether the variable contains sensitive values (defaults to false)\n* The data type of the variable, only specify for formula variables (defaults to null)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable name already exists\n* The variable type is invalid\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteUser", + "description": "\n Version: 9.0.0.cl or later\n\nDeletes a user from the ThoughtSpot system.\n\nIf you want to remove a user from a specific Org but not from ThoughtSpot, update the group and Org mapping properties of the user object via a POST API call to the [/api/rest/2.0/users/{user_identifier}/update](#/http/api-endpoints/users/update-user) endpoint.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Variable", - "10.14.0.cl" + "Users", + "9.0.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "user_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "GUID / name of the user" + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "type": { - "description": "Type of variable", - "type": "string", - "enum": [ - "CONNECTION_PROPERTY", - "TABLE_MAPPING", - "CONNECTION_PROPERTY_PER_PRINCIPAL", - "FORMULA_VARIABLE" - ] - }, - "name": { - "description": "Name of the variable. This is unique across the cluster.", - "type": "string" - }, - "is_sensitive": { - "description": "If the variable contains sensitive values like passwords", - "default": false, - "type": "boolean", - "nullable": true - }, - "data_type": { - "description": "Variable Data Type, only for formula_variable type, leave empty for others
Version: 10.15.0.cl or later", - "type": "string", - "enum": [ - "VARCHAR", - "INT32", - "INT64", - "DOUBLE", - "DATE", - "DATE_TIME" - ] - } - }, - "required": [ - "type", - "name" - ] - } - } - }, - "required": true - }, - "parameters": [], "responses": { - "200": { - "description": "Create variable is successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Variable" - } - } - } + "204": { + "description": "User successfully deleted." }, "400": { "description": "Invalid request.", @@ -15197,28 +9785,28 @@ } } }, - "/api/rest/2.0/template/variables/{identifier}/delete": { + "/api/rest/2.0/users/force-logout": { "post": { - "operationId": "deleteVariable", - "description": "\nDelete a variable
Beta Version: 10.14.0.cl or later\n\nAllows deleting a variable from ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint requires:\n* The variable identifier (ID or name)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable doesn't exist\n* The variable is being used by other objects \n\n\n\n#### Endpoint URL\n", + "operationId": "forceLogoutUsers", + "description": "\n Version: 9.0.0.cl or later\n\nEnforces logout on current user sessions. \n\nUse this API with caution as it may invalidate active user sessions and force users to re-login. Make sure you specify the usernames or GUIDs. If you pass null values in the API call, all user sessions on your cluster become invalid, and the users are forced to re-login.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Variable", - "10.14.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique id or name of the variable" - } + "Users", + "9.0.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForceLogoutUsersRequest" + } + } + }, + "required": true + }, + "parameters": [], "responses": { "204": { - "description": "Deleting the variable is successful." + "description": "Force logging out of users operation successful." }, "400": { "description": "Invalid request.", @@ -15263,56 +9851,19 @@ } } }, - "/api/rest/2.0/template/variables/search": { + "/api/rest/2.0/users/import": { "post": { - "operationId": "searchVariables", - "description": "\nSearch variables
Beta Version: 10.14.0.cl or later\n\nAllows searching for variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports searching variables by:\n* Variable identifier (ID or name)\n* Variable type\n* Name pattern (case-insensitive, supports % for wildcard)\n\nThe search results can be formatted in three ways:\n* METADATA - Returns only variable metadata (default)\n* METADATA_AND_VALUES - Returns variable metadata and values\n\nThe values can be filtered by scope:\n* org_identifier\n* principal_identifier\n* model_identifier\n\n\n\n\n#### Endpoint URL\n", + "operationId": "importUsers", + "description": "\n Version: 9.0.0.cl or later\n\nImports user data from external databases into ThoughtSpot. During the user import operation:\n\n* If the specified users are not available in ThoughtSpot, the users are created and assigned a default password. Defining a `default_password` in the API request is optional.\n* If `delete_unspecified_users` is set to `true`, the users not specified in the API request, excluding the `tsadmin`, `guest`, `system` and `su` users, are deleted.\n* If the specified user objects are already available in ThoughtSpot, the object properties are updated and synchronized as per the input data in the API request.\n\nA successful API call returns the object that represents the changes made in the ThoughtSpot system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Variable", - "10.14.0.cl" + "Users", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "variable_details": { - "description": "Variable details", - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableDetailInput" - } - }, - "value_scope": { - "description": "Array of scope filters", - "type": "array", - "items": { - "$ref": "#/components/schemas/ValueScopeInput" - } - }, - "record_offset": { - "description": "The starting record number from where the records should be included", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of records that should be included", - "default": 10, - "type": "integer", - "format": "int32" - }, - "response_content": { - "description": "Format in which we want the output", - "default": "METADATA", - "type": "string", - "enum": [ - "METADATA", - "METADATA_AND_VALUES" - ] - } - } + "$ref": "#/components/schemas/ImportUsersRequest" } } }, @@ -15321,14 +9872,11 @@ "parameters": [], "responses": { "200": { - "description": "List of variables is successful.", + "description": "Import users operation successful.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Variable" - } + "$ref": "#/components/schemas/ImportUsersResponse" } } } @@ -15376,47 +9924,28 @@ } } }, - "/api/rest/2.0/template/variables/{identifier}/update": { + "/api/rest/2.0/users/reset-password": { "post": { - "operationId": "updateVariable", - "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's name in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", + "operationId": "resetUserPassword", + "description": "\n Version: 9.0.0.cl or later\n\nResets the password of a user account. Administrators can reset password on behalf of a user.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Variable", - "10.14.0.cl" + "Users", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "New name of the variable.", - "type": "string" - } - }, - "required": [ - "name" - ] + "$ref": "#/components/schemas/ResetUserPasswordRequest" } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique id or name of the variable to update." - } - ], + "parameters": [], "responses": { "204": { - "description": "Variable name updated successfully." + "description": "User password reset operation successful." }, "400": { "description": "Invalid request.", @@ -15461,39 +9990,19 @@ } } }, - "/api/rest/2.0/template/variables/update-values": { + "/api/rest/2.0/users/search": { "post": { - "operationId": "updateVariableValues", - "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchUsers", + "description": "\n Version: 9.0.0.cl or later\n\nGets a list of users available on the ThoughtSpot system.\n\nTo get details of a specific user, specify the user GUID or name. You can also filter the API response based on groups, Org ID, user visibility, account status, user type, and user preference settings and favorites.\n\nAvailable to all users. Users with `ADMINISTRATION` (**Can administer ThoughtSpot**) privileges can view all users properties. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n**NOTE**: If the API returns an empty list, consider increasing the value of the `record_size` parameter. To search across all available users, set `record_size` to `-1`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Variable", - "10.14.0.cl" + "Users", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "variable_assignment": { - "description": "Variables and values to update", - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableUpdateAssignmentInput" - } - }, - "variable_value_scope": { - "description": "Variables and values to update", - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableUpdateScopeInput" - } - } - }, - "required": [ - "variable_assignment", - "variable_value_scope" - ] + "$ref": "#/components/schemas/SearchUsersRequest" } } }, @@ -15501,8 +10010,18 @@ }, "parameters": [], "responses": { - "204": { - "description": "Variable values updated successfully." + "200": { + "description": "User search result.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User" + } + } + } + } }, "400": { "description": "Invalid request.", @@ -15547,62 +10066,38 @@ } } }, - "/api/rest/2.0/vcs/git/branches/commit": { + "/api/rest/2.0/users/{user_identifier}/update": { "post": { - "operationId": "commitBranch", - "description": "\n Version: 9.2.0.cl or later\n\nCommits TML files of metadata objects to the Git branch configured on your instance.\n\nRequires at least edit access to objects used in the commit operation.\n\nBefore using this endpoint to push your commits:\n\n* Enable Git integration on your instance.\n* Make sure the Git repository and branch details are configured on your instance.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateUser", + "description": "\n Version: 9.0.0.cl or later\n\nUpdates the properties of a user object.\n\nYou can modify user properties such as username, email, and share notification settings. You can also assign new groups and Orgs, remove the user from a group or Org, reset password, and modify user preferences.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `USER_ADMINISTRATION` (**Can manage users**) privilege is required.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" + "Users", + "9.0.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/MetadataObject" - } - }, - "delete_aware": { - "description": "Delete the tml files from version control repo if it does not exist in the ThoughSpot instance", - "default": true, - "type": "boolean", - "nullable": true - }, - "branch_name": { - "description": " Name of the remote branch where object should be pushed\n \n\nNote: If no branch_name is specified, then the commit_branch_name will be considered.", - "type": "string" - }, - "comment": { - "description": "Comment to be added to the commit", - "type": "string" - } - }, - "required": [ - "metadata", - "comment" - ] + "$ref": "#/components/schemas/UpdateUserRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "user_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "GUID / name of the user" + } + ], "responses": { - "200": { - "description": "Successfully committed the metadata objects", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CommitResponse" - } - } - } + "204": { + "description": "User successfully updated." }, "400": { "description": "Invalid request.", @@ -15647,63 +10142,19 @@ } } }, - "/api/rest/2.0/vcs/git/config/create": { + "/api/rest/2.0/template/variables/create": { "post": { - "operationId": "createConfig", - "description": "\n Version: 9.2.0.cl or later\n\nAllows you to connect a ThoughtSpot instance to a Git repository.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\nYou can use this API endpoint to connect your ThoughtSpot development and production environments to the development and production branches of a Git repository.\n\nBefore using this endpoint to connect your ThoughtSpot instance to a Git repository, check the following prerequisites:\n\n* You have a Git repository. If you are using GitHub, make sure you have a valid account and an access token to connect ThoughtSpot to GitHub. For information about generating a token, see [GitHub Documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).\n\n* Your access token has `repo` scope that grants full access to public and private repositories.\n* Your Git repository has a branch that can be configured as a default branch in ThoughtSpot.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/?pageid=git-integration).\n\n**Note**: ThoughtSpot supports only GitHub / itHub Enterprise for CI/CD.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createVariable", + "description": "\nCreate a variable which can be used for parameterizing metadata objects
Beta Version: 10.14.0.cl or later\n\nAllows creating a variable which can be used for parameterizing metadata objects in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports the following types of variables:\n* CONNECTION_PROPERTY - For connection properties\n* TABLE_MAPPING - For table mappings\n* CONNECTION_PROPERTY_PER_PRINCIPAL - For connection properties per principal. In order to use this please contact support to enable this.\n* FORMULA_VARIABLE - For Formula variables, introduced in 10.15.0.cl\n\nWhen creating a variable, you need to specify:\n* The variable type\n* A unique name for the variable\n* Whether the variable contains sensitive values (defaults to false)\n* The data type of the variable, only specify for formula variables (defaults to null)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable name already exists\n* The variable type is invalid\n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "10.14.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "repository_url": { - "description": "URL for connecting to remote repository", - "type": "string" - }, - "username": { - "description": "Username to authenticate connection to remote repository", - "type": "string" - }, - "access_token": { - "description": "Access token corresponding to the user to authenticate connection to remote repository", - "type": "string" - }, - "org_identifier": { - "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", - "type": "string" - }, - "branch_names": { - "description": "List the remote branches to configure. Example:[development, production]", - "type": "array", - "items": { - "type": "string" - } - }, - "commit_branch_name": { - "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.
Version: 9.7.0.cl or later", - "type": "string" - }, - "enable_guid_mapping": { - "description": "Maintain mapping of guid for the deployment to an instance
Version: 9.4.0.cl or later", - "default": true, - "type": "boolean", - "nullable": true - }, - "configuration_branch_name": { - "description": " Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.\n \n\nNote: If no branch name is specified, then by default, ts_config_files branch is considered. Ensure this branch exists before configuration.
Version: 9.7.0.cl or later", - "type": "string" - } - }, - "required": [ - "repository_url", - "username", - "access_token" - ] + "$ref": "#/components/schemas/CreateVariableRequest" } } }, @@ -15712,11 +10163,11 @@ "parameters": [], "responses": { "200": { - "description": "Successfully configured local repository", + "description": "Create variable is successful.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RepoConfigObject" + "$ref": "#/components/schemas/Variable" } } } @@ -15764,35 +10215,29 @@ } } }, - "/api/rest/2.0/vcs/git/config/delete": { + "/api/rest/2.0/template/variables/{identifier}/delete": { "post": { - "operationId": "deleteConfig", - "description": "\n Version: 9.2.0.cl or later\n\nDeletes Git repository configuration from your ThoughtSpot instance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteVariable", + "description": "\nDelete a variable
Beta Version: 10.14.0.cl or later\n\nAllows deleting a variable from ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint requires:\n* The variable identifier (ID or name)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable doesn't exist\n* The variable is being used by other objects \n\n\n\n#### Endpoint URL\n", + "deprecated": true, "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "10.14.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique id or name of the variable" + } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cluster_level": { - "description": " Applicable when Orgs is enabled in the cluster\n \n\nIndicator to consider cluster level or org level config. Set it to false to delete configuration from current org. If set to true, then the configuration at cluster level and orgs that inherited the configuration from cluster level will be deleted.
Version: 9.5.0.cl or later", - "type": "boolean", - "nullable": true - } - } - } - } - }, - "required": true - }, - "parameters": [], "responses": { "204": { - "description": "Successfully deleted local repository configuration" + "description": "Deleting the variable is successful." }, "400": { "description": "Invalid request.", @@ -15837,51 +10282,19 @@ } } }, - "/api/rest/2.0/vcs/git/commits/deploy": { + "/api/rest/2.0/template/variables/delete": { "post": { - "operationId": "deployCommit", - "description": "\n Version: 9.2.0.cl or later\n\nAllows you to deploy a commit and publish TML content to your ThoughtSpot instance.\n\nRequires at least edit access to the objects used in the deploy operation.\n\nThe API deploys the head of the branch unless a `commit_id` is specified in the API request. If the branch name is not defined in the request, the default branch is considered for deploying commits.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteVariables", + "description": "\nDelete variable(s)
Beta Version: 26.4.0.cl or later\n\nAllows deleting multiple variables from ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint requires:\n* The variable identifiers (IDs or names)\n\nThe operation will fail if:\n* The user lacks required permissions\n* Any of the variables don't exist\n* Any of the variables are being used by other objects\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "26.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "commit_id": { - "description": " Commit_id against which the files should be picked to deploy.\n \n\nNote: If no commit_id is specified, then the head of the branch is considered.", - "type": "string" - }, - "branch_name": { - "description": "Name of the remote branch where changes should be picked", - "type": "string" - }, - "deploy_type": { - "description": "Indicates if all files or only modified file at specified commit point should be considered", - "default": "DELTA", - "type": "string", - "enum": [ - "FULL", - "DELTA" - ] - }, - "deploy_policy": { - "description": "Define the policy to follow while importing TML in the ThoughtSpot environment. Use “ALL_OR_NONE” to cancel the deployment of all ThoughtSpot objects if at least one of them fails to import. Use “Partial” to import ThoughtSpot objects that validate successfully even if other objects in the same deploy operations fail to import.", - "default": "ALL_OR_NONE", - "type": "string", - "enum": [ - "ALL_OR_NONE", - "PARTIAL", - "VALIDATE_ONLY" - ] - } - }, - "required": [ - "branch_name" - ] + "$ref": "#/components/schemas/DeleteVariablesRequest" } } }, @@ -15889,18 +10302,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Successfully deployed the changes", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeployResponse" - } - } - } - } + "204": { + "description": "Deletion of variable(s) is successful." }, "400": { "description": "Invalid request.", @@ -15945,41 +10348,19 @@ } } }, - "/api/rest/2.0/vcs/git/commits/{commit_id}/revert": { + "/api/rest/2.0/template/variables/{identifier}/update-values": { "post": { - "operationId": "revertCommit", - "description": "\n Version: 9.2.0.cl or later\n\nReverts TML objects to a previous commit specified in the API request.\n\nRequires at least edit access to objects.\n\nIn the API request, specify the `commit_id`. If the branch name is not specified in the request, the API will consider the default branch configured on your instance.\n\nBy default, the API reverts all objects. If the revert operation fails for one of the objects provided in the commit, the API returns an error and does not revert any object.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", + "operationId": "putVariableValues", + "description": "\nUpdate values for a variable
Beta Version: 26.4.0.cl or later\n\nAllows updating values for a specific variable in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to the variable\n* Replacing existing values\n* Deleting values from the variable\n* Resetting all values\n\nWhen updating variable values, you need to specify:\n* The variable identifier (ID or name)\n* The values to add/replace/remove\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constraints for the given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "26.4.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata": { - "description": "Metadata objects.", - "type": "array", - "items": { - "$ref": "#/components/schemas/MetadataObject" - } - }, - "branch_name": { - "description": " Name of the branch where the reverted version should be committed\n \n\nNote: If no branch_name is specified, then the commit_branch_name will be considered.", - "type": "string" - }, - "revert_policy": { - "description": "Policy to apply when reverting a commit. Valid values: [ALL_OR_NONE, PARTIAL]", - "default": "ALL_OR_NONE", - "type": "string", - "enum": [ - "ALL_OR_NONE", - "PARTIAL" - ] - } - } + "$ref": "#/components/schemas/PutVariableValuesRequest" } } }, @@ -15988,24 +10369,17 @@ "parameters": [ { "in": "path", - "name": "commit_id", + "name": "identifier", "required": true, "schema": { "type": "string" }, - "description": "Commit id to which the object should be reverted" + "description": "Unique ID or name of the variable" } ], "responses": { - "200": { - "description": "Reverted the object to the commit point specified", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RevertResponse" - } - } - } + "204": { + "description": "Variable values updated successfully." }, "400": { "description": "Invalid request.", @@ -16050,52 +10424,19 @@ } } }, - "/api/rest/2.0/vcs/git/commits/search": { + "/api/rest/2.0/template/variables/search": { "post": { - "operationId": "searchCommits", - "description": "\n Version: 9.2.0.cl or later\n\nGets a list of commits for a given metadata object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege and edit access to the metadata objects.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchVariables", + "description": "\nSearch variables
Beta Version: 10.14.0.cl or later\n\nAllows searching for variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports searching variables by:\n* Variable identifier (ID or name)\n* Variable type\n* Name pattern (case-insensitive, supports % for wildcard)\n\nThe search results can be formatted in three ways:\n* METADATA - Returns only variable metadata (default)\n* METADATA_AND_VALUES - Returns variable metadata and values\n\nThe values can be filtered by scope:\n* org_identifier\n* principal_identifier\n* model_identifier\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "10.14.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "metadata_identifier": { - "description": "Unique ID or name of the metadata.", - "type": "string" - }, - "metadata_type": { - "description": "Type of metadata.", - "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "CUSTOM_ACTION" - ] - }, - "branch_name": { - "description": " Name of the branch from which commit history needs to be displayed.\n \n\nNote: If no branch_name is specified, then commits will be returned for the default branch for this configuration.", - "type": "string" - }, - "record_offset": { - "description": " Record offset point in the commit history to display the response.\n \n\nNote: If no record offset is specified, the beginning of the record will be considered.", - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": " Number of history records from record offset point to be displayed in the response.\n \n\nNote: If no record size is specified, then all the records will be considered.", - "type": "integer", - "format": "int32" - } - }, - "required": [ - "metadata_identifier" - ] + "$ref": "#/components/schemas/SearchVariablesRequest" } } }, @@ -16104,13 +10445,13 @@ "parameters": [], "responses": { "200": { - "description": "Commit history of the metadata object", + "description": "List of variables is successful.", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/CommitHistoryResponse" + "$ref": "#/components/schemas/Variable" } } } @@ -16159,47 +10500,38 @@ } } }, - "/api/rest/2.0/vcs/git/config/search": { + "/api/rest/2.0/template/variables/{identifier}/update": { "post": { - "operationId": "searchConfig", - "description": "\n Version: 9.2.0.cl or later\n\nGets Git repository connections configured on the ThoughtSpot instance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateVariable", + "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's name in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "10.14.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "org_identifiers": { - "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", - "type": "array", - "items": { - "type": "string" - } - } - } + "$ref": "#/components/schemas/UpdateVariableRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique id or name of the variable to update." + } + ], "responses": { - "200": { - "description": "Details of local repository configuration", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RepoConfigObject" - } - } - } - } + "204": { + "description": "Variable name updated successfully." }, "400": { "description": "Invalid request.", @@ -16244,53 +10576,20 @@ } } }, - "/api/rest/2.0/vcs/git/config/update": { + "/api/rest/2.0/template/variables/update-values": { "post": { - "operationId": "updateConfig", - "description": "\n Version: 9.2.0.cl or later\n\nUpdates Git repository configuration settings.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "updateVariableValues", + "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", + "deprecated": true, "tags": [ - "Version Control", - "9.2.0.cl" + "Variable", + "10.14.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "username": { - "description": "Username to authenticate connection to version control system", - "type": "string" - }, - "access_token": { - "description": "Access token corresponding to the user to authenticate connection to version control system", - "type": "string" - }, - "org_identifier": { - "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", - "type": "string" - }, - "branch_names": { - "description": "List the remote branches to configure. Example:[development, production]", - "type": "array", - "items": { - "type": "string" - } - }, - "commit_branch_name": { - "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.
Version: 9.7.0.cl or later", - "type": "string" - }, - "enable_guid_mapping": { - "description": "Maintain mapping of guid for the deployment to an instance
Version: 9.4.0.cl or later", - "type": "boolean", - "nullable": true - }, - "configuration_branch_name": { - "description": "Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.
Version: 9.7.0.cl or later", - "type": "string" - } - } + "$ref": "#/components/schemas/UpdateVariableValuesRequest" } } }, @@ -16298,15 +10597,8 @@ }, "parameters": [], "responses": { - "200": { - "description": "Successfully updated local repository configuration", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RepoConfigObject" - } - } - } + "204": { + "description": "Variable values updated successfully." }, "400": { "description": "Invalid request.", @@ -16351,10 +10643,10 @@ } } }, - "/api/rest/2.0/vcs/git/branches/validate": { + "/api/rest/2.0/vcs/git/branches/commit": { "post": { - "operationId": "validateMerge", - "description": "\n Version: 9.2.0.cl or later\n\nValidates the content of your source branch against the objects in your destination environment.\n\nBefore merging content from your source branch to the destination branch, run this API operation from your destination environment and ensure that the changes from the source branch function in the destination environment.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege and edit access to the metadata objects.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "commitBranch", + "description": "\n Version: 9.2.0.cl or later\n\nCommits TML files of metadata objects to the Git branch configured on your instance.\n\nRequires at least edit access to objects used in the commit operation.\n\nBefore using this endpoint to push your commits:\n\n* Enable Git integration on your instance.\n* Make sure the Git repository and branch details are configured on your instance.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Version Control", "9.2.0.cl" @@ -16363,21 +10655,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "source_branch_name": { - "description": "Name of the branch from which changes need to be picked for validation", - "type": "string" - }, - "target_branch_name": { - "description": "Name of the branch where files will be merged", - "type": "string" - } - }, - "required": [ - "source_branch_name", - "target_branch_name" - ] + "$ref": "#/components/schemas/CommitBranchRequest" } } }, @@ -16386,14 +10664,11 @@ "parameters": [], "responses": { "200": { - "description": "validation done successfully", + "description": "Successfully committed the metadata objects", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeployResponse" - } + "$ref": "#/components/schemas/CommitResponse" } } } @@ -16441,76 +10716,19 @@ } } }, - "/api/rest/2.0/webhooks/create": { + "/api/rest/2.0/vcs/git/config/create": { "post": { - "operationId": "createWebhookConfiguration", - "description": "\nBeta Version: 10.14.0.cl or later\n\nCreates a new webhook configuration to receive notifications for specified events. The webhook will be triggered when the configured events occur in the system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "createConfig", + "description": "\n Version: 9.2.0.cl or later\n\nAllows you to connect a ThoughtSpot instance to a Git repository.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\nYou can use this API endpoint to connect your ThoughtSpot development and production environments to the development and production branches of a Git repository.\n\nBefore using this endpoint to connect your ThoughtSpot instance to a Git repository, check the following prerequisites:\n\n* You have a Git repository. If you are using GitHub, make sure you have a valid account and an access token to connect ThoughtSpot to GitHub. For information about generating a token, see [GitHub Documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).\n\n* Your access token has `repo` scope that grants full access to public and private repositories.\n* Your Git repository has a branch that can be configured as a default branch in ThoughtSpot.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/?pageid=git-integration).\n\n**Note**: ThoughtSpot supports only GitHub / itHub Enterprise for CI/CD.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Webhooks", - "10.14.0.cl" + "Version Control", + "9.2.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the webhook configuration.", - "type": "string" - }, - "description": { - "description": "Description of the webhook configuration.", - "type": "string" - }, - "url": { - "description": "The webhook endpoint URL.", - "type": "string" - }, - "url_params": { - "description": "Additional URL parameters as key-value pairs.", - "type": "object" - }, - "events": { - "description": "List of events to subscribe to.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - } - }, - "authentication": { - "description": "Authorization configuration for the webhook.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookAuthenticationInput" - } - ] - }, - "signature_verification": { - "description": "Configuration for webhook signature verification.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookSignatureVerificationInput" - } - ] - }, - "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/StorageDestinationInput" - } - ] - } - }, - "required": [ - "name", - "url", - "events" - ] + "$ref": "#/components/schemas/CreateConfigRequest" } } }, @@ -16519,81 +10737,11 @@ "parameters": [], "responses": { "200": { - "description": "Webhook configuration created successfully", + "description": "Successfully configured local repository", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebhookResponse" - }, - "examples": { - "example_1": { - "description": "Basic webhook with Bearer token authentication", - "value": { - "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", - "name": "My Liveboard Webhook", - "description": "Webhook to notify external system about liveboard schedules", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://myapp.example.com/webhooks/thoughtspot", - "url_params": { - "api_key": "abc123", - "version": "v1" - }, - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "BEARER_TOKEN": "***" - }, - "signature_verification": { - "type": "HMAC_SHA256", - "header": "X-Webhook-Signature", - "algorithm": "SHA256", - "secret": "***" - }, - "creation_time_in_millis": 1724277430243, - "modification_time_in_millis": 1724277430243, - "created_by": { - "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", - "name": "sarah_chen" - }, - "last_modified_by": { - "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", - "name": "sarah_chen" - } - } - }, - "example_2": { - "description": "Webhook with OAuth2 authentication", - "value": { - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "name": "OAuth2 Webhook", - "description": "Webhook with OAuth2 client credentials", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://api.example.com/webhooks", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "OAUTH2": { - "authorization_url": "https://auth.example.com/oauth2/authorize", - "client_id": "client_123", - "client_secret": "***" - } - }, - "creation_time_in_millis": 1724278530123, - "modification_time_in_millis": 1724278530123, - "created_by": { - "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", - "name": "mike_rodriguez" - } - } - } + "$ref": "#/components/schemas/RepoConfigObject" } } } @@ -16641,31 +10789,19 @@ } } }, - "/api/rest/2.0/webhooks/delete": { + "/api/rest/2.0/vcs/git/config/delete": { "post": { - "operationId": "deleteWebhookConfigurations", - "description": "\nBeta Version: 10.14.0.cl or later\n\nDeletes one or more webhook configurations by their unique id or name. Returns status of each deletion operation, including successfully deleted webhooks and any failures with error details.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "deleteConfig", + "description": "\n Version: 9.2.0.cl or later\n\nDeletes Git repository configuration from your ThoughtSpot instance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Webhooks", - "10.14.0.cl" + "Version Control", + "9.2.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "webhook_identifiers": { - "description": "List of webhook identifiers to delete.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "webhook_identifiers" - ] + "$ref": "#/components/schemas/DeleteConfigRequest" } } }, @@ -16673,108 +10809,80 @@ }, "parameters": [], "responses": { - "200": { - "description": "Webhook configurations deleted successfully", + "204": { + "description": "Successfully deleted local repository configuration" + }, + "400": { + "description": "Invalid request.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebhookDeleteResponse" - }, - "examples": { - "example_1": { - "description": "Successful deletion of multiple webhooks", - "value": { - "deleted_count": 2, - "failed_count": 0, - "deleted_webhooks": [ - { - "id": "b9e3d8f2-4c7a-4e1b-8d3c-5f9a2b7e4c6d", - "name": "Old Webhook 1", - "description": "First webhook to be deleted", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://old-service.example.com/webhook1", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "BEARER_TOKEN": "***" - }, - "creation_time_in_millis": 1724274600000, - "modification_time_in_millis": 1724274600000, - "created_by": { - "id": "1f4e7b2d-9c3a-4e6f-8b1d-3e7c5a9b2f4e", - "name": "jennifer_patel" - } - }, - { - "id": "e7c4a1f8-2b5d-4a9e-7c3f-8b1e5d4a7c9b", - "name": "Old Webhook 2", - "description": "Second webhook to be deleted", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://old-service.example.com/webhook2", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "API_KEY": { - "key": "X-API-Key", - "value": "***" - } - }, - "creation_time_in_millis": 1724275530123, - "modification_time_in_millis": 1724275530123, - "created_by": { - "id": "9a5c2e8f-4b7d-4c1e-9f2a-6c8e3b5d7a4c", - "name": "david_thompson" - } - } - ], - "failed_webhooks": [] - } - }, - "example_2": { - "description": "Partial failure during deletion", - "value": { - "deleted_count": 1, - "failed_count": 1, - "deleted_webhooks": [ - { - "id": "c8f2a5e9-3d6b-4f1e-a8c2-7e4b1d9f5a3c", - "name": "Successfully Deleted Webhook", - "description": "This webhook was deleted successfully", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://service.example.com/webhook", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "NO_AUTH": "" - }, - "creation_time_in_millis": 1724276415456, - "modification_time_in_millis": 1724276415456, - "created_by": { - "id": "6e9c4f2a-8b5d-4e1f-9c3a-5f8b2e7d4a6c", - "name": "emma_wang" - } - } - ], - "failed_webhooks": [ - { - "id": "a3f7c1e4-9b2d-4a6e-8f3c-1e5b7a9c4f2e", - "name": "Non-existent Webhook", - "error_message": "Webhook not found or access denied" - } - ] - } + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/vcs/git/commits/deploy": { + "post": { + "operationId": "deployCommit", + "description": "\n Version: 9.2.0.cl or later\n\nAllows you to deploy a commit and publish TML content to your ThoughtSpot instance.\n\nRequires at least edit access to the objects used in the deploy operation.\n\nThe API deploys the head of the branch unless a `commit_id` is specified in the API request. If the branch name is not defined in the request, the default branch is considered for deploying commits.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Version Control", + "9.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeployCommitRequest" + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Successfully deployed the changes", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeployResponse" } } } @@ -16823,108 +10931,48 @@ } } }, - "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { - "get": { - "operationId": "getWebhookStorageConfig", - "description": "\nBeta Version: 26.4.0.cl or later\n\nGet storage config information for a webhook configuration. This endpoint provides ThoughtSpot's identity information and IAM policy configuration required for customers to set up cross-account access to their S3 buckets.\n\nThe setup info returned depends on the ThoughtSpot cluster type:\n- For AWS clusters: Returns `aws_config` with STS AssumeRole configuration\n- For GCP clusters: Returns `gcp_config` with STS AssumeRoleWithWebIdentity configuration\n\n**Note:** This endpoint only returns data if the webhook has a storage destination configured.\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", + "/api/rest/2.0/vcs/git/commits/{commit_id}/revert": { + "post": { + "operationId": "revertCommit", + "description": "\n Version: 9.2.0.cl or later\n\nReverts TML objects to a previous commit specified in the API request.\n\nRequires at least edit access to objects.\n\nIn the API request, specify the `commit_id`. If the branch name is not specified in the request, the API will consider the default branch configured on your instance.\n\nBy default, the API reverts all objects. If the revert operation fails for one of the objects provided in the commit, the API returns an error and does not revert any object.\n\nFor more information, see [Git integration documentation](https://developers.thoughtspot.com/docs/git-integration).\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Webhooks", - "26.4.0.cl" + "Version Control", + "9.2.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RevertCommitRequest" + } + } + }, + "required": true + }, "parameters": [ { "in": "path", - "name": "webhook_identifier", + "name": "commit_id", "required": true, "schema": { "type": "string" }, - "description": "Unique ID or name of the webhook configuration." + "description": "Commit id to which the object should be reverted" } ], "responses": { "200": { - "description": "Storage setup information retrieved successfully", + "description": "Reverted the object to the commit point specified", "content": { "application/json": { "schema": { - "type": "object" - }, - "examples": { - "example_1": { - "description": "Storage setup info for AWS cluster deployment", - "value": { - "cluster_type": "AWS", - "storage_type": "AWS_S3", - "aws_config": { - "thoughtspot_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. Copy the trust policy template and attach it to your 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": "Storage setup info for GCP cluster deployment", - "value": { - "cluster_type": "GCP", - "storage_type": "AWS_S3", - "gcp_config": { - "thoughtspot_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 ThoughtSpot's 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" - ] - } - } - } + "$ref": "#/components/schemas/RevertResponse" } } } }, "400": { - "description": "Invalid request. Webhook not found or does not have storage destination configured.", + "description": "Invalid request.", "content": { "application/json": { "schema": { @@ -16966,56 +11014,19 @@ } } }, - "/api/rest/2.0/webhooks/search": { + "/api/rest/2.0/vcs/git/commits/search": { "post": { - "operationId": "searchWebhookConfigurations", - "description": "\nBeta Version: 10.14.0.cl or later\n\nSearches for webhook configurations based on various criteria such as Org, webhook identifier, event type, with support for pagination and sorting. Returns matching webhook configurations with their complete details.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchCommits", + "description": "\n Version: 9.2.0.cl or later\n\nGets a list of commits for a given metadata object.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege and edit access to the metadata objects.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Webhooks", - "10.14.0.cl" + "Version Control", + "9.2.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "org_identifier": { - "description": "Unique ID or name of the org.", - "type": "string" - }, - "webhook_identifier": { - "description": "Unique ID or name of the webhook.", - "type": "string" - }, - "event_type": { - "description": "Type of webhook event to filter by.", - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - }, - "record_offset": { - "description": "The offset point, starting from where the webhooks should be included in the response.", - "default": 0, - "type": "integer", - "format": "int32" - }, - "record_size": { - "description": "The number of webhooks that should be included in the response starting from offset position.", - "default": 50, - "type": "integer", - "format": "int32" - }, - "sort_options": { - "description": "Sort option includes sort field and sort order.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookSortOptionsInput" - } - ] - } - } + "$ref": "#/components/schemas/SearchCommitsRequest" } } }, @@ -17024,97 +11035,13 @@ "parameters": [], "responses": { "200": { - "description": "Webhook configurations retrieved successfully", + "description": "Commit history of the metadata object", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebhookSearchResponse" - }, - "examples": { - "example_1": { - "description": "Search results with multiple webhooks", - "value": { - "webhooks": [ - { - "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", - "name": "Liveboard Schedule Webhook", - "description": "Webhook for liveboard schedule notifications", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://myapp.example.com/webhooks", - "url_params": { - "api_key": "abc123" - }, - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "BEARER_TOKEN": "***" - }, - "signature_verification": { - "type": "HMAC_SHA256", - "header": "X-Webhook-Signature", - "algorithm": "SHA256", - "secret": "***" - }, - "creation_time_in_millis": 1724277430243, - "modification_time_in_millis": 1724278215123, - "created_by": { - "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", - "name": "sarah_chen" - }, - "last_modified_by": { - "id": "2c9a7e4f-6b3d-4a8e-9f1c-5e7a3b9c2d6f", - "name": "alex_kim" - } - }, - { - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "name": "API Key Webhook", - "description": "Webhook with API key authentication", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://api.example.com/notifications", - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "API_KEY": { - "key": "X-API-Key", - "value": "***" - } - }, - "creation_time_in_millis": 1724275845987, - "modification_time_in_millis": 1724275845987, - "created_by": { - "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", - "name": "mike_rodriguez" - } - } - ], - "pagination": { - "record_offset": 0, - "record_size": 50, - "total_count": 2, - "has_more": false - } - } - }, - "example_2": { - "description": "Empty search results", - "value": { - "webhooks": [], - "pagination": { - "record_offset": 0, - "record_size": 50, - "total_count": 0, - "has_more": false - } - } + "type": "array", + "items": { + "$ref": "#/components/schemas/CommitHistoryResponse" } } } @@ -17163,90 +11090,38 @@ } } }, - "/api/rest/2.0/webhooks/{webhook_identifier}/update": { + "/api/rest/2.0/vcs/git/config/search": { "post": { - "operationId": "updateWebhookConfiguration", - "description": "\nBeta Version: 10.14.0.cl or later\n\nUpdates an existing webhook configuration by its unique id or name. Only the provided fields will be updated.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "operationId": "searchConfig", + "description": "\n Version: 9.2.0.cl or later\n\nGets Git repository connections configured on the ThoughtSpot instance.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", "tags": [ - "Webhooks", - "10.14.0.cl" + "Version Control", + "9.2.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "description": "Name of the webhook configuration.", - "type": "string" - }, - "description": { - "description": "Description of the webhook configuration.", - "type": "string" - }, - "url": { - "description": "The webhook endpoint URL.", - "type": "string" - }, - "url_params": { - "description": "Additional URL parameters as key-value pairs.", - "type": "object" - }, - "events": { - "description": "List of events to subscribe to.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - } - }, - "authentication": { - "description": "Authorization configuration for the webhook.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookAuthenticationInput" - } - ] - }, - "signature_verification": { - "description": "Configuration for webhook signature verification.", - "allOf": [ - { - "$ref": "#/components/schemas/WebhookSignatureVerificationInput" - } - ] - }, - "storage_destination": { - "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", - "allOf": [ - { - "$ref": "#/components/schemas/StorageDestinationInput" - } - ] - } - } + "$ref": "#/components/schemas/SearchConfigRequest" } } }, "required": true }, - "parameters": [ - { - "in": "path", - "name": "webhook_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the webhook configuration." - } - ], + "parameters": [], "responses": { - "204": { - "description": "Webhook configuration updated successfully" + "200": { + "description": "Details of local repository configuration", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RepoConfigObject" + } + } + } + } }, "400": { "description": "Invalid request.", @@ -17290,1630 +11165,2144 @@ } } } - } - }, - "components": { - "schemas": { - "ErrorResponse": { - "type": "object", - "properties": { - "error": { - "type": "object", - "nullable": true - } - } - }, - "GetTokenResponse": { - "type": "object", - "required": [ - "token", - "creation_time_in_millis", - "expiration_time_in_millis", - "valid_for_user_id", - "valid_for_username" + }, + "/api/rest/2.0/vcs/git/config/update": { + "post": { + "operationId": "updateConfig", + "description": "\n Version: 9.2.0.cl or later\n\nUpdates Git repository configuration settings.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_SETUP_VERSION_CONTROL` (**Can set up version control**) privilege.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Version Control", + "9.2.0.cl" ], - "properties": { - "token": { - "type": "string", - "description": "Bearer auth token." + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateConfigRequest" + } + } }, - "creation_time_in_millis": { - "type": "number", - "format": "float", - "description": "Token creation time in milliseconds." + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Successfully updated local repository configuration", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RepoConfigObject" + } + } + } }, - "expiration_time_in_millis": { - "type": "number", - "format": "float", - "description": "Token expiration time in milliseconds." + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "valid_for_user_id": { - "type": "string", - "description": "Username to whom the token is issued." + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "valid_for_username": { - "type": "string", - "description": "Unique identifier of the user to whom the token is issued." - } - } - }, - "RiseSetter": { - "type": "object", - "required": [ - "field", - "path" - ], - "properties": { - "field": { - "type": "string" + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "path": { - "type": "string" + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } } } - }, - "User": { - "type": "object", - "required": [ - "id", - "name", - "display_name", - "visibility" + } + }, + "/api/rest/2.0/vcs/git/branches/validate": { + "post": { + "operationId": "validateMerge", + "description": "\n Version: 9.2.0.cl or later\n\nValidates the content of your source branch against the objects in your destination environment.\n\nBefore merging content from your source branch to the destination branch, run this API operation from your destination environment and ensure that the changes from the source branch function in the destination environment.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege.\n\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance on your instance, the `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege and edit access to the metadata objects.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Version Control", + "9.2.0.cl" ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the user." - }, - "name": { - "type": "string", - "description": "Name of the user." - }, - "display_name": { - "type": "string", - "description": "Display name of the user." + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidateMergeRequest" + } + } }, - "visibility": { - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ], - "description": "Visibility of the users. The `SHARABLE` property makes a user visible to other users and group, who can share objects with the user." + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "validation done successfully", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeployResponse" + } + } + } + } }, - "author_id": { - "type": "string", - "description": "Unique identifier of author of the user.", - "nullable": true + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "can_change_password": { - "type": "boolean", - "description": "Defines whether the user can change their password.", - "nullable": true + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "complete_detail": { - "type": "boolean", - "description": "Defines whether the response has complete detail of the user.", - "nullable": true + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "creation_time_in_millis": { - "type": "number", - "format": "float", - "description": "Creation time of the user in milliseconds.", - "nullable": true + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/webhooks/create": { + "post": { + "operationId": "createWebhookConfiguration", + "description": "\nBeta Version: 10.14.0.cl or later\n\nCreates a new webhook configuration to receive notifications for specified events. The webhook will be triggered when the configured events occur in the system.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Webhooks", + "10.14.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateWebhookConfigurationRequest" + } + } }, - "current_org": { - "$ref": "#/components/schemas/Org", - "description": "Current logged-in Org of the user.", - "nullable": true + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Webhook configuration created successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookResponse" + }, + "examples": { + "example_1": { + "description": "Basic webhook with Bearer token authentication", + "value": { + "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "name": "My Liveboard Webhook", + "description": "Webhook to notify external system about liveboard schedules", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://myapp.example.com/webhooks/thoughtspot", + "url_params": { + "api_key": "abc123", + "version": "v1" + }, + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "BEARER_TOKEN": "***" + }, + "signature_verification": { + "type": "HMAC_SHA256", + "header": "X-Webhook-Signature", + "algorithm": "SHA256", + "secret": "***" + }, + "creation_time_in_millis": 1724277430243, + "modification_time_in_millis": 1724277430243, + "additional_headers": [ + { + "key": "Custom-Header", + "value": "value1" + }, + { + "key": "Custom-Header-2", + "value": "value2" + } + ], + "created_by": { + "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", + "name": "sarah_chen" + }, + "last_modified_by": { + "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", + "name": "sarah_chen" + } + } + }, + "example_2": { + "description": "Webhook with OAuth2 authentication", + "value": { + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "name": "OAuth2 Webhook", + "description": "Webhook with OAuth2 client credentials", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://api.example.com/webhooks", + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "OAUTH2": { + "authorization_url": "https://auth.example.com/oauth2/authorize", + "client_id": "client_123", + "client_secret": "***" + } + }, + "creation_time_in_millis": 1724278530123, + "modification_time_in_millis": 1724278530123, + "created_by": { + "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", + "name": "mike_rodriguez" + } + } + } + } + } + } }, - "deleted": { - "type": "boolean", - "description": "Indicates whether the user is deleted.", - "nullable": true + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "deprecated": { - "type": "boolean", - "description": "Indicates whether the user is deprecated.", - "nullable": true - }, - "account_type": { - "type": "string", - "enum": [ - "LOCAL_USER", - "LDAP_USER", - "SAML_USER", - "OIDC_USER", - "REMOTE_USER" - ], - "description": "Type of the user account.", - "nullable": true - }, - "account_status": { - "type": "string", - "enum": [ - "ACTIVE", - "INACTIVE", - "EXPIRED", - "LOCKED", - "PENDING", - "SUSPENDED" - ], - "description": "Status of the user account.", - "nullable": true - }, - "email": { - "type": "string", - "description": "Email of the user.", - "nullable": true - }, - "expiration_time_in_millis": { - "type": "number", - "format": "float", - "description": "Expiration time of the user in milliseconds.", - "nullable": true - }, - "external": { - "type": "boolean", - "description": "Indicates whether the user is external.", - "nullable": true + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "favorite_metadata": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FavoriteMetadataItem" - }, - "description": "Metadata objects to add to the users' favorites list.", - "nullable": true + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "first_login_time_in_millis": { - "type": "number", - "format": "float", - "description": "Timestamp of the first login session of the user in milliseconds.", - "nullable": true + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/webhooks/delete": { + "post": { + "operationId": "deleteWebhookConfigurations", + "description": "\nBeta Version: 10.14.0.cl or later\n\nDeletes one or more webhook configurations by their unique id or name. Returns status of each deletion operation, including successfully deleted webhooks and any failures with error details.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Webhooks", + "10.14.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteWebhookConfigurationsRequest" + } + } }, - "group_mask": { - "type": "integer", - "format": "int32", - "description": "Group mask of the user.", - "nullable": true + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Webhook configurations deleted successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookDeleteResponse" + }, + "examples": { + "example_1": { + "description": "Successful deletion of multiple webhooks", + "value": { + "deleted_count": 2, + "failed_count": 0, + "deleted_webhooks": [ + { + "id": "b9e3d8f2-4c7a-4e1b-8d3c-5f9a2b7e4c6d", + "name": "Old Webhook 1", + "description": "First webhook to be deleted", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://old-service.example.com/webhook1", + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "BEARER_TOKEN": "***" + }, + "creation_time_in_millis": 1724274600000, + "modification_time_in_millis": 1724274600000, + "created_by": { + "id": "1f4e7b2d-9c3a-4e6f-8b1d-3e7c5a9b2f4e", + "name": "jennifer_patel" + } + }, + { + "id": "e7c4a1f8-2b5d-4a9e-7c3f-8b1e5d4a7c9b", + "name": "Old Webhook 2", + "description": "Second webhook to be deleted", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://old-service.example.com/webhook2", + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "API_KEY": { + "key": "X-API-Key", + "value": "***" + } + }, + "creation_time_in_millis": 1724275530123, + "modification_time_in_millis": 1724275530123, + "created_by": { + "id": "9a5c2e8f-4b7d-4c1e-9f2a-6c8e3b5d7a4c", + "name": "david_thompson" + } + } + ], + "failed_webhooks": [] + } + }, + "example_2": { + "description": "Partial failure during deletion", + "value": { + "deleted_count": 1, + "failed_count": 1, + "deleted_webhooks": [ + { + "id": "c8f2a5e9-3d6b-4f1e-a8c2-7e4b1d9f5a3c", + "name": "Successfully Deleted Webhook", + "description": "This webhook was deleted successfully", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://service.example.com/webhook", + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "NO_AUTH": "" + }, + "creation_time_in_millis": 1724276415456, + "modification_time_in_millis": 1724276415456, + "created_by": { + "id": "6e9c4f2a-8b5d-4e1f-9c3a-5f8b2e7d4a6c", + "name": "emma_wang" + } + } + ], + "failed_webhooks": [ + { + "id": "a3f7c1e4-9b2d-4a6e-8f3c-1e5b7a9c4f2e", + "name": "Non-existent Webhook", + "error_message": "Webhook not found or access denied" + } + ] + } + } + } + } + } }, - "hidden": { - "type": "boolean", - "description": "Indicates whether the user is hidden.", - "nullable": true + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "home_liveboard": { - "$ref": "#/components/schemas/Object_ID_And_Name", - "description": "Unique ID or name of the default Liveboard assigned to the user.", - "nullable": true + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "incomplete_details": { - "type": "object", - "description": "Incomplete details of user if any present.", - "nullable": true + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "is_first_login": { - "type": "boolean", - "description": "Indicates whether it is first login of the user.", - "nullable": true - }, - "modification_time_in_millis": { - "type": "number", - "format": "float", - "description": "Last modified time of the user in milliseconds.", - "nullable": true - }, - "modifier_id": { - "type": "string", - "description": "Unique identifier of modifier of the user.", - "nullable": true - }, - "notify_on_share": { - "type": "boolean", - "description": "User preference for receiving email notifications on shared Answers or Liveboard.", - "nullable": true - }, - "onboarding_experience_completed": { - "type": "boolean", - "description": "The user preference for turning off the onboarding experience.", - "nullable": true - }, - "orgs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Org" - }, - "description": "Orgs to which the user belongs.", - "nullable": true - }, - "owner_id": { - "type": "string", - "description": "Unique identifier of owner of the user.", - "nullable": true - }, - "parent_type": { - "type": "string", - "enum": [ - "USER", - "GROUP" - ], - "description": "Parent type of the user.", - "nullable": true - }, - "privileges": { - "type": "array", - "items": { + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { + "get": { + "operationId": "getWebhookStorageConfig", + "description": "\nBeta Version: 26.4.0.cl or later\n\nGet storage config information for a webhook configuration. This endpoint provides ThoughtSpot's identity information and IAM policy configuration required for customers to set up cross-account access to their S3 buckets.\n\nThe setup info returned depends on the ThoughtSpot cluster type:\n- For AWS clusters: Returns `aws_config` with STS AssumeRole configuration\n- For GCP clusters: Returns `gcp_config` with STS AssumeRoleWithWebIdentity configuration\n\n**Note:** This endpoint only returns data if the webhook has a storage destination configured.\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": [ + "Webhooks", + "26.4.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "webhook_identifier", + "required": true, + "schema": { "type": "string" }, - "description": "Privileges which are assigned to the user.", - "nullable": true - }, - "show_onboarding_experience": { - "type": "boolean", - "description": "User's preference to revisit the new user onboarding experience.", - "nullable": true - }, - "super_user": { - "type": "boolean", - "description": "Indicates whether the user is a super user.", - "nullable": true - }, - "system_user": { - "type": "boolean", - "description": "Indicates whether the user is a system user.", - "nullable": true + "description": "Unique ID or name of the webhook configuration." + } + ], + "responses": { + "200": { + "description": "Storage setup information retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorageSetupInfo" + }, + "examples": { + "example_1": { + "description": "Storage setup info for AWS cluster deployment", + "value": { + "cluster_type": "AWS", + "storage_type": "AWS_S3", + "aws_config": { + "thoughtspot_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. Copy the trust policy template and attach it to your 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": "Storage setup info for GCP cluster deployment", + "value": { + "cluster_type": "GCP", + "storage_type": "AWS_S3", + "gcp_config": { + "thoughtspot_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 ThoughtSpot's 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" + ] + } + } + } + } + } + } }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Object_ID_And_Name" - }, - "description": "Tags associated with the user.", - "nullable": true + "400": { + "description": "Invalid request. Webhook not found or does not have storage destination configured.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "tenant_id": { - "type": "string", - "description": "Unique identifier of tenant of the user.", - "nullable": true + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "user_groups": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Object_ID_And_Name" - }, - "description": "Groups to which the user is assigned.", - "nullable": true + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "user_inherited_groups": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Object_ID_And_Name" - }, - "description": "Inherited User Groups which the user is part of.", - "nullable": true + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/webhooks/search": { + "post": { + "operationId": "searchWebhookConfigurations", + "description": "\nBeta Version: 10.14.0.cl or later\n\nSearches for webhook configurations based on various criteria such as Org, webhook identifier, event type, with support for pagination and sorting. Returns matching webhook configurations with their complete details.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Webhooks", + "10.14.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchWebhookConfigurationsRequest" + } + } }, - "welcome_email_sent": { - "type": "boolean", - "description": "Indicates whether welcome email is sent for the user.", - "nullable": true + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Webhook configurations retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookSearchResponse" + }, + "examples": { + "example_1": { + "description": "Search results with multiple webhooks", + "value": { + "webhooks": [ + { + "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "name": "Liveboard Schedule Webhook", + "description": "Webhook for liveboard schedule notifications", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://myapp.example.com/webhooks", + "url_params": { + "api_key": "abc123" + }, + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "BEARER_TOKEN": "***" + }, + "signature_verification": { + "type": "HMAC_SHA256", + "header": "X-Webhook-Signature", + "algorithm": "SHA256", + "secret": "***" + }, + "creation_time_in_millis": 1724277430243, + "modification_time_in_millis": 1724278215123, + "additional_headers": [ + { + "key": "Custom-Header", + "value": "value1" + }, + { + "key": "Custom-Header-2", + "value": "value2" + } + ], + "created_by": { + "id": "8e3f2a7b-9c4d-4e5f-8a1b-7c9d3e6f4a2b", + "name": "sarah_chen" + }, + "last_modified_by": { + "id": "2c9a7e4f-6b3d-4a8e-9f1c-5e7a3b9c2d6f", + "name": "alex_kim" + } + }, + { + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "name": "API Key Webhook", + "description": "Webhook with API key authentication", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://api.example.com/notifications", + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "API_KEY": { + "key": "X-API-Key", + "value": "***" + } + }, + "creation_time_in_millis": 1724275845987, + "modification_time_in_millis": 1724275845987, + "created_by": { + "id": "7d5e9f2a-4b8c-4d6e-9a3b-5c7e1f4a8b2d", + "name": "mike_rodriguez" + } + } + ], + "pagination": { + "record_offset": 0, + "record_size": 50, + "total_count": 2, + "has_more": false + } + } + }, + "example_2": { + "description": "Empty search results", + "value": { + "webhooks": [], + "pagination": { + "record_offset": 0, + "record_size": 50, + "total_count": 0, + "has_more": false + } + } + } + } + } + } }, - "org_privileges": { - "type": "object", - "description": "Privileges which are assigned to the user with org.", - "nullable": true + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "preferred_locale": { - "type": "string", - "description": "Locale for the user.", - "nullable": true + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "use_browser_language": { - "type": "boolean", - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", - "nullable": true + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "extended_properties": { - "type": "object", - "description": "Properties for the user", - "nullable": true + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/webhooks/{webhook_identifier}/update": { + "post": { + "operationId": "updateWebhookConfiguration", + "description": "\nBeta Version: 10.14.0.cl or later\n\nUpdates an existing webhook configuration by its unique id or name. Only the provided fields will be updated.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Webhooks", + "10.14.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateWebhookConfigurationRequest" + } + } }, - "extended_preferences": { - "type": "object", - "description": "Preferences for the user", - "nullable": true + "required": true + }, + "parameters": [ + { + "in": "path", + "name": "webhook_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the webhook configuration." + } + ], + "responses": { + "204": { + "description": "Webhook configuration updated successfully" }, - "user_parameters": { - "type": "object", - "description": "User Parameters which are specified for the user via JWToken", - "nullable": true + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "access_control_properties": { - "type": "object", - "description": "Access Control Properties which are specified for the user via JWToken", - "nullable": true + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } }, - "variable_values": { + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "ErrorResponse": { + "type": "object", + "properties": { + "error": { "type": "object", - "description": "Formula Variables which are specified for the user via JWToken", "nullable": true } } }, - "Org": { + "GetTokenResponse": { "type": "object", "required": [ - "id", - "name" + "token", + "creation_time_in_millis", + "expiration_time_in_millis", + "valid_for_user_id", + "valid_for_username" ], "properties": { - "id": { - "type": "integer", - "format": "int32", - "description": "The ID of the object." + "token": { + "type": "string", + "description": "Bearer auth token." }, - "name": { + "creation_time_in_millis": { + "type": "number", + "format": "float", + "description": "Token creation time in milliseconds." + }, + "expiration_time_in_millis": { + "type": "number", + "format": "float", + "description": "Token expiration time in milliseconds." + }, + "valid_for_user_id": { "type": "string", - "description": "Name of the object." + "description": "Username to whom the token is issued." + }, + "valid_for_username": { + "type": "string", + "description": "Unique identifier of the user to whom the token is issued." } - }, - "description": "The current Org context of the user." + } }, - "FavoriteMetadataItem": { + "RiseSetter": { "type": "object", "required": [ - "id", - "name", - "type" + "field", + "path" ], "properties": { - "id": { - "type": "string", - "description": "Unique ID of the metadata object." - }, - "name": { - "type": "string", - "description": "name of the metadata object." + "field": { + "type": "string" }, - "type": { - "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "CONNECTION", - "TAG", - "USER", - "USER_GROUP", - "LOGICAL_RELATIONSHIP" - ], - "description": " Type of metadata object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier." + "path": { + "type": "string" } } }, - "Object_ID_And_Name": { + "User": { "type": "object", + "required": [ + "id", + "name", + "display_name", + "visibility" + ], "properties": { "id": { "type": "string", - "description": "The unique identifier of the object.", - "nullable": true + "description": "Unique identifier of the user." }, "name": { "type": "string", - "description": "Name of the object.", - "nullable": true - } - }, - "description": "The object representation with ID and Name." - }, - "FavoriteMetadataInput": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata object.", - "nullable": true + "description": "Name of the user." }, - "type": { - "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER" - ], - "description": " Type of metadata object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", - "nullable": true - } - } - }, - "SortOptions": { - "type": "object", - "properties": { - "field_name": { + "display_name": { "type": "string", - "enum": [ - "NAME", - "DISPLAY_NAME", - "AUTHOR", - "CREATED", - "MODIFIED" - ], - "description": "Name of the field to apply the sort on.", - "nullable": true + "description": "Display name of the user." }, - "order": { + "visibility": { "type": "string", "enum": [ - "ASC", - "DESC" + "SHARABLE", + "NON_SHARABLE" ], - "description": "Sort order : ASC(Ascending) or DESC(Descending).", - "nullable": true - } - }, - "description": "Sort options." - }, - "SystemInfo": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the object", - "nullable": true + "description": "Visibility of the users. The `SHARABLE` property makes a user visible to other users and group, who can share objects with the user." }, - "name": { + "author_id": { "type": "string", - "description": "Name of the cluster.", + "description": "Unique identifier of author of the user.", "nullable": true }, - "release_version": { - "type": "string", - "description": "The release version of the cluster.", + "can_change_password": { + "type": "boolean", + "description": "Defines whether the user can change their password.", "nullable": true }, - "time_zone": { - "type": "string", - "description": "The timezone of the cluster.", + "complete_detail": { + "type": "boolean", + "description": "Defines whether the response has complete detail of the user.", "nullable": true }, - "locale": { - "type": "string", - "description": "The default locale of the cluster.", + "creation_time_in_millis": { + "type": "number", + "format": "float", + "description": "Creation time of the user in milliseconds.", "nullable": true }, - "date_format": { - "type": "string", - "description": "The default date format representation of the cluster.", + "current_org": { + "$ref": "#/components/schemas/Org", + "description": "Current logged-in Org of the user.", "nullable": true }, - "api_version": { - "type": "string", - "description": "The API version of the cluster.", + "deleted": { + "type": "boolean", + "description": "Indicates whether the user is deleted.", "nullable": true }, - "type": { - "type": "string", - "description": "The deployment type of the cluster.", + "deprecated": { + "type": "boolean", + "description": "Indicates whether the user is deprecated.", "nullable": true }, - "environment": { + "account_type": { "type": "string", - "description": "The deployed environment of the cluster.", + "enum": [ + "LOCAL_USER", + "LDAP_USER", + "SAML_USER", + "OIDC_USER", + "REMOTE_USER" + ], + "description": "Type of the user account.", "nullable": true }, - "license": { + "account_status": { "type": "string", - "description": "The license applied to the cluster.", + "enum": [ + "ACTIVE", + "INACTIVE", + "EXPIRED", + "LOCKED", + "PENDING", + "SUSPENDED" + ], + "description": "Status of the user account.", "nullable": true }, - "date_time_format": { + "email": { "type": "string", - "description": "The default date time format representation of the cluster.", + "description": "Email of the user.", "nullable": true }, - "time_format": { - "type": "string", - "description": "The default time format representation of the cluster.", + "expiration_time_in_millis": { + "type": "number", + "format": "float", + "description": "Expiration time of the user in milliseconds.", "nullable": true }, - "system_user_id": { - "type": "string", - "description": "The unique identifier of system user.", + "external": { + "type": "boolean", + "description": "Indicates whether the user is external.", "nullable": true }, - "super_user_id": { - "type": "string", - "description": "The unique identifier of super user.", + "favorite_metadata": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FavoriteMetadataItem" + }, + "description": "Metadata objects to add to the users' favorites list.", "nullable": true }, - "hidden_object_id": { - "type": "string", - "description": "The unique identifier of hidden object.", + "first_login_time_in_millis": { + "type": "number", + "format": "float", + "description": "Timestamp of the first login session of the user in milliseconds.", "nullable": true }, - "system_group_id": { - "type": "string", - "description": "The unique identifier of system group.", + "group_mask": { + "type": "integer", + "format": "int32", + "description": "Group mask of the user.", "nullable": true }, - "tsadmin_user_id": { - "type": "string", - "description": "The unique identifier of tsadmin user.", + "hidden": { + "type": "boolean", + "description": "Indicates whether the user is hidden.", "nullable": true }, - "admin_group_id": { - "type": "string", - "description": "The unique identifier of admin group.", + "home_liveboard": { + "$ref": "#/components/schemas/Object_ID_And_Name", + "description": "Unique ID or name of the default Liveboard assigned to the user.", "nullable": true }, - "all_tables_connection_id": { - "type": "string", - "description": "The unique identifier of all tables connection.", + "incomplete_details": { + "type": "object", + "description": "Incomplete details of user if any present.", "nullable": true }, - "all_user_group_id": { - "type": "string", - "description": "The unique identifier of ALL group.", + "is_first_login": { + "type": "boolean", + "description": "Indicates whether it is first login of the user.", "nullable": true }, - "accept_language": { + "modification_time_in_millis": { + "type": "number", + "format": "float", + "description": "Last modified time of the user in milliseconds.", + "nullable": true + }, + "modifier_id": { "type": "string", - "description": "The supported accept language by the cluster.", + "description": "Unique identifier of modifier of the user.", "nullable": true }, - "all_user_group_member_user_count": { - "type": "integer", - "format": "int32", - "description": "The count of users of ALL group.", + "notify_on_share": { + "type": "boolean", + "description": "User preference for receiving email notifications on shared Answers or Liveboard.", "nullable": true }, - "logical_model_version": { - "type": "integer", - "format": "int32", - "description": "The version number of logical model of the cluster.", + "onboarding_experience_completed": { + "type": "boolean", + "description": "The user preference for turning off the onboarding experience.", "nullable": true - } - } - }, - "SystemConfig": { - "type": "object", - "properties": { - "onboarding_content_url": { + }, + "orgs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Org" + }, + "description": "Orgs to which the user belongs.", + "nullable": true + }, + "owner_id": { "type": "string", + "description": "Unique identifier of owner of the user.", "nullable": true }, - "saml_enabled": { + "parent_type": { + "type": "string", + "enum": [ + "USER", + "GROUP" + ], + "description": "Parent type of the user.", + "nullable": true + }, + "privileges": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Privileges which are assigned to the user.", + "nullable": true + }, + "show_onboarding_experience": { "type": "boolean", + "description": "User's preference to revisit the new user onboarding experience.", "nullable": true }, - "okta_enabled": { + "super_user": { "type": "boolean", + "description": "Indicates whether the user is a super user.", "nullable": true - } - } - }, - "SystemOverrideInfo": { - "type": "object", - "properties": { - "config_override_info": { - "type": "object", + }, + "system_user": { + "type": "boolean", + "description": "Indicates whether the user is a system user.", "nullable": true - } - } - }, - "OrgPreferenceSearchCriteriaInput": { - "type": "object", - "required": [ - "org_identifier" - ], - "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" }, - "event_types": { + "tags": { "type": "array", "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] + "$ref": "#/components/schemas/Object_ID_And_Name" }, - "description": "Event types to search for. If not provided, all event types for this org are returned.", + "description": "Tags associated with the user.", "nullable": true - } - } - }, - "CommunicationChannelPreferencesResponse": { - "type": "object", - "properties": { - "cluster_preferences": { + }, + "tenant_id": { + "type": "string", + "description": "Unique identifier of tenant of the user.", + "nullable": true + }, + "user_groups": { "type": "array", "items": { - "$ref": "#/components/schemas/EventChannelConfig" + "$ref": "#/components/schemas/Object_ID_And_Name" }, - "description": "Cluster-level default configurations.", + "description": "Groups to which the user is assigned.", "nullable": true }, - "org_preferences": { + "user_inherited_groups": { "type": "array", "items": { - "$ref": "#/components/schemas/OrgChannelConfigResponse" + "$ref": "#/components/schemas/Object_ID_And_Name" }, - "description": "Org-specific configurations.", + "description": "Inherited User Groups which the user is part of.", "nullable": true - } - } - }, - "EventChannelConfig": { - "type": "object", - "required": [ - "event_type", - "channels" - ], - "properties": { - "event_type": { + }, + "welcome_email_sent": { + "type": "boolean", + "description": "Indicates whether welcome email is sent for the user.", + "nullable": true + }, + "org_privileges": { + "type": "object", + "description": "Privileges which are assigned to the user with org.", + "nullable": true + }, + "preferred_locale": { "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ], - "description": "Type of event for which communication channels are configured" + "description": "Locale for the user.", + "nullable": true }, - "channels": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "EMAIL", - "WEBHOOK" - ] - }, - "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." + "use_browser_language": { + "type": "boolean", + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.
Version: 26.3.0.cl or later", + "nullable": true + }, + "extended_properties": { + "type": "object", + "description": "Properties for the user", + "nullable": true + }, + "extended_preferences": { + "type": "object", + "description": "Preferences for the user", + "nullable": true + }, + "user_parameters": { + "type": "object", + "description": "User Parameters which are specified for the user via JWToken", + "nullable": true + }, + "access_control_properties": { + "type": "object", + "description": "Access Control Properties which are specified for the user via JWToken", + "nullable": true + }, + "variable_values": { + "type": "object", + "description": "Formula Variables which are specified for the user via JWToken", + "nullable": true } } }, - "OrgChannelConfigResponse": { + "Org": { "type": "object", "required": [ - "org", - "preferences" + "id", + "name" ], "properties": { - "org": { - "$ref": "#/components/schemas/OrgDetails", - "description": "Org details" + "id": { + "type": "integer", + "format": "int32", + "description": "The ID of the object." }, - "preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfig" - }, - "description": "Event-specific communication channel configurations for this org" + "name": { + "type": "string", + "description": "Name of the object." } - } + }, + "description": "The current Org context of the user." }, - "OrgDetails": { + "FavoriteMetadataItem": { "type": "object", "required": [ "id", - "name" + "name", + "type" ], "properties": { "id": { "type": "string", - "description": "Unique id of the org" + "description": "Unique ID of the metadata object." }, "name": { "type": "string", - "description": "Name of the org" + "description": "name of the metadata object." + }, + "type": { + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "CONNECTION", + "TAG", + "USER", + "USER_GROUP", + "LOGICAL_RELATIONSHIP" + ], + "description": " Type of metadata object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier." } } }, - "SecuritySettingsResponse": { + "Object_ID_And_Name": { "type": "object", "properties": { - "cluster_preferences": { - "$ref": "#/components/schemas/SecuritySettingsClusterPreferences", - "description": "Cluster-level security preferences.", - "nullable": true - }, - "org_preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SecuritySettingsOrgPreferences" - }, - "description": "Org-level security preferences.", + "id": { + "type": "string", + "description": "The unique identifier of the object.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Name of the object.", "nullable": true } }, - "description": "Response type for security settings search." + "description": "The object representation with ID and Name." }, - "SecuritySettingsClusterPreferences": { + "FavoriteMetadataInput": { "type": "object", "properties": { - "enable_partitioned_cookies": { - "type": "boolean", - "description": "Support embedded access when third-party cookies are blocked.", - "nullable": true - }, - "cors_whitelisted_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed origins for CORS.", + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata object.", "nullable": true }, - "csp_settings": { - "$ref": "#/components/schemas/CspSettings", - "description": "CSP (Content Security Policy) settings.", + "type": { + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER" + ], + "description": " Type of metadata object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", "nullable": true - }, - "saml_redirect_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed redirect hosts for SAML login.", + } + } + }, + "SortOptions": { + "type": "object", + "properties": { + "field_name": { + "type": "string", + "enum": [ + "NAME", + "DISPLAY_NAME", + "AUTHOR", + "CREATED", + "MODIFIED" + ], + "description": "Name of the field to apply the sort on.", "nullable": true }, - "non_embed_access": { - "$ref": "#/components/schemas/ClusterNonEmbedAccess", - "description": "Non-embed access configuration at cluster level.", + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "description": "Sort order : ASC(Ascending) or DESC(Descending).", "nullable": true } }, - "description": "Cluster-level security preferences." + "description": "Sort options." }, - "CspSettings": { + "SystemInfo": { "type": "object", "properties": { - "connect_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for connect-src directive.", + "id": { + "type": "string", + "description": "The unique identifier of the object", "nullable": true }, - "font_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for font-src directive.", + "name": { + "type": "string", + "description": "Name of the cluster.", "nullable": true }, - "visual_embed_hosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed hosts for visual embed (frame-ancestors directive).", + "release_version": { + "type": "string", + "description": "The release version of the cluster.", "nullable": true }, - "iframe_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for frame-src directive.", + "time_zone": { + "type": "string", + "description": "The timezone of the cluster.", "nullable": true }, - "img_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for img-src directive.", + "locale": { + "type": "string", + "description": "The default locale of the cluster.", "nullable": true }, - "script_src_urls": { - "$ref": "#/components/schemas/ScriptSrcUrls", - "description": "Script-src settings including URLs and enabled flag.", + "date_format": { + "type": "string", + "description": "The default date format representation of the cluster.", "nullable": true }, - "style_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for style-src directive.", + "api_version": { + "type": "string", + "description": "The API version of the cluster.", "nullable": true - } - }, - "description": "CSP (Content Security Policy) settings." - }, - "ScriptSrcUrls": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Whether script-src customization is enabled.", + }, + "type": { + "type": "string", + "description": "The deployment type of the cluster.", "nullable": true }, - "urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", + "environment": { + "type": "string", + "description": "The deployed environment of the cluster.", "nullable": true - } - }, - "description": "Script-src CSP settings." - }, - "ClusterNonEmbedAccess": { - "type": "object", - "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", + }, + "license": { + "type": "string", + "description": "The license applied to the cluster.", "nullable": true }, - "groups_with_access": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupInfo" - }, - "description": "Groups that have non-embed full app access.\nOnly applicable when orgs feature is disabled. Use org_preferences when org feature is enabled.", + "date_time_format": { + "type": "string", + "description": "The default date time format representation of the cluster.", "nullable": true - } - }, - "description": "Cluster-level non-embed access configuration." - }, - "GroupInfo": { - "type": "object", - "properties": { - "id": { + }, + "time_format": { "type": "string", - "description": "Unique identifier of the group.", + "description": "The default time format representation of the cluster.", "nullable": true }, - "name": { + "system_user_id": { "type": "string", - "description": "Name of the group.", + "description": "The unique identifier of system user.", "nullable": true - } - }, - "description": "Group information for non-embed access." - }, - "SecuritySettingsOrgPreferences": { - "type": "object", - "properties": { - "org": { - "$ref": "#/components/schemas/SecuritySettingsOrgDetails", - "description": "Org details (id and name).", + }, + "super_user_id": { + "type": "string", + "description": "The unique identifier of super user.", "nullable": true }, - "cors_whitelisted_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed origins for CORS for this org.", + "hidden_object_id": { + "type": "string", + "description": "The unique identifier of hidden object.", "nullable": true }, - "non_embed_access": { - "$ref": "#/components/schemas/OrgNonEmbedAccess", - "description": "Non-embed access configuration for this org.", + "system_group_id": { + "type": "string", + "description": "The unique identifier of system group.", "nullable": true - } - }, - "description": "Org-level security preferences." - }, - "SecuritySettingsOrgDetails": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int32", - "description": "Unique identifier of the org.", + }, + "tsadmin_user_id": { + "type": "string", + "description": "The unique identifier of tsadmin user.", "nullable": true }, - "name": { + "admin_group_id": { "type": "string", - "description": "Name of the org.", - "nullable": true - } - }, - "description": "Org details for security settings." - }, - "OrgNonEmbedAccess": { - "type": "object", - "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", + "description": "The unique identifier of admin group.", "nullable": true }, - "groups_with_access": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GroupInfo" - }, - "description": "Groups that have non-embed full app access.", - "nullable": true - } - }, - "description": "Org-level non-embed access configuration." - }, - "OrgResponse": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int32", - "description": "Unique identifier of the Org.", + "all_tables_connection_id": { + "type": "string", + "description": "The unique identifier of all tables connection.", "nullable": true }, - "name": { + "all_user_group_id": { "type": "string", - "description": "Name of the Org.", + "description": "The unique identifier of ALL group.", "nullable": true }, - "status": { + "accept_language": { "type": "string", - "enum": [ - "ACTIVE", - "IN_ACTIVE" - ], - "description": "Status of the Org.", + "description": "The supported accept language by the cluster.", "nullable": true }, - "description": { - "type": "string", - "description": "Description of the Org.", + "all_user_group_member_user_count": { + "type": "integer", + "format": "int32", + "description": "The count of users of ALL group.", "nullable": true }, - "visibility": { - "type": "string", - "enum": [ - "SHOW", - "HIDDEN" - ], - "description": "Visibility of the Org.", + "logical_model_version": { + "type": "integer", + "format": "int32", + "description": "The version number of logical model of the cluster.", "nullable": true } } }, - "Tag": { + "SystemConfig": { "type": "object", - "required": [ - "name", - "id" - ], "properties": { - "name": { - "type": "string" - }, - "id": { - "type": "string" - }, - "color": { + "onboarding_content_url": { "type": "string", "nullable": true }, - "deleted": { + "saml_enabled": { "type": "boolean", "nullable": true }, - "hidden": { + "okta_enabled": { "type": "boolean", "nullable": true - }, - "external": { - "type": "boolean", + } + } + }, + "SystemOverrideInfo": { + "type": "object", + "properties": { + "config_override_info": { + "type": "object", "nullable": true + } + } + }, + "OrgPreferenceSearchCriteriaInput": { + "type": "object", + "required": [ + "org_identifier" + ], + "properties": { + "org_identifier": { + "type": "string", + "description": "Unique identifier or name of the org" }, - "deprecated": { - "type": "boolean", + "event_types": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] + }, + "description": "Event types to search for. If not provided, all event types for this org are returned.", "nullable": true - }, - "creation_time_in_millis": { - "type": "number", - "format": "float", + } + } + }, + "CommunicationChannelPreferencesResponse": { + "type": "object", + "properties": { + "cluster_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfig" + }, + "description": "Cluster-level default configurations.", "nullable": true }, - "modification_time_in_millis": { - "type": "number", - "format": "float", + "org_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrgChannelConfigResponse" + }, + "description": "Org-specific configurations.", "nullable": true - }, - "author_id": { + } + } + }, + "EventChannelConfig": { + "type": "object", + "required": [ + "event_type", + "channels" + ], + "properties": { + "event_type": { "type": "string", - "nullable": true + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Type of event for which communication channels are configured" }, - "modifier_id": { - "type": "string", - "nullable": true + "channels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "EMAIL", + "WEBHOOK" + ] + }, + "description": "Communication channels enabled for this event type. Empty array indicates no channels are enabled." + } + } + }, + "OrgChannelConfigResponse": { + "type": "object", + "required": [ + "org", + "preferences" + ], + "properties": { + "org": { + "$ref": "#/components/schemas/OrgDetails", + "description": "Org details" }, - "owner_id": { - "type": "string", - "nullable": true + "preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfig" + }, + "description": "Event-specific communication channel configurations for this org" } } }, - "UserGroupResponse": { + "OrgDetails": { "type": "object", "required": [ - "display_name", "id", - "name", - "visibility" + "name" ], "properties": { - "author_id": { + "id": { "type": "string", - "description": "The unique identifier of the object", - "nullable": true + "description": "Unique id of the org" }, - "complete_detail": { - "type": "boolean", - "description": "Indicates whether the response has complete detail of the group.", + "name": { + "type": "string", + "description": "Name of the org" + } + } + }, + "SecuritySettingsResponse": { + "type": "object", + "properties": { + "cluster_preferences": { + "$ref": "#/components/schemas/SecuritySettingsClusterPreferences", + "description": "Cluster-level security preferences.", "nullable": true }, - "content": { - "type": "object", - "description": "Content details of the group", + "org_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SecuritySettingsOrgPreferences" + }, + "description": "Org-level security preferences.", "nullable": true - }, - "creation_time_in_millis": { - "type": "number", - "format": "float", - "description": "Creation time of the group in milliseconds", + } + }, + "description": "Response type for security settings search." + }, + "SecuritySettingsClusterPreferences": { + "type": "object", + "properties": { + "enable_partitioned_cookies": { + "type": "boolean", + "description": "Support embedded access when third-party cookies are blocked.", "nullable": true }, - "default_liveboards": { + "cors_whitelisted_urls": { "type": "array", "items": { - "$ref": "#/components/schemas/UserGroup" + "type": "string" }, - "description": "Liveboards that are assigned as default Liveboards to the group.", + "description": "Allowed origins for CORS.", "nullable": true }, - "deleted": { - "type": "boolean", - "description": "Indicates whether the group is deleted", + "csp_settings": { + "$ref": "#/components/schemas/CspSettings", + "description": "CSP (Content Security Policy) settings.", "nullable": true }, - "deprecated": { - "type": "boolean", - "description": "Indicates whether the group is deprecated", + "saml_redirect_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed redirect hosts for SAML login.", "nullable": true }, - "description": { - "type": "string", - "description": "Description of the group", - "nullable": true - }, - "display_name": { - "type": "string", - "description": "Display name of the group." - }, - "external": { - "type": "boolean", - "description": "Indicates whether the group is external", - "nullable": true - }, - "generation_number": { - "type": "integer", - "format": "int32", - "description": "Generation number of the group", - "nullable": true - }, - "hidden": { - "type": "boolean", - "description": "Indicates whether the group is hidden", - "nullable": true - }, - "id": { - "type": "string", - "description": "The unique identifier of the object" - }, - "index": { - "type": "integer", - "format": "int32", - "description": "Index number of the group", - "nullable": true - }, - "index_version": { - "type": "integer", - "format": "int32", - "description": "Index version number of the group", + "non_embed_access": { + "$ref": "#/components/schemas/ClusterNonEmbedAccess", + "description": "Non-embed access configuration at cluster level.", "nullable": true - }, - "metadata_version": { - "type": "integer", - "format": "int32", - "description": "Metadata version number of the group", + } + }, + "description": "Cluster-level security preferences." + }, + "CspSettings": { + "type": "object", + "properties": { + "connect_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for connect-src directive.", "nullable": true }, - "modification_time_in_millis": { - "type": "number", - "format": "float", - "description": "Last modified time of the group in milliseconds.", + "font_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for font-src directive.", "nullable": true }, - "modifier_id": { - "type": "string", - "description": "The unique identifier of the object", + "visual_embed_hosts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed hosts for visual embed (frame-ancestors directive).", "nullable": true }, - "name": { - "type": "string", - "description": "Name of the group." - }, - "orgs": { + "iframe_src_urls": { "type": "array", "items": { - "$ref": "#/components/schemas/UserGroup" + "type": "string" }, - "description": "Orgs in which group exists.", + "description": "Allowed URLs for frame-src directive.", "nullable": true }, - "owner_id": { - "type": "string", - "description": "The unique identifier of the object", + "img_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for img-src directive.", "nullable": true }, - "parent_type": { - "type": "string", - "enum": [ - "USER", - "GROUP" - ], - "description": "Parent type of the group.", + "script_src_urls": { + "$ref": "#/components/schemas/ScriptSrcUrls", + "description": "Script-src settings including URLs and enabled flag.", "nullable": true }, - "privileges": { + "style_src_urls": { "type": "array", "items": { "type": "string" }, - "description": "Privileges which are assigned to the group", + "description": "Allowed URLs for style-src directive.", + "nullable": true + } + }, + "description": "CSP (Content Security Policy) settings." + }, + "ScriptSrcUrls": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether script-src customization is enabled.", "nullable": true }, - "sub_groups": { + "urls": { "type": "array", "items": { - "$ref": "#/components/schemas/UserGroup" + "type": "string" }, - "description": "Groups who are part of the group", + "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", "nullable": true - }, - "system_group": { + } + }, + "description": "Script-src CSP settings." + }, + "ClusterNonEmbedAccess": { + "type": "object", + "properties": { + "block_full_app_access": { "type": "boolean", - "description": "Indicates whether the group is a system group.", + "description": "Block full application access for non-embedded usage.", "nullable": true }, - "tags": { + "groups_with_access": { "type": "array", "items": { - "$ref": "#/components/schemas/UserGroup" + "$ref": "#/components/schemas/GroupInfo" }, - "description": "Tags associated with the group.", + "description": "Groups that have non-embed full app access.\nOnly applicable when orgs feature is disabled. Use org_preferences when org feature is enabled.", + "nullable": true + } + }, + "description": "Cluster-level non-embed access configuration." + }, + "GroupInfo": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the group.", "nullable": true }, - "type": { + "name": { "type": "string", - "enum": [ - "LOCAL_GROUP", - "LDAP_GROUP", - "TEAM_GROUP", - "TENANT_GROUP" - ], - "description": "Type of the group.", + "description": "Name of the group.", + "nullable": true + } + }, + "description": "Group information for non-embed access." + }, + "SecuritySettingsOrgPreferences": { + "type": "object", + "properties": { + "org": { + "$ref": "#/components/schemas/SecuritySettingsOrgDetails", + "description": "Org details (id and name).", "nullable": true }, - "users": { + "cors_whitelisted_urls": { "type": "array", "items": { - "$ref": "#/components/schemas/UserGroup" + "type": "string" }, - "description": "Users who are part of the group.", + "description": "Allowed origins for CORS for this org.", "nullable": true }, - "visibility": { - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ], - "description": "Visibility of the group. The SHARABLE makes a group visible to other users and groups, and thus allows them to share objects." - }, - "roles": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Role" - }, - "description": "List of roles assgined to the user", + "non_embed_access": { + "$ref": "#/components/schemas/OrgNonEmbedAccess", + "description": "Non-embed access configuration for this org.", "nullable": true } - } + }, + "description": "Org-level security preferences." }, - "Role": { + "SecuritySettingsOrgDetails": { "type": "object", "properties": { "id": { - "type": "string", - "description": "id of the role", + "type": "integer", + "format": "int32", + "description": "Unique identifier of the org.", "nullable": true }, "name": { "type": "string", - "description": "name of the role", + "description": "Name of the org.", "nullable": true } - } + }, + "description": "Org details for security settings." }, - "MetadataListItemInput": { + "OrgNonEmbedAccess": { "type": "object", "properties": { - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata.", + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", "nullable": true }, - "obj_identifier": { - "type": "string", - "description": "CustomObjectId of the metadata.", + "groups_with_access": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupInfo" + }, + "description": "Groups that have non-embed full app access.", + "nullable": true + } + }, + "description": "Org-level non-embed access configuration." + }, + "OrgResponse": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique identifier of the Org.", "nullable": true }, - "name_pattern": { + "name": { "type": "string", - "description": "A pattern to match the case-insensitive name of the metadata object. User % for a wildcard match.", + "description": "Name of the Org.", "nullable": true }, - "type": { + "status": { "type": "string", "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "CONNECTION", - "TAG", - "USER", - "USER_GROUP", - "LOGICAL_RELATIONSHIP", - "INSIGHT_SPEC" + "ACTIVE", + "IN_ACTIVE" ], - "description": "Type of metadata. Required if the name of the object is set as identifier. This attribute is optional when the object GUID is specified as identifier.\n1. Liveboard\n2. Answers\n3. LOGICAL_TABLE for any data object such as table, worksheet or view.\n4. LOGICAL_COLUMN for a column of any data object such as table, worksheet or view.\n5. CONNECTION for creating or modify data connections.\n6. TAG for tag objects.\n7. USER for user objects.\n8. USER_GROUP for group objects.\n9. LOGICAL_RELATIONSHIP for table or worksheet joins. A join combines from one or several data object by using matching values\n10. INSIGHT_SPEC for SpotIQ objects", + "description": "Status of the Org.", "nullable": true }, - "subtypes": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "ONE_TO_ONE_LOGICAL", - "WORKSHEET", - "PRIVATE_WORKSHEET", - "USER_DEFINED", - "AGGR_WORKSHEET", - "SQL_VIEW" - ] - }, - "description": "List of subtype of metadata. Applies for LOGICAL_TABLE type with the following valid values.\n1. ONE_TO_ONE_LOGICAL\n2. WORKSHEET\n3. PRIVATE_WORKSHEET.\n4. USER_DEFINED.\n5. AGGR_WORKSHEET.\n6. SQL_VIEW
Version: 10.11.0.cl or later", + "description": { + "type": "string", + "description": "Description of the Org.", "nullable": true - } - } - }, - "PermissionInput": { - "type": "object", - "required": [ - "principal", - "share_mode" - ], - "properties": { - "principal": { - "$ref": "#/components/schemas/PrincipalsInput", - "description": "Details of users or groups." }, - "share_mode": { + "visibility": { "type": "string", "enum": [ - "READ_ONLY", - "MODIFY", - "NO_ACCESS" + "SHOW", + "HIDDEN" ], - "description": "Object share mode." + "description": "Visibility of the Org.", + "nullable": true } - }, - "description": "Details of users or groups." + } }, - "ExcludeMetadataListItemInput": { + "Tag": { "type": "object", "required": [ - "identifier", - "type" + "name", + "id" ], "properties": { - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata." + "name": { + "type": "string" }, - "type": { + "id": { + "type": "string" + }, + "color": { "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "CONNECTION", - "TAG", - "USER", - "USER_GROUP", - "LOGICAL_RELATIONSHIP", - "INSIGHT_SPEC" - ], - "description": "Type of metadata. Required if the name of the object is set as identifier. This attribute is optional when the object GUID is specified as identifier.\n1. Liveboard\n2. Answers\n3. LOGICAL_TABLE for any data object such as table, worksheet or view\n4. LOGICAL_COLUMN for a column of any data object such as table, worksheet or view\n5. CONNECTION for connection objects\n6. TAG for tag objects\n7. USER for user objects\n8. USER_GROUP for group objects\n9. LOGICAL_RELATIONSHIP for table or worksheet joins. A join combines from one or several data object by using matching values.\n10. INSIGHT_SPEC for SpotIQ objects" - } - } - }, - "FavoriteObjectOptionsInput": { - "type": "object", - "properties": { - "include": { + "nullable": true + }, + "deleted": { "type": "boolean", - "default": false, - "description": "Includes objects marked as favorite for the specified users.", "nullable": true }, - "user_identifiers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Unique ID or name of the users. If not specified, the favorite objects of current logged in user are returned.", + "hidden": { + "type": "boolean", "nullable": true - } - }, - "description": "Favorite object options." - }, - "MetadataSearchSortOptions": { - "type": "object", - "properties": { - "field_name": { + }, + "external": { + "type": "boolean", + "nullable": true + }, + "deprecated": { + "type": "boolean", + "nullable": true + }, + "creation_time_in_millis": { + "type": "number", + "format": "float", + "nullable": true + }, + "modification_time_in_millis": { + "type": "number", + "format": "float", + "nullable": true + }, + "author_id": { "type": "string", - "enum": [ - "NAME", - "DISPLAY_NAME", - "AUTHOR", - "CREATED", - "MODIFIED", - "VIEWS", - "FAVORITES", - "LAST_ACCESSED" - ], - "description": "Name of the field to apply the sort on.", "nullable": true }, - "order": { + "modifier_id": { + "type": "string", + "nullable": true + }, + "owner_id": { "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "description": "Sort order : ASC(Ascending) or DESC(Descending).", "nullable": true } - }, - "description": "Sort options." + } }, - "MetadataSearchResponse": { + "UserGroupResponse": { "type": "object", "required": [ - "metadata_type" + "display_name", + "id", + "name", + "visibility" ], "properties": { - "metadata_id": { + "author_id": { "type": "string", - "description": "Unique identifier of the metadata.", + "description": "The unique identifier of the object", "nullable": true }, - "metadata_name": { - "type": "string", - "description": "Name of the metadata.", + "complete_detail": { + "type": "boolean", + "description": "Indicates whether the response has complete detail of the group.", "nullable": true }, - "metadata_type": { - "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "CONNECTION", - "TAG", - "USER", - "USER_GROUP", - "LOGICAL_RELATIONSHIP", - "INSIGHT_SPEC" - ], - "description": "Type of the metadata." - }, - "metadata_obj_id": { - "type": "string", - "description": "Custom identifier of the metadata.\n(Available from 10.8.0.cl onwards)", + "content": { + "type": "object", + "description": "Content details of the group", "nullable": true }, - "dependent_objects": { - "type": "object", - "description": "Details of dependent objects of the metadata objects.", + "creation_time_in_millis": { + "type": "number", + "format": "float", + "description": "Creation time of the group in milliseconds", "nullable": true }, - "incomplete_objects": { + "default_liveboards": { "type": "array", "items": { - "type": "object" + "$ref": "#/components/schemas/UserGroup" }, - "description": "Details of incomplete information of the metadata objects if any.", + "description": "Liveboards that are assigned as default Liveboards to the group.", "nullable": true }, - "metadata_detail": { - "type": "object", - "description": "Complete details of the metadata objects.", + "deleted": { + "type": "boolean", + "description": "Indicates whether the group is deleted", "nullable": true }, - "metadata_header": { - "type": "object", - "description": "Header information of the metadata objects.", + "deprecated": { + "type": "boolean", + "description": "Indicates whether the group is deprecated", "nullable": true }, - "visualization_headers": { - "type": "array", - "items": { - "type": "object" - }, - "description": "Visualization header information of the metadata objects.", + "description": { + "type": "string", + "description": "Description of the group", "nullable": true }, - "stats": { - "type": "object", - "description": "Stats of the metadata object. Includes views, favorites, last_accessed.", - "nullable": true - } - }, - "description": "Metadata Search Response Object." - }, - "GetAsyncImportStatusResponse": { - "type": "object", - "properties": { - "status_list": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ImportEPackAsyncTaskStatus" - }, - "description": "List of task statuses.", - "nullable": true + "display_name": { + "type": "string", + "description": "Display name of the group." }, - "last_batch": { + "external": { "type": "boolean", - "description": "Indicates whether there are more task statuses to fetch.", + "description": "Indicates whether the group is external", "nullable": true - } - } - }, - "ImportEPackAsyncTaskStatus": { - "type": "object", - "properties": { - "tenant_id": { + }, + "generation_number": { + "type": "integer", + "format": "int32", + "description": "Generation number of the group", + "nullable": true + }, + "hidden": { + "type": "boolean", + "description": "Indicates whether the group is hidden", + "nullable": true + }, + "id": { "type": "string", - "description": "GUID of tenant from which the task is initiated.", + "description": "The unique identifier of the object" + }, + "index": { + "type": "integer", + "format": "int32", + "description": "Index number of the group", "nullable": true }, - "org_id": { + "index_version": { "type": "integer", "format": "int32", - "description": "Organisation ID of the user who initiated the task.", + "description": "Index version number of the group", "nullable": true }, - "task_id": { - "type": "string", - "description": "Unique identifier for the task.", + "metadata_version": { + "type": "integer", + "format": "int32", + "description": "Metadata version number of the group", "nullable": true }, - "task_name": { - "type": "string", - "description": "Name of the task.", + "modification_time_in_millis": { + "type": "number", + "format": "float", + "description": "Last modified time of the group in milliseconds.", "nullable": true }, - "import_response": { - "type": "object", - "description": "Response of imported objects so far.", + "modifier_id": { + "type": "string", + "description": "The unique identifier of the object", "nullable": true }, - "task_status": { + "name": { "type": "string", - "enum": [ - "COMPLETED", - "IN_QUEUE", - "IN_PROGRESS", - "FAILED" - ], - "description": "Current status of the task.", + "description": "Name of the group." + }, + "orgs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + }, + "description": "Orgs in which group exists.", "nullable": true }, - "author_id": { + "owner_id": { "type": "string", - "description": "ID of the user who initiated the task.", + "description": "The unique identifier of the object", "nullable": true }, - "import_policy": { + "parent_type": { "type": "string", "enum": [ - "PARTIAL", - "ALL_OR_NONE", - "VALIDATE_ONLY", - "PARTIAL_OBJECT" + "USER", + "GROUP" ], - "description": "Policy used for the import task.", + "description": "Parent type of the group.", "nullable": true }, - "created_at": { - "type": "number", - "format": "float", - "description": "Time when the task was created (in ms since epoch).", + "privileges": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Privileges which are assigned to the group", "nullable": true }, - "in_progress_at": { - "type": "number", - "format": "float", - "description": "Time when the task started (in ms since epoch).", + "sub_groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + }, + "description": "Groups who are part of the group", "nullable": true }, - "completed_at": { - "type": "number", - "format": "float", - "description": "Time when the task was completed (in ms since epoch).", + "system_group": { + "type": "boolean", + "description": "Indicates whether the group is a system group.", "nullable": true }, - "total_object_count": { - "type": "integer", - "format": "int32", - "description": "Total number of objects to process.", + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + }, + "description": "Tags associated with the group.", "nullable": true }, - "object_processed_count": { - "type": "integer", - "format": "int32", - "description": "Number of objects processed so far.", + "type": { + "type": "string", + "enum": [ + "LOCAL_GROUP", + "LDAP_GROUP", + "TEAM_GROUP", + "TENANT_GROUP" + ], + "description": "Type of the group.", "nullable": true }, - "modified_at": { - "type": "number", - "format": "float", - "description": "Last time the task status was updated (in ms since epoch).", + "users": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + }, + "description": "Users who are part of the group.", "nullable": true }, - "author_display_name": { + "visibility": { "type": "string", - "description": "Display name of the user who initiated the task.", + "enum": [ + "SHARABLE", + "NON_SHARABLE" + ], + "description": "Visibility of the group. The SHARABLE makes a group visible to other users and groups, and thus allows them to share objects." + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Role" + }, + "description": "List of roles assgined to the user", "nullable": true } } }, - "SqlQueryResponse": { + "Role": { "type": "object", - "required": [ - "metadata_id", - "metadata_name", - "metadata_type", - "sql_queries" - ], "properties": { - "metadata_id": { + "id": { "type": "string", - "description": "Unique identifier of the metadata." + "description": "id of the role", + "nullable": true }, - "metadata_name": { + "name": { "type": "string", - "description": "Name of the metadata." + "description": "name of the role", + "nullable": true + } + } + }, + "MetadataListItemInput": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata.", + "nullable": true }, - "metadata_type": { + "obj_identifier": { + "type": "string", + "description": "CustomObjectId of the metadata.", + "nullable": true + }, + "name_pattern": { + "type": "string", + "description": "A pattern to match the case-insensitive name of the metadata object. User % for a wildcard match.", + "nullable": true + }, + "type": { "type": "string", "enum": [ "LIVEBOARD", @@ -18924,182 +13313,529 @@ "TAG", "USER", "USER_GROUP", - "LOGICAL_RELATIONSHIP" + "LOGICAL_RELATIONSHIP", + "INSIGHT_SPEC" ], - "description": "Type of the metadata." + "description": "Type of metadata. Required if the name of the object is set as identifier. This attribute is optional when the object GUID is specified as identifier.\n1. Liveboard\n2. Answers\n3. LOGICAL_TABLE for any data object such as table, worksheet or view.\n4. LOGICAL_COLUMN for a column of any data object such as table, worksheet or view.\n5. CONNECTION for creating or modify data connections.\n6. TAG for tag objects.\n7. USER for user objects.\n8. USER_GROUP for group objects.\n9. LOGICAL_RELATIONSHIP for table or worksheet joins. A join combines from one or several data object by using matching values\n10. INSIGHT_SPEC for SpotIQ objects", + "nullable": true }, - "sql_queries": { + "subtypes": { "type": "array", "items": { - "$ref": "#/components/schemas/SqlQuery" + "type": "string", + "enum": [ + "ONE_TO_ONE_LOGICAL", + "WORKSHEET", + "PRIVATE_WORKSHEET", + "USER_DEFINED", + "AGGR_WORKSHEET", + "SQL_VIEW" + ] }, - "description": "SQL query details of metadata objects." + "description": "List of subtype of metadata. Applies for LOGICAL_TABLE type with the following valid values.\n1. ONE_TO_ONE_LOGICAL\n2. WORKSHEET\n3. PRIVATE_WORKSHEET.\n4. USER_DEFINED.\n5. AGGR_WORKSHEET.\n6. SQL_VIEW
Version: 10.11.0.cl or later", + "nullable": true } } }, - "SqlQuery": { + "PermissionInput": { "type": "object", "required": [ - "metadata_id", - "metadata_name", - "sql_query" + "principal", + "share_mode" ], "properties": { - "metadata_id": { - "type": "string", - "description": "Unique identifier of the metadata." - }, - "metadata_name": { - "type": "string", - "description": "Name of the metadata." + "principal": { + "$ref": "#/components/schemas/PrincipalsInput", + "description": "Details of users or groups." }, - "sql_query": { + "share_mode": { "type": "string", - "description": "SQL query of a metadata object." + "enum": [ + "READ_ONLY", + "MODIFY", + "NO_ACCESS" + ], + "description": "Object share mode." } }, - "description": "Response format associated with fetch SQL query api" + "description": "Details of users or groups." }, - "PdfOptionsInput": { + "ExcludeMetadataListItemInput": { "type": "object", + "required": [ + "identifier", + "type" + ], "properties": { - "include_cover_page": { - "type": "boolean", - "default": true, - "description": "Indicates whether to include the cover page with the Liveboard title.", - "nullable": true - }, - "include_custom_logo": { - "type": "boolean", - "default": true, - "description": "Indicates whether to include customized wide logo in the footer if available.", - "nullable": true + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata." }, - "include_filter_page": { + "type": { + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "CONNECTION", + "TAG", + "USER", + "USER_GROUP", + "LOGICAL_RELATIONSHIP", + "INSIGHT_SPEC" + ], + "description": "Type of metadata. Required if the name of the object is set as identifier. This attribute is optional when the object GUID is specified as identifier.\n1. Liveboard\n2. Answers\n3. LOGICAL_TABLE for any data object such as table, worksheet or view\n4. LOGICAL_COLUMN for a column of any data object such as table, worksheet or view\n5. CONNECTION for connection objects\n6. TAG for tag objects\n7. USER for user objects\n8. USER_GROUP for group objects\n9. LOGICAL_RELATIONSHIP for table or worksheet joins. A join combines from one or several data object by using matching values.\n10. INSIGHT_SPEC for SpotIQ objects" + } + } + }, + "FavoriteObjectOptionsInput": { + "type": "object", + "properties": { + "include": { "type": "boolean", - "default": true, - "description": "Indicates whether to include a page with all applied filters.", + "default": false, + "description": "Includes objects marked as favorite for the specified users.", "nullable": true }, - "include_page_number": { - "type": "boolean", - "default": true, - "description": "Indicates whether to include page number in the footer of each page.", + "user_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Unique ID or name of the users. If not specified, the favorite objects of current logged in user are returned.", "nullable": true - }, - "page_orientation": { + } + }, + "description": "Favorite object options." + }, + "MetadataSearchSortOptions": { + "type": "object", + "properties": { + "field_name": { "type": "string", "enum": [ - "PORTRAIT", - "LANDSCAPE" + "NAME", + "DISPLAY_NAME", + "AUTHOR", + "CREATED", + "MODIFIED", + "VIEWS", + "FAVORITES", + "LAST_ACCESSED" ], - "default": "PORTRAIT", - "description": "Page orientation of the PDF.", - "nullable": true - }, - "truncate_table": { - "type": "boolean", - "default": false, - "description": "Indicates whether to include only the first page of the tables.", + "description": "Name of the field to apply the sort on.", "nullable": true }, - "page_footer_text": { + "order": { "type": "string", - "description": "Text to include in the footer of each page.", + "enum": [ + "ASC", + "DESC" + ], + "description": "Sort order : ASC(Ascending) or DESC(Descending).", "nullable": true } - } + }, + "description": "Sort options." }, - "PngOptionsInput": { + "MetadataSearchResponse": { "type": "object", + "required": [ + "metadata_type" + ], "properties": { - "include_cover_page": { - "type": "boolean", - "default": false, - "description": "Indicates whether to include the cover page with the Liveboard title.", + "metadata_id": { + "type": "string", + "description": "Unique identifier of the metadata.", "nullable": true }, - "include_filter_page": { - "type": "boolean", - "default": false, - "description": "Indicates whether to include a page with all applied filters.", + "metadata_name": { + "type": "string", + "description": "Name of the metadata.", "nullable": true }, - "personalised_view_id": { + "metadata_type": { "type": "string", - "description": "Indicates personalised view of the Liveboard in case of png", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "CONNECTION", + "TAG", + "USER", + "USER_GROUP", + "LOGICAL_RELATIONSHIP", + "INSIGHT_SPEC" + ], + "description": "Type of the metadata." + }, + "metadata_obj_id": { + "type": "string", + "description": "Custom identifier of the metadata.\n(Available from 10.8.0.cl onwards)", "nullable": true }, - "image_resolution": { - "type": "integer", - "format": "int32", - "description": "Desired width of the Liveboard image in pixels. Ex. 1920 for Full HD image
Beta Version: 10.9.0.cl or later", + "dependent_objects": { + "type": "object", + "description": "Details of dependent objects of the metadata objects.", "nullable": true }, - "image_scale": { - "type": "integer", - "format": "int32", - "description": "The scale of the image in percentage. Ex. 100 for 100% scale.
Beta Version: 10.9.0.cl or later", + "incomplete_objects": { + "type": "array", + "items": { + "type": "object" + }, + "description": "Details of incomplete information of the metadata objects if any.", "nullable": true }, - "include_header": { + "metadata_detail": { + "type": "object", + "description": "Complete details of the metadata objects.", + "nullable": true + }, + "metadata_header": { + "type": "object", + "description": "Header information of the metadata objects.", + "nullable": true + }, + "visualization_headers": { + "type": "array", + "items": { + "type": "object" + }, + "description": "Visualization header information of the metadata objects.", + "nullable": true + }, + "stats": { + "type": "object", + "description": "Stats of the metadata object. Includes views, favorites, last_accessed.", + "nullable": true + } + }, + "description": "Metadata Search Response Object." + }, + "GetAsyncImportStatusResponse": { + "type": "object", + "properties": { + "status_list": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportEPackAsyncTaskStatus" + }, + "description": "List of task statuses.", + "nullable": true + }, + "last_batch": { "type": "boolean", - "default": false, - "description": "Indicates whether to include the header of the liveboard.
Beta Version: 10.9.0.cl or later", + "description": "Indicates whether there are more task statuses to fetch.", "nullable": true } } }, - "RegionalSettingsInput": { + "ImportEPackAsyncTaskStatus": { "type": "object", "properties": { - "currency_format": { + "tenant_id": { + "type": "string", + "description": "GUID of tenant from which the task is initiated.", + "nullable": true + }, + "org_id": { + "type": "integer", + "format": "int32", + "description": "Organisation ID of the user who initiated the task.", + "nullable": true + }, + "task_id": { + "type": "string", + "description": "Unique identifier for the task.", + "nullable": true + }, + "task_name": { + "type": "string", + "description": "Name of the task.", + "nullable": true + }, + "import_response": { + "type": "object", + "description": "Response of imported objects so far.", + "nullable": true + }, + "task_status": { "type": "string", - "description": "ISO code to be appended with currency values.", - "nullable": true, "enum": [ - "ADP", - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", - "ARA", - "ARS", - "ATS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BDT", - "BEF", - "BGL", - "BGM", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BOP", - "BOV", - "BRL", - "BSD", - "BTN", - "BUK", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHE", - "CHF", - "CHW", - "CLE", - "CLP", - "CNX", + "COMPLETED", + "IN_QUEUE", + "IN_PROGRESS", + "FAILED" + ], + "description": "Current status of the task.", + "nullable": true + }, + "author_id": { + "type": "string", + "description": "ID of the user who initiated the task.", + "nullable": true + }, + "import_policy": { + "type": "string", + "enum": [ + "PARTIAL", + "ALL_OR_NONE", + "VALIDATE_ONLY", + "PARTIAL_OBJECT" + ], + "description": "Policy used for the import task.", + "nullable": true + }, + "created_at": { + "type": "number", + "format": "float", + "description": "Time when the task was created (in ms since epoch).", + "nullable": true + }, + "in_progress_at": { + "type": "number", + "format": "float", + "description": "Time when the task started (in ms since epoch).", + "nullable": true + }, + "completed_at": { + "type": "number", + "format": "float", + "description": "Time when the task was completed (in ms since epoch).", + "nullable": true + }, + "total_object_count": { + "type": "integer", + "format": "int32", + "description": "Total number of objects to process.", + "nullable": true + }, + "object_processed_count": { + "type": "integer", + "format": "int32", + "description": "Number of objects processed so far.", + "nullable": true + }, + "modified_at": { + "type": "number", + "format": "float", + "description": "Last time the task status was updated (in ms since epoch).", + "nullable": true + }, + "author_display_name": { + "type": "string", + "description": "Display name of the user who initiated the task.", + "nullable": true + } + } + }, + "SqlQueryResponse": { + "type": "object", + "required": [ + "metadata_id", + "metadata_name", + "metadata_type", + "sql_queries" + ], + "properties": { + "metadata_id": { + "type": "string", + "description": "Unique identifier of the metadata." + }, + "metadata_name": { + "type": "string", + "description": "Name of the metadata." + }, + "metadata_type": { + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "CONNECTION", + "TAG", + "USER", + "USER_GROUP", + "LOGICAL_RELATIONSHIP" + ], + "description": "Type of the metadata." + }, + "sql_queries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SqlQuery" + }, + "description": "SQL query details of metadata objects." + } + } + }, + "SqlQuery": { + "type": "object", + "required": [ + "metadata_id", + "metadata_name", + "sql_query" + ], + "properties": { + "metadata_id": { + "type": "string", + "description": "Unique identifier of the metadata." + }, + "metadata_name": { + "type": "string", + "description": "Name of the metadata." + }, + "sql_query": { + "type": "string", + "description": "SQL query of a metadata object." + } + }, + "description": "Response format associated with fetch SQL query api" + }, + "PdfOptionsInput": { + "type": "object", + "properties": { + "include_cover_page": { + "type": "boolean", + "default": true, + "description": "Indicates whether to include the cover page with the Liveboard title.", + "nullable": true + }, + "include_custom_logo": { + "type": "boolean", + "default": true, + "description": "Indicates whether to include customized wide logo in the footer if available.", + "nullable": true + }, + "include_filter_page": { + "type": "boolean", + "default": true, + "description": "Indicates whether to include a page with all applied filters.", + "nullable": true + }, + "include_page_number": { + "type": "boolean", + "default": true, + "description": "Indicates whether to include page number in the footer of each page.", + "nullable": true + }, + "page_orientation": { + "type": "string", + "enum": [ + "PORTRAIT", + "LANDSCAPE" + ], + "default": "PORTRAIT", + "description": "Page orientation of the PDF.", + "nullable": true + }, + "truncate_table": { + "type": "boolean", + "default": false, + "description": "Indicates whether to include only the first page of the tables.", + "nullable": true + }, + "page_footer_text": { + "type": "string", + "description": "Text to include in the footer of each page.", + "nullable": true + } + } + }, + "PngOptionsInput": { + "type": "object", + "properties": { + "include_cover_page": { + "type": "boolean", + "default": false, + "description": "Indicates whether to include the cover page with the Liveboard title.", + "nullable": true + }, + "include_filter_page": { + "type": "boolean", + "default": false, + "description": "Indicates whether to include a page with all applied filters.", + "nullable": true + }, + "personalised_view_id": { + "type": "string", + "description": "Indicates personalised view of the Liveboard in case of png", + "nullable": true + }, + "image_resolution": { + "type": "integer", + "format": "int32", + "description": "Desired width of the Liveboard image in pixels. Ex. 1920 for Full HD image
Beta Version: 10.9.0.cl or later", + "nullable": true + }, + "image_scale": { + "type": "integer", + "format": "int32", + "description": "The scale of the image in percentage. Ex. 100 for 100% scale.
Beta Version: 10.9.0.cl or later", + "nullable": true + }, + "include_header": { + "type": "boolean", + "default": false, + "description": "Indicates whether to include the header of the liveboard.
Beta Version: 10.9.0.cl or later", + "nullable": true + } + } + }, + "RegionalSettingsInput": { + "type": "object", + "properties": { + "currency_format": { + "type": "string", + "description": "ISO code to be appended with currency values.", + "nullable": true, + "enum": [ + "ADP", + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARA", + "ARS", + "ATS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BEF", + "BGL", + "BGM", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BOP", + "BOV", + "BRL", + "BSD", + "BTN", + "BUK", + "BWP", + "BYN", + "BZD", + "CAD", + "CDF", + "CHE", + "CHF", + "CHW", + "CLE", + "CLP", + "CNX", "CNY", "COP", "COU", @@ -19294,129 +14030,4463 @@ "ZMW" ] }, - "user_locale": { + "user_locale": { + "type": "string", + "description": "Indicates the locale to be used for all formattings.", + "nullable": true, + "enum": [ + "en-CA", + "en-GB", + "en-US", + "de-DE", + "ja-JP", + "zh-CN", + "pt-BR", + "fr-FR", + "fr-CA", + "es-US", + "da-DK", + "es-ES", + "fi-FI", + "sv-SE", + "nb-NO", + "pt-PT", + "nl-NL", + "it-IT", + "ru-RU", + "en-IN", + "de-CH", + "en-NZ", + "es-MX", + "en-AU", + "zh-Hant", + "ko-KR", + "en-DE" + ] + }, + "number_format_locale": { + "type": "string", + "description": "Indicates the locale to be used for number formatting.", + "nullable": true, + "enum": [ + "en-CA", + "en-GB", + "en-US", + "de-DE", + "ja-JP", + "zh-CN", + "pt-BR", + "fr-FR", + "fr-CA", + "es-US", + "da-DK", + "es-ES", + "fi-FI", + "sv-SE", + "nb-NO", + "pt-PT", + "nl-NL", + "it-IT", + "ru-RU", + "en-IN", + "de-CH", + "en-NZ", + "es-MX", + "en-AU", + "zh-Hant", + "ko-KR", + "en-DE" + ] + }, + "date_format_locale": { + "type": "string", + "description": "Indicates the locale to be used for date formatting.", + "nullable": true, + "enum": [ + "en-CA", + "en-GB", + "en-US", + "de-DE", + "ja-JP", + "zh-CN", + "pt-BR", + "fr-FR", + "fr-CA", + "es-US", + "da-DK", + "es-ES", + "fi-FI", + "sv-SE", + "nb-NO", + "pt-PT", + "nl-NL", + "it-IT", + "ru-RU", + "en-IN", + "de-CH", + "en-NZ", + "es-MX", + "en-AU", + "zh-Hant", + "ko-KR", + "en-DE" + ] + } + } + }, + "PermissionOfPrincipalsResponse": { + "type": "object", + "properties": { + "principal_permission_details": { + "type": "object", + "nullable": true + } + } + }, + "PermissionOfMetadataResponse": { + "type": "object", + "properties": { + "metadata_permission_details": { + "type": "object", + "nullable": true + } + } + }, + "ObjectPrivilegesMetadataInput": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LOGICAL_TABLE" + ], + "description": "Type of metadata object.\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata object." + } + } + }, + "ObjectPrivilegesOfMetadataResponse": { + "type": "object", + "properties": { + "metadata_object_privileges": { + "type": "object", + "nullable": true + } + } + }, + "PrincipalsInput": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "identifier": { + "type": "string", + "description": "Unique ID or name of the principal object such as a user or group." + }, + "type": { + "type": "string", + "enum": [ + "USER", + "USER_GROUP" + ], + "description": "Principal type.", + "nullable": true + } + } + }, + "PermissionsMetadataTypeInput": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "CONNECTION" + ], + "description": " Type of metadata object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata object." + } + }, + "description": "MetadataType InputType used in Permission API's" + }, + "ColumnSecurityRuleTableInput": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Name or GUID of the table", + "nullable": true + }, + "obj_identifier": { + "type": "string", + "description": "Object ID of the table", + "nullable": true + } + } + }, + "ColumnSecurityRuleResponse": { + "type": "object", + "properties": { + "table_guid": { + "type": "string", + "description": "GUID of the table for which the column security rules are fetched", + "nullable": true + }, + "obj_id": { + "type": "string", + "description": "Object ID of the table for which the column security rules are fetched", + "nullable": true + }, + "column_security_rules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ColumnSecurityRule" + }, + "description": "Array containing column security rule objects", + "nullable": true + } + } + }, + "ColumnSecurityRule": { + "type": "object", + "required": [ + "column" + ], + "properties": { + "column": { + "$ref": "#/components/schemas/ColumnSecurityRuleColumn", + "description": "Information about the column" + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ColumnSecurityRuleGroup" + }, + "description": "Array of groups that have access to this column", + "nullable": true + }, + "source_table_details": { + "$ref": "#/components/schemas/ColumnSecurityRuleSourceTable", + "description": "Information about the source table", + "nullable": true + } + } + }, + "ColumnSecurityRuleColumn": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the column" + }, + "name": { + "type": "string", + "description": "The name of the column" + } + } + }, + "ColumnSecurityRuleGroup": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the group" + }, + "name": { + "type": "string", + "description": "The name of the group" + } + } + }, + "ColumnSecurityRuleSourceTable": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the source table" + }, + "name": { + "type": "string", + "description": "The name of the source table" + } + } + }, + "SearchDataResponse": { + "type": "object", + "required": [ + "contents" + ], + "properties": { + "contents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AnswerContent" + }, + "description": "Data content of metadata objects" + } + }, + "description": "Response format associated with the search data API." + }, + "AnswerContent": { + "type": "object", + "required": [ + "available_data_row_count", + "column_names", + "data_rows", + "record_offset", + "record_size", + "returned_data_row_count", + "sampling_ratio" + ], + "properties": { + "available_data_row_count": { + "type": "integer", + "format": "int32", + "description": "Total available data row count." + }, + "column_names": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Name of the columns." + }, + "data_rows": { + "type": "array", + "items": { + "type": "object" + }, + "description": "Rows of data set." + }, + "record_offset": { + "type": "integer", + "format": "int32", + "description": "The starting record number from where the records should be included." + }, + "record_size": { + "type": "integer", + "format": "int32", + "description": "The number of records that should be included." + }, + "returned_data_row_count": { + "type": "integer", + "format": "int32", + "description": "Total returned data row count." + }, + "sampling_ratio": { + "type": "number", + "format": "float", + "description": "Sampling ratio (0 to 1). If the query was sampled, it is the ratio of keys returned in the data set to the total number of keys expected in the query. If the value is 1.0, this means that the complete result is returned." + } + } + }, + "LiveboardDataResponse": { + "type": "object", + "required": [ + "metadata_id", + "metadata_name", + "contents" + ], + "properties": { + "metadata_id": { + "type": "string", + "description": "The unique identifier of the object" + }, + "metadata_name": { + "type": "string", + "description": "Name of the metadata object" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LiveboardContent" + }, + "description": "Data content of metadata objects" + } + } + }, + "LiveboardContent": { + "type": "object", + "required": [ + "available_data_row_count", + "column_names", + "data_rows", + "record_offset", + "record_size", + "returned_data_row_count", + "sampling_ratio" + ], + "properties": { + "available_data_row_count": { + "type": "integer", + "format": "int32", + "description": "Total available data row count." + }, + "column_names": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Name of the columns." + }, + "data_rows": { + "type": "array", + "items": { + "type": "object" + }, + "description": "Rows of data set." + }, + "record_offset": { + "type": "integer", + "format": "int32", + "description": "The starting record number from where the records should be included." + }, + "record_size": { + "type": "integer", + "format": "int32", + "description": "The number of records that should be included." + }, + "returned_data_row_count": { + "type": "integer", + "format": "int32", + "description": "Total returned data row count." + }, + "sampling_ratio": { + "type": "number", + "format": "float", + "description": "Sampling ratio (0 to 1). If the query was sampled, it is the ratio of keys returned in the data set to the total number of keys expected in the query. If the value is 1.0, this means that the complete result is returned." + }, + "visualization_id": { + "type": "string", + "description": "Unique ID of the visualization.", + "nullable": true + }, + "visualization_name": { + "type": "string", + "description": "Name of the visualization.", + "nullable": true + } + } + }, + "AnswerDataResponse": { + "type": "object", + "required": [ + "metadata_id", + "metadata_name", + "contents" + ], + "properties": { + "metadata_id": { + "type": "string", + "description": "The unique identifier of the object" + }, + "metadata_name": { + "type": "string", + "description": "Name of the metadata object" + }, + "contents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AnswerContent" + }, + "description": "Data content of metadata objects" + } + }, + "description": "Response format associated with fetch data api" + }, + "LogResponse": { + "type": "object", + "required": [ + "date", + "log" + ], + "properties": { + "date": { + "type": "string", + "description": "Date timestamp of the log entry" + }, + "log": { + "type": "string", + "description": "Log data" + } + } + }, + "RepoConfigObject": { + "type": "object", + "properties": { + "repository_url": { + "type": "string", + "description": "Remote repository URL configured", + "nullable": true + }, + "username": { + "type": "string", + "description": "Username to authenticate connection to the version control system", + "nullable": true + }, + "commit_branch_name": { + "type": "string", + "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.", + "nullable": true + }, + "branches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Branches that have been pulled in local repository", + "nullable": true + }, + "enable_guid_mapping": { + "type": "boolean", + "description": "Maintain mapping of guid for the deployment to an instance", + "nullable": true + }, + "configuration_branch_name": { + "type": "string", + "description": "Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.", + "nullable": true + }, + "org": { + "$ref": "#/components/schemas/Org", + "description": "Details of the Org", + "nullable": true + } + } + }, + "CommitHistoryResponse": { + "type": "object", + "required": [ + "committer", + "author", + "comment", + "commit_time", + "commit_id", + "branch" + ], + "properties": { + "committer": { + "$ref": "#/components/schemas/CommiterType", + "description": "Repository user using which changes were committed" + }, + "author": { + "$ref": "#/components/schemas/AuthorType", + "description": "Thoughtspot user who commits the changes" + }, + "comment": { + "type": "string", + "description": "Comments associated with the commit" + }, + "commit_time": { + "type": "string", + "description": "Time at which the changes were committed." + }, + "commit_id": { + "type": "string", + "description": "SHA id associated with the commit" + }, + "branch": { + "type": "string", + "description": "Branch where changes were committed" + } + } + }, + "CommiterType": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email id of the committer", + "nullable": true + }, + "username": { + "type": "string", + "description": "Username of the committer", + "nullable": true + } + } + }, + "AuthorType": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email id of the committer", + "nullable": true + }, + "username": { + "type": "string", + "description": "Username of the committer", + "nullable": true + } + } + }, + "ConnectionInput": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Unique ID or name of the connection.", + "nullable": true + }, + "name_pattern": { + "type": "string", + "description": "A pattern to match case-insensitive name of the connection object. User `%` for a wildcard match.", + "nullable": true + }, + "data_warehouse_objects": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DataWarehouseObjectInput" + }, + "description": "Filter options for databases, schemas, tables and columns.", + "nullable": true + } + } + }, + "DataWarehouseObjectInput": { + "type": "object", + "properties": { + "database": { + "type": "string", + "description": "Name of the database.", + "nullable": true + }, + "schema": { + "type": "string", + "description": "Name of the schema within the database.", + "nullable": true + }, + "table": { + "type": "string", + "description": "Name of the table within the schema.", + "nullable": true + }, + "column": { + "type": "string", + "description": "Name of the column within the table.", + "nullable": true + } + } + }, + "SortOptionInput": { + "type": "object", + "properties": { + "field_name": { + "type": "string", + "enum": [ + "NAME", + "DISPLAY_NAME", + "AUTHOR", + "CREATED", + "MODIFIED", + "LAST_ACCESSED", + "SYNCED", + "VIEWS", + "USER_STATE", + "ROW_COUNT" + ], + "description": "Name of the field to apply the sort on.", + "nullable": true + }, + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "description": "Sort order : ASC(Ascending) or DESC(Descending).", + "nullable": true + } + } + }, + "SearchConnectionResponse": { + "type": "object", + "required": [ + "id", + "name", + "data_warehouse_type" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique ID of the connection." + }, + "name": { + "type": "string", + "description": "Name of the connection." + }, + "description": { + "type": "string", + "description": "Description of the connection.", + "nullable": true + }, + "data_warehouse_type": { + "type": "string", + "enum": [ + "SNOWFLAKE", + "AMAZON_REDSHIFT", + "GOOGLE_BIGQUERY", + "AZURE_SYNAPSE", + "TERADATA", + "SAP_HANA", + "STARBURST", + "ORACLE_ADW", + "DATABRICKS", + "DENODO", + "DREMIO", + "TRINO", + "PRESTO", + "POSTGRES", + "SQLSERVER", + "MYSQL", + "GENERIC_JDBC", + "AMAZON_RDS_POSTGRESQL", + "AMAZON_AURORA_POSTGRESQL", + "AMAZON_RDS_MYSQL", + "AMAZON_AURORA_MYSQL", + "LOOKER", + "AMAZON_ATHENA", + "SINGLESTORE", + "GCP_SQLSERVER", + "GCP_ALLOYDB_POSTGRESQL", + "GCP_POSTGRESQL", + "GCP_MYSQL", + "MODE", + "GOOGLE_SHEETS", + "FALCON", + "FALCON_ONPREM", + "CLICKHOUSE" + ], + "description": "Type of data warehouse." + }, + "data_warehouse_objects": { + "$ref": "#/components/schemas/DataWarehouseObjects", + "description": "List of Data warehouse objects", + "nullable": true + }, + "details": { + "type": "object", + "description": "Details of the connection.", + "nullable": true + } + } + }, + "DataWarehouseObjects": { + "type": "object", + "required": [ + "databases" + ], + "properties": { + "databases": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Database" + }, + "description": "Databases of the connection." + } + } + }, + "Database": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the database." + }, + "schemas": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SchemaObject" + }, + "description": "Schemas of the database.", + "nullable": true + }, + "auto_created": { + "type": "boolean", + "description": "Determines if the object is auto created.", + "nullable": true + } + } + }, + "SchemaObject": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the schema." + }, + "tables": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Table" + }, + "description": "Tables in the schema.", + "nullable": true + } + } + }, + "Table": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the table." + }, + "columns": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Column" + }, + "description": "Columns of the table.", + "nullable": true + }, + "type": { + "type": "string", + "description": "Type of table. Either view or table", + "nullable": true + }, + "description": { + "type": "string", + "description": "Description of the table", + "nullable": true + }, + "selected": { + "type": "boolean", + "description": "Determines if the table is selected", + "nullable": true + }, + "linked": { + "type": "boolean", + "description": "Determines if the table is linked", + "nullable": true + }, + "relationships": { + "type": "array", + "items": { + "type": "object" + }, + "description": "List of relationships for the table", + "nullable": true + } + } + }, + "Column": { + "type": "object", + "required": [ + "name", + "data_type" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the column" + }, + "data_type": { + "type": "string", + "description": "Data type of the column" + }, + "is_aggregate": { + "type": "string", + "description": "Determines if the column schema is an aggregate", + "nullable": true + }, + "can_import": { + "type": "boolean", + "description": "Determines if the column schema can be imported", + "nullable": true + }, + "selected": { + "type": "boolean", + "description": "Determines if the table is selected", + "nullable": true + }, + "is_linked_active": { + "type": "boolean", + "description": "Determines if the table is linked", + "nullable": true + } + } + }, + "SearchRoleResponse": { + "type": "object", + "required": [ + "id", + "name", + "description", + "privileges" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique Id of the role." + }, + "name": { + "type": "string", + "description": "Name of the role" + }, + "description": { + "type": "string", + "description": "Description of the role" + }, + "groups_assigned_count": { + "type": "integer", + "format": "int32", + "description": "number of groups assigned with this role", + "nullable": true + }, + "orgs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GenericInfo" + }, + "description": "Orgs in which role exists.", + "nullable": true + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GenericInfo" + }, + "description": "Details of groups assigned with this role", + "nullable": true + }, + "privileges": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "UNKNOWN", + "ADMINISTRATION", + "AUTHORING", + "USERDATAUPLOADING", + "DATADOWNLOADING", + "USERMANAGEMENT", + "SECURITYMANAGEMENT", + "LOGICALMODELING", + "DATAMANAGEMENT", + "TAGMANAGEMENT", + "SHAREWITHALL", + "SYSTEMMANAGEMENT", + "JOBSCHEDULING", + "A3ANALYSIS", + "EXPERIMENTALFEATUREPRIVILEGE", + "BYPASSRLS", + "RANALYSIS", + "DISABLE_PINBOARD_CREATION", + "DEVELOPER", + "APPLICATION_ADMINISTRATION", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "BACKUP_ADMINISTRATION", + "SYSTEM_INFO_ADMINISTRATION", + "ENABLESPOTAPPCREATION", + "SYNCMANAGEMENT", + "ORG_ADMINISTRATION", + "ROLE_ADMINISTRATION", + "AUTHENTICATION_ADMINISTRATION", + "BILLING_INFO_ADMINISTRATION", + "PREVIEW_THOUGHTSPOT_SAGE", + "LIVEBOARD_VERIFIER", + "CAN_MANAGE_CUSTOM_CALENDAR", + "CAN_CREATE_OR_EDIT_CONNECTIONS", + "CAN_CONFIGURE_CONNECTIONS", + "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "CONTROL_TRUSTED_AUTH", + "CAN_CREATE_CATALOG", + "ALLOW_NON_EMBED_FULL_APP_ACCESS", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "CAN_VIEW_FOLDERS", + "CAN_MODIDY_FOLDERS", + "CAN_MANAGE_VARIABLES", + "PREVIEW_DOCUMENT_SEARCH", + "CAN_SETUP_VERSION_CONTROL", + "CAN_MANAGE_WEBHOOKS", + "CAN_DOWNLOAD_VISUALS", + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" + ] + }, + "description": "Privileges granted to the role." + }, + "permission": { + "type": "string", + "enum": [ + "READ_ONLY", + "MODIFY", + "NO_ACCESS" + ], + "description": "Permission details of the Role", + "nullable": true + }, + "author_id": { + "type": "string", + "description": "Unique identifier of author of the role.", + "nullable": true + }, + "modifier_id": { + "type": "string", + "description": "Unique identifier of modifier of the role.", + "nullable": true + }, + "creation_time_in_millis": { + "type": "object", + "description": "Creation time of the role in milliseconds.", + "nullable": true + }, + "modification_time_in_millis": { + "type": "object", + "description": "Last modified time of the role in milliseconds.", + "nullable": true + }, + "deleted": { + "type": "boolean", + "description": "Indicates whether the role is deleted.", + "nullable": true + }, + "deprecated": { + "type": "boolean", + "description": "Indicates whether the role is deprecated.", + "nullable": true + }, + "external": { + "type": "boolean", + "description": "Indicates whether the role is external.", + "nullable": true + }, + "hidden": { + "type": "boolean", + "description": "Indicates whether the role is hidden.", + "nullable": true + }, + "shared_via_connection": { + "type": "boolean", + "description": "Indicates whether the role is shared via connection", + "nullable": true + } + }, + "description": "Response for search role api should handle hidden privileges as well." + }, + "Default_Action_Config_Search_Input": { + "type": "object", + "properties": { + "visibility": { + "type": "boolean", + "description": "Custom action is available on all visualizations. Earlier naming convention: LOCAL/GLOBAL. TRUE signifies GLOBAL for backward compatibility.", + "nullable": true + } + }, + "description": "Default Custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." + }, + "ResponseCustomAction": { + "type": "object", + "required": [ + "action_details", + "default_action_config", + "id", + "name" + ], + "properties": { + "action_details": { + "$ref": "#/components/schemas/Action_details", + "description": "`Type` and configuration data for custom actions" + }, + "default_action_config": { + "$ref": "#/components/schemas/Default_action_config", + "description": "Default custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." + }, + "id": { + "type": "string", + "description": "Unique Id of the custom action." + }, + "metadata_association": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata_Association_Item" + }, + "description": "Metadata objects to assign the the custom action to.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Unique name of the custom action." + }, + "user_groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Object_ID_And_Name" + }, + "description": "Unique ID or name of the User groups which are associated with the custom action.", + "nullable": true + } + }, + "description": "Custom action details" + }, + "Action_details": { + "type": "object", + "properties": { + "CALLBACK": { + "$ref": "#/components/schemas/CALLBACK", + "description": "CALLBACK Custom Action Type", + "nullable": true + }, + "URL": { + "$ref": "#/components/schemas/URL", + "description": "URL Custom Action Type", + "nullable": true + } + }, + "description": "Type and Configuration for Custom Actions" + }, + "CALLBACK": { + "type": "object", + "properties": { + "reference": { + "type": "string", + "description": "Reference name of the SDK. By default, the value will be set to action name.", + "nullable": true + } + }, + "description": "CALLBACK Custom Action Type" + }, + "URL": { + "type": "object", + "required": [ + "url" + ], + "properties": { + "authentication": { + "$ref": "#/components/schemas/Authentication", + "description": "Authorization type for the custom action.", + "nullable": true + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ParametersListItem" + }, + "description": "Query parameters for url.", + "nullable": true + }, + "url": { + "type": "string", + "description": "Request Url for the Custom action." + }, + "reference": { + "type": "string", + "description": "Reference name of the SDK. By default, the value will be set to action name.", + "nullable": true + } + }, + "description": "URL Custom Action Type" + }, + "Authentication": { + "type": "object", + "properties": { + "API_Key": { + "$ref": "#/components/schemas/API_Key", + "description": "With API key auth, you send a key-value pair to the API either in the request headers or query parameters.", + "nullable": true + }, + "Basic_Auth": { + "$ref": "#/components/schemas/Basic_Auth", + "description": "Basic Auth: Basic authentication involves sending a verified username and password with your request.", + "nullable": true + }, + "Bearer_Token": { + "type": "string", + "description": "Bearer tokens enable requests to authenticate using an access key.", + "nullable": true + }, + "No_Auth": { + "type": "string", + "description": "No authorization. If your request doesn't require authorization.", + "nullable": true + } + }, + "description": "Authorization type for the custom action." + }, + "API_Key": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Enter your key name", + "nullable": true + }, + "value": { + "type": "string", + "description": "Enter you key value", + "nullable": true + } + }, + "description": "With API key auth, you send a key-value pair to the API either in the request headers or query parameters." + }, + "Basic_Auth": { + "type": "object", + "properties": { + "password": { + "type": "string", + "description": "Password for the basic authentication", + "nullable": true + }, + "username": { + "type": "string", + "description": "Username for the basic authentication", + "nullable": true + } + }, + "description": "Basic Auth: Basic authentication involves sending a verified username and password with your request." + }, + "ParametersListItem": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Key for the url query parameter", + "nullable": true + }, + "value": { + "type": "string", + "description": "Value for the url query parameter", + "nullable": true + } + } + }, + "Default_action_config": { + "type": "object", + "properties": { + "visibility": { + "type": "boolean", + "description": "Custom action is available on all visualizations. Earlier , the naming convention: LOCAL/GLOBAL. TRUE signifies GLOBAL for backward compatibility.", + "nullable": true + } + }, + "description": "Default Custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." + }, + "Metadata_Association_Item": { + "type": "object", + "required": [ + "action_config", + "identifier", + "type" + ], + "properties": { + "action_config": { + "$ref": "#/components/schemas/Action_config", + "description": "Specify that the association is enabled for the metadata object" + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata." + }, + "type": { + "type": "string", + "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier." + } + } + }, + "Action_config": { + "type": "object", + "properties": { + "position": { + "type": "string", + "description": "Position of the Custom action on the Metadata object. Earlier naming convention: context.", + "nullable": true + }, + "visibility": { + "type": "boolean", + "description": "Visibility of the metadata association with custom action. Earlier naming convention: enabled", + "nullable": true + } + }, + "description": "Specify that the association is enabled for the metadata object" + }, + "CustomActionMetadataTypeInput": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VISUALIZATION", + "ANSWER", + "WORKSHEET" + ], + "description": " Type of metadata object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata object." + } + }, + "description": "MetadataType InputType used in Custom Action API's" + }, + "MetadataContext": { + "type": "object", + "properties": { + "data_source_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of data_source_identifiers to provide context for breaking down user query into analytical queries that can be run on them.", + "nullable": true + }, + "answer_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of answer unique identifiers (GUIDs) whose data will be used to guide the response.", + "nullable": true + }, + "conversation_identifier": { + "type": "string", + "description": "Unique identifier to denote current conversation.", + "nullable": true + }, + "liveboard_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of liveboard unique identifiers (GUIDs) whose data will be used to guide the response.", + "nullable": true + } + } + }, + "AIContext": { + "type": "object", + "properties": { + "instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "User specific text instructions sent to AI system for processing the query.", + "nullable": true + }, + "content": { + "type": "array", + "items": { + "type": "string" + }, + "description": "User provided content like text data, csv data as a string message to provide context & potentially improve the quality of the response.", + "nullable": true + } + } + }, + "eureka_GetRelevantQuestionsResponse": { + "type": "object", + "properties": { + "relevant_questions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/eureka_RelevantQuestion" + }, + "description": "List of relevant questions that can be run on their respective data sources.", + "nullable": true + } + } + }, + "eureka_RelevantQuestion": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "NL query that can be run using spotter aka natural language search to get an AI generated answer.", + "nullable": true + }, + "data_source_identifier": { + "type": "string", + "description": "Unique identifier of the data source on which this query can be run on.", + "nullable": true + }, + "data_source_name": { + "type": "string", + "description": "Display name of the data source on which this query can be run on.", + "nullable": true + } + } + }, + "Input_eureka_NLSRequest": { + "type": "object", + "properties": { + "agentVersion": { + "type": "integer", + "format": "int32", + "description": "Cluster version like 10.4.0.cl, 10.5.0.cl, so on.", + "nullable": true + }, + "bypassCache": { + "type": "boolean", + "description": "If true, results are not returned from cache & calculated every time. Can incur high costs & latency.", + "nullable": true + }, + "instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "User specific instructions for processing the @query.", + "nullable": true + }, + "query": { + "type": "string", + "description": "User query which is a topical/goal oriented question that needs to be broken down into smaller simple analytical questions.", + "nullable": true + } + } + }, + "eureka_DecomposeQueryResponse": { + "type": "object", + "properties": { + "decomposedQueryResponse": { + "$ref": "#/components/schemas/eureka_LLMDecomposeQueryResponse", + "description": "Decomposed query response for a topical/goal oriented question that contains broken down analytical questions.", + "nullable": true + } + } + }, + "eureka_LLMDecomposeQueryResponse": { + "type": "object", + "properties": { + "decomposedQueries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/eureka_LLMSuggestedQuery" + }, + "description": "List of analytical questions that can be run on their respective worksheet/data sources.", + "nullable": true + } + } + }, + "eureka_LLMSuggestedQuery": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "NL query that can be run using spotter aka natural language search to get an AI generated answer.", + "nullable": true + }, + "worksheetId": { + "type": "string", + "description": "Unique identifier of the worksheet on which this query can be run on.", + "nullable": true + }, + "worksheetName": { + "type": "string", + "description": "Display name of the worksheet on which this query can be run on.", + "nullable": true + } + } + }, + "eureka_DataSourceSuggestionResponse": { + "type": "object", + "properties": { + "data_sources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DataSource" + }, + "description": "List of data sources suggested.", + "nullable": true + } + } + }, + "DataSource": { + "type": "object", + "properties": { + "confidence": { + "type": "number", + "format": "float", + "description": "Confidence score for the data source suggestion.", + "nullable": true + }, + "details": { + "$ref": "#/components/schemas/EntityHeader", + "description": "Details of the data source.", + "nullable": true + }, + "reasoning": { + "type": "string", + "description": "LLM reasoning for the data source.", + "nullable": true + } + } + }, + "EntityHeader": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Description of the data source.", + "nullable": true + }, + "data_source_name": { + "type": "string", + "description": "Display name of the data source.", + "nullable": true + }, + "data_source_identifier": { + "type": "string", + "description": "Unique identifier of the data source.", + "nullable": true + } + } + }, + "eureka_GetNLInstructionsResponse": { + "type": "object", + "required": [ + "nl_instructions_info" + ], + "properties": { + "nl_instructions_info": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NLInstructionsInfo" + }, + "description": "List of NL instructions with their scopes." + } + } + }, + "NLInstructionsInfo": { + "type": "object", + "required": [ + "instructions", + "scope" + ], + "properties": { + "instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "User instructions for natural language processing." + }, + "scope": { + "type": "string", + "enum": [ + "GLOBAL" + ], + "description": "Scope of the instruction." + } + } + }, + "RiseGQLArgWrapper": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "VariableDetailInput": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Unique ID or name of the variable", + "nullable": true + }, + "type": { + "type": "string", + "enum": [ + "CONNECTION_PROPERTY", + "TABLE_MAPPING", + "CONNECTION_PROPERTY_PER_PRINCIPAL", + "FORMULA_VARIABLE", + "USER_PROPERTY" + ], + "description": "Type of variable", + "nullable": true + }, + "name_pattern": { + "type": "string", + "description": "A pattern to match case-insensitive name of the variable. User % for a wildcard match", + "nullable": true + } + }, + "description": "Input for variable details in search" + }, + "ValueScopeInput": { + "type": "object", + "properties": { + "org_identifier": { + "type": "string", + "description": "The unique name of the org", + "nullable": true + }, + "principal_type": { + "type": "string", + "enum": [ + "USER", + "USER_GROUP" + ], + "description": "Type of principal to filter by. Use USER to filter values assigned to specific users, or USER_GROUP to filter values assigned to groups.", + "nullable": true + }, + "principal_identifier": { + "type": "string", + "description": "Unique ID or name of the principal", + "nullable": true + }, + "model_identifier": { + "type": "string", + "description": "Unique ID or name of the model to filter by. Applicable only for FORMULA_VARIABLE type.", + "nullable": true + } + }, + "description": "Input for filtering variable values by scope in search operations" + }, + "Variable": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the variable" + }, + "name": { + "type": "string", + "description": "Name of the variable" + }, + "variable_type": { + "type": "string", + "enum": [ + "CONNECTION_PROPERTY", + "TABLE_MAPPING", + "CONNECTION_PROPERTY_PER_PRINCIPAL", + "FORMULA_VARIABLE", + "USER_PROPERTY" + ], + "description": "Type of the variable", + "nullable": true + }, + "sensitive": { + "type": "boolean", + "description": "If the variable is sensitive", + "nullable": true + }, + "values": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableValue" + }, + "description": "Values of the variable", + "nullable": true + } + }, + "description": "Variable object" + }, + "VariableValue": { + "type": "object", + "required": [ + "org_identifier" + ], + "properties": { + "value": { + "type": "string", + "description": "The value of the variable", + "nullable": true + }, + "value_list": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The value of the variable if it is a list type", + "nullable": true + }, + "org_identifier": { + "type": "string", + "description": "The unique name of the org" + }, + "principal_type": { + "type": "string", + "enum": [ + "USER", + "USER_GROUP" + ], + "description": "Type of principal to which this value applies. Use USER to assign the value to a specific user, or USER_GROUP to assign it to a group.", + "nullable": true + }, + "principal_identifier": { + "type": "string", + "description": "Unique ID or name of the principal", + "nullable": true + }, + "model_identifier": { + "type": "string", + "description": "Unique ID of the model
Beta Version: 26.3.0.cl or later", + "nullable": true + }, + "priority": { + "type": "integer", + "format": "int32", + "description": "The priority assigned to this value. If there are 2 matching values, the one with the higher priority will be picked.", + "nullable": true + } + } + }, + "SortOption": { + "type": "object", + "properties": { + "field_name": { + "type": "string", + "enum": [ + "DEFAULT", + "NAME", + "DISPLAY_NAME", + "AUTHOR", + "CREATED", + "MODIFIED" + ], + "default": "DEFAULT", + "description": "Name of the field to apply the sort on.", + "nullable": true + }, + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC", + "description": "Sort order : ASC(Ascending) or DESC(Descending).", + "nullable": true + } + } + }, + "CalendarResponse": { + "type": "object", + "properties": { + "calendar_name": { + "type": "string", + "description": "Name of the calendar", + "nullable": true + }, + "connection_name": { + "type": "string", + "description": "Name of the connection", + "nullable": true + }, + "data_warehouse_type": { + "type": "string", + "description": "Type of data warehouse", + "nullable": true + }, + "modification_time_in_millis": { + "type": "string", + "description": "Last modification time in milliseconds", + "nullable": true + }, + "author_name": { + "type": "string", + "description": "Name of the author who created the calendar", + "nullable": true + }, + "connection_id": { + "type": "string", + "description": "Unique ID of the connection", + "nullable": true + }, + "calendar_id": { + "type": "string", + "description": "Unique ID of the calendar", + "nullable": true + } + } + }, + "ConnectionConfigurationResponse": { + "type": "object", + "properties": { + "configuration_identifier": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "configuration": { + "type": "object", + "nullable": true + }, + "policy_principals": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserPrincipal" + }, + "nullable": true + }, + "policy_processes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "SAGE_INDEXING", + "ROW_COUNT_STATS" + ] + }, + "nullable": true + }, + "disabled": { + "type": "boolean", + "nullable": true + }, + "data_warehouse_type": { + "type": "string", + "enum": [ + "SNOWFLAKE", + "AMAZON_REDSHIFT", + "GOOGLE_BIGQUERY", + "AZURE_SYNAPSE", + "TERADATA", + "SAP_HANA", + "STARBURST", + "ORACLE_ADW", + "DATABRICKS", + "DENODO", + "DREMIO", + "TRINO", + "PRESTO", + "POSTGRES", + "SQLSERVER", + "MYSQL", + "GENERIC_JDBC", + "AMAZON_RDS_POSTGRESQL", + "AMAZON_AURORA_POSTGRESQL", + "AMAZON_RDS_MYSQL", + "AMAZON_AURORA_MYSQL", + "LOOKER", + "AMAZON_ATHENA", + "SINGLESTORE", + "GCP_SQLSERVER", + "GCP_ALLOYDB_POSTGRESQL", + "GCP_POSTGRESQL", + "GCP_MYSQL", + "MODE", + "GOOGLE_SHEETS", + "FALCON", + "FALCON_ONPREM", + "CLICKHOUSE" + ], + "nullable": true + }, + "policy_type": { + "type": "string", + "enum": [ + "NO_POLICY", + "PRINCIPALS", + "PROCESSES" + ], + "nullable": true + }, + "same_as_parent": { + "type": "boolean", + "nullable": true + }, + "policy_process_options": { + "$ref": "#/components/schemas/PolicyProcessOptions", + "nullable": true + } + } + }, + "UserPrincipal": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "type": { + "type": "string", + "nullable": true + } + } + }, + "PolicyProcessOptions": { + "type": "object", + "properties": { + "impersonate_user": { + "type": "string", + "nullable": true + } + } + }, + "WebhookSortOptionsInput": { + "type": "object", + "properties": { + "field_name": { + "type": "string", + "enum": [ + "CREATED", + "MODIFIED", + "NAME" + ], + "default": "CREATED", + "description": "Name of the field to apply the sort on.", + "nullable": true + }, + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "DESC", + "description": "Sort order: ASC (Ascending) or DESC (Descending).", + "nullable": true + } + } + }, + "WebhookSearchResponse": { + "type": "object", + "required": [ + "webhooks", + "pagination" + ], + "properties": { + "webhooks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookResponse" + }, + "description": "List of webhook configurations matching the search criteria." + }, + "pagination": { + "$ref": "#/components/schemas/WebhookPagination", + "description": "Pagination information." + } + } + }, + "WebhookResponse": { + "type": "object", + "required": [ + "id", + "name", + "url", + "events", + "creation_time_in_millis", + "modification_time_in_millis" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the webhook configuration." + }, + "name": { + "type": "string", + "description": "Name of the webhook configuration." + }, + "description": { + "type": "string", + "description": "Description of the webhook configuration.", + "nullable": true + }, + "org": { + "$ref": "#/components/schemas/WebhookOrg", + "description": "Org details.", + "nullable": true + }, + "url": { + "type": "string", + "description": "The webhook endpoint URL." + }, + "url_params": { + "type": "object", + "description": "Additional URL parameters as key-value pairs.", + "nullable": true + }, + "events": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] + }, + "description": "List of events this webhook subscribes to." + }, + "authentication": { + "$ref": "#/components/schemas/WebhookAuthentication", + "description": "Redacted authorization configuration for the webhook.", + "nullable": true + }, + "signature_verification": { + "$ref": "#/components/schemas/WebhookSignatureVerification", + "description": "Redacted configuration for webhook signature verification.", + "nullable": true + }, + "additional_headers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookKeyValuePair" + }, + "description": "Additional headers as an array of key-value pairs.
Version: 26.4.0.cl or later", + "nullable": true + }, + "creation_time_in_millis": { + "type": "number", + "format": "float", + "description": "Creation time of the webhook configuration in milliseconds." + }, + "modification_time_in_millis": { + "type": "number", + "format": "float", + "description": "Last modified time of the webhook configuration in milliseconds." + }, + "created_by": { + "$ref": "#/components/schemas/WebhookUser", + "description": "User who created the webhook.", + "nullable": true + }, + "last_modified_by": { + "$ref": "#/components/schemas/WebhookUser", + "description": "User who last modified the webhook.", + "nullable": true + }, + "storage_destination": { + "$ref": "#/components/schemas/StorageDestination", + "description": "Storage destination configuration for webhook payload delivery.", + "nullable": true + } + } + }, + "WebhookOrg": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the org." + }, + "name": { + "type": "string", + "description": "Name of the org." + } + } + }, + "WebhookAuthentication": { + "type": "object", + "properties": { + "API_KEY": { + "$ref": "#/components/schemas/WebhookAuthApiKey", + "description": "Redacted API key authentication configuration.", + "nullable": true + }, + "BASIC_AUTH": { + "$ref": "#/components/schemas/WebhookAuthBasicAuth", + "description": "Redacted Basic authentication configuration.", + "nullable": true + }, + "BEARER_TOKEN": { + "type": "string", + "description": "Redacted Bearer token authentication configuration.", + "nullable": true + }, + "OAUTH2": { + "$ref": "#/components/schemas/WebhookAuthOAuth2", + "description": "Redacted OAuth2 authentication configuration.", + "nullable": true + } + } + }, + "WebhookAuthApiKey": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string", + "description": "The header or query parameter name for the API key." + }, + "value": { + "type": "string", + "description": "The API key value." + } + } + }, + "WebhookAuthBasicAuth": { + "type": "object", + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "type": "string", + "description": "Username for basic authentication." + }, + "password": { + "type": "string", + "description": "Password for basic authentication." + } + } + }, + "WebhookAuthOAuth2": { + "type": "object", + "required": [ + "authorization_url", + "client_id", + "client_secret" + ], + "properties": { + "authorization_url": { + "type": "string", + "description": "OAuth2 authorization server URL." + }, + "client_id": { + "type": "string", + "description": "OAuth2 client identifier." + }, + "client_secret": { + "type": "string", + "description": "OAuth2 client secret key." + } + } + }, + "WebhookSignatureVerification": { + "type": "object", + "required": [ + "type", + "header", + "algorithm", + "secret" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "HMAC_SHA256" + ], + "description": "Signature verification method type." + }, + "header": { + "type": "string", + "description": "HTTP header where the signature is sent." + }, + "algorithm": { + "type": "string", + "enum": [ + "SHA256" + ], + "description": "Hash algorithm used for signature verification." + }, + "secret": { + "type": "string", + "description": "Shared secret used for HMAC signature generation." + } + } + }, + "WebhookKeyValuePair": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string", + "description": "Header name." + }, + "value": { + "type": "string", + "description": "Header value." + } + }, + "description": "Key-value pair for additional webhook headers." + }, + "WebhookUser": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the user." + }, + "name": { + "type": "string", + "description": "Name of the user." + } + } + }, + "StorageDestination": { + "type": "object", + "required": [ + "storage_type", + "storage_config" + ], + "properties": { + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "storage_config": { + "$ref": "#/components/schemas/StorageConfig", + "description": "Storage-specific configuration settings." + } + }, + "description": "Storage destination configuration for webhook payload delivery." + }, + "StorageConfig": { + "type": "object", + "properties": { + "aws_s3_config": { + "$ref": "#/components/schemas/AwsS3Config", + "description": "AWS S3 storage configuration.", + "nullable": true + } + }, + "description": "Storage configuration containing provider-specific settings." + }, + "AwsS3Config": { + "type": "object", + "required": [ + "bucket_name", + "region", + "role_arn" + ], + "properties": { + "bucket_name": { + "type": "string", + "description": "Name of the S3 bucket where webhook payloads are stored." + }, + "region": { + "type": "string", + "description": "AWS region where the S3 bucket is located." + }, + "role_arn": { + "type": "string", + "description": "ARN of the IAM role used for S3 access." + }, + "external_id": { + "type": "string", + "description": "External ID for secure cross-account role assumption.", + "nullable": true + }, + "path_prefix": { + "type": "string", + "description": "Path prefix for organizing objects within the bucket.", + "nullable": true + } + }, + "description": "AWS S3 storage configuration details." + }, + "WebhookPagination": { + "type": "object", + "required": [ + "record_offset", + "record_size", + "total_count", + "has_more" + ], + "properties": { + "record_offset": { + "type": "integer", + "format": "int32", + "description": "The starting record number from where the records are included." + }, + "record_size": { + "type": "integer", + "format": "int32", + "description": "The number of records included in the response." + }, + "total_count": { + "type": "integer", + "format": "int32", + "description": "Total number of webhook configurations available." + }, + "has_more": { + "type": "boolean", + "description": "Indicates whether more records are available beyond the current response." + } + } + }, + "StorageSetupInfo": { + "type": "object", + "required": [ + "cluster_type", + "storage_type" + ], + "properties": { + "cluster_type": { + "type": "string", + "enum": [ + "AWS", + "GCP" + ], + "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method is used for S3 access.\nExample: \"AWS\" or \"GCP\"" + }, + "storage_type": { + "type": "string", + "enum": [ + "AWS_S3" + ], + "description": "Type of storage destination (e.g., AWS_S3)." + }, + "aws_config": { + "$ref": "#/components/schemas/AWSAssumeRoleSetup", + "description": "Setup info for AWS clusters using STS AssumeRole.\nOnly populated when cluster_type is AWS.", + "nullable": true + }, + "gcp_config": { + "$ref": "#/components/schemas/GCPWebIdentitySetup", + "description": "Setup info for GCP clusters using STS AssumeRoleWithWebIdentity.\nOnly populated when cluster_type is GCP.", + "nullable": true + } + }, + "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nThe response contains cluster-specific configuration based on the cluster_type:\n- For AWS clusters: aws_config will be populated\n- For GCP clusters: gcp_config will be populated\nExample query:\n```graphql\nquery {\n getWebhookStorageConfig(webhook_identifier: \"my-webhook\") {\n cluster_type\n storage_type\n aws_config {\n thoughtspot_aws_account_id\n trust_policy_template\n setup_instructions\n }\n gcp_config {\n thoughtspot_gcp_service_account_id\n oidc_provider\n trust_policy_template\n setup_instructions\n }\n }\n}\n```\nExample AWS response:\n{\n \"cluster_type\": \"AWS\",\n \"storage_type\": \"AWS_S3\",\n \"aws_config\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n },\n \"gcp_config\": null\n}\nExample GCP response:\n{\n \"cluster_type\": \"GCP\",\n \"storage_type\": \"AWS_S3\",\n \"aws_config\": null,\n \"gcp_config\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\"]\n }\n}" + }, + "AWSAssumeRoleSetup": { + "type": "object", + "required": [ + "thoughtspot_aws_account_id", + "trust_policy_template" + ], + "properties": { + "thoughtspot_aws_account_id": { + "type": "string", + "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.\nExample: \"123456789012\"" + }, + "trust_policy_template": { + "type": "object", + "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nExample: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } } }] }" + }, + "setup_instructions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", + "nullable": true + } + }, + "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" + }, + "GCPWebIdentitySetup": { + "type": "object", + "required": [ + "thoughtspot_gcp_service_account_id", + "trust_policy_template" + ], + "properties": { + "thoughtspot_gcp_service_account_id": { + "type": "string", + "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.\nExample: \"115663769112811637952\"" + }, + "oidc_provider": { + "type": "string", + "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"", + "nullable": true + }, + "trust_policy_template": { + "type": "object", + "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nExample: { \"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": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", + "nullable": true + } + }, + "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" + }, + "CollectionSearchResponse": { + "type": "object", + "required": [ + "collections" + ], + "properties": { + "collections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Collection" + }, + "description": "List of collections matching the search criteria." + }, + "record_offset": { + "type": "integer", + "format": "int32", + "description": "The starting record number from where the records are included.", + "nullable": true + }, + "record_size": { + "type": "integer", + "format": "int32", + "description": "The number of records returned.", + "nullable": true + }, + "is_last_batch": { + "type": "boolean", + "description": "Indicates if this is the last batch of results.", + "nullable": true + }, + "count": { + "type": "integer", + "format": "int32", + "description": "Total count of records returned.", + "nullable": true + } + }, + "description": "Response object for search collections operation." + }, + "Collection": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the collection." + }, + "name": { + "type": "string", + "description": "Name of the collection." + }, + "description": { + "type": "string", + "description": "Description of the collection.", + "nullable": true + }, + "metadata": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionMetadataItem" + }, + "description": "Metadata objects in the collection.", + "nullable": true + }, + "created_at": { + "type": "string", + "description": "Creation timestamp in milliseconds.", + "nullable": true + }, + "updated_at": { + "type": "string", + "description": "Last updated timestamp in milliseconds.", + "nullable": true + }, + "author_name": { + "type": "string", + "description": "Name of the author who created the collection.", + "nullable": true + }, + "author_id": { + "type": "string", + "description": "Unique identifier of the author.", + "nullable": true + }, + "org": { + "$ref": "#/components/schemas/CollectionEntityIdentifier", + "description": "Org associated with the collection.", + "nullable": true + } + }, + "description": "Response object for a collection." + }, + "CollectionMetadataItem": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of the metadata object.", + "nullable": true + }, + "identifiers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionEntityIdentifier" + }, + "description": "List of identifiers for this metadata type.", + "nullable": true + } + }, + "description": "Metadata item in a collection response." + }, + "CollectionEntityIdentifier": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Unique identifier of the entity.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Name of the entity.", + "nullable": true + } + }, + "description": "Entity identifier with name." + }, + "ChannelHistoryEventInput": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Type of the event." + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the event.", + "nullable": true + } + }, + "description": "Event specification for channel history search." + }, + "SearchChannelHistoryResponse": { + "type": "object", + "required": [ + "jobs" + ], + "properties": { + "jobs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChannelHistoryJob" + }, + "description": "List of job execution records." + } + }, + "description": "Response wrapper for channel delivery history." + }, + "ChannelHistoryJob": { + "type": "object", + "required": [ + "id", + "status", + "creation_time_in_millis" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for this job." + }, + "status": { + "type": "string", + "enum": [ + "PENDING", + "RETRY", + "SUCCESS", + "FAILED" + ], + "description": "Delivery status of this job." + }, + "creation_time_in_millis": { + "type": "number", + "format": "float", + "description": "Timestamp when this job was created (epoch milliseconds)." + }, + "event": { + "$ref": "#/components/schemas/ChannelHistoryEventInfo", + "description": "Event metadata for the triggering event associated with this job.", + "nullable": true + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobRecipient" + }, + "description": "The users, groups or external recipients for this job.", + "nullable": true + }, + "detail": { + "type": "string", + "description": "Additional delivery details such as HTTP response code or error message.", + "nullable": true + }, + "try_count": { + "type": "integer", + "format": "int32", + "description": "Number of attempts made. 1 indicates first attempt.", + "nullable": true + } + }, + "description": "A single job execution record for a channel." + }, + "ChannelHistoryEventInfo": { + "type": "object", + "required": [ + "type", + "id" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Type of the event." + }, + "id": { + "type": "string", + "description": "Unique ID of the event." + }, + "name": { + "type": "string", + "description": "Name of the event.", + "nullable": true + }, + "run_id": { + "type": "string", + "description": "Unique run ID for this event execution.", + "nullable": true + } + }, + "description": "Event metadata for the triggering event associated with a job." + }, + "JobRecipient": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "USER", + "EXTERNAL" + ], + "description": "Type of the recipient." + }, + "id": { + "type": "string", + "description": "Unique ID of the recipient.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Name of the recipient.", + "nullable": true + }, + "email": { + "type": "string", + "description": "Email of the recipient.", + "nullable": true + } + }, + "description": "A recipient (user, group, or external) for a job execution." + }, + "GenericInfo": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + } + } + }, + "UserGroup": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + } + } + }, + "JWT_User_Options": { + "type": "object", + "properties": { + "parameters": { + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Runtime_Filter" + }, + { + "$ref": "#/components/schemas/Runtime_Sort" + }, + { + "$ref": "#/components/schemas/Runtime_Param_Override" + } + ] + } + }, + "metadata": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JWT_Metadata_Object" + }, + "nullable": true + } + }, + "description": "JWT user options to create a JWT token given the payload.\n\n\n*Deprecated in 9.12.0.cl. Use user_parameters instead.*" + }, + "JWT_Parameter": { + "type": "object", + "properties": { + "runtime_filter": { + "type": "object", + "description": "Runtime filter parameter type in JWT.", + "nullable": true + }, + "runtime_sort": { + "type": "object", + "description": "Runtime sort parameter type in JWT.", + "nullable": true + }, + "runtime_param_override": { + "type": "object", + "description": "Runtime param override type in JWT.", + "nullable": true + } + }, + "description": "List of runtime parameters need to set during the session." + }, + "JWT_Metadata_Object": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "nullable": true + }, + "type": { + "type": "string", + "enum": [ + "LOGICAL_TABLE" + ], + "nullable": true + } + }, + "description": "Metadata objects." + }, + "User_Parameter_Options": { + "type": "object", + "properties": { + "objects": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User_Object" + }, + "nullable": true + }, + "runtime_filters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Runtime_Filters" + }, + "description": "Objects to apply the User_Runtime_Filters.\n\nExamples to set the `runtime_filters` :\n```json\n{ \"column_name\": \"Color\", \"operator\": \"EQ\", \"values\": [\"red\"], \"persist\": false }\n```", + "nullable": true + }, + "runtime_sorts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Runtime_Sorts" + }, + "description": "Objects to apply the User_Runtime_Sorts.\n\nExamples to set the `runtime_sorts` :\n```json\n{ \"column_name\": \"Color\", \"order\": \"ASC\", \"persist\": false }\n```", + "nullable": true + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Runtime_Parameters" + }, + "description": "Objects to apply the Runtime_Parameters.\n\nExamples to set the `parameters` :\n```json\n{ \"name\": \"Color\", \"values\": [\"Blue\"], \"persist\": false }\n```", + "nullable": true + } + }, + "description": "Define attributes such as Runtime filters and Runtime parameters to send security entitlements to a user session. For more information, see [Documentation](https://developers.thoughtspot.com/docs/abac-user-parameters).\n" + }, + "User_Object": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LOGICAL_TABLE" + ], + "description": " Type of object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n \n\n Specify the object type as `LOGICAL_TABLE`.", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique name/id of the object." + } + }, + "description": "Objects to apply the User_Object." + }, + "Runtime_Filters": { + "type": "object", + "required": [ + "column_name", + "values", + "operator" + ], + "properties": { + "column_name": { + "type": "string", + "description": "The column name to apply filter." + }, + "values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Value of the filters." + }, + "operator": { + "type": "string", + "enum": [ + "EQ", + "NE", + "LT", + "LE", + "GT", + "GE", + "IN", + "BW", + "CONTAINS", + "BEGINS_WITH", + "ENDS_WITH", + "BW_INC", + "BW_INC_MIN", + "BW_INC_MAX", + "LIKE", + "NOT_IN" + ], + "description": "Operator value. Example: EQ" + }, + "persist": { + "type": "boolean", + "default": false, + "description": "Flag to persist the runtime filters.
Version: 9.12.0.cl or later", + "nullable": true + }, + "objects": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User_Object" + }, + "description": "Object to apply the runtime filter.", + "nullable": true + } + }, + "description": "Objects to apply the Runtime_Filters." + }, + "Runtime_Sorts": { + "type": "object", + "properties": { + "column_name": { + "type": "string", + "description": "The column name to apply filter.", + "nullable": true + }, + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "description": "Order for the sort.", + "nullable": true + }, + "persist": { + "type": "boolean", + "default": false, + "description": "Flag to persist the runtime sorts.
Version: 9.12.0.cl or later", + "nullable": true + }, + "objects": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User_Object" + }, + "description": "Object to apply the runtime sort.", + "nullable": true + } + }, + "description": "Objects to apply the Runtime_Sorts." + }, + "Runtime_Parameters": { + "type": "object", + "required": [ + "name", + "values" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the parameter." + }, + "values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The array of values." + }, + "persist": { + "type": "boolean", + "default": false, + "description": "Flag to persist the parameters.
Version: 9.12.0.cl or later", + "nullable": true + }, + "objects": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User_Object" + }, + "description": "Object to apply the runtime parameter.", + "nullable": true + } + }, + "description": "Objects to apply the Runtime_Parameters." + }, + "Token": { + "type": "object", + "required": [ + "token", + "creation_time_in_millis", + "expiration_time_in_millis", + "scope", + "valid_for_user_id", + "valid_for_username" + ], + "properties": { + "token": { + "type": "string", + "description": "Bearer auth token." + }, + "creation_time_in_millis": { + "type": "number", + "format": "float", + "description": "Token creation time in milliseconds." + }, + "expiration_time_in_millis": { + "type": "number", + "format": "float", + "description": "Token expiration time in milliseconds." + }, + "scope": { + "$ref": "#/components/schemas/Scope", + "description": "Token access scope details" + }, + "valid_for_user_id": { + "type": "string", + "description": "Username to whom the token is issued." + }, + "valid_for_username": { + "type": "string", + "description": "Unique identifier of the user to whom the token is issued." + } + } + }, + "Scope": { + "type": "object", + "required": [ + "access_type" + ], + "properties": { + "access_type": { + "type": "string", + "description": "Object access scope type." + }, + "org_id": { + "type": "integer", + "format": "int32", + "description": "Unique identifier of the metadata.", + "nullable": true + }, + "metadata_id": { + "type": "string", + "description": "Unique identifier of the Org.", + "nullable": true + } + } + }, + "JWT_User_Options_Full": { + "type": "object", + "properties": { + "parameters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JWT_Parameter" + }, + "nullable": true + } + }, + "description": "JWT user options to create a JWT token given the payload.\n\n\n*Deprecated in 9.12.0.cl. Use user_parameters instead.*" + }, + "TokenValidationResponse": { + "type": "object", + "required": [ + "creation_time_in_millis", + "expiration_time_in_millis", + "scope", + "valid_for_user_id", + "token_type" + ], + "properties": { + "creation_time_in_millis": { + "type": "number", + "format": "float", + "description": "Token creation time in milliseconds." + }, + "expiration_time_in_millis": { + "type": "number", + "format": "float", + "description": "Token expiration time in milliseconds." + }, + "scope": { + "$ref": "#/components/schemas/Scope", + "description": "Token access scope details" + }, + "valid_for_user_id": { + "type": "string", + "description": "Username to whom the token is issued." + }, + "token_type": { + "type": "string", + "description": "Type of token." + } + } + }, + "FilterRules": { + "type": "object", + "required": [ + "column_name", + "operator", + "values" + ], + "properties": { + "column_name": { + "type": "string", + "description": "The name of the column to apply the filter on." + }, + "operator": { + "type": "string", + "enum": [ + "EQ", + "NE", + "LT", + "LE", + "GT", + "GE", + "IN", + "BW", + "CONTAINS", + "BEGINS_WITH", + "ENDS_WITH", + "BW_INC", + "BW_INC_MIN", + "BW_INC_MAX", + "LIKE", + "NOT_IN" + ], + "description": "The operator to use for filtering. Example: EQ (equals), GT(greater than), etc." + }, + "values": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "type": "number" + } + ] + }, + "description": "The values to filter on. To get all records, use TS_WILDCARD_ALL as values." + } + }, + "description": "Filter Rules to be applied on Objects." + }, + "ParameterValues": { + "type": "object", + "required": [ + "name", + "values" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the column to apply the filter on." + }, + "values": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "type": "number" + } + ] + }, + "description": "The values to filter on. Only single value is supported currently." + } + }, + "description": "Filter Rules to be applied on Objects." + }, + "VariableValues": { + "type": "object", + "required": [ + "name", + "values" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the existing formula variable." + }, + "values": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "type": "number" + } + ] + }, + "description": "The values to filter on." + } + }, + "description": "Variable values." + }, + "TokenAccessScopeObject": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LOGICAL_TABLE" + ], + "description": " Type of object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n \n\n Specify the object type as `LOGICAL_TABLE`.", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique name/id of the object." + } + }, + "description": "Objects on which the filter rules and parameters values should be applied to" + }, + "Group_Object": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "nullable": true + } + }, + "description": "Groups objects." + }, + "AccessToken": { + "type": "object", + "required": [ + "token", + "org", + "user", + "creation_time_in_millis", + "expiration_time_in_millis" + ], + "properties": { + "id": { + "type": "string", + "description": "GUID of the auth token.", + "nullable": true + }, + "token": { + "type": "string", + "description": "Bearer auth token." + }, + "org": { + "$ref": "#/components/schemas/OrgInfo", + "description": "Org information for which the token is generated." + }, + "user": { + "$ref": "#/components/schemas/UserInfo", + "description": "User information for which the token is generated." + }, + "creation_time_in_millis": { + "type": "number", + "format": "float", + "description": "Token creation time in milliseconds." + }, + "expiration_time_in_millis": { + "type": "number", + "format": "float", + "description": "Token expiration time in milliseconds." + } + } + }, + "OrgInfo": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Id." + }, + "name": { + "type": "string", + "description": "Name.", + "nullable": true + } + } + }, + "UserInfo": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "Id." + }, + "name": { + "type": "string", + "description": "Name.", + "nullable": true + } + } + }, + "ResponseActivationURL": { + "type": "object", + "properties": { + "activation_link": { + "type": "string", + "description": "Activation link to activate the user.", + "nullable": true + } + }, + "description": "The object representation with activation link." + }, + "ImportUser": { + "type": "object", + "required": [ + "user_identifier", + "display_name" + ], + "properties": { + "user_identifier": { + "type": "string", + "description": "Unique ID or name of the user." + }, + "display_name": { + "type": "string", + "description": "Display name of the user." + }, + "password": { + "type": "string", + "description": "Password of the user.", + "nullable": true + }, + "account_type": { + "type": "string", + "enum": [ + "LOCAL_USER", + "LDAP_USER", + "SAML_USER", + "OIDC_USER", + "REMOTE_USER" + ], + "default": "LOCAL_USER", + "description": "Type of the user account.", + "nullable": true + }, + "account_status": { + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE", + "EXPIRED", + "LOCKED", + "PENDING", + "SUSPENDED" + ], + "default": "ACTIVE", + "description": "Status of the user account.", + "nullable": true + }, + "email": { + "type": "string", + "description": "Email address of the user.", + "nullable": true + }, + "org_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ID or name of the Orgs to which the user belongs.", + "nullable": true + }, + "group_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ID or name of the groups to which the user belongs.", + "nullable": true + }, + "visibility": { + "type": "string", + "enum": [ + "SHARABLE", + "NON_SHARABLE" + ], + "description": "Visibility of the users. The SHARABLE property makes a user visible to other users and group, who can share objects with the user.", + "nullable": true + }, + "notify_on_share": { + "type": "boolean", + "default": true, + "description": "Notify user when other users or groups share metadata objects", + "nullable": true + }, + "show_onboarding_experience": { + "type": "boolean", + "description": "Show or hide the new user onboarding walkthroughs", + "nullable": true + }, + "onboarding_experience_completed": { + "type": "boolean", + "description": "Revisit the new user onboarding walkthroughs", + "nullable": true + }, + "home_liveboard_identifier": { + "type": "string", + "description": "Unique ID or name of the default Liveboard assigned to the user.", + "nullable": true + }, + "favorite_metadata": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FavoriteMetadataInput" + }, + "description": "Metadata objects to add to the user's favorites list.", + "nullable": true + }, + "preferred_locale": { + "type": "string", + "description": "Locale for the user. When setting this value, do not set use_browser_language to true, otherwise the browser's language setting will take precedence and the preferred_locale value will be ignored.", + "nullable": true, + "enum": [ + "en-CA", + "en-GB", + "en-US", + "de-DE", + "ja-JP", + "zh-CN", + "pt-BR", + "fr-FR", + "fr-CA", + "es-US", + "da-DK", + "es-ES", + "fi-FI", + "sv-SE", + "nb-NO", + "pt-PT", + "nl-NL", + "it-IT", + "ru-RU", + "en-IN", + "de-CH", + "en-NZ", + "es-MX", + "en-AU", + "zh-Hant", + "ko-KR", + "en-DE" + ] + }, + "use_browser_language": { + "type": "boolean", + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.
Version: 26.3.0.cl or later", + "nullable": true + } + } + }, + "ImportUsersResponse": { + "type": "object", + "properties": { + "users_added": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportUserType" + }, + "nullable": true + }, + "users_updated": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportUserType" + }, + "nullable": true + }, + "users_deleted": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportUserType" + }, + "nullable": true + } + } + }, + "ImportUserType": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the user.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Name of the user." + } + } + }, + "EventChannelConfigInput": { + "type": "object", + "required": [ + "event_type", + "channels" + ], + "properties": { + "event_type": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Type of event for which communication channels are configured" + }, + "channels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "EMAIL", + "WEBHOOK" + ] + }, + "description": "Communication channels enabled for this event type. Empty array disables all channels for this event." + } + } + }, + "OrgChannelConfigInput": { + "type": "object", + "required": [ + "org_identifier" + ], + "properties": { + "org_identifier": { + "type": "string", + "description": "Unique identifier or name of the org" + }, + "operation": { + "type": "string", + "enum": [ + "REPLACE", + "RESET" + ], + "default": "REPLACE", + "description": "Operation to perform. REPLACE: Update preferences (default). RESET: Remove org-specific configurations, causing fallback to cluster-level preferences.", + "nullable": true + }, + "preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfigInput" + }, + "description": "Event-specific configurations. Required for REPLACE operation.", + "nullable": true + }, + "reset_events": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] + }, + "description": "Event types to reset. Required for RESET operation. Org-specific configurations for these events will be removed, causing fallback to cluster-level preferences.", + "nullable": true + } + } + }, + "SecuritySettingsClusterPreferencesInput": { + "type": "object", + "properties": { + "enable_partitioned_cookies": { + "type": "boolean", + "description": "Support embedded access when third-party cookies are blocked.", + "nullable": true + }, + "cors_whitelisted_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed origins for CORS.", + "nullable": true + }, + "csp_settings": { + "$ref": "#/components/schemas/CspSettingsInput", + "description": "CSP (Content Security Policy) settings.", + "nullable": true + }, + "saml_redirect_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed redirect hosts for SAML login.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/ClusterNonEmbedAccessInput", + "description": "Non-embed access configuration at cluster level.", + "nullable": true + } + }, + "description": "Input for cluster-level security preferences configuration." + }, + "CspSettingsInput": { + "type": "object", + "properties": { + "connect_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for connect-src directive.", + "nullable": true + }, + "font_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for font-src directive.", + "nullable": true + }, + "visual_embed_hosts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed hosts for visual embed (frame-ancestors directive).", + "nullable": true + }, + "iframe_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for frame-src directive.", + "nullable": true + }, + "img_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for img-src directive.", + "nullable": true + }, + "script_src_urls": { + "$ref": "#/components/schemas/ScriptSrcUrlsInput", + "description": "Script-src settings including URLs and enabled flag.", + "nullable": true + }, + "style_src_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for style-src directive.", + "nullable": true + } + }, + "description": "Input for CSP (Content Security Policy) settings." + }, + "ScriptSrcUrlsInput": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether script-src customization is enabled.", + "nullable": true + }, + "urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", + "nullable": true + } + }, + "description": "Input for script-src CSP settings." + }, + "ClusterNonEmbedAccessInput": { + "type": "object", + "properties": { + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", + "nullable": true + }, + "groups_identifiers_with_access": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Group identifiers that are allowed non-embed full app access.\nCan only be set when orgs feature is disabled and block_full_app_access is true.", + "nullable": true + } + }, + "description": "Input for cluster-level non-embed access configuration." + }, + "SecuritySettingsOrgPreferencesInput": { + "type": "object", + "required": [ + "org_identifier" + ], + "properties": { + "org_identifier": { + "type": "string", + "description": "Unique identifier or name of the org" + }, + "cors_whitelisted_urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowed origins for CORS for this org.", + "nullable": true + }, + "non_embed_access": { + "$ref": "#/components/schemas/OrgNonEmbedAccessInput", + "description": "Non-embed access configuration for this org.", + "nullable": true + } + }, + "description": "Input for org-level security preferences configuration.\nNote: cross-org operations are not supported currently." + }, + "OrgNonEmbedAccessInput": { + "type": "object", + "properties": { + "block_full_app_access": { + "type": "boolean", + "description": "Block full application access for non-embedded usage.", + "nullable": true + }, + "groups_identifiers_with_access": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Group identifiers that are allowed non-embed full app access. Can only be set if block_full_app_access is true.", + "nullable": true + } + }, + "description": "Input for org-level non-embed access configuration." + }, + "CommunicationChannelValidateResponse": { + "type": "object", + "required": [ + "channel_type", + "channel_id", + "event_type", + "job_id", + "result_code" + ], + "properties": { + "channel_type": { + "type": "string", + "enum": [ + "WEBHOOK" + ], + "description": "Type of communication channel that was validated." + }, + "channel_id": { + "type": "string", + "description": "ID of the communication channel (e.g., webhook_id)." + }, + "channel_name": { + "type": "string", + "description": "Name of the communication channel (e.g., webhook name).", + "nullable": true + }, + "event_type": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Event type that was validated." + }, + "job_id": { + "type": "string", + "description": "Unique Job Id of the validation." + }, + "result_code": { + "type": "string", + "enum": [ + "SUCCESS", + "FAILED", + "PARTIAL_SUCCESS" + ], + "description": "Overall result of the validation." + }, + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChannelValidationDetail" + }, + "description": "Detailed results of various validation sub-steps.", + "nullable": true + } + }, + "description": "Response containing validation results for communication channel configuration." + }, + "ChannelValidationDetail": { + "type": "object", + "required": [ + "validation_step", + "status" + ], + "properties": { + "validation_step": { + "type": "string", + "enum": [ + "HTTP_CONNECTION_CHECK", + "STORAGE_FILE_UPLOAD_CHECK" + ], + "description": "The validation step that was performed." + }, + "status": { + "type": "string", + "enum": [ + "SUCCESS", + "FAILED" + ], + "description": "Status of this validation step." + }, + "http_status": { + "type": "integer", + "format": "int32", + "description": "HTTP status code returned by the channel (if applicable).", + "nullable": true + }, + "error_message": { + "type": "string", + "description": "Error message from the channel or validation process.", + "nullable": true + }, + "aws_s3_info": { + "$ref": "#/components/schemas/ChannelValidationAwsS3Info", + "description": "AWS S3 storage information from the validation step.", + "nullable": true + } + }, + "description": "Validation detail result for a sub-step." + }, + "ChannelValidationAwsS3Info": { + "type": "object", + "properties": { + "bucket_name": { + "type": "string", + "description": "Name of the S3 bucket.", + "nullable": true + }, + "file_name": { + "type": "string", + "description": "Name of the uploaded file.", + "nullable": true + }, + "object_key": { + "type": "string", + "description": "Key of the object in S3 storage.", + "nullable": true + } + }, + "description": "AWS S3 storage information returned from a validation step." + }, + "TagMetadataTypeInput": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "CONNECTION" + ], + "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n 1. LIVEBOARD\n 2. ANSWERS\n 3. LOGICAL_TABLE for any data object such as table, worksheet or view.\n 4. LOGICAL_COLUMN for a column of any data object such as tables, worksheets or views.", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata." + } + } + }, + "GroupsImportListInput": { + "type": "object", + "required": [ + "display_name", + "group_identifier" + ], + "properties": { + "display_name": { + "type": "string", + "description": "Unique display name of the group." + }, + "group_identifier": { + "type": "string", + "description": "Unique ID or name of the group." + }, + "default_liveboard_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Unique ID of Liveboards that will be assigned as default Liveboards to the users in the group.", + "nullable": true + }, + "description": { + "type": "string", + "description": "Description of the group.", + "nullable": true + }, + "privileges": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ADMINISTRATION", + "AUTHORING", + "USERDATAUPLOADING", + "DATADOWNLOADING", + "USERMANAGEMENT", + "DATAMANAGEMENT", + "SHAREWITHALL", + "JOBSCHEDULING", + "A3ANALYSIS", + "EXPERIMENTALFEATUREPRIVILEGE", + "BYPASSRLS", + "RANALYSIS", + "DEVELOPER", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "SYNCMANAGEMENT", + "CAN_CREATE_CATALOG", + "DISABLE_PINBOARD_CREATION", + "LIVEBOARD_VERIFIER", + "PREVIEW_THOUGHTSPOT_SAGE", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "ALLOW_NON_EMBED_FULL_APP_ACCESS", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "CAN_MODIFY_FOLDERS", + "CAN_MANAGE_VARIABLES", + "CAN_VIEW_FOLDERS", + "PREVIEW_DOCUMENT_SEARCH", + "CAN_SETUP_VERSION_CONTROL", + "CAN_DOWNLOAD_VISUALS", + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" + ] + }, + "description": "Privileges that will be assigned to the group.", + "nullable": true + }, + "sub_group_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Unique ID or name of the sub-groups to add to the group.", + "nullable": true + }, + "type": { + "type": "string", + "enum": [ + "LOCAL_GROUP", + "LDAP_GROUP", + "TEAM_GROUP", + "TENANT_GROUP" + ], + "description": "Type of the group.", + "nullable": true + }, + "user_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Unique ID or name of the users to assign to the group.", + "nullable": true + }, + "visibility": { + "type": "string", + "enum": [ + "SHARABLE", + "NON_SHARABLE" + ], + "description": "Visibility of the group. The SHARABLE makes a group visible to other users and groups, and thus allows them to share objects.", + "nullable": true + } + } + }, + "ImportUserGroupsResponse": { + "type": "object", + "required": [ + "groups_added", + "groups_deleted", + "groups_updated" + ], + "properties": { + "groups_added": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + }, + "description": "The groups which are added into the system." + }, + "groups_deleted": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + }, + "description": "The groups which are deleted from the system." + }, + "groups_updated": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + }, + "description": "The groups which are updated in the system." + } + } + }, + "Export_Options": { + "type": "object", + "properties": { + "include_obj_id_ref": { + "type": "boolean", + "default": false, + "description": "Boolean Flag to export Object ID of referenced object. This flag will work only after the Object ID feature has been enabled. Please contact support to enable the feature.", + "nullable": true + }, + "include_guid": { + "type": "boolean", + "default": true, + "description": "Boolean flag to export guid of the object. This flag will work only after the Object ID feature has been enabled. Please contact support to enable the feature.", + "nullable": true + }, + "include_obj_id": { + "type": "boolean", + "default": true, + "description": "Boolean flag to export Object ID of the object. This flag will work only after the Object ID feature has been enabled. Please contact support to enable the feature.", + "nullable": true + }, + "export_with_associated_feedbacks": { + "type": "boolean", + "default": false, + "description": "Boolean flag indicating whether to export associated feedbacks of the object. This will only be respected when the object can have feedbacks.
Version: 10.7.0.cl or later", + "nullable": true + }, + "export_column_security_rules": { + "type": "boolean", + "default": false, + "description": "Boolean flag indicating whether to export column security rules of the object. This will only be respected when the object can have column security rules and export_associated is true.
Beta Version: 10.12.0.cl or later", + "nullable": true + }, + "export_with_column_aliases": { + "type": "boolean", + "default": false, + "description": "Boolean flag indicating whether to export column aliases of the model. This will only be respected when the object can have column aliases.
Beta Version: 10.13.0.cl or later", + "nullable": true + } + }, + "description": "Flags to specify additional options for export. This will only be active when UserDefinedId in TML is enabled." + }, + "ResponseCopyObject": { + "type": "object", + "properties": { + "metadata_id": { + "type": "string", + "description": "The unique identifier of the object.", + "nullable": true + } + } + }, + "ResponseWorksheetToModelConversion": { + "type": "object", + "required": [ + "name", + "success_count", + "failure_count", + "incomplete_count", + "post_upgrade_failed_count", + "total_time_in_millis", + "successful_entities", + "failed_entities", + "incomplete_entities", + "post_upgrade_failed_entities" + ], + "properties": { + "name": { + "type": "string" + }, + "success_count": { + "type": "integer", + "format": "int32", + "description": "The number of worksheets successfully converted to models." + }, + "failure_count": { + "type": "integer", + "format": "int32", + "description": "The number of worksheets that failed to convert." + }, + "incomplete_count": { + "type": "integer", + "format": "int32", + "description": "The number of worksheets that were incomplete during the conversion process." + }, + "post_upgrade_failed_count": { + "type": "integer", + "format": "int32", + "description": "The number of worksheets that failed after an upgrade during the conversion process." + }, + "total_time_in_millis": { + "type": "integer", + "format": "int32", + "description": "The total time taken to complete the conversion process in milliseconds." + }, + "successful_entities": { + "$ref": "#/components/schemas/ResponseSuccessfulEntities", + "description": "List of worksheets successfully converted to models." + }, + "failed_entities": { + "$ref": "#/components/schemas/ResponseFailedEntities", + "description": "List of worksheets that failed to convert." + }, + "incomplete_entities": { + "$ref": "#/components/schemas/ResponseIncompleteEntities", + "description": "List of worksheets that were incomplete during the conversion." + }, + "post_upgrade_failed_entities": { + "$ref": "#/components/schemas/ResponsePostUpgradeFailedEntities", + "description": "List of worksheets that failed after an upgrade during the conversion process." + } + }, + "description": "Name of the conversion process, which involves converting worksheets to models." + }, + "ResponseSuccessfulEntities": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseSuccessfulEntity" + } + } + }, + "description": "Wrapper for the successful entities, as they are inside a 'data' field in the response." + }, + "ResponseSuccessfulEntity": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string", + "description": "Name of the worksheet." + } + }, + "description": "Unique ID of the worksheet." + }, + "ResponseFailedEntities": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseFailedEntity" + } + } + }, + "description": "Wrapper for the failed entities, as they are inside a 'data' field in the response." + }, + "ResponseFailedEntity": { + "type": "object", + "required": [ + "id", + "name", + "error" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { "type": "string", - "description": "Indicates the locale to be used for all formattings.", - "nullable": true, - "enum": [ - "en-CA", - "en-GB", - "en-US", - "de-DE", - "ja-JP", - "zh-CN", - "pt-BR", - "fr-FR", - "fr-CA", - "es-US", - "da-DK", - "es-ES", - "fi-FI", - "sv-SE", - "nb-NO", - "pt-PT", - "nl-NL", - "it-IT", - "ru-RU", - "en-IN", - "de-CH", - "en-NZ", - "es-MX", - "en-AU", - "zh-Hant", - "ko-KR", - "en-DE" - ] + "description": "Name of the worksheet that failed to convert." }, - "number_format_locale": { + "error": { "type": "string", - "description": "Indicates the locale to be used for number formatting.", - "nullable": true, - "enum": [ - "en-CA", - "en-GB", - "en-US", - "de-DE", - "ja-JP", - "zh-CN", - "pt-BR", - "fr-FR", - "fr-CA", - "es-US", - "da-DK", - "es-ES", - "fi-FI", - "sv-SE", - "nb-NO", - "pt-PT", - "nl-NL", - "it-IT", - "ru-RU", - "en-IN", - "de-CH", - "en-NZ", - "es-MX", - "en-AU", - "zh-Hant", - "ko-KR", - "en-DE" - ] + "description": "Error details related to the failed conversion." + } + }, + "description": "Unique ID of the failed worksheet." + }, + "ResponseIncompleteEntities": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseIncompleteEntity" + } + } + }, + "description": "Wrapper for the incomplete entities, as they are inside a 'data' field in the response." + }, + "ResponseIncompleteEntity": { + "type": "object", + "required": [ + "id", + "name", + "error" + ], + "properties": { + "id": { + "type": "string" }, - "date_format_locale": { + "name": { + "type": "string", + "description": "Name of the incomplete worksheet." + }, + "error": { + "type": "string", + "description": "Error details related to the incomplete conversion." + } + }, + "description": "Unique ID of the incomplete worksheet." + }, + "ResponsePostUpgradeFailedEntities": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponsePostUpgradeFailedEntity" + } + } + }, + "description": "Wrapper for the post-upgrade failed entities, as they are inside a 'data' field in the response." + }, + "ResponsePostUpgradeFailedEntity": { + "type": "object", + "required": [ + "id", + "name", + "error" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string", + "description": "Name of the worksheet that failed post-upgrade." + }, + "error": { + "type": "string", + "description": "Error details related to the post-upgrade failure." + } + }, + "description": "Unique ID of the worksheet that failed post-upgrade." + }, + "HeaderUpdateInput": { + "type": "object", + "required": [ + "attributes" + ], + "properties": { + "identifier": { + "type": "string", + "description": "Unique ID of a specified type to identify the header.", + "nullable": true + }, + "obj_identifier": { + "type": "string", + "description": "Custom object identifier to uniquely identify header.", + "nullable": true + }, + "type": { "type": "string", - "description": "Indicates the locale to be used for date formatting.", - "nullable": true, "enum": [ - "en-CA", - "en-GB", - "en-US", - "de-DE", - "ja-JP", - "zh-CN", - "pt-BR", - "fr-FR", - "fr-CA", - "es-US", - "da-DK", - "es-ES", - "fi-FI", - "sv-SE", - "nb-NO", - "pt-PT", - "nl-NL", - "it-IT", - "ru-RU", - "en-IN", - "de-CH", - "en-NZ", - "es-MX", - "en-AU", - "zh-Hant", - "ko-KR", - "en-DE" - ] + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "LIVEBOARD", + "ACTION_OBJECT", + "DATA_SOURCE", + "USER", + "USER_GROUP" + ], + "description": "Optional type of the header object.", + "nullable": true + }, + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HeaderAttributeInput" + }, + "description": "List of attributes to update" } - } + }, + "description": "Favorite object options." }, - "PermissionOfPrincipalsResponse": { + "HeaderAttributeInput": { "type": "object", + "required": [ + "name", + "value" + ], "properties": { - "principal_permission_details": { - "type": "object", + "name": { + "type": "string", + "description": "Attribute name to be updated." + }, + "value": { + "type": "string", + "description": "Attribute's new value." + } + }, + "description": "Attribute to update in a header." + }, + "UpdateObjIdInput": { + "type": "object", + "required": [ + "new_obj_id" + ], + "properties": { + "metadata_identifier": { + "type": "string", + "description": "GUID or name of the metadata object.", + "nullable": true + }, + "type": { + "type": "string", + "enum": [ + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "LIVEBOARD", + "ACTION_OBJECT", + "DATA_SOURCE", + "USER", + "USER_GROUP" + ], + "description": "Type of metadata. Required if metadata_identifier is name of the object.", + "nullable": true + }, + "current_obj_id": { + "type": "string", + "description": "Current object ID value.", "nullable": true + }, + "new_obj_id": { + "type": "string", + "description": "New object ID value to set." } - } + }, + "description": "Input for updating object ID of a metadata object." }, - "PermissionOfMetadataResponse": { + "ExportMetadataTypeInput": { "type": "object", "properties": { - "metadata_permission_details": { - "type": "object", + "type": { + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "CONNECTION", + "CUSTOM_ACTION", + "USER", + "USER_GROUP", + "ROLE", + "FEEDBACK" + ], + "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata object. Not required if the metadata type is ANSWER when session_id and generation_number is set.", + "nullable": true + }, + "session_identifier": { + "type": "string", + "description": "Unique ID of the Answer session. Required if the metadata type is ANSWER and identifier is not set.", + "nullable": true + }, + "generation_number": { + "type": "integer", + "format": "int32", + "description": "Generation Number of the Answer session. Required if the metadata type is ANSWER and identifier is not set.", "nullable": true } - } + }, + "description": "MetadataType InputType used in Export MetadataType API" }, - "ObjectPrivilegesMetadataInput": { + "DeleteMetadataTypeInput": { "type": "object", "required": [ "identifier" @@ -19425,27 +18495,23 @@ "type": { "type": "string", "enum": [ - "LOGICAL_TABLE" + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "LOGICAL_RELATIONSHIP" ], - "description": "Type of metadata object.\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", "nullable": true }, "identifier": { "type": "string", "description": "Unique ID or name of the metadata object." } - } - }, - "ObjectPrivilegesOfMetadataResponse": { - "type": "object", - "properties": { - "metadata_object_privileges": { - "type": "object", - "nullable": true - } - } + }, + "description": "MetadataType InputType used in Delete MetadataType API" }, - "PrincipalsInput": { + "PublishMetadataListItem": { "type": "object", "required": [ "identifier" @@ -19453,20 +18519,21 @@ "properties": { "identifier": { "type": "string", - "description": "Unique ID or name of the principal object such as a user or group." + "description": "Unique ID or name of the metadata." }, "type": { "type": "string", "enum": [ - "USER", - "USER_GROUP" + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE" ], - "description": "Principal type.", + "description": "Type of metadata. Required if identifier is name.", "nullable": true } } }, - "PermissionsMetadataTypeInput": { + "AuthorMetadataTypeInput": { "type": "object", "required": [ "identifier" @@ -19478,10 +18545,9 @@ "LIVEBOARD", "ANSWER", "LOGICAL_TABLE", - "LOGICAL_COLUMN", "CONNECTION" ], - "description": " Type of metadata object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", "nullable": true }, "identifier": { @@ -19489,987 +18555,1117 @@ "description": "Unique ID or name of the metadata object." } }, - "description": "MetadataType InputType used in Permission API's" + "description": "MetadataType InputType used in Author API's" }, - "ColumnSecurityRuleTableInput": { + "ShareMetadataTypeInput": { "type": "object", + "required": [ + "identifier" + ], "properties": { - "identifier": { + "type": { "type": "string", - "description": "Name or GUID of the table", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "CONNECTION" + ], + "description": " Type of metadata.\n \n\nType of metadata. Required if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", "nullable": true }, - "obj_identifier": { + "identifier": { "type": "string", - "description": "Object ID of the table", - "nullable": true + "description": "Unique ID or name of the metadata object." } } }, - "ColumnSecurityRuleResponse": { + "SharePermissionsInput": { + "type": "object", + "required": [ + "principal", + "share_mode" + ], + "properties": { + "principal": { + "$ref": "#/components/schemas/PrincipalsInput", + "description": "Details of users or groups." + }, + "share_mode": { + "type": "string", + "enum": [ + "READ_ONLY", + "MODIFY", + "NO_ACCESS" + ], + "description": "Type of access to the shared object" + } + } + }, + "ColumnSecurityRuleUpdate": { "type": "object", + "required": [ + "column_identifier" + ], "properties": { - "table_guid": { + "column_identifier": { "type": "string", - "description": "GUID of the table for which the column security rules are fetched", - "nullable": true + "description": "Column identifier (col_id or name)" }, - "obj_id": { - "type": "string", - "description": "Object ID of the table for which the column security rules are fetched", + "is_unsecured": { + "type": "boolean", + "description": "If true, the column will be marked as unprotected and all groups associated with it will be removed", "nullable": true }, - "column_security_rules": { + "group_access": { "type": "array", "items": { - "$ref": "#/components/schemas/ColumnSecurityRule" + "$ref": "#/components/schemas/ColumnSecurityRuleGroupOperation" }, - "description": "Array containing column security rule objects", + "description": "Array of group operation objects that specifies the actions for groups to be associated with a column", "nullable": true } } }, - "ColumnSecurityRule": { + "ColumnSecurityRuleGroupOperation": { "type": "object", "required": [ - "column" + "operation", + "group_identifiers" ], "properties": { - "column": { - "$ref": "#/components/schemas/ColumnSecurityRuleColumn", - "description": "Information about the column" + "operation": { + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "REPLACE" + ], + "description": "Type of operation to be performed on the groups" }, - "groups": { + "group_identifiers": { "type": "array", "items": { - "$ref": "#/components/schemas/ColumnSecurityRuleGroup" + "type": "string" }, - "description": "Array of groups that have access to this column", + "description": "Array of group identifiers (name or GUID) on which the operation will be performed" + } + } + }, + "MetadataObject": { + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata" + }, + "type": { + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "CUSTOM_ACTION" + ], + "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "nullable": true + } + } + }, + "CommitResponse": { + "type": "object", + "properties": { + "committer": { + "$ref": "#/components/schemas/CommiterType", + "description": "Repository user using which changes were committed", "nullable": true }, - "source_table_details": { - "$ref": "#/components/schemas/ColumnSecurityRuleSourceTable", - "description": "Information about the source table", + "author": { + "$ref": "#/components/schemas/AuthorType", + "description": "Thoughtspot user who commits the changes", + "nullable": true + }, + "comment": { + "type": "string", + "description": "Comments associated with the commit", + "nullable": true + }, + "commit_time": { + "type": "string", + "description": "Time at which the changes were committed.", + "nullable": true + }, + "commit_id": { + "type": "string", + "description": "SHA id associated with the commit", + "nullable": true + }, + "branch": { + "type": "string", + "description": "Branch where changes were committed", + "nullable": true + }, + "committed_files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommitFileType" + }, + "description": "Files that were pushed as part of this commit", "nullable": true } } }, - "ColumnSecurityRuleColumn": { + "CommitFileType": { "type": "object", "required": [ - "id", - "name" + "file_name", + "status_code" ], "properties": { - "id": { + "file_name": { "type": "string", - "description": "The unique identifier of the column" + "description": "Name of the file deployed" }, - "name": { + "status_code": { "type": "string", - "description": "The name of the column" + "description": "Indicates the status of deployment for the file" + }, + "status_message": { + "type": "string", + "description": "Any error or warning with the deployment", + "nullable": true } } }, - "ColumnSecurityRuleGroup": { + "RevertResponse": { "type": "object", - "required": [ - "id", - "name" - ], "properties": { - "id": { + "committer": { + "$ref": "#/components/schemas/CommiterType", + "description": "Repository user using which changes were committed", + "nullable": true + }, + "author": { + "$ref": "#/components/schemas/AuthorType", + "description": "Thoughtspot user who commits the changes", + "nullable": true + }, + "comment": { "type": "string", - "description": "The unique identifier of the group" + "description": "Comments associated with the commit", + "nullable": true }, - "name": { + "commit_time": { "type": "string", - "description": "The name of the group" - } - } - }, - "ColumnSecurityRuleSourceTable": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { + "description": "Time at which the changes were committed.", + "nullable": true + }, + "commit_id": { "type": "string", - "description": "The unique identifier of the source table" + "description": "SHA id associated with the commit", + "nullable": true }, - "name": { + "branch": { "type": "string", - "description": "The name of the source table" - } - } - }, - "SearchDataResponse": { - "type": "object", - "required": [ - "contents" - ], - "properties": { - "contents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AnswerContent" - }, - "description": "Data content of metadata objects" - } - }, - "description": "Response format associated with the search data API." - }, - "AnswerContent": { - "type": "object", - "required": [ - "available_data_row_count", - "column_names", - "data_rows", - "record_offset", - "record_size", - "returned_data_row_count", - "sampling_ratio" - ], - "properties": { - "available_data_row_count": { - "type": "integer", - "format": "int32", - "description": "Total available data row count." + "description": "Branch where changes were committed", + "nullable": true }, - "column_names": { + "committed_files": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/CommitFileType" }, - "description": "Name of the columns." + "description": "Files that were pushed as part of this commit", + "nullable": true }, - "data_rows": { + "reverted_metadata": { "type": "array", "items": { - "type": "object" + "$ref": "#/components/schemas/RevertedMetadata" }, - "description": "Rows of data set." - }, - "record_offset": { - "type": "integer", - "format": "int32", - "description": "The starting record number from where the records should be included." - }, - "record_size": { - "type": "integer", - "format": "int32", - "description": "The number of records that should be included." - }, - "returned_data_row_count": { - "type": "integer", - "format": "int32", - "description": "Total returned data row count." - }, - "sampling_ratio": { - "type": "number", - "format": "float", - "description": "Sampling ratio (0 to 1). If the query was sampled, it is the ratio of keys returned in the data set to the total number of keys expected in the query. If the value is 1.0, this means that the complete result is returned." + "description": "Metadata of reverted file of this commit", + "nullable": true } } }, - "LiveboardDataResponse": { + "RevertedMetadata": { "type": "object", "required": [ - "metadata_id", + "file_name", "metadata_name", - "contents" + "metadata_type", + "status_code", + "status_message" ], "properties": { - "metadata_id": { + "file_name": { "type": "string", - "description": "The unique identifier of the object" + "description": "Name of the file deployed" }, "metadata_name": { "type": "string", "description": "Name of the metadata object" }, - "contents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LiveboardContent" - }, - "description": "Data content of metadata objects" + "metadata_type": { + "type": "string", + "description": "Type of the metadata object" + }, + "status_code": { + "type": "string", + "description": "Indicates the status of deployment for the file" + }, + "status_message": { + "type": "string", + "description": "Any error or warning with the deployment" } } }, - "LiveboardContent": { + "DeployResponse": { "type": "object", - "required": [ - "available_data_row_count", - "column_names", - "data_rows", - "record_offset", - "record_size", - "returned_data_row_count", - "sampling_ratio" - ], "properties": { - "available_data_row_count": { - "type": "integer", - "format": "int32", - "description": "Total available data row count." - }, - "column_names": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Name of the columns." + "file_name": { + "type": "string", + "description": "Name of the file deployed", + "nullable": true }, - "data_rows": { - "type": "array", - "items": { - "type": "object" - }, - "description": "Rows of data set." + "metadata_name": { + "type": "string", + "description": "Name of the metadata object", + "nullable": true }, - "record_offset": { - "type": "integer", - "format": "int32", - "description": "The starting record number from where the records should be included." + "metadata_type": { + "type": "string", + "description": "Type of the metadata object", + "nullable": true }, - "record_size": { - "type": "integer", - "format": "int32", - "description": "The number of records that should be included." + "status_code": { + "type": "string", + "description": "Indicates the status of deployment for the file", + "nullable": true }, - "returned_data_row_count": { - "type": "integer", - "format": "int32", - "description": "Total returned data row count." + "status_message": { + "type": "string", + "description": "Any error or warning with the deployment", + "nullable": true + } + } + }, + "CreateConnectionResponse": { + "type": "object", + "required": [ + "id", + "name", + "data_warehouse_type" + ], + "properties": { + "id": { + "type": "string", + "description": "ID of the connection created." }, - "sampling_ratio": { - "type": "number", - "format": "float", - "description": "Sampling ratio (0 to 1). If the query was sampled, it is the ratio of keys returned in the data set to the total number of keys expected in the query. If the value is 1.0, this means that the complete result is returned." + "name": { + "type": "string", + "description": "Name of the connection." }, - "visualization_id": { + "data_warehouse_type": { "type": "string", - "description": "Unique ID of the visualization.", - "nullable": true + "enum": [ + "SNOWFLAKE", + "AMAZON_REDSHIFT", + "GOOGLE_BIGQUERY", + "AZURE_SYNAPSE", + "TERADATA", + "SAP_HANA", + "STARBURST", + "ORACLE_ADW", + "DATABRICKS", + "DENODO", + "DREMIO", + "TRINO", + "PRESTO", + "POSTGRES", + "SQLSERVER", + "MYSQL", + "GENERIC_JDBC", + "AMAZON_RDS_POSTGRESQL", + "AMAZON_AURORA_POSTGRESQL", + "AMAZON_RDS_MYSQL", + "AMAZON_AURORA_MYSQL", + "LOOKER", + "AMAZON_ATHENA", + "SINGLESTORE", + "GCP_SQLSERVER", + "GCP_ALLOYDB_POSTGRESQL", + "GCP_POSTGRESQL", + "GCP_MYSQL", + "MODE", + "GOOGLE_SHEETS", + "FALCON", + "FALCON_ONPREM", + "CLICKHOUSE" + ], + "description": "Type of data warehouse." }, - "visualization_name": { - "type": "string", - "description": "Name of the visualization.", + "details": { + "type": "object", + "description": "Details of the connection.", "nullable": true } } }, - "AnswerDataResponse": { + "FetchConnectionDiffStatusResponse": { "type": "object", - "required": [ - "metadata_id", - "metadata_name", - "contents" - ], "properties": { - "metadata_id": { - "type": "string", - "description": "The unique identifier of the object" - }, - "metadata_name": { - "type": "string", - "description": "Name of the metadata object" - }, - "contents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AnswerContent" - }, - "description": "Data content of metadata objects" + "status": { + "type": "boolean", + "description": "Status of the connection diff.", + "nullable": true } - }, - "description": "Response format associated with fetch data api" + } }, - "LogResponse": { + "RevokeRefreshTokensResponse": { "type": "object", "required": [ - "date", - "log" + "data" ], "properties": { - "date": { - "type": "string", - "description": "Date timestamp of the log entry" - }, - "log": { + "data": { "type": "string", - "description": "Log data" + "description": "Result message describing the outcome of the refresh token revocation operation." } } }, - "RepoConfigObject": { + "RoleResponse": { "type": "object", + "required": [ + "id", + "name", + "description", + "privileges" + ], "properties": { - "repository_url": { + "id": { "type": "string", - "description": "Remote repository URL configured", - "nullable": true + "description": "Unique Id of the role." }, - "username": { + "name": { "type": "string", - "description": "Username to authenticate connection to the version control system", - "nullable": true + "description": "Name of the role" }, - "commit_branch_name": { + "description": { "type": "string", - "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.", + "description": "Description of the role" + }, + "groups_assigned_count": { + "type": "integer", + "format": "int32", + "description": "number of groups assigned with this role", "nullable": true }, - "branches": { + "orgs": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/GenericInfo" }, - "description": "Branches that have been pulled in local repository", + "description": "Orgs in which role exists.", "nullable": true }, - "enable_guid_mapping": { - "type": "boolean", - "description": "Maintain mapping of guid for the deployment to an instance", + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GenericInfo" + }, + "description": "Details of groups assigned with this role", "nullable": true }, - "configuration_branch_name": { + "privileges": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "USERDATAUPLOADING", + "DATADOWNLOADING", + "DATAMANAGEMENT", + "SHAREWITHALL", + "JOBSCHEDULING", + "A3ANALYSIS", + "BYPASSRLS", + "DISABLE_PINBOARD_CREATION", + "DEVELOPER", + "APPLICATION_ADMINISTRATION", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "SYSTEM_INFO_ADMINISTRATION", + "SYNCMANAGEMENT", + "ORG_ADMINISTRATION", + "ROLE_ADMINISTRATION", + "AUTHENTICATION_ADMINISTRATION", + "BILLING_INFO_ADMINISTRATION", + "CONTROL_TRUSTED_AUTH", + "TAGMANAGEMENT", + "LIVEBOARD_VERIFIER", + "CAN_MANAGE_CUSTOM_CALENDAR", + "CAN_CREATE_OR_EDIT_CONNECTIONS", + "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "CAN_CREATE_CATALOG", + "ALLOW_NON_EMBED_FULL_APP_ACCESS", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "PREVIEW_DOCUMENT_SEARCH", + "CAN_MANAGE_VARIABLES", + "CAN_MODIFY_FOLDERS", + "CAN_VIEW_FOLDERS", + "CAN_SETUP_VERSION_CONTROL", + "PREVIEW_THOUGHTSPOT_SAGE", + "CAN_MANAGE_WEBHOOKS", + "CAN_DOWNLOAD_VISUALS", + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" + ] + }, + "description": "Privileges granted to the role." + }, + "permission": { "type": "string", - "description": "Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.", + "enum": [ + "READ_ONLY", + "MODIFY", + "NO_ACCESS" + ], + "description": "Permission details of the Role", "nullable": true }, - "org": { - "$ref": "#/components/schemas/Org", - "description": "Details of the Org", + "author_id": { + "type": "string", + "description": "Unique identifier of author of the role.", "nullable": true - } - } - }, - "CommitHistoryResponse": { - "type": "object", - "required": [ - "committer", - "author", - "comment", - "commit_time", - "commit_id", - "branch" - ], - "properties": { - "committer": { - "$ref": "#/components/schemas/CommiterType", - "description": "Repository user using which changes were committed" - }, - "author": { - "$ref": "#/components/schemas/AuthorType", - "description": "Thoughtspot user who commits the changes" }, - "comment": { + "modifier_id": { "type": "string", - "description": "Comments associated with the commit" + "description": "Unique identifier of modifier of the role.", + "nullable": true }, - "commit_time": { - "type": "string", - "description": "Time at which the changes were committed." + "creation_time_in_millis": { + "type": "object", + "description": "Creation time of the role in milliseconds.", + "nullable": true }, - "commit_id": { - "type": "string", - "description": "SHA id associated with the commit" + "modification_time_in_millis": { + "type": "object", + "description": "Last modified time of the role in milliseconds.", + "nullable": true }, - "branch": { - "type": "string", - "description": "Branch where changes were committed" - } - } - }, - "CommiterType": { - "type": "object", - "properties": { - "email": { - "type": "string", - "description": "Email id of the committer", + "deleted": { + "type": "boolean", + "description": "Indicates whether the role is deleted.", "nullable": true }, - "username": { - "type": "string", - "description": "Username of the committer", + "deprecated": { + "type": "boolean", + "description": "Indicates whether the role is deprecated.", "nullable": true - } - } - }, - "AuthorType": { - "type": "object", - "properties": { - "email": { - "type": "string", - "description": "Email id of the committer", + }, + "external": { + "type": "boolean", + "description": "Indicates whether the role is external.", "nullable": true }, - "username": { - "type": "string", - "description": "Username of the committer", + "hidden": { + "type": "boolean", + "description": "Indicates whether the role is hidden.", + "nullable": true + }, + "shared_via_connection": { + "type": "boolean", + "description": "Indicates whether the role is shared via connection", "nullable": true } } }, - "ConnectionInput": { + "LiveboardOptionsInput": { "type": "object", + "required": [ + "visualization_identifiers" + ], "properties": { - "identifier": { - "type": "string", - "description": "Unique ID or name of the connection.", - "nullable": true - }, - "name_pattern": { - "type": "string", - "description": "A pattern to match case-insensitive name of the connection object. User `%` for a wildcard match.", - "nullable": true - }, - "data_warehouse_objects": { + "visualization_identifiers": { "type": "array", "items": { - "$ref": "#/components/schemas/DataWarehouseObjectInput" + "type": "string" }, - "description": "Filter options for databases, schemas, tables and columns.", - "nullable": true + "description": "Unique ID or name of visualizations." } - } + }, + "description": "Options to specify details of Liveboard." }, - "DataWarehouseObjectInput": { + "SchedulesPdfOptionsInput": { "type": "object", "properties": { - "database": { - "type": "string", - "description": "Name of the database.", + "complete_liveboard": { + "type": "boolean", + "description": "Indicates whether to include complete Liveboard.", "nullable": true }, - "schema": { - "type": "string", - "description": "Name of the schema within the database.", + "include_cover_page": { + "type": "boolean", + "description": "Indicates whether to include cover page with the Liveboard title.", "nullable": true }, - "table": { - "type": "string", - "description": "Name of the table within the schema.", + "include_custom_logo": { + "type": "boolean", + "description": "Indicates whether to include customized wide logo in the footer if available.", "nullable": true }, - "column": { + "include_filter_page": { + "type": "boolean", + "description": "Indicates whether to include a page with all applied filters.", + "nullable": true + }, + "include_page_number": { + "type": "boolean", + "description": "Indicates whether to include page number in the footer of each page", + "nullable": true + }, + "page_footer_text": { "type": "string", - "description": "Name of the column within the table.", + "description": "Text to include in the footer of each page.", "nullable": true - } - } - }, - "SortOptionInput": { - "type": "object", - "properties": { - "field_name": { + }, + "page_orientation": { "type": "string", - "enum": [ - "NAME", - "DISPLAY_NAME", - "AUTHOR", - "CREATED", - "MODIFIED", - "LAST_ACCESSED", - "SYNCED", - "VIEWS", - "USER_STATE", - "ROW_COUNT" - ], - "description": "Name of the field to apply the sort on.", + "description": "Page orientation of the PDF.", "nullable": true }, - "order": { + "page_size": { "type": "string", "enum": [ - "ASC", - "DESC" + "A4" ], - "description": "Sort order : ASC(Ascending) or DESC(Descending).", + "description": "Page size.", + "nullable": true + }, + "truncate_table": { + "type": "boolean", + "description": "Indicates whether to include only first page of the tables.", "nullable": true } - } + }, + "description": "Options for PDF export." }, - "SearchConnectionResponse": { + "FrequencyInput": { "type": "object", "required": [ - "id", - "name", - "data_warehouse_type" + "cron_expression" ], "properties": { - "id": { + "cron_expression": { + "$ref": "#/components/schemas/CronExpressionInput", + "description": "Schedule selected cron expression." + } + }, + "description": "Configuration of schedule with cron expression" + }, + "CronExpressionInput": { + "type": "object", + "required": [ + "day_of_month", + "day_of_week", + "hour", + "minute", + "month", + "second" + ], + "properties": { + "day_of_month": { "type": "string", - "description": "Unique ID of the connection." + "description": "Day of month of the object." }, - "name": { + "day_of_week": { "type": "string", - "description": "Name of the connection." + "description": "Day of Week of the object." }, - "description": { + "hour": { "type": "string", - "description": "Description of the connection.", - "nullable": true + "description": "Hour of the object." }, - "data_warehouse_type": { + "minute": { "type": "string", - "enum": [ - "SNOWFLAKE", - "AMAZON_REDSHIFT", - "GOOGLE_BIGQUERY", - "AZURE_SYNAPSE", - "TERADATA", - "SAP_HANA", - "STARBURST", - "ORACLE_ADW", - "DATABRICKS", - "DENODO", - "DREMIO", - "TRINO", - "PRESTO", - "POSTGRES", - "SQLSERVER", - "MYSQL", - "GENERIC_JDBC", - "AMAZON_RDS_POSTGRESQL", - "AMAZON_AURORA_POSTGRESQL", - "AMAZON_RDS_MYSQL", - "AMAZON_AURORA_MYSQL", - "LOOKER", - "AMAZON_ATHENA", - "SINGLESTORE", - "GCP_SQLSERVER", - "GCP_ALLOYDB_POSTGRESQL", - "GCP_POSTGRESQL", - "GCP_MYSQL", - "MODE", - "GOOGLE_SHEETS", - "FALCON", - "FALCON_ONPREM", - "CLICKHOUSE" - ], - "description": "Type of data warehouse." + "description": "Minute of the object." }, - "data_warehouse_objects": { - "$ref": "#/components/schemas/DataWarehouseObjects", - "description": "List of Data warehouse objects", - "nullable": true + "month": { + "type": "string", + "description": "Month of the object." }, - "details": { - "type": "object", - "description": "Details of the connection.", - "nullable": true + "second": { + "type": "string", + "description": "Second of the object." } - } + }, + "description": "Schedule selected cron expression." }, - "DataWarehouseObjects": { + "RecipientDetailsInput": { "type": "object", - "required": [ - "databases" - ], "properties": { - "databases": { + "emails": { "type": "array", "items": { - "$ref": "#/components/schemas/Database" + "type": "string" }, - "description": "Databases of the connection." - } - } - }, - "Database": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the database." + "description": "Emails of the recipients.", + "nullable": true }, - "schemas": { + "principals": { "type": "array", "items": { - "$ref": "#/components/schemas/SchemaObject" + "$ref": "#/components/schemas/PrincipalsListItemInput" }, - "description": "Schemas of the database.", - "nullable": true - }, - "auto_created": { - "type": "boolean", - "description": "Determines if the object is auto created.", + "description": "User or groups to be set as recipients of the schedule notifications.", "nullable": true } - } + }, + "description": "Recipients of the scheduled job notification." }, - "SchemaObject": { + "PrincipalsListItemInput": { "type": "object", "required": [ - "name" + "identifier", + "type" ], "properties": { - "name": { + "identifier": { "type": "string", - "description": "Name of the schema." + "description": "Unique ID or name of the user or group." }, - "tables": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Table" - }, - "description": "Tables in the schema.", - "nullable": true + "type": { + "type": "string", + "description": "Principal type." } } }, - "Table": { + "ResponseSchedule": { "type": "object", "required": [ - "name" + "author", + "creation_time_in_millis", + "file_format", + "frequency", + "id", + "metadata", + "name", + "recipient_details", + "time_zone" ], "properties": { - "name": { - "type": "string", - "description": "Name of the table." + "author": { + "$ref": "#/components/schemas/Author", + "description": "Author of the schedule." }, - "columns": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Column" - }, - "description": "Columns of the table.", - "nullable": true + "creation_time_in_millis": { + "type": "object", + "description": "Schedule creation time in milliseconds." }, - "type": { + "description": { "type": "string", - "description": "Type of table. Either view or table", + "description": "Description of the job.", "nullable": true }, - "description": { + "file_format": { "type": "string", - "description": "Description of the table", - "nullable": true + "description": "Export file format." }, - "selected": { - "type": "boolean", - "description": "Determines if the table is selected", - "nullable": true + "frequency": { + "$ref": "#/components/schemas/Frequency", + "description": "Configuration of schedule with cron expression" }, - "linked": { - "type": "boolean", - "description": "Determines if the table is linked", - "nullable": true + "id": { + "type": "string", + "description": "GUID of the scheduled job." }, - "relationships": { - "type": "array", - "items": { - "type": "object" - }, - "description": "List of relationships for the table", + "liveboard_options": { + "$ref": "#/components/schemas/LiveboardOptions", + "description": "Options to specify details of Liveboard.", "nullable": true - } - } - }, - "Column": { - "type": "object", - "required": [ - "name", - "data_type" - ], - "properties": { + }, + "metadata": { + "$ref": "#/components/schemas/MetadataResponse", + "description": "Unique ID or name of the metadata." + }, "name": { "type": "string", - "description": "Name of the column" + "description": "Name of the scheduled job." }, - "data_type": { - "type": "string", - "description": "Data type of the column" + "pdf_options": { + "$ref": "#/components/schemas/PdfOptions", + "description": "Options for PDF export.", + "nullable": true }, - "is_aggregate": { + "recipient_details": { + "$ref": "#/components/schemas/RecipientDetails", + "description": "Recipient of the scheduled job notifications." + }, + "status": { "type": "string", - "description": "Determines if the column schema is an aggregate", + "description": "Status of the job", "nullable": true }, - "can_import": { - "type": "boolean", - "description": "Determines if the column schema can be imported", - "nullable": true + "time_zone": { + "type": "string", + "description": "Time zone" }, - "selected": { - "type": "boolean", - "description": "Determines if the table is selected", + "history_runs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseScheduleRun" + }, + "description": "Schedule runs history records.", "nullable": true }, - "is_linked_active": { - "type": "boolean", - "description": "Determines if the table is linked", + "personalised_view_id": { + "type": "string", + "description": "Personalised view id of the liveboard to be scheduled.", "nullable": true } } }, - "SearchRoleResponse": { + "Author": { "type": "object", "required": [ "id", - "name", - "description", - "privileges" + "name" ], "properties": { "id": { "type": "string", - "description": "Unique Id of the role." + "description": "The unique identifier of the object." }, "name": { "type": "string", - "description": "Name of the role" + "description": "Name of the object." + } + }, + "description": "Author of the schedule." + }, + "Frequency": { + "type": "object", + "required": [ + "cron_expression" + ], + "properties": { + "cron_expression": { + "$ref": "#/components/schemas/CronExpression", + "description": "Schedule selected cron expression." + } + }, + "description": "Configuration of schedule with cron expression" + }, + "CronExpression": { + "type": "object", + "required": [ + "day_of_month", + "day_of_week", + "hour", + "minute", + "month", + "second" + ], + "properties": { + "day_of_month": { + "type": "string", + "description": "Day of month of the object." }, - "description": { + "day_of_week": { "type": "string", - "description": "Description of the role" + "description": "Day of Week of the object." }, - "groups_assigned_count": { - "type": "integer", - "format": "int32", - "description": "number of groups assigned with this role", - "nullable": true + "hour": { + "type": "string", + "description": "Hour of the object." }, - "orgs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GenericInfo" - }, - "description": "Orgs in which role exists.", - "nullable": true + "minute": { + "type": "string", + "description": "Minute of the object." }, - "groups": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GenericInfo" - }, - "description": "Details of groups assigned with this role", - "nullable": true + "month": { + "type": "string", + "description": "Month of the object." }, - "privileges": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "UNKNOWN", - "ADMINISTRATION", - "AUTHORING", - "USERDATAUPLOADING", - "DATADOWNLOADING", - "USERMANAGEMENT", - "SECURITYMANAGEMENT", - "LOGICALMODELING", - "DATAMANAGEMENT", - "TAGMANAGEMENT", - "SHAREWITHALL", - "SYSTEMMANAGEMENT", - "JOBSCHEDULING", - "A3ANALYSIS", - "EXPERIMENTALFEATUREPRIVILEGE", - "BYPASSRLS", - "RANALYSIS", - "DISABLE_PINBOARD_CREATION", - "DEVELOPER", - "APPLICATION_ADMINISTRATION", - "USER_ADMINISTRATION", - "GROUP_ADMINISTRATION", - "BACKUP_ADMINISTRATION", - "SYSTEM_INFO_ADMINISTRATION", - "ENABLESPOTAPPCREATION", - "SYNCMANAGEMENT", - "ORG_ADMINISTRATION", - "ROLE_ADMINISTRATION", - "AUTHENTICATION_ADMINISTRATION", - "BILLING_INFO_ADMINISTRATION", - "PREVIEW_THOUGHTSPOT_SAGE", - "LIVEBOARD_VERIFIER", - "CAN_MANAGE_CUSTOM_CALENDAR", - "CAN_CREATE_OR_EDIT_CONNECTIONS", - "CAN_CONFIGURE_CONNECTIONS", - "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", - "CAN_MANAGE_VERSION_CONTROL", - "THIRDPARTY_ANALYSIS", - "CONTROL_TRUSTED_AUTH", - "CAN_CREATE_CATALOG", - "ALLOW_NON_EMBED_FULL_APP_ACCESS", - "CAN_ACCESS_ANALYST_STUDIO", - "CAN_MANAGE_ANALYST_STUDIO", - "CAN_VIEW_FOLDERS", - "CAN_MODIDY_FOLDERS", - "CAN_MANAGE_VARIABLES", - "PREVIEW_DOCUMENT_SEARCH", - "CAN_SETUP_VERSION_CONTROL", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" - ] + "second": { + "type": "string", + "description": "Second of the object." + } + }, + "description": "Schedule selected cron expression." + }, + "LiveboardOptions": { + "type": "object", + "required": [ + "visualization_identifiers" + ], + "properties": { + "visualization_identifiers": { + "type": "array", + "items": { + "type": "string" }, - "description": "Privileges granted to the role." - }, - "permission": { + "description": "Unique ID or name of visualizations." + } + }, + "description": "Options to specify details of Liveboard." + }, + "MetadataResponse": { + "type": "object", + "required": [ + "id", + "type" + ], + "properties": { + "name": { "type": "string", - "enum": [ - "READ_ONLY", - "MODIFY", - "NO_ACCESS" - ], - "description": "Permission details of the Role", "nullable": true }, - "author_id": { - "type": "string", - "description": "Unique identifier of author of the role.", - "nullable": true + "id": { + "type": "string" }, - "modifier_id": { + "type": { "type": "string", - "description": "Unique identifier of modifier of the role.", + "enum": [ + "LIVEBOARD" + ] + } + } + }, + "PdfOptions": { + "type": "object", + "properties": { + "complete_liveboard": { + "type": "boolean", + "description": "Indicates whether to include complete Liveboard.", "nullable": true }, - "creation_time_in_millis": { - "type": "object", - "description": "Creation time of the role in milliseconds.", + "include_cover_page": { + "type": "boolean", + "description": "Indicates whether to include cover page with the Liveboard title.", "nullable": true }, - "modification_time_in_millis": { - "type": "object", - "description": "Last modified time of the role in milliseconds.", + "include_custom_logo": { + "type": "boolean", + "description": "Indicates whether to include customized wide logo in the footer if available.", "nullable": true }, - "deleted": { + "include_filter_page": { "type": "boolean", - "description": "Indicates whether the role is deleted.", + "description": "Indicates whether to include a page with all applied filters.", "nullable": true }, - "deprecated": { + "include_page_number": { "type": "boolean", - "description": "Indicates whether the role is deprecated.", + "description": "Indicates whether to include page number in the footer of each page", "nullable": true }, - "external": { - "type": "boolean", - "description": "Indicates whether the role is external.", + "page_footer_text": { + "type": "string", + "description": "Text to include in the footer of each page.", "nullable": true }, - "hidden": { - "type": "boolean", - "description": "Indicates whether the role is hidden.", + "page_orientation": { + "type": "string", + "description": "Page orientation of the PDF.", "nullable": true }, - "shared_via_connection": { + "page_size": { + "type": "string", + "enum": [ + "A4" + ], + "description": "Page size.", + "nullable": true + }, + "truncate_table": { "type": "boolean", - "description": "Indicates whether the role is shared via connection", + "description": "Indicates whether to include only first page of the tables.", "nullable": true } }, - "description": "Response for search role api should handle hidden privileges as well." + "description": "Options for PDF export." }, - "Default_Action_Config_Search_Input": { + "RecipientDetails": { "type": "object", "properties": { - "visibility": { - "type": "boolean", - "description": "Custom action is available on all visualizations. Earlier naming convention: LOCAL/GLOBAL. TRUE signifies GLOBAL for backward compatibility.", + "emails": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Emails of the recipients. Specify email address if the recipient is not a ThoughtSpot user.", + "nullable": true + }, + "principals": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PrincipalsListItem" + }, + "description": "List of user or groups to subscribe for the scheduled job notifications.", "nullable": true } }, - "description": "Default Custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." + "description": "Recipient configuration which includes email address, ID or name of the users and groups." }, - "ResponseCustomAction": { + "PrincipalsListItem": { + "type": "object", + "required": [ + "identifier", + "type" + ], + "properties": { + "identifier": { + "type": "string", + "description": "Unique ID or name of the user or group." + }, + "type": { + "type": "string", + "description": "Principal type. Valid values are" + } + } + }, + "ResponseScheduleRun": { "type": "object", "required": [ - "action_details", - "default_action_config", "id", - "name" + "start_time_in_millis", + "end_time_in_millis", + "status" ], "properties": { - "action_details": { - "$ref": "#/components/schemas/Action_details", - "description": "`Type` and configuration data for custom actions" + "id": { + "type": "string", + "description": "GUID of the scheduled job." }, - "default_action_config": { - "$ref": "#/components/schemas/Default_action_config", - "description": "Default custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." + "start_time_in_millis": { + "type": "integer", + "format": "int32", + "description": "Schedule run start time in milliseconds." }, - "id": { + "end_time_in_millis": { + "type": "integer", + "format": "int32", + "description": "Schedule run end time in milliseconds." + }, + "status": { "type": "string", - "description": "Unique Id of the custom action." + "description": "Status of the schedule run." }, - "metadata_association": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata_Association_Item" - }, - "description": "Metadata objects to assign the the custom action to.", + "detail": { + "type": "string", + "description": "Message details related to the schedule run.", + "nullable": true + } + }, + "description": "Schedule run response object" + }, + "MetadataInput": { + "type": "object", + "properties": { + "identifier": { + "type": "string", "nullable": true }, - "name": { + "type": { "type": "string", - "description": "Unique name of the custom action." + "enum": [ + "LIVEBOARD" + ], + "nullable": true + } + } + }, + "SortingOptions": { + "type": "object", + "properties": { + "field_name": { + "type": "string", + "description": "Name of the field to apply the sort on.", + "nullable": true }, - "user_groups": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Object_ID_And_Name" - }, - "description": "Unique ID or name of the User groups which are associated with the custom action.", + "order": { + "type": "string", + "description": "Sort order : ASC(Ascending) or DESC(Descending).", "nullable": true } }, - "description": "Custom action details" + "description": "Sort options." }, - "Action_details": { + "ScheduleHistoryRunsOptionsInput": { + "type": "object", + "properties": { + "include_history_runs": { + "type": "boolean", + "default": false, + "description": "Indicates whether to fetch history runs for the scheduled notification.", + "nullable": true + }, + "record_size": { + "type": "integer", + "format": "int32", + "default": 10, + "description": "Indicates the max number of records that can be fetched as past runs of any scheduled job.", + "nullable": true + }, + "record_offset": { + "type": "integer", + "format": "int32", + "default": 0, + "description": "Indicates the starting record number from where history runs records should be fetched.", + "nullable": true + } + } + }, + "Action_Details_Input_Create": { "type": "object", "properties": { "CALLBACK": { - "$ref": "#/components/schemas/CALLBACK", + "$ref": "#/components/schemas/CALLBACKInputMandatory", "description": "CALLBACK Custom Action Type", "nullable": true }, "URL": { - "$ref": "#/components/schemas/URL", + "$ref": "#/components/schemas/URLInputMandatory", "description": "URL Custom Action Type", "nullable": true } }, - "description": "Type and Configuration for Custom Actions" + "description": "Action details includes Type and Configuration for Custom Actions, either Callback or URL is required.\nWhen both callback and url are provided, callback would be considered" }, - "CALLBACK": { + "CALLBACKInputMandatory": { "type": "object", "properties": { "reference": { "type": "string", - "description": "Reference name of the SDK. By default, the value will be set to action name.", + "description": "Reference name. By default, the value will be set to action name.", "nullable": true } }, "description": "CALLBACK Custom Action Type" }, - "URL": { + "URLInputMandatory": { "type": "object", "required": [ "url" ], "properties": { "authentication": { - "$ref": "#/components/schemas/Authentication", + "$ref": "#/components/schemas/AuthenticationInput", "description": "Authorization type for the custom action.", "nullable": true }, "parameters": { "type": "array", "items": { - "$ref": "#/components/schemas/ParametersListItem" + "$ref": "#/components/schemas/ParametersListItemInput" }, "description": "Query parameters for url.", "nullable": true @@ -20480,22 +19676,22 @@ }, "reference": { "type": "string", - "description": "Reference name of the SDK. By default, the value will be set to action name.", + "description": "Reference name. By default the value will be set to action name", "nullable": true } }, "description": "URL Custom Action Type" }, - "Authentication": { + "AuthenticationInput": { "type": "object", "properties": { "API_Key": { - "$ref": "#/components/schemas/API_Key", + "$ref": "#/components/schemas/API_KeyInput", "description": "With API key auth, you send a key-value pair to the API either in the request headers or query parameters.", "nullable": true }, "Basic_Auth": { - "$ref": "#/components/schemas/Basic_Auth", + "$ref": "#/components/schemas/Basic_AuthInput", "description": "Basic Auth: Basic authentication involves sending a verified username and password with your request.", "nullable": true }, @@ -20512,7 +19708,7 @@ }, "description": "Authorization type for the custom action." }, - "API_Key": { + "API_KeyInput": { "type": "object", "properties": { "key": { @@ -20528,7 +19724,7 @@ }, "description": "With API key auth, you send a key-value pair to the API either in the request headers or query parameters." }, - "Basic_Auth": { + "Basic_AuthInput": { "type": "object", "properties": { "password": { @@ -20544,7 +19740,7 @@ }, "description": "Basic Auth: Basic authentication involves sending a verified username and password with your request." }, - "ParametersListItem": { + "ParametersListItemInput": { "type": "object", "properties": { "key": { @@ -20559,28 +19755,16 @@ } } }, - "Default_action_config": { - "type": "object", - "properties": { - "visibility": { - "type": "boolean", - "description": "Custom action is available on all visualizations. Earlier , the naming convention: LOCAL/GLOBAL. TRUE signifies GLOBAL for backward compatibility.", - "nullable": true - } - }, - "description": "Default Custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." - }, - "Metadata_Association_Item": { + "Associate_Metadata_Input_Create": { "type": "object", "required": [ - "action_config", - "identifier", - "type" + "identifier" ], "properties": { "action_config": { - "$ref": "#/components/schemas/Action_config", - "description": "Specify that the association is enabled for the metadata object" + "$ref": "#/components/schemas/ActionConfigInputCreate", + "description": "Specify that the association is enabled for the metadata object", + "nullable": true }, "identifier": { "type": "string", @@ -20588,279 +19772,408 @@ }, "type": { "type": "string", - "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier." + "enum": [ + "VISUALIZATION", + "ANSWER", + "WORKSHEET" + ], + "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "nullable": true } } }, - "Action_config": { + "ActionConfigInputCreate": { "type": "object", "properties": { "position": { "type": "string", + "enum": [ + "MENU", + "PRIMARY", + "CONTEXT_MENU" + ], + "default": "MENU", "description": "Position of the Custom action on the Metadata object. Earlier naming convention: context.", "nullable": true }, "visibility": { "type": "boolean", + "default": true, "description": "Visibility of the metadata association with custom action. Earlier naming convention: enabled", "nullable": true } }, - "description": "Specify that the association is enabled for the metadata object" + "description": "Specify that the association is enabled for the metadata object Default" }, - "CustomActionMetadataTypeInput": { + "Default_Action_Config_Input_Create": { "type": "object", - "required": [ - "identifier" - ], "properties": { - "type": { - "type": "string", - "enum": [ - "VISUALIZATION", - "ANSWER", - "WORKSHEET" - ], - "description": " Type of metadata object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "visibility": { + "type": "boolean", + "default": true, + "description": "Custom action is available on all visualizations. Earlier naming convention: LOCAL/GLOBAL. TRUE signifies GLOBAL for backward compatibility.\nDefault: true", + "nullable": true + } + }, + "description": "Default Custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." + }, + "Action_Details_Input": { + "type": "object", + "properties": { + "CALLBACK": { + "$ref": "#/components/schemas/CALLBACKInput", + "description": "CALLBACK Custom Action Type", "nullable": true }, - "identifier": { + "URL": { + "$ref": "#/components/schemas/URLInput", + "description": "URL Custom Action Type", + "nullable": true + } + }, + "description": "Action details includes `Type` and configuration details of Custom Actions. Either Callback or URL is required." + }, + "CALLBACKInput": { + "type": "object", + "properties": { + "reference": { "type": "string", - "description": "Unique ID or name of the metadata object." + "description": "Reference name. By default, the value will be set to action name.", + "nullable": true } }, - "description": "MetadataType InputType used in Custom Action API's" + "description": "CALLBACK Custom Action Type" }, - "MetadataContext": { + "URLInput": { "type": "object", "properties": { - "data_source_identifiers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of data_source_identifiers to provide context for breaking down user query into analytical queries that can be run on them.", + "authentication": { + "$ref": "#/components/schemas/AuthenticationInput", + "description": "Authorization type for the custom action.", "nullable": true }, - "answer_identifiers": { + "parameters": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/ParametersListItemInput" }, - "description": "List of answer unique identifiers (GUIDs) whose data will be used to guide the response.", + "description": "Query parameters for url.", "nullable": true }, - "conversation_identifier": { + "url": { "type": "string", - "description": "Unique identifier to denote current conversation.", + "description": "Request Url for the Custom action.", "nullable": true }, - "liveboard_identifiers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of liveboard unique identifiers (GUIDs) whose data will be used to guide the response.", + "reference": { + "type": "string", + "description": "Reference name. By default the value will be set to action name", + "nullable": true + } + }, + "description": "URL Custom Action Type" + }, + "Associate_Metadata_Input": { + "type": "object", + "properties": { + "action_config": { + "$ref": "#/components/schemas/ActionConfigInput", + "description": "Specify that the association is enabled for the metadata object", + "nullable": true + }, + "identifier": { + "type": "string", + "description": "Unique ID or name of the metadata.", + "nullable": true + }, + "type": { + "type": "string", + "enum": [ + "VISUALIZATION", + "ANSWER", + "WORKSHEET" + ], + "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", "nullable": true } } }, - "AIContext": { + "ActionConfigInput": { "type": "object", "properties": { - "instructions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "User specific text instructions sent to AI system for processing the query.", + "position": { + "type": "string", + "enum": [ + "MENU", + "PRIMARY", + "CONTEXT_MENU" + ], + "description": "Position of the Custom action on the Metadata object. Earlier naming convention: context.", "nullable": true }, - "content": { + "visibility": { + "type": "boolean", + "description": "Visibility of the metadata association with custom action. Earlier naming convention: enabled", + "nullable": true + } + }, + "description": "Specify that the association is enabled for the metadata object Default" + }, + "Default_Action_Config_Input": { + "type": "object", + "properties": { + "visibility": { + "type": "boolean", + "description": "Custom action is available on all visualizations. Earlier naming convention: LOCAL/GLOBAL. TRUE signifies GLOBAL for backward compatibility.", + "nullable": true + } + }, + "description": "Default Custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." + }, + "ModelTableList": { + "type": "object", + "required": [ + "model_name", + "tables" + ], + "properties": { + "model_name": { + "type": "string", + "description": "Name of the Model." + }, + "model_path": { + "type": "string", + "description": "Model directory path, this is optional param and required if there are duplicate models with the same name.", + "nullable": true + }, + "tables": { "type": "array", "items": { "type": "string" }, - "description": "User provided content like text data, csv data as a string message to provide context & potentially improve the quality of the response.", - "nullable": true + "description": "List of Tables." } } }, - "eureka_GetRelevantQuestionsResponse": { + "DbtSearchResponse": { "type": "object", "properties": { - "relevant_questions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/eureka_RelevantQuestion" - }, - "description": "List of relevant questions that can be run on their respective data sources.", + "dbt_connection_identifier": { + "type": "string", + "nullable": true + }, + "project_name": { + "type": "string", + "nullable": true + }, + "connection_id": { + "type": "string", + "nullable": true + }, + "connection_name": { + "type": "string", + "nullable": true + }, + "cdw_database": { + "type": "string", + "nullable": true + }, + "import_type": { + "type": "string", + "nullable": true + }, + "author_name": { + "type": "string", "nullable": true } } }, - "eureka_RelevantQuestion": { + "Conversation": { + "type": "object", + "required": [ + "conversation_identifier" + ], + "properties": { + "conversation_identifier": { + "type": "string", + "description": "Unique identifier of the conversation." + } + } + }, + "ResponseMessage": { "type": "object", + "required": [ + "message_type" + ], "properties": { - "query": { + "session_identifier": { "type": "string", - "description": "NL query that can be run using spotter aka natural language search to get an AI generated answer.", + "description": "Unique identifier of the generated response.", "nullable": true }, - "data_source_identifier": { + "generation_number": { + "type": "integer", + "format": "int32", + "description": "Generate number of the response.", + "nullable": true + }, + "message_type": { "type": "string", - "description": "Unique identifier of the data source on which this query can be run on.", + "enum": [ + "TSAnswer" + ], + "description": "Type of the generated response." + }, + "visualization_type": { + "type": "string", + "enum": [ + "Chart", + "Table", + "Undefined" + ], + "description": "Generated visualization type.", "nullable": true }, - "data_source_name": { + "tokens": { "type": "string", - "description": "Display name of the data source on which this query can be run on.", + "description": "Tokens for the response.", + "nullable": true + }, + "display_tokens": { + "type": "string", + "description": "User friendly tokens for the response.", "nullable": true } } }, - "Input_eureka_NLSRequest": { + "ContextPayloadV2Input": { "type": "object", "properties": { - "agentVersion": { - "type": "integer", - "format": "int32", - "description": "Cluster version like 10.4.0.cl, 10.5.0.cl, so on.", + "type": { + "type": "string", + "enum": [ + "answer", + "liveboard", + "data_source" + ], + "description": "Type of the context.", "nullable": true }, - "bypassCache": { - "type": "boolean", - "description": "If true, results are not returned from cache & calculated every time. Can incur high costs & latency.", + "answer_context": { + "$ref": "#/components/schemas/AnswerContextInput", + "description": "Answer context.", "nullable": true }, - "instructions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "User specific instructions for processing the @query.", + "liveboard_context": { + "$ref": "#/components/schemas/LBContextInput", + "description": "Liveboard context.", "nullable": true }, - "query": { - "type": "string", - "description": "User query which is a topical/goal oriented question that needs to be broken down into smaller simple analytical questions.", - "nullable": true - } - } - }, - "eureka_DecomposeQueryResponse": { - "type": "object", - "properties": { - "decomposedQueryResponse": { - "$ref": "#/components/schemas/eureka_LLMDecomposeQueryResponse", - "description": "Decomposed query response for a topical/goal oriented question that contains broken down analytical questions.", + "data_source_context": { + "$ref": "#/components/schemas/DataSourceContextInput", + "description": "Data source context.", "nullable": true } } }, - "eureka_LLMDecomposeQueryResponse": { + "AnswerContextInput": { "type": "object", + "required": [ + "session_identifier", + "generation_number" + ], "properties": { - "decomposedQueries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/eureka_LLMSuggestedQuery" - }, - "description": "List of analytical questions that can be run on their respective worksheet/data sources.", - "nullable": true + "session_identifier": { + "type": "string", + "description": "Unique identifier of the answer session." + }, + "generation_number": { + "type": "integer", + "format": "int32", + "description": "Generation number of the answer." } } }, - "eureka_LLMSuggestedQuery": { + "LBContextInput": { "type": "object", + "required": [ + "liveboard_identifier", + "visualization_identifier" + ], "properties": { - "query": { - "type": "string", - "description": "NL query that can be run using spotter aka natural language search to get an AI generated answer.", - "nullable": true - }, - "worksheetId": { + "liveboard_identifier": { "type": "string", - "description": "Unique identifier of the worksheet on which this query can be run on.", - "nullable": true + "description": "Unique identifier of the liveboard." }, - "worksheetName": { + "visualization_identifier": { "type": "string", - "description": "Display name of the worksheet on which this query can be run on.", - "nullable": true + "description": "Unique identifier of the visualization." } } }, - "eureka_DataSourceSuggestionResponse": { + "DataSourceContextInput": { "type": "object", + "required": [ + "guid" + ], "properties": { - "data_sources": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DataSource" - }, - "description": "List of data sources suggested.", - "nullable": true + "guid": { + "type": "string", + "description": "Unique identifier of the data source." } } }, - "DataSource": { + "ConversationSettingsInput": { "type": "object", "properties": { - "confidence": { - "type": "number", - "format": "float", - "description": "Confidence score for the data source suggestion.", + "enable_contextual_change_analysis": { + "type": "boolean", + "default": false, + "description": "Enable contextual change analysis.", "nullable": true }, - "details": { - "$ref": "#/components/schemas/EntityHeader", - "description": "Details of the data source.", + "enable_natural_language_answer_generation": { + "type": "boolean", + "default": true, + "description": "Enable natural language to answer generation.", "nullable": true }, - "reasoning": { - "type": "string", - "description": "LLM reasoning for the data source.", + "enable_reasoning": { + "type": "boolean", + "default": false, + "description": "Enable reasoning.", "nullable": true } } }, - "EntityHeader": { + "AgentConversation": { "type": "object", + "required": [ + "conversation_id" + ], "properties": { - "description": { - "type": "string", - "description": "Description of the data source.", - "nullable": true - }, - "data_source_name": { - "type": "string", - "description": "Display name of the data source.", - "nullable": true - }, - "data_source_identifier": { + "conversation_id": { "type": "string", - "description": "Unique identifier of the data source.", - "nullable": true + "description": "Unique identifier of the conversation." } } }, - "eureka_GetNLInstructionsResponse": { + "SendAgentMessageResponse": { "type": "object", "required": [ - "nl_instructions_info" + "success" ], "properties": { - "nl_instructions_info": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NLInstructionsInfo" - }, - "description": "List of NL instructions with their scopes." + "success": { + "type": "boolean" + }, + "message": { + "type": "string", + "nullable": true } } }, - "NLInstructionsInfo": { + "NLInstructionsInfoInput": { "type": "object", "required": [ "instructions", @@ -20879,59 +20192,63 @@ "enum": [ "GLOBAL" ], - "description": "Scope of the instruction." + "description": "Scope of the instruction (USER or GLOBAL). Defaults to GLOBAL." } } }, - "RiseGQLArgWrapper": { + "eureka_SetNLInstructionsResponse": { "type": "object", "required": [ - "name", - "type" + "success" ], "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" + "success": { + "type": "boolean", + "description": "Success status of the operation." } } }, - "VariableDetailInput": { + "VariableUpdateAssignmentInput": { "type": "object", + "required": [ + "variable_identifier", + "variable_values", + "operation" + ], "properties": { - "identifier": { + "variable_identifier": { "type": "string", - "description": "Unique ID or name of the variable", - "nullable": true + "description": "ID or Name of the variable" }, - "type": { - "type": "string", - "enum": [ - "CONNECTION_PROPERTY", - "TABLE_MAPPING", - "CONNECTION_PROPERTY_PER_PRINCIPAL", - "FORMULA_VARIABLE" - ], - "description": "Type of variable", - "nullable": true + "variable_values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Values of the variable" }, - "name_pattern": { + "operation": { "type": "string", - "description": "A pattern to match case-insensitive name of the variable. User % for a wildcard match", - "nullable": true + "enum": [ + "ADD", + "REMOVE", + "REPLACE", + "RESET" + ], + "description": "Operation to perform" } }, - "description": "Input for variable details in search" + "description": "Input for variable value update in batch operations" }, - "ValueScopeInput": { + "VariableUpdateScopeInput": { "type": "object", + "required": [ + "org_identifier" + ], "properties": { "org_identifier": { "type": "string", - "description": "The unique name of the org", - "nullable": true + "description": "The unique name of the org" }, "principal_type": { "type": "string", @@ -20939,7 +20256,7 @@ "USER", "USER_GROUP" ], - "description": "Principal type", + "description": "Type of principal to which the variable value applies. Use USER to assign values to a specific user, or USER_GROUP to assign values to a group.", "nullable": true }, "principal_identifier": { @@ -20949,76 +20266,35 @@ }, "model_identifier": { "type": "string", - "description": "Model Identifier", - "nullable": true - } - }, - "description": "Input for variable scope in search" - }, - "Variable": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the variable" - }, - "name": { - "type": "string", - "description": "Name of the variable" - }, - "variable_type": { - "type": "string", - "enum": [ - "CONNECTION_PROPERTY", - "TABLE_MAPPING", - "CONNECTION_PROPERTY_PER_PRINCIPAL", - "FORMULA_VARIABLE" - ], - "description": "Type of the variable", - "nullable": true - }, - "sensitive": { - "type": "boolean", - "description": "If the variable is sensitive", + "description": "Unique ID or name of the model. Required for FORMULA_VARIABLE type to scope the variable value to a specific worksheet.", "nullable": true }, - "values": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableValue" - }, - "description": "Values of the variable", + "priority": { + "type": "integer", + "format": "int32", + "description": "The priority level for this scope assignment, used for conflict resolution when multiple values match. Higher priority values (larger numbers) take precedence.", "nullable": true } }, - "description": "Variable object" + "description": "Input for defining the scope of variable value assignments in batch update operations" }, - "VariableValue": { + "VariablePutAssignmentInput": { "type": "object", "required": [ - "org_identifier" + "assigned_values" ], "properties": { - "value": { - "type": "string", - "description": "The value of the variable", - "nullable": true - }, - "value_list": { + "assigned_values": { "type": "array", "items": { "type": "string" }, - "description": "The value of the variable if it is a list type", - "nullable": true + "description": "Values of the variable" }, "org_identifier": { "type": "string", - "description": "The unique name of the org" + "description": "The unique name of the org", + "nullable": true }, "principal_type": { "type": "string", @@ -21036,385 +20312,269 @@ }, "model_identifier": { "type": "string", - "description": "Unique ID of the model
Beta Version: 26.3.0.cl or later", + "description": "Unique ID of the model", "nullable": true }, "priority": { "type": "integer", "format": "int32", - "description": "The priority assigned to this value. If there are 2 matching values, the one with the higher priority will be picked.", + "description": "Priority level", "nullable": true } + }, + "description": "Input for variable value put operations" + }, + "CreateEmailCustomizationResponse": { + "type": "object", + "required": [ + "tenant_id", + "org", + "name", + "template_properties" + ], + "properties": { + "tenant_id": { + "type": "string", + "description": "Tenant ID" + }, + "org": { + "$ref": "#/components/schemas/OrgType", + "description": "Email customization org" + }, + "name": { + "type": "string", + "description": "Email customization name." + }, + "template_properties": { + "type": "object", + "description": "Customization configuration for the email" + } } }, - "SortOption": { + "OrgType": { "type": "object", "properties": { - "field_name": { + "name": { "type": "string", - "enum": [ - "DEFAULT", - "NAME", - "DISPLAY_NAME", - "AUTHOR", - "CREATED", - "MODIFIED" - ], - "default": "DEFAULT", - "description": "Name of the field to apply the sort on.", "nullable": true }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "default": "ASC", - "description": "Sort order : ASC(Ascending) or DESC(Descending).", + "id": { + "type": "integer", + "format": "int32", "nullable": true } } }, - "CalendarResponse": { + "Template_Properties_Input_Create": { "type": "object", "properties": { - "calendar_name": { + "cta_button_bg_color": { "type": "string", - "description": "Name of the calendar", + "description": "Background color for call-to-action button in hex format", "nullable": true }, - "connection_name": { + "cta_text_font_color": { "type": "string", - "description": "Name of the connection", + "description": "Text color for call-to-action button in hex format", "nullable": true }, - "data_warehouse_type": { + "primary_bg_color": { "type": "string", - "description": "Type of data warehouse", + "description": "Primary background color in hex format", "nullable": true }, - "modification_time_in_millis": { + "home_url": { "type": "string", - "description": "Last modification time in milliseconds", + "description": "Home page URL (HTTP/HTTPS only)", "nullable": true }, - "author_name": { + "logo_url": { "type": "string", - "description": "Name of the author who created the calendar", + "description": "Logo image URL (HTTP/HTTPS only)", "nullable": true }, - "connection_id": { + "font_family": { "type": "string", - "description": "Unique ID of the connection", + "description": "Font family for email content (e.g., Arial, sans-serif)", "nullable": true }, - "calendar_id": { + "product_name": { "type": "string", - "description": "Unique ID of the calendar", + "description": "Product name to display", "nullable": true - } - } - }, - "ConnectionConfigurationResponse": { - "type": "object", - "properties": { - "configuration_identifier": { + }, + "footer_address": { "type": "string", + "description": "Footer address text", "nullable": true }, - "name": { + "footer_phone": { "type": "string", + "description": "Footer phone number", "nullable": true }, - "description": { + "replacement_value_for_liveboard": { "type": "string", + "description": "Replacement value for Liveboard", "nullable": true }, - "configuration": { - "type": "object", + "replacement_value_for_answer": { + "type": "string", + "description": "Replacement value for Answer", "nullable": true }, - "policy_principals": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UserPrincipal" - }, + "replacement_value_for_spot_iq": { + "type": "string", + "description": "Replacement value for SpotIQ", "nullable": true }, - "policy_processes": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "SAGE_INDEXING", - "ROW_COUNT_STATS" - ] - }, + "hide_footer_address": { + "type": "boolean", + "description": "Whether to hide footer address", "nullable": true }, - "disabled": { + "hide_footer_phone": { "type": "boolean", + "description": "Whether to hide footer phone number", "nullable": true }, - "data_warehouse_type": { - "type": "string", - "enum": [ - "SNOWFLAKE", - "AMAZON_REDSHIFT", - "GOOGLE_BIGQUERY", - "AZURE_SYNAPSE", - "TERADATA", - "SAP_HANA", - "STARBURST", - "ORACLE_ADW", - "DATABRICKS", - "DENODO", - "DREMIO", - "TRINO", - "PRESTO", - "POSTGRES", - "SQLSERVER", - "MYSQL", - "GENERIC_JDBC", - "AMAZON_RDS_POSTGRESQL", - "AMAZON_AURORA_POSTGRESQL", - "AMAZON_RDS_MYSQL", - "AMAZON_AURORA_MYSQL", - "LOOKER", - "AMAZON_ATHENA", - "SINGLESTORE", - "GCP_SQLSERVER", - "GCP_ALLOYDB_POSTGRESQL", - "GCP_POSTGRESQL", - "GCP_MYSQL", - "MODE", - "GOOGLE_SHEETS", - "FALCON", - "FALCON_ONPREM", - "CLICKHOUSE" - ], + "hide_manage_notification": { + "type": "boolean", + "description": "Whether to hide manage notification link", + "nullable": true + }, + "hide_mobile_app_nudge": { + "type": "boolean", + "description": "Whether to hide mobile app nudge", + "nullable": true + }, + "hide_privacy_policy": { + "type": "boolean", + "description": "Whether to hide privacy policy link", + "nullable": true + }, + "hide_product_name": { + "type": "boolean", + "description": "Whether to hide product name", "nullable": true }, - "policy_type": { - "type": "string", - "enum": [ - "NO_POLICY", - "PRINCIPALS", - "PROCESSES" - ], + "hide_ts_vocabulary_definitions": { + "type": "boolean", + "description": "Whether to hide ThoughtSpot vocabulary definitions", "nullable": true }, - "same_as_parent": { + "hide_notification_status": { "type": "boolean", + "description": "Whether to hide notification status", "nullable": true }, - "policy_process_options": { - "$ref": "#/components/schemas/PolicyProcessOptions", + "hide_error_message": { + "type": "boolean", + "description": "Whether to hide error message", "nullable": true - } - } - }, - "UserPrincipal": { - "type": "object", - "properties": { - "id": { - "type": "string", + }, + "hide_unsubscribe_link": { + "type": "boolean", + "description": "Whether to hide unsubscribe link", "nullable": true }, - "name": { - "type": "string", + "hide_modify_alert": { + "type": "boolean", + "description": "Whether to hide modify alert", "nullable": true }, - "type": { + "company_privacy_policy_url": { "type": "string", + "description": "Company privacy policy URL (HTTP/HTTPS only)", "nullable": true - } - } - }, - "PolicyProcessOptions": { - "type": "object", - "properties": { - "impersonate_user": { + }, + "company_website_url": { "type": "string", + "description": "Company website URL (HTTP/HTTPS only)", "nullable": true - } - } - }, - "WebhookSortOptionsInput": { - "type": "object", - "properties": { - "field_name": { + }, + "contact_support_url": { "type": "string", - "enum": [ - "CREATED", - "MODIFIED", - "NAME" - ], - "default": "CREATED", - "description": "Name of the field to apply the sort on.", + "description": "Contact support url (HTTP/HTTPS only).
Version: 26.2.0.cl or later", "nullable": true }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "default": "DESC", - "description": "Sort order: ASC (Ascending) or DESC (Descending).", + "hide_contact_support_url": { + "type": "boolean", + "description": "Whether to hide contact support url.
Version: 26.2.0.cl or later", "nullable": true - } - } - }, - "WebhookSearchResponse": { - "type": "object", - "required": [ - "webhooks", - "pagination" - ], - "properties": { - "webhooks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookResponse" - }, - "description": "List of webhook configurations matching the search criteria." }, - "pagination": { - "$ref": "#/components/schemas/WebhookPagination", - "description": "Pagination information." + "hide_logo_url": { + "type": "boolean", + "description": "Whether to hide logo
Version: 26.4.0.cl or later", + "nullable": true } - } + }, + "description": "Email customization configuration properties" }, - "WebhookResponse": { + "ExternalTableInput": { "type": "object", "required": [ - "id", - "name", - "url", - "events", - "creation_time_in_millis", - "modification_time_in_millis" + "connection_identifier", + "table_name" ], "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the webhook configuration." - }, - "name": { + "connection_identifier": { "type": "string", - "description": "Name of the webhook configuration." + "description": "Unique ID or name of the connection." }, - "description": { + "database_name": { "type": "string", - "description": "Description of the webhook configuration.", - "nullable": true - }, - "org": { - "$ref": "#/components/schemas/WebhookOrg", - "description": "Org details.", + "default": "", + "description": "Name of the database.", "nullable": true }, - "url": { + "schema_name": { "type": "string", - "description": "The webhook endpoint URL." - }, - "url_params": { - "type": "object", - "description": "Additional URL parameters as key-value pairs.", - "nullable": true - }, - "events": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - }, - "description": "List of events this webhook subscribes to." - }, - "authentication": { - "$ref": "#/components/schemas/WebhookAuthentication", - "description": "Redacted authorization configuration for the webhook.", - "nullable": true - }, - "signature_verification": { - "$ref": "#/components/schemas/WebhookSignatureVerification", - "description": "Redacted configuration for webhook signature verification.", - "nullable": true - }, - "creation_time_in_millis": { - "type": "number", - "format": "float", - "description": "Creation time of the webhook configuration in milliseconds." - }, - "modification_time_in_millis": { - "type": "number", - "format": "float", - "description": "Last modified time of the webhook configuration in milliseconds." - }, - "created_by": { - "$ref": "#/components/schemas/WebhookUser", - "description": "User who created the webhook.", - "nullable": true - }, - "last_modified_by": { - "$ref": "#/components/schemas/WebhookUser", - "description": "User who last modified the webhook.", + "default": "", + "description": "Name of the schema.", "nullable": true }, - "storage_destination": { - "$ref": "#/components/schemas/StorageDestination", - "description": "Storage destination configuration for webhook payload delivery.", - "nullable": true + "table_name": { + "type": "string", + "description": "Name of the table. Table names may be case-sensitive depending on the database system." } } }, - "WebhookOrg": { + "PolicyProcessOptionsInput": { "type": "object", - "required": [ - "id", - "name" - ], "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the org." - }, - "name": { + "impersonate_user": { "type": "string", - "description": "Name of the org." + "nullable": true } } }, - "WebhookAuthentication": { + "WebhookAuthenticationInput": { "type": "object", "properties": { "API_KEY": { - "$ref": "#/components/schemas/WebhookAuthApiKey", - "description": "Redacted API key authentication configuration.", + "$ref": "#/components/schemas/WebhookAuthApiKeyInput", + "description": "API key authentication configuration.", "nullable": true }, "BASIC_AUTH": { - "$ref": "#/components/schemas/WebhookAuthBasicAuth", - "description": "Redacted Basic authentication configuration.", + "$ref": "#/components/schemas/WebhookAuthBasicAuthInput", + "description": "Basic authentication configuration.", "nullable": true }, "BEARER_TOKEN": { "type": "string", - "description": "Redacted Bearer token authentication configuration.", + "description": "Bearer token authentication configuration.", "nullable": true }, "OAUTH2": { - "$ref": "#/components/schemas/WebhookAuthOAuth2", - "description": "Redacted OAuth2 authentication configuration.", + "$ref": "#/components/schemas/WebhookAuthOAuth2Input", + "description": "OAuth2 authentication configuration.", "nullable": true } } }, - "WebhookAuthApiKey": { + "WebhookAuthApiKeyInput": { "type": "object", "required": [ "key", @@ -21431,7 +20591,7 @@ } } }, - "WebhookAuthBasicAuth": { + "WebhookAuthBasicAuthInput": { "type": "object", "required": [ "username", @@ -21448,7 +20608,7 @@ } } }, - "WebhookAuthOAuth2": { + "WebhookAuthOAuth2Input": { "type": "object", "required": [ "authorization_url", @@ -21470,7 +20630,7 @@ } } }, - "WebhookSignatureVerification": { + "WebhookSignatureVerificationInput": { "type": "object", "required": [ "type", @@ -21503,24 +20663,7 @@ } } }, - "WebhookUser": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the user." - }, - "name": { - "type": "string", - "description": "Name of the user." - } - } - }, - "StorageDestination": { + "StorageDestinationInput": { "type": "object", "required": [ "storage_type", @@ -21532,27 +20675,27 @@ "enum": [ "AWS_S3" ], - "description": "Type of storage destination (e.g., AWS_S3)." + "description": "Type of storage destination.\nExample: \"AWS_S3\"" }, "storage_config": { - "$ref": "#/components/schemas/StorageConfig", - "description": "Storage-specific configuration settings." + "$ref": "#/components/schemas/StorageConfigInput", + "description": "Storage-specific configuration settings.\nExample: {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}" } }, - "description": "Storage destination configuration for webhook payload delivery." + "description": "Input type for storage destination configuration." }, - "StorageConfig": { + "StorageConfigInput": { "type": "object", "properties": { "aws_s3_config": { - "$ref": "#/components/schemas/AwsS3Config", - "description": "AWS S3 storage configuration.", + "$ref": "#/components/schemas/AwsS3ConfigInput", + "description": "AWS S3 storage configuration.\nExample: {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}", "nullable": true } }, - "description": "Storage configuration containing provider-specific settings." + "description": "Input type for storage configuration." }, - "AwsS3Config": { + "AwsS3ConfigInput": { "type": "object", "required": [ "bucket_name", @@ -21562,1284 +20705,2134 @@ "properties": { "bucket_name": { "type": "string", - "description": "Name of the S3 bucket where webhook payloads are stored." + "description": "Name of the S3 bucket where webhook payloads will be stored.\nExample: \"my-webhook-files\"" }, "region": { "type": "string", - "description": "AWS region where the S3 bucket is located." + "description": "AWS region where the S3 bucket is located.\nExample: \"us-west-2\"" }, "role_arn": { "type": "string", - "description": "ARN of the IAM role used for S3 access." + "description": "ARN of the IAM role to assume for S3 access.\nExample: \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\"" }, "external_id": { "type": "string", - "description": "External ID for secure cross-account role assumption.", + "description": "External ID for secure cross-account role assumption.\nExample: \"ts-webhook-a1b2c3d4-7890\"", "nullable": true }, "path_prefix": { "type": "string", - "description": "Path prefix for organizing objects within the bucket.", + "description": "Optional path prefix for organizing objects within the bucket.\nExample: \"thoughtspot-webhooks/\"", "nullable": true } }, - "description": "AWS S3 storage configuration details." + "description": "Input type for AWS S3 storage configuration." }, - "WebhookPagination": { + "WebhookKeyValuePairInput": { "type": "object", "required": [ - "record_offset", - "record_size", - "total_count", - "has_more" + "key", + "value" ], "properties": { - "record_offset": { - "type": "integer", - "format": "int32", - "description": "The starting record number from where the records are included." + "key": { + "type": "string", + "description": "Header name." }, - "record_size": { + "value": { + "type": "string", + "description": "Header value." + } + }, + "description": "Key-value pair input for additional webhook headers." + }, + "WebhookDeleteResponse": { + "type": "object", + "required": [ + "deleted_count", + "failed_count", + "deleted_webhooks", + "failed_webhooks" + ], + "properties": { + "deleted_count": { "type": "integer", "format": "int32", - "description": "The number of records included in the response." + "description": "Number of webhooks successfully deleted." }, - "total_count": { + "failed_count": { "type": "integer", "format": "int32", - "description": "Total number of webhook configurations available." + "description": "Number of webhooks that failed to delete." }, - "has_more": { - "type": "boolean", - "description": "Indicates whether more records are available beyond the current response." + "deleted_webhooks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookResponse" + }, + "description": "List of successfully deleted webhooks." + }, + "failed_webhooks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookDeleteFailure" + }, + "description": "List of webhooks that failed to delete with error details." } } }, - "AWSStorageSetupInfo": { + "WebhookDeleteFailure": { "type": "object", "required": [ - "cluster_type", - "storage_type", - "aws_config" + "id", + "name", + "error" ], "properties": { - "cluster_type": { + "id": { "type": "string", - "enum": [ - "AWS", - "GCP" - ], - "description": "The type of ThoughtSpot cluster deployment.\nAlways 'AWS' for this type." + "description": "Unique identifier of the webhook that failed to delete." }, - "storage_type": { + "name": { "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination (e.g., AWS_S3)." + "description": "Name of the webhook that failed to delete." }, - "aws_config": { - "$ref": "#/components/schemas/AWSAssumeRoleSetup", - "description": "Setup info for AWS clusters using STS AssumeRole." + "error": { + "type": "string", + "description": "Error message describing why the deletion failed." } - }, - "description": "Storage setup information when ThoughtSpot cluster is deployed on AWS.\nUses STS AssumeRole for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"AWS\",\n \"storage_type: \"AWS_S3\",\n \"aws_config\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n }\n}" + } }, - "AWSAssumeRoleSetup": { + "CollectionMetadataInput": { "type": "object", "required": [ - "thoughtspot_aws_account_id", - "trust_policy_template" + "type", + "identifiers" ], "properties": { - "thoughtspot_aws_account_id": { + "type": { "type": "string", - "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.\nExample: \"123456789012\"" - }, - "trust_policy_template": { - "type": "object", - "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nExample: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } } }] }" + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "COLLECTION" + ], + "description": "Type of metadata object." }, - "setup_instructions": { + "identifiers": { "type": "array", "items": { "type": "string" }, - "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", + "description": "List of unique IDs or names of metadata objects." + } + }, + "description": "Input type for metadata to be added to a collection." + }, + "CollectionDeleteResponse": { + "type": "object", + "properties": { + "metadata_deleted": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" + }, + "description": "List of metadata objects that were successfully deleted.", + "nullable": true + }, + "metadata_skipped": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" + }, + "description": "List of metadata objects that were skipped during deletion.\nObjects may be skipped due to lack of permissions, dependencies, or other constraints.", "nullable": true } }, - "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" + "description": "Response object for delete collection operation." }, - "GCPStorageSetupInfo": { + "CollectionDeleteTypeIdentifiers": { "type": "object", - "required": [ - "cluster_type", - "storage_type", - "gcp_config" - ], "properties": { - "cluster_type": { + "type": { "type": "string", - "enum": [ - "AWS", - "GCP" - ], - "description": "The type of ThoughtSpot cluster deployment.\nAlways 'GCP' for this type." + "description": "Type of the metadata object (e.g., Collection, Worksheet, Table).", + "nullable": true + }, + "identifiers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GenericInfo" + }, + "description": "List of metadata identifiers belonging to the given type.", + "nullable": true + } + }, + "description": "Group of metadata objects identified by type." + }, + "Runtime_Filter": { + "type": "object", + "properties": { + "runtime_filter": { + "type": "object", + "description": "Runtime filter parameter type in JWT." + } + }, + "description": "List of runtime parameters need to set during the session." + }, + "Runtime_Sort": { + "type": "object", + "properties": { + "runtime_sort": { + "type": "object", + "description": "Runtime sort parameter type in JWT." + } + }, + "description": "List of runtime parameters need to set during the session." + }, + "Runtime_Param_Override": { + "type": "object", + "properties": { + "runtime_param_override": { + "type": "object", + "description": "Runtime param override type in JWT." + } + }, + "description": "List of runtime parameters need to set during the session." + }, + "CreateAgentConversationRequest": { + "type": "object", + "properties": { + "metadata_context": { + "description": "Context for the conversation.", + "allOf": [ + { + "$ref": "#/components/schemas/ContextPayloadV2Input" + } + ] + }, + "conversation_settings": { + "description": "Conversation settings.", + "allOf": [ + { + "$ref": "#/components/schemas/ConversationSettingsInput" + } + ] + } + }, + "required": [ + "metadata_context", + "conversation_settings" + ] + }, + "CreateConversationRequest": { + "type": "object", + "properties": { + "metadata_identifier": { + "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the conversation.", + "type": "string" + }, + "tokens": { + "description": "Token string to set the context for the conversation. For example,`[sales],[item type],[state]`.", + "type": "string" + } + }, + "required": [ + "metadata_identifier" + ] + }, + "GetDataSourceSuggestionsRequest": { + "type": "object", + "properties": { + "query": { + "description": "User query used to suggest data sources.", + "type": "string" + } + }, + "required": [ + "query" + ] + }, + "GetNLInstructionsRequest": { + "type": "object", + "properties": { + "data_source_identifier": { + "description": "Unique ID or name of the data-model for which to retrieve NL instructions.", + "type": "string" + } + }, + "required": [ + "data_source_identifier" + ] + }, + "GetRelevantQuestionsRequest": { + "type": "object", + "properties": { + "metadata_context": { + "description": "metadata for the query to enable generation of relevant sub-questions; at least one context identifier is required.", + "allOf": [ + { + "$ref": "#/components/schemas/MetadataContext" + } + ] + }, + "limit_relevant_questions": { + "description": "Maximum number of relevant questions that is allowed in the response, default = 5.", + "type": "integer", + "format": "int32" + }, + "bypass_cache": { + "description": "If true, results are not returned from cache & calculated every time.", + "type": "boolean", + "nullable": true + }, + "query": { + "description": "A user query that requires breaking down into smaller, more manageable analytical questions to facilitate better understanding and analysis.", + "type": "string" + }, + "ai_context": { + "description": "Additional context to guide the response.", + "allOf": [ + { + "$ref": "#/components/schemas/AIContext" + } + ] + } + }, + "required": [ + "metadata_context", + "query" + ] + }, + "QueryGetDecomposedQueryRequest": { + "type": "object", + "properties": { + "answerIds": { + "description": "List of answer unique identifiers (GUIDs) whose data will be used to guide the response.", + "type": "array", + "items": { + "type": "string" + } + }, + "content": { + "description": "User provided content like text data, csv data as a string message to provide context & potentially improve the quality of the response.", + "type": "array", + "items": { + "type": "string" + } + }, + "conversationId": { + "description": "Unique identifier to denote current conversation.", + "type": "string" + }, + "liveboardIds": { + "description": "List of liveboard unique identifiers (GUIDs) whose data will be used to guide the response.", + "type": "array", + "items": { + "type": "string" + } }, - "storage_type": { - "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination (e.g., AWS_S3)." + "maxDecomposedQueries": { + "description": "Maximum number of decomposed queries that is allowed in the response, default = 5.", + "type": "integer", + "format": "int32" }, - "gcp_config": { - "$ref": "#/components/schemas/GCPWebIdentitySetup", - "description": "Setup info for GCP clusters using STS AssumeRoleWithWebIdentity." + "nlsRequest": { + "description": "NLSRequest object containing user query & instructions.", + "allOf": [ + { + "$ref": "#/components/schemas/Input_eureka_NLSRequest" + } + ] + }, + "worksheetIds": { + "description": "List of worksheetIds to provide context for decomposing user query into analytical queries that can be run on them.", + "type": "array", + "items": { + "type": "string" + } } - }, - "description": "Storage setup information when ThoughtSpot cluster is deployed on GCP.\nUses STS AssumeRoleWithWebIdentity for cross-account S3 access.\nExample response:\n{\n \"cluster_type\": \"GCP\",\n \"storage_type: \"AWS_S3\",\n \"gcp_config\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\", \"2. Create IAM role...\"]\n }\n}" + } }, - "GCPWebIdentitySetup": { + "SendAgentMessageRequest": { "type": "object", - "required": [ - "thoughtspot_gcp_service_account_id", - "trust_policy_template" - ], "properties": { - "thoughtspot_gcp_service_account_id": { - "type": "string", - "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.\nExample: \"115663769112811637952\"" - }, - "oidc_provider": { - "type": "string", - "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"", - "nullable": true - }, - "trust_policy_template": { - "type": "object", - "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nExample: { \"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": { + "messages": { + "description": "messages to be sent to the agent", "type": "array", "items": { "type": "string" - }, - "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", - "nullable": true + } } }, - "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" + "required": [ + "messages" + ] }, - "GenericInfo": { + "SendAgentMessageStreamingRequest": { "type": "object", "properties": { - "id": { - "type": "string", - "nullable": true + "conversation_identifier": { + "description": "Unique identifier for the conversation (used to track context)", + "type": "string" }, - "name": { - "type": "string", - "nullable": true + "messages": { + "description": "messages to be sent to the agent", + "type": "array", + "items": { + "type": "string" + } } - } + }, + "required": [ + "conversation_identifier", + "messages" + ] }, - "UserGroup": { + "SendMessageRequest": { "type": "object", "properties": { - "id": { - "type": "string", - "nullable": true + "metadata_identifier": { + "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the conversation.", + "type": "string" }, - "name": { - "type": "string", - "nullable": true + "message": { + "description": "A message string with the follow-up question to continue the conversation.", + "type": "string" } - } + }, + "required": [ + "metadata_identifier", + "message" + ] }, - "JWT_User_Options": { + "SetNLInstructionsRequest": { "type": "object", "properties": { - "parameters": { - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/Runtime_Filter" - }, - { - "$ref": "#/components/schemas/Runtime_Sort" - }, - { - "$ref": "#/components/schemas/Runtime_Param_Override" - } - ] - } + "data_source_identifier": { + "description": "Unique ID or name of the data-model for which to set NL instructions.", + "type": "string" }, - "metadata": { + "nl_instructions_info": { + "description": "List of NL instructions to set for the data-model.", "type": "array", "items": { - "$ref": "#/components/schemas/JWT_Metadata_Object" - }, - "nullable": true + "$ref": "#/components/schemas/NLInstructionsInfoInput" + } } }, - "description": "JWT user options to create a JWT token given the payload.\n\n\n*Deprecated in 9.12.0.cl. Use user_parameters instead.*" + "required": [ + "data_source_identifier", + "nl_instructions_info" + ] }, - "JWT_Parameter": { + "SingleAnswerRequest": { "type": "object", "properties": { - "runtime_filter": { - "type": "object", - "description": "Runtime filter parameter type in JWT.", - "nullable": true - }, - "runtime_sort": { - "type": "object", - "description": "Runtime sort parameter type in JWT.", - "nullable": true + "query": { + "description": "A natural language query string to generate the Answer.", + "type": "string" }, - "runtime_param_override": { - "type": "object", - "description": "Runtime param override type in JWT.", - "nullable": true + "metadata_identifier": { + "description": "ID of the metadata object, such as a Worksheet or Model, to use as a data source for the query.", + "type": "string" } }, - "description": "List of runtime parameters need to set during the session." + "required": [ + "query", + "metadata_identifier" + ] }, - "JWT_Metadata_Object": { + "GetCustomAccessTokenRequest": { "type": "object", "properties": { - "identifier": { - "type": "string", - "nullable": true + "username": { + "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", + "type": "string" }, - "type": { + "password": { + "description": "Password of the user account", + "default": "", + "type": "string" + }, + "secret_key": { + "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", + "default": "", + "type": "string" + }, + "validity_time_in_sec": { + "description": "Token validity duration in seconds", + "default": 300, + "type": "integer", + "format": "int32" + }, + "org_identifier": { + "description": "ID or name of the Org context to log in to. If the Org ID or name is not specified but a secret key is provided, the user will be logged into the Org associated with the secret key. If neither the Org ID/name nor the secret key is provided, the user will be logged into the Org context from their previous login session.", + "type": "string" + }, + "persist_option": { + "description": "Indicates whether the specified attributes should be persisted or not. RESET and NONE are not applicable if you are setting variable_values.", "type": "string", "enum": [ - "LOGICAL_TABLE" - ], - "nullable": true - } - }, - "description": "Metadata objects." - }, - "User_Parameter_Options": { - "type": "object", - "properties": { - "objects": { + "REPLACE", + "APPEND", + "NONE", + "RESET" + ] + }, + "filter_rules": { + "description": "Filter rules.", "type": "array", "items": { - "$ref": "#/components/schemas/User_Object" - }, - "nullable": true + "$ref": "#/components/schemas/FilterRules" + } }, - "runtime_filters": { + "parameter_values": { + "description": "Allows developers to assign parameter values for existing parameters to a user at login. Note: Using parameter values for row level security use cases will ultimately be deprecated. Developers can still pass data security values via the Custom Access token via the variable_values field and create RLS rules based on custom variables. Please refer to the [ABAC via RLS documentation](https://developers.thoughtspot.com/docs/abac-user-parameters) for more details.", "type": "array", "items": { - "$ref": "#/components/schemas/Runtime_Filters" - }, - "description": "Objects to apply the User_Runtime_Filters.\n\nExamples to set the `runtime_filters` :\n```json\n{ \"column_name\": \"Color\", \"operator\": \"EQ\", \"values\": [\"red\"], \"persist\": false }\n```", - "nullable": true + "$ref": "#/components/schemas/ParameterValues" + } }, - "runtime_sorts": { + "variable_values": { + "description": "List of variable values where `name` references an existing formula variable and `values` is any value from the corresponding column.
Version: 10.14.0.cl or later", "type": "array", "items": { - "$ref": "#/components/schemas/Runtime_Sorts" - }, - "description": "Objects to apply the User_Runtime_Sorts.\n\nExamples to set the `runtime_sorts` :\n```json\n{ \"column_name\": \"Color\", \"order\": \"ASC\", \"persist\": false }\n```", - "nullable": true + "$ref": "#/components/schemas/VariableValues" + } }, - "parameters": { + "objects": { + "description": "Objects on which the parameter and variable values should be applied to", "type": "array", "items": { - "$ref": "#/components/schemas/Runtime_Parameters" - }, - "description": "Objects to apply the Runtime_Parameters.\n\nExamples to set the `parameters` :\n```json\n{ \"name\": \"Color\", \"values\": [\"Blue\"], \"persist\": false }\n```", + "$ref": "#/components/schemas/TokenAccessScopeObject" + } + }, + "email": { + "description": "(just-in-time (JIT) provisioning)Email address of the user. Specify this attribute when creating a new user.", + "type": "string" + }, + "display_name": { + "description": "(just-in-time (JIT) provisioning) Indicates display name of the user. Specify this attribute when creating a new user.", + "type": "string" + }, + "groups": { + "description": "(just-in-time (JIT) provisioning) ID or name of the groups to which the newly created user belongs. Specify this attribute when creating a new user.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Group_Object" + } + }, + "auto_create": { + "description": " Creates a new user if the specified username does not exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. New formula variables won't be created.
Version: 10.5.0.cl or later", + "default": true, + "type": "boolean", "nullable": true } }, - "description": "Define attributes such as Runtime filters and Runtime parameters to send security entitlements to a user session. For more information, see [Documentation](https://developers.thoughtspot.com/docs/abac-user-parameters).\n" + "required": [ + "username", + "persist_option" + ] }, - "User_Object": { + "GetFullAccessTokenRequest": { "type": "object", + "properties": { + "username": { + "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", + "type": "string" + }, + "password": { + "description": "Password of the user account", + "default": "", + "type": "string" + }, + "secret_key": { + "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", + "default": "", + "type": "string" + }, + "validity_time_in_sec": { + "description": "Token validity duration in seconds", + "default": 300, + "type": "integer", + "format": "int32" + }, + "org_id": { + "description": "ID of the Org context to log in to. If the Org ID is not specified and secret key is provided then user will be logged into the org corresponding to the secret key, and if secret key is not provided then user will be logged in to the Org context of their previous login session.", + "type": "integer", + "format": "int32" + }, + "email": { + "description": "Email address of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", + "type": "string" + }, + "display_name": { + "description": "Indicates display name of the user. Use this parameter to provision a user just-in-time (JIT).", + "type": "string" + }, + "auto_create": { + "description": " Creates a new user if the specified username does not already exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. ", + "default": false, + "type": "boolean", + "nullable": true + }, + "group_identifiers": { + "description": "ID or name of the groups to which the newly created user belongs. Use this parameter to provision a user just-in-time (JIT).", + "type": "array", + "items": { + "type": "string" + } + }, + "user_parameters": { + "description": "
Version: 9.10.5.cl or laterDeprecated: 10.4.0.cl and later
\n\nDefine attributes such as Runtime filters and Runtime parameters to send security entitlements to a user session. For more information, see [Documentation](https://developers.thoughtspot.com/docs/abac-user-parameters).", + "allOf": [ + { + "$ref": "#/components/schemas/User_Parameter_Options" + } + ] + } + }, "required": [ - "identifier" - ], + "username" + ] + }, + "GetObjectAccessTokenRequest": { + "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "LOGICAL_TABLE" - ], - "description": " Type of object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n \n\n Specify the object type as `LOGICAL_TABLE`.", + "username": { + "description": "Username of the ThoughtSpot user. The username is stored in the `name` attribute of the user object.", + "type": "string" + }, + "object_id": { + "description": "GUID of the ThoughtSpot metadata object that the user can access. The bearer will only have access to the object specified in the API request.", + "type": "string" + }, + "password": { + "description": "Password of the user account", + "default": "", + "type": "string" + }, + "secret_key": { + "description": "The secret key string provided by the ThoughtSpot application server. ThoughtSpot generates a secret key when Trusted authentication is enabled.", + "default": "", + "type": "string" + }, + "validity_time_in_sec": { + "description": "Token validity duration in seconds", + "default": 300, + "type": "integer", + "format": "int32" + }, + "org_id": { + "description": "ID of the Org context to log in to. If the Org ID is not specified and secret key is provided then user will be logged into the org corresponding to the secret key, and if secret key is not provided then user will be logged in to the Org context of their previous login session.", + "type": "integer", + "format": "int32" + }, + "email": { + "description": "Email address of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", + "type": "string" + }, + "display_name": { + "description": "Display name of the user. Specify this attribute when creating a new user (just-in-time (JIT) provisioning).", + "type": "string" + }, + "auto_create": { + "description": " Creates a new user if the specified username does not exist in ThoughtSpot. To provision a user just-in-time (JIT), set this attribute to true.\n \n\nNote: For JIT provisioning of a user, the secret_key is required. ", + "default": false, + "type": "boolean", "nullable": true }, - "identifier": { - "type": "string", - "description": "Unique name/id of the object." + "group_identifiers": { + "description": "Unique ID or name of the groups to which you want to assign the new user. You can specify this attribute to dynamically assign privileges during just-in-time (JIT) provisioning.", + "type": "array", + "items": { + "type": "string" + } + }, + "user_parameters": { + "description": "
Version: 9.10.5.cl or laterDeprecated: 10.4.0.cl and later
\n\nDefine attributes such as Runtime filters and Runtime parameters to send security entitlements to a user session. For more information, see [Documentation](https://developers.thoughtspot.com/docs/abac-user-parameters).", + "allOf": [ + { + "$ref": "#/components/schemas/User_Parameter_Options" + } + ] } }, - "description": "Objects to apply the User_Object." + "required": [ + "username" + ] }, - "Runtime_Filters": { + "LoginRequest": { "type": "object", - "required": [ - "column_name", - "values", - "operator" - ], "properties": { - "column_name": { - "type": "string", - "description": "The column name to apply filter." + "username": { + "description": "Username of the ThoughtSpot user", + "type": "string" }, - "values": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Value of the filters." + "password": { + "description": "Password of the user account", + "type": "string" }, - "operator": { - "type": "string", - "enum": [ - "EQ", - "NE", - "LT", - "LE", - "GT", - "GE", - "IN", - "BW", - "CONTAINS", - "BEGINS_WITH", - "ENDS_WITH", - "BW_INC", - "BW_INC_MIN", - "BW_INC_MAX", - "LIKE", - "NOT_IN" - ], - "description": "Operator value. Example: EQ" + "org_identifier": { + "description": "ID of the Org context to log in to. If Org ID is not specified, the user will be logged in to the Org context of their previous login session.", + "type": "string" }, - "persist": { - "type": "boolean", + "remember_me": { + "description": "A flag to remember the user session. When set to true, a session cookie is created and used in subsequent API requests.", "default": false, - "description": "Flag to persist the runtime filters.
Version: 9.12.0.cl or later", + "type": "boolean", "nullable": true + } + } + }, + "RevokeTokenRequest": { + "type": "object", + "properties": { + "user_identifier": { + "type": "string" }, - "objects": { - "type": "array", - "items": { - "$ref": "#/components/schemas/User_Object" - }, - "description": "Object to apply the runtime filter.", - "nullable": true + "token": { + "type": "string" + } + } + }, + "ValidateTokenRequest": { + "type": "object", + "properties": { + "token": { + "type": "string" } }, - "description": "Objects to apply the Runtime_Filters." + "required": [ + "token" + ] }, - "Runtime_Sorts": { + "CreateCollectionRequest": { "type": "object", "properties": { - "column_name": { - "type": "string", - "description": "The column name to apply filter.", - "nullable": true - }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "description": "Order for the sort.", - "nullable": true + "name": { + "description": "Name of the collection.", + "type": "string" }, - "persist": { - "type": "boolean", - "default": false, - "description": "Flag to persist the runtime sorts.
Version: 9.12.0.cl or later", - "nullable": true + "description": { + "description": "Description of the collection.", + "type": "string" }, - "objects": { + "metadata": { + "description": "Metadata objects to add to the collection.", "type": "array", "items": { - "$ref": "#/components/schemas/User_Object" - }, - "description": "Object to apply the runtime sort.", - "nullable": true + "$ref": "#/components/schemas/CollectionMetadataInput" + } } }, - "description": "Objects to apply the Runtime_Sorts." + "required": [ + "name" + ] }, - "Runtime_Parameters": { + "DeleteCollectionRequest": { "type": "object", - "required": [ - "name", - "values" - ], "properties": { - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "values": { + "collection_identifiers": { + "description": "Unique GUIDs of collections to delete. Note: Collection names cannot be\nused as identifiers since duplicate names are allowed.", "type": "array", "items": { "type": "string" - }, - "description": "The array of values." + } }, - "persist": { - "type": "boolean", + "delete_children": { + "description": "Flag to delete child objects of the collection that the user has access to.", "default": false, - "description": "Flag to persist the parameters.
Version: 9.12.0.cl or later", + "type": "boolean", "nullable": true }, - "objects": { - "type": "array", - "items": { - "$ref": "#/components/schemas/User_Object" - }, - "description": "Object to apply the runtime parameter.", + "dry_run": { + "description": "Preview deletion without actually deleting. When set to true, returns\nwhat would be deleted without performing the actual deletion.", + "default": false, + "type": "boolean", "nullable": true } }, - "description": "Objects to apply the Runtime_Parameters." + "required": [ + "collection_identifiers" + ] }, - "Token": { + "SearchCollectionsRequest": { "type": "object", - "required": [ - "token", - "creation_time_in_millis", - "expiration_time_in_millis", - "scope", - "valid_for_user_id", - "valid_for_username" - ], "properties": { - "token": { - "type": "string", - "description": "Bearer auth token." + "name_pattern": { + "description": "A pattern to match case-insensitive name of the Collection object.\nUse '%' for wildcard match.", + "type": "string" }, - "creation_time_in_millis": { - "type": "number", - "format": "float", - "description": "Token creation time in milliseconds." + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" }, - "expiration_time_in_millis": { - "type": "number", - "format": "float", - "description": "Token expiration time in milliseconds." + "record_size": { + "description": "The number of records that should be included.\n-1 implies no pagination.", + "default": 10, + "type": "integer", + "format": "int32" }, - "scope": { - "$ref": "#/components/schemas/Scope", - "description": "Token access scope details" + "collection_identifiers": { + "description": "Unique GUIDs of collections to search. Note: Collection names cannot be\nused as identifiers since duplicate names are allowed.", + "type": "array", + "items": { + "type": "string" + } }, - "valid_for_user_id": { - "type": "string", - "description": "Username to whom the token is issued." + "created_by_user_identifiers": { + "description": "Filter collections by author. Provide unique IDs or names of users\nwho created the collections.", + "type": "array", + "items": { + "type": "string" + } }, - "valid_for_username": { - "type": "string", - "description": "Unique identifier of the user to whom the token is issued." + "include_metadata": { + "description": "Include collection metadata items in the response.", + "default": false, + "type": "boolean", + "nullable": true + }, + "sort_options": { + "description": "Sort options.", + "allOf": [ + { + "$ref": "#/components/schemas/SortOptions" + } + ] } } }, - "Scope": { + "UpdateCollectionRequest": { "type": "object", - "required": [ - "access_type" - ], "properties": { - "access_type": { - "type": "string", - "description": "Object access scope type." + "name": { + "description": "Name of the collection.", + "type": "string" }, - "org_id": { - "type": "integer", - "format": "int32", - "description": "Unique identifier of the metadata.", - "nullable": true + "description": { + "description": "Description of the collection.", + "type": "string" }, - "metadata_id": { + "metadata": { + "description": "Metadata objects to add, remove, or replace in the collection.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionMetadataInput" + } + }, + "operation": { + "description": "Type of update operation. Default operation type is REPLACE.", + "default": "REPLACE", "type": "string", - "description": "Unique identifier of the Org.", - "nullable": true + "enum": [ + "ADD", + "REMOVE", + "REPLACE" + ] } } }, - "JWT_User_Options_Full": { + "ConnectionConfigurationSearchRequest": { "type": "object", "properties": { - "parameters": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JWT_Parameter" - }, - "nullable": true + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" + }, + "configuration_identifier": { + "description": "Unique ID or name of the configuration.", + "type": "string" + }, + "policy_type": { + "description": "Type of policy.", + "type": "string", + "enum": [ + "NO_POLICY", + "PRINCIPALS", + "PROCESSES" + ] } }, - "description": "JWT user options to create a JWT token given the payload.\n\n\n*Deprecated in 9.12.0.cl. Use user_parameters instead.*" + "required": [ + "connection_identifier" + ] }, - "TokenValidationResponse": { + "CreateConnectionConfigurationRequest": { "type": "object", - "required": [ - "creation_time_in_millis", - "expiration_time_in_millis", - "scope", - "valid_for_user_id", - "token_type" - ], "properties": { - "creation_time_in_millis": { - "type": "number", - "format": "float", - "description": "Token creation time in milliseconds." + "name": { + "description": "Unique name for the configuration.", + "type": "string" }, - "expiration_time_in_millis": { - "type": "number", - "format": "float", - "description": "Token expiration time in milliseconds." + "description": { + "description": "Description of the configuration.", + "type": "string" }, - "scope": { - "$ref": "#/components/schemas/Scope", - "description": "Token access scope details" + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" }, - "valid_for_user_id": { - "type": "string", - "description": "Username to whom the token is issued." + "same_as_parent": { + "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", + "default": false, + "type": "boolean", + "nullable": true }, - "token_type": { - "type": "string", - "description": "Type of token." - } - } - }, - "FilterRules": { - "type": "object", - "required": [ - "column_name", - "operator", - "values" - ], - "properties": { - "column_name": { + "policy_process_options": { + "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/PolicyProcessOptionsInput" + } + ] + }, + "authentication_type": { + "description": "Type of authentication used for the connection.", + "default": "SERVICE_ACCOUNT", "type": "string", - "description": "The name of the column to apply the filter on." + "enum": [ + "SERVICE_ACCOUNT", + "KEY_PAIR", + "PERSONAL_ACCESS_TOKEN", + "OAUTH_WITH_SERVICE_PRINCIPAL", + "OAUTH_CLIENT_CREDENTIALS" + ] }, - "operator": { + "configuration": { + "description": "Configuration properties in JSON.", + "type": "object" + }, + "policy_type": { + "description": "Type of policy.", + "default": "NO_POLICY", "type": "string", "enum": [ - "EQ", - "NE", - "LT", - "LE", - "GT", - "GE", - "IN", - "BW", - "CONTAINS", - "BEGINS_WITH", - "ENDS_WITH", - "BW_INC", - "BW_INC_MIN", - "BW_INC_MAX", - "LIKE", - "NOT_IN" - ], - "description": "The operator to use for filtering. Example: EQ (equals), GT(greater than), etc." + "NO_POLICY", + "PRINCIPALS", + "PROCESSES" + ] }, - "values": { + "policy_principals": { + "description": "Unique ID or name of the User and User Groups.", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "boolean" - }, - { - "type": "number" - } + "type": "string" + } + }, + "policy_processes": { + "description": "Action that the query performed on the data warehouse, such as SAGE_INDEXING and ROW_COUNT_STATS.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "SAGE_INDEXING", + "ROW_COUNT_STATS" ] - }, - "description": "The values to filter on. To get all records, use TS_WILDCARD_ALL as values." + } } }, - "description": "Filter Rules to be applied on Objects." - }, - "ParameterValues": { - "type": "object", "required": [ "name", - "values" - ], + "connection_identifier", + "configuration" + ] + }, + "DeleteConnectionConfigurationRequest": { + "type": "object", "properties": { - "name": { - "type": "string", - "description": "The name of the column to apply the filter on." + "configuration_identifier": { + "description": "Unique ID or name of the configuration.", + "type": "string" }, - "values": { - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "boolean" - }, - { - "type": "number" - } - ] - }, - "description": "The values to filter on. Only single value is supported currently." + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" } }, - "description": "Filter Rules to be applied on Objects." + "required": [ + "configuration_identifier", + "connection_identifier" + ] }, - "VariableValues": { + "UpdateConnectionConfigurationRequest": { "type": "object", - "required": [ - "name", - "values" - ], "properties": { + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" + }, "name": { + "description": "Name of the configuration to update.", + "type": "string" + }, + "description": { + "description": "Description of the configuration.", + "type": "string" + }, + "same_as_parent": { + "description": "Specifies whether the connection configuration should inherit all properties and authentication\ntype from its parent connection. This attribute is only applicable to parameterized connections.\nWhen set to true, the configuration uses only the connection properties and authentication type\ninherited from the parent.
Version: 26.2.0.cl or later", + "default": false, + "type": "boolean", + "nullable": true + }, + "policy_process_options": { + "description": "This attribute is only applicable to parameterized connections. Ensure that the policy is\nset to Processes to allow the configuration to be used exclusively for system processes.
Version: 26.2.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/PolicyProcessOptionsInput" + } + ] + }, + "authentication_type": { + "description": "Type of authentication.", "type": "string", - "description": "The name of the existing formula variable." + "enum": [ + "SERVICE_ACCOUNT", + "OAUTH", + "OAUTH_WITH_SERVICE_PRINCIPAL", + "EXTOAUTH", + "KEY_PAIR", + "EXTOAUTH_WITH_PKCE", + "OAUTH_WITH_PKCE", + "PERSONAL_ACCESS_TOKEN", + "OAUTH_CLIENT_CREDENTIALS" + ] }, - "values": { + "configuration": { + "description": "Configuration properties in JSON.", + "type": "object" + }, + "policy_type": { + "description": "Type of policy.", + "type": "string", + "enum": [ + "NO_POLICY", + "PRINCIPALS", + "PROCESSES" + ] + }, + "policy_principals": { + "description": "Unique ID or name of the User and User Groups.", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "boolean" - }, - { - "type": "number" - } + "type": "string" + } + }, + "policy_processes": { + "description": "Action that the query performed on the data warehouse, such as SAGE_INDEXING and ROW_COUNT_STATS.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "SAGE_INDEXING", + "ROW_COUNT_STATS" ] - }, - "description": "The values to filter on." + } + }, + "disable": { + "description": "Indicates whether the configuration enable/disable.", + "default": false, + "type": "boolean", + "nullable": true } }, - "description": "Variable values." + "required": [ + "connection_identifier" + ] }, - "TokenAccessScopeObject": { + "CreateConnectionRequest": { "type": "object", - "required": [ - "identifier" - ], "properties": { - "type": { + "name": { + "description": "Unique name for the connection.", + "type": "string" + }, + "description": { + "description": "Description of the connection.", + "type": "string" + }, + "data_warehouse_type": { + "description": "Type of the data warehouse.", "type": "string", "enum": [ - "LOGICAL_TABLE" - ], - "description": " Type of object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n \n\n Specify the object type as `LOGICAL_TABLE`.", - "nullable": true + "SNOWFLAKE", + "AMAZON_REDSHIFT", + "GOOGLE_BIGQUERY", + "AZURE_SYNAPSE", + "TERADATA", + "SAP_HANA", + "STARBURST", + "ORACLE_ADW", + "DATABRICKS", + "DENODO", + "DREMIO", + "TRINO", + "PRESTO", + "POSTGRES", + "SQLSERVER", + "MYSQL", + "GENERIC_JDBC", + "AMAZON_RDS_POSTGRESQL", + "AMAZON_AURORA_POSTGRESQL", + "AMAZON_RDS_MYSQL", + "AMAZON_AURORA_MYSQL", + "LOOKER", + "AMAZON_ATHENA", + "SINGLESTORE", + "GCP_SQLSERVER", + "GCP_ALLOYDB_POSTGRESQL", + "GCP_POSTGRESQL", + "GCP_MYSQL", + "MODE", + "GOOGLE_SHEETS", + "FALCON", + "FALCON_ONPREM", + "CLICKHOUSE" + ] }, - "identifier": { - "type": "string", - "description": "Unique name/id of the object." + "data_warehouse_config": { + "description": "Connection configuration attributes in JSON format. To create a connection with tables, include table attributes. See the documentation above for sample JSON.", + "type": "object" + }, + "validate": { + "description": "Validates the connection metadata if tables are included. If you are creating a connection without tables, specify `false`.", + "default": true, + "type": "boolean", + "nullable": true } }, - "description": "Objects on which the filter rules and parameters values should be applied to" + "required": [ + "name", + "data_warehouse_type", + "data_warehouse_config" + ] }, - "Group_Object": { + "DeleteConnectionRequest": { "type": "object", "properties": { - "identifier": { - "type": "string", - "nullable": true + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" } }, - "description": "Groups objects." + "required": [ + "connection_identifier" + ] }, - "AccessToken": { + "RevokeRefreshTokensRequest": { "type": "object", - "required": [ - "token", - "org", - "user", - "creation_time_in_millis", - "expiration_time_in_millis" - ], "properties": { - "id": { - "type": "string", - "description": "GUID of the auth token.", - "nullable": true - }, - "token": { - "type": "string", - "description": "Bearer auth token." - }, - "org": { - "$ref": "#/components/schemas/OrgInfo", - "description": "Org information for which the token is generated." - }, - "user": { - "$ref": "#/components/schemas/UserInfo", - "description": "User information for which the token is generated." + "configuration_identifiers": { + "description": "Unique ID or name of the configuration. When provided, the refresh tokens of the users associated with the connection configuration will be revoked.", + "type": "array", + "items": { + "type": "string" + } }, - "creation_time_in_millis": { - "type": "number", - "format": "float", - "description": "Token creation time in milliseconds." + "user_identifiers": { + "description": "Unique ID or name of the users. When provided, the refresh tokens of the specified users will be revoked. If the request includes the user ID or name of the connection author, their token will also be revoked.", + "type": "array", + "items": { + "type": "string" + } }, - "expiration_time_in_millis": { - "type": "number", - "format": "float", - "description": "Token expiration time in milliseconds." + "org_identifiers": { + "description": "Unique ID or name of the Org. When provided, the refresh tokens of all users associated with the published connection in the Org will be revoked. This parameter is valid only for published connections. Using it with unpublished connections will result in an error.", + "type": "array", + "items": { + "type": "string" + } } } }, - "OrgInfo": { + "SearchConnectionRequest": { "type": "object", - "required": [ - "id" - ], "properties": { - "id": { + "connections": { + "description": "List of connections and name pattern", + "type": "array", + "items": { + "$ref": "#/components/schemas/ConnectionInput" + } + }, + "data_warehouse_types": { + "description": "Array of types of data warehouse defined for the connection.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "SNOWFLAKE", + "AMAZON_REDSHIFT", + "GOOGLE_BIGQUERY", + "AZURE_SYNAPSE", + "TERADATA", + "SAP_HANA", + "STARBURST", + "ORACLE_ADW", + "DATABRICKS", + "DENODO", + "DREMIO", + "TRINO", + "PRESTO", + "POSTGRES", + "SQLSERVER", + "MYSQL", + "GENERIC_JDBC", + "AMAZON_RDS_POSTGRESQL", + "AMAZON_AURORA_POSTGRESQL", + "AMAZON_RDS_MYSQL", + "AMAZON_AURORA_MYSQL", + "LOOKER", + "AMAZON_ATHENA", + "SINGLESTORE", + "GCP_SQLSERVER", + "GCP_ALLOYDB_POSTGRESQL", + "GCP_POSTGRESQL", + "GCP_MYSQL", + "MODE", + "GOOGLE_SHEETS", + "FALCON", + "FALCON_ONPREM", + "CLICKHOUSE" + ] + } + }, + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, "type": "integer", - "format": "int32", - "description": "Id." + "format": "int32" }, - "name": { + "record_size": { + "description": "The number of records that should be included.", + "default": 10, + "type": "integer", + "format": "int32" + }, + "tag_identifiers": { + "description": "Unique ID or name of tags.", + "type": "array", + "items": { + "type": "string" + } + }, + "data_warehouse_object_type": { + "description": "Data warehouse object type.", "type": "string", - "description": "Name.", + "enum": [ + "DATABASE", + "SCHEMA", + "TABLE", + "COLUMN" + ] + }, + "sort_options": { + "description": "Sort options.", + "allOf": [ + { + "$ref": "#/components/schemas/SortOptionInput" + } + ] + }, + "include_details": { + "description": "Indicates whether to include complete details of the connection objects.", + "type": "boolean", "nullable": true - } - } - }, - "UserInfo": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "id": { - "type": "string", - "description": "Id." }, - "name": { + "configuration": { + "description": "Configuration values. If empty we are fetching configuration from datasource based on given connection id. If required you can provide config details to fetch specific details. Example input: {}, {\"warehouse\":\"SMALL_WH\",\"database\":\"DEVELOPMENT\"}. This is only applicable when data_warehouse_object_type is selected.", + "type": "object" + }, + "authentication_type": { + "description": "List of authentication types to fetch data_ware_house_objects from external Data warehouse. This is only applicable when data_warehouse_object_type is selected.", + "default": "SERVICE_ACCOUNT", "type": "string", - "description": "Name.", + "enum": [ + "SERVICE_ACCOUNT", + "OAUTH", + "IAM", + "EXTOAUTH", + "OAUTH_WITH_SERVICE_PRINCIPAL", + "PERSONAL_ACCESS_TOKEN", + "KEY_PAIR", + "OAUTH_WITH_PKCE", + "EXTOAUTH_WITH_PKCE", + "OAUTH_WITH_PEZ", + "OAUTH_CLIENT_CREDENTIALS" + ] + }, + "show_resolved_parameters": { + "description": "
Version: 10.9.0.cl or later
\n\nIndicates whether to show resolved parameterised values.", + "default": false, + "type": "boolean", "nullable": true } } }, - "ResponseActivationURL": { + "UpdateConnectionRequest": { "type": "object", "properties": { - "activation_link": { - "type": "string", - "description": "Activation link to activate the user.", + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" + }, + "name": { + "description": "Updated name of the connection.", + "type": "string" + }, + "description": { + "description": "Updated description of the connection.", + "type": "string" + }, + "data_warehouse_config": { + "description": "Configuration of the data warehouse in JSON.", + "type": "object" + }, + "validate": { + "description": "Indicates whether to validate the connection details.", + "default": true, + "type": "boolean", "nullable": true } }, - "description": "The object representation with activation link." + "required": [ + "connection_identifier" + ] }, - "ImportUser": { + "UpdateConnectionV2Request": { "type": "object", - "required": [ - "user_identifier", - "display_name" - ], "properties": { - "user_identifier": { - "type": "string", - "description": "Unique ID or name of the user." - }, - "display_name": { - "type": "string", - "description": "Display name of the user." + "name": { + "description": "Updated name of the connection.", + "type": "string" }, - "password": { - "type": "string", - "description": "Password of the user.", - "nullable": true + "description": { + "description": "Updated description of the connection.", + "type": "string" }, - "account_type": { - "type": "string", - "enum": [ - "LOCAL_USER", - "LDAP_USER", - "SAML_USER", - "OIDC_USER", - "REMOTE_USER" - ], - "default": "LOCAL_USER", - "description": "Type of the user account.", - "nullable": true + "data_warehouse_config": { + "description": "Configuration of the data warehouse in JSON.", + "type": "object" }, - "account_status": { - "type": "string", - "enum": [ - "ACTIVE", - "INACTIVE", - "EXPIRED", - "LOCKED", - "PENDING", - "SUSPENDED" - ], - "default": "ACTIVE", - "description": "Status of the user account.", + "validate": { + "description": "Indicates whether to validate the connection details.", + "default": true, + "type": "boolean", "nullable": true + } + } + }, + "CreateCustomActionRequest": { + "type": "object", + "properties": { + "name": { + "description": "Name of the custom action. The custom action name must be unique.", + "type": "string" }, - "email": { - "type": "string", - "description": "Email address of the user.", - "nullable": true + "action_details": { + "description": "Action details includes `Type` and Configuration data for Custom Actions, either Callback or URL is required.", + "allOf": [ + { + "$ref": "#/components/schemas/Action_Details_Input_Create" + } + ] }, - "org_identifiers": { + "associate_metadata": { + "description": "Metadata objects to which the custom action needs to be associated.", "type": "array", "items": { - "type": "string" - }, - "description": "ID or name of the Orgs to which the user belongs.", - "nullable": true + "$ref": "#/components/schemas/Associate_Metadata_Input_Create" + } + }, + "default_action_config": { + "description": "Default Custom action configuration. This includes if the custom action is available on all visualizations. By default, a custom action is added to all visualizations and Answers.", + "allOf": [ + { + "$ref": "#/components/schemas/Default_Action_Config_Input_Create" + } + ] }, "group_identifiers": { + "description": "Unique ID or name of the groups that can view and access the custom action.", "type": "array", "items": { "type": "string" - }, - "description": "ID or name of the groups to which the user belongs.", - "nullable": true - }, - "visibility": { - "type": "string", - "enum": [ - "SHARABLE", - "NON_SHARABLE" - ], - "description": "Visibility of the users. The SHARABLE property makes a user visible to other users and group, who can share objects with the user.", - "nullable": true + } + } + }, + "required": [ + "name", + "action_details" + ] + }, + "SearchCustomActionsRequest": { + "type": "object", + "properties": { + "custom_action_identifier": { + "description": "Name or ID of the custom action.", + "type": "string" }, - "notify_on_share": { - "type": "boolean", - "default": true, - "description": "Notify user when other users or groups share metadata objects", - "nullable": true + "name_pattern": { + "description": "A pattern to match case-insensitive name of the custom-action object.", + "type": "string" }, - "show_onboarding_experience": { - "type": "boolean", - "description": "Show or hide the new user onboarding walkthroughs", - "nullable": true + "default_action_config": { + "description": "Default Custom action configuration. This includes if the custom action is available on all visualizations. By default, a custom action is added to all visualizations and Answers.", + "allOf": [ + { + "$ref": "#/components/schemas/Default_Action_Config_Search_Input" + } + ] }, - "onboarding_experience_completed": { + "include_group_associations": { + "description": "When set to true, returns the associated groups for a custom action.", + "default": false, "type": "boolean", - "description": "Revisit the new user onboarding walkthroughs", "nullable": true }, - "home_liveboard_identifier": { - "type": "string", - "description": "Unique ID or name of the default Liveboard assigned to the user.", + "include_metadata_associations": { + "description": "When set to true, returns the associated metadata for a custom action.", + "default": false, + "type": "boolean", "nullable": true }, - "favorite_metadata": { + "metadata": { + "description": "Search with a given metadata identifier.", "type": "array", "items": { - "$ref": "#/components/schemas/FavoriteMetadataInput" - }, - "description": "Metadata objects to add to the user's favorites list.", - "nullable": true + "$ref": "#/components/schemas/CustomActionMetadataTypeInput" + } }, - "preferred_locale": { + "type": { + "description": "Filter the action objects based on type", "type": "string", - "description": "Locale for the user.", - "nullable": true, "enum": [ - "en-CA", - "en-GB", - "en-US", - "de-DE", - "ja-JP", - "zh-CN", - "pt-BR", - "fr-FR", - "fr-CA", - "es-US", - "da-DK", - "es-ES", - "fi-FI", - "sv-SE", - "nb-NO", - "pt-PT", - "nl-NL", - "it-IT", - "ru-RU", - "en-IN", - "de-CH", - "en-NZ", - "es-MX", - "en-AU", - "zh-Hant", - "ko-KR", - "en-DE" + "CALLBACK", + "URL" ] - }, - "use_browser_language": { - "type": "boolean", - "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.", - "nullable": true } } }, - "ImportUsersResponse": { + "UpdateCustomActionRequest": { "type": "object", "properties": { - "users_added": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ImportUserType" - }, - "nullable": true + "action_details": { + "description": "Action details includes `Type` and Configuration for Custom Actions, either Callback or URL is required.", + "allOf": [ + { + "$ref": "#/components/schemas/Action_Details_Input" + } + ] }, - "users_updated": { + "associate_metadata": { + "description": "Metadata objects to which the custom action needs to be associated.", "type": "array", "items": { - "$ref": "#/components/schemas/ImportUserType" - }, - "nullable": true + "$ref": "#/components/schemas/Associate_Metadata_Input" + } }, - "users_deleted": { + "default_action_config": { + "description": "Default Custom action configuration. This includes if the custom action available on visualizations and Answers. By default, a custom action is added to all visualizations and Answers.", + "allOf": [ + { + "$ref": "#/components/schemas/Default_Action_Config_Input" + } + ] + }, + "group_identifiers": { + "description": "Unique ID or name of the groups that can view and access the custom action.", "type": "array", "items": { - "$ref": "#/components/schemas/ImportUserType" - }, - "nullable": true + "type": "string" + } + }, + "name": { + "description": "Name of the custom action. The custom action name must be unique.", + "type": "string" + }, + "operation": { + "description": "Type of update operation. Default operation type is ADD", + "default": "ADD", + "type": "string", + "enum": [ + "ADD", + "REMOVE" + ] } } }, - "ImportUserType": { + "CreateCalendarRequest": { "type": "object", - "required": [ - "name" - ], "properties": { - "id": { + "name": { + "description": "Name of the custom calendar.", + "type": "string" + }, + "creation_method": { + "description": "Type of create operation.", "type": "string", - "description": "Unique identifier of the user.", - "nullable": true + "enum": [ + "FROM_INPUT_PARAMS", + "FROM_EXISTING_TABLE" + ] }, - "name": { + "table_reference": { + "description": "Table reference containing connection identifier and table details in this format: `{\"connection_identifier\":\"conn1\", \"database_name\":\"db1\", \"schema_name\":\"sc1\", \"table_name\":\"tb1\"}`. The given table will be created if `creation_method` is set as `FROM_INPUT_PARAMS`.", + "allOf": [ + { + "$ref": "#/components/schemas/ExternalTableInput" + } + ] + }, + "start_date": { + "description": "Start date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `creation_method` is set as `FROM_INPUT_PARAMS`.", + "type": "string" + }, + "end_date": { + "description": "End date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `creation_method` is set as `FROM_INPUT_PARAMS`.", + "type": "string" + }, + "calendar_type": { + "description": "Type of the calendar.", + "default": "MONTH_OFFSET", "type": "string", - "description": "Name of the user." + "enum": [ + "MONTH_OFFSET", + "FOUR_FOUR_FIVE", + "FOUR_FIVE_FOUR", + "FIVE_FOUR_FOUR" + ] + }, + "month_offset": { + "description": "Specify the month in which the fiscal or custom calendar year should start. For example, if you set `month_offset` to \"April\", the custom calendar will treat \"April\" as the first month of the year, and the related attributes such as quarters and start date will be based on this offset. The default value is `January`, which represents the standard calendar year (January to December).", + "default": "January", + "type": "string", + "enum": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] + }, + "start_day_of_week": { + "description": "Specify the starting day of the week.", + "default": "Sunday", + "type": "string", + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] + }, + "quarter_name_prefix": { + "description": "Prefix to add before the quarter.", + "default": "", + "type": "string" + }, + "year_name_prefix": { + "description": "Prefix to add before the year.", + "default": "", + "type": "string" } - } + }, + "required": [ + "name", + "creation_method", + "table_reference" + ] }, - "EventChannelConfigInput": { + "GenerateCSVRequest": { "type": "object", - "required": [ - "event_type", - "channels" - ], "properties": { - "event_type": { + "start_date": { + "description": "Start date for the calendar in `MM/dd/yyyy` format.", + "type": "string" + }, + "end_date": { + "description": "End date for the calendar in `MM/dd/yyyy` format.", + "type": "string" + }, + "calendar_type": { + "description": "Type of the calendar.", + "default": "MONTH_OFFSET", "type": "string", "enum": [ - "LIVEBOARD_SCHEDULE" - ], - "description": "Type of event for which communication channels are configured" + "MONTH_OFFSET", + "FOUR_FOUR_FIVE", + "FOUR_FIVE_FOUR", + "FIVE_FOUR_FOUR" + ] }, - "channels": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "EMAIL", - "WEBHOOK" - ] - }, - "description": "Communication channels enabled for this event type. Empty array disables all channels for this event." + "month_offset": { + "description": "Month offset to start calendar from `January`.", + "default": "January", + "type": "string", + "enum": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] + }, + "start_day_of_week": { + "description": "Specify the starting day of the week.", + "default": "Sunday", + "type": "string", + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] + }, + "quarter_name_prefix": { + "description": "Prefix to add before the quarter.", + "type": "string" + }, + "year_name_prefix": { + "description": "Prefix to add before the year.", + "type": "string" + } + }, + "required": [ + "start_date", + "end_date" + ] + }, + "SearchCalendarsRequest": { + "type": "object", + "properties": { + "connection_identifier": { + "description": "Unique ID or name of the connection.", + "type": "string" + }, + "name_pattern": { + "description": "Pattern to match for calendar names (use '%' for wildcard match).", + "type": "string" + }, + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included.", + "default": 10, + "type": "integer", + "format": "int32" + }, + "sort_options": { + "description": "Sort options.", + "allOf": [ + { + "$ref": "#/components/schemas/SortOption" + } + ] } } }, - "OrgChannelConfigInput": { + "UpdateCalendarRequest": { "type": "object", - "required": [ - "org_identifier" - ], "properties": { - "org_identifier": { + "update_method": { + "description": "Type of update operation.", + "default": "FROM_INPUT_PARAMS", "type": "string", - "description": "Unique identifier or name of the org" + "enum": [ + "FROM_INPUT_PARAMS", + "FROM_EXISTING_TABLE" + ] }, - "operation": { + "table_reference": { + "description": "Table reference containing connection identifier and table details in this format: `{\"connection_identifier\":\"conn1\", \"database_name\":\"db1\", \"schema_name\":\"sc1\", \"table_name\":\"tb1\"}`.", + "allOf": [ + { + "$ref": "#/components/schemas/ExternalTableInput" + } + ] + }, + "start_date": { + "description": "Start date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `update_method` is set as `FROM_INPUT_PARAMS`.", + "type": "string" + }, + "end_date": { + "description": "End date for the calendar in `MM/dd/yyyy` format. This parameter is mandatory if `update_method` is set as `FROM_INPUT_PARAMS`.", + "type": "string" + }, + "calendar_type": { + "description": "Type of the calendar.", + "default": "MONTH_OFFSET", "type": "string", "enum": [ - "REPLACE", - "RESET" - ], - "default": "REPLACE", - "description": "Operation to perform. REPLACE: Update preferences (default). RESET: Remove org-specific configurations, causing fallback to cluster-level preferences.", - "nullable": true + "MONTH_OFFSET", + "FOUR_FOUR_FIVE", + "FOUR_FIVE_FOUR", + "FIVE_FOUR_FOUR" + ] }, - "preferences": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EventChannelConfigInput" - }, - "description": "Event-specific configurations. Required for REPLACE operation.", - "nullable": true + "month_offset": { + "description": "Specify the month in which the fiscal or custom calendar year should start. For example, if you set `month_offset` to \"April\", the custom calendar will treat \"April\" as the first month of the year, and the related attributes such as quarters and start date will be based on this offset. The default value is `January`, which represents the standard calendar year (January to December).", + "default": "January", + "type": "string", + "enum": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] }, - "reset_events": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ] - }, - "description": "Event types to reset. Required for RESET operation. Org-specific configurations for these events will be removed, causing fallback to cluster-level preferences.", - "nullable": true + "start_day_of_week": { + "description": "Specify the starting day of the week", + "default": "Sunday", + "type": "string", + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] + }, + "quarter_name_prefix": { + "description": "Prefix to add before the quarter.", + "default": "", + "type": "string" + }, + "year_name_prefix": { + "description": "Prefix to add before the year.", + "default": "", + "type": "string" + } + }, + "required": [ + "table_reference" + ] + }, + "FetchAnswerDataRequest": { + "type": "object", + "properties": { + "metadata_identifier": { + "description": "GUID or name of the Answer.", + "type": "string" + }, + "data_format": { + "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", + "default": "COMPACT", + "type": "string", + "enum": [ + "FULL", + "COMPACT" + ] + }, + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records to include in a batch.", + "default": 10, + "type": "integer", + "format": "int32" + }, + "runtime_filter": { + "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", + "type": "object" + }, + "runtime_sort": { + "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", + "type": "object" + }, + "runtime_param_override": { + "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", + "type": "object" } - } + }, + "required": [ + "metadata_identifier" + ] }, - "SecuritySettingsClusterPreferencesInput": { + "FetchLiveboardDataRequest": { "type": "object", "properties": { - "enable_partitioned_cookies": { - "type": "boolean", - "description": "Support embedded access when third-party cookies are blocked.", - "nullable": true + "metadata_identifier": { + "description": "GUID or name of the Liveboard.", + "type": "string" }, - "cors_whitelisted_urls": { + "visualization_identifiers": { + "description": "GUIDs or names of the visualizations on the Liveboard.", "type": "array", "items": { "type": "string" - }, - "description": "Allowed origins for CORS.", - "nullable": true + } }, - "csp_settings": { - "$ref": "#/components/schemas/CspSettingsInput", - "description": "CSP (Content Security Policy) settings.", - "nullable": true + "transient_content": { + "description": "Transient content of the Liveboard.", + "type": "string" }, - "saml_redirect_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed redirect hosts for SAML login.", - "nullable": true + "data_format": { + "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", + "default": "COMPACT", + "type": "string", + "enum": [ + "FULL", + "COMPACT" + ] }, - "non_embed_access": { - "$ref": "#/components/schemas/ClusterNonEmbedAccessInput", - "description": "Non-embed access configuration at cluster level.", - "nullable": true + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records to include in a batch.", + "default": 10, + "type": "integer", + "format": "int32" + }, + "runtime_filter": { + "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", + "type": "object" + }, + "runtime_sort": { + "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", + "type": "object" + }, + "runtime_param_override": { + "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", + "type": "object" } }, - "description": "Input for cluster-level security preferences configuration." + "required": [ + "metadata_identifier" + ] }, - "CspSettingsInput": { + "SearchDataRequest": { "type": "object", "properties": { - "connect_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for connect-src directive.", - "nullable": true + "query_string": { + "description": "Query string with search tokens. For example, [Sales][Region]. See [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_data_api)", + "type": "string" }, - "font_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for font-src directive.", - "nullable": true + "logical_table_identifier": { + "description": "GUID of the data source object, such as a Worksheet, View, or Table. You can find the GUID of a data object from the UI or via API. See [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_search_query) for more details.", + "type": "string" }, - "visual_embed_hosts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed hosts for visual embed (frame-ancestors directive).", - "nullable": true + "data_format": { + "description": "JSON output in compact or full format. The FULL option is available in 9.12.5.cl or later.", + "default": "COMPACT", + "type": "string", + "enum": [ + "FULL", + "COMPACT" + ] }, - "iframe_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for frame-src directive.", - "nullable": true + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" }, - "img_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for img-src directive.", - "nullable": true + "record_size": { + "description": "The number of records to include in a batch.", + "default": 10, + "type": "integer", + "format": "int32" }, - "script_src_urls": { - "$ref": "#/components/schemas/ScriptSrcUrlsInput", - "description": "Script-src settings including URLs and enabled flag.", - "nullable": true + "runtime_filter": { + "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"item type\", \"op1\": \"EQ\", \"val1\": \"Bags\"} . You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2, and col3, op3, val3. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", + "type": "object" }, - "style_src_urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for style-src directive.", - "nullable": true + "runtime_sort": { + "description": "JSON object representing columns to sort data at runtime. For example, {\"sortCol1\": \"sales\", \"asc1\": true} . You can add multiple keys by incrementing the number at the end, for example, sortCol1, asc2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", + "type": "object" + }, + "runtime_param_override": { + "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", + "type": "object" } }, - "description": "Input for CSP (Content Security Policy) settings." + "required": [ + "query_string", + "logical_table_identifier" + ] }, - "ScriptSrcUrlsInput": { + "CreateEmailCustomizationRequest": { "type": "object", "properties": { - "enabled": { - "type": "boolean", - "description": "Whether script-src customization is enabled.", - "nullable": true + "template_properties": { + "description": "Email customization configuration as key value pair", + "allOf": [ + { + "$ref": "#/components/schemas/Template_Properties_Input_Create" + } + ] }, - "urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allowed URLs for script-src directive. Can only be set if enabled is true.", - "nullable": true + "org_identifier": { + "description": "Unique ID or name of org
Version: 10.12.0.cl or later", + "type": "string" } }, - "description": "Input for script-src CSP settings." + "required": [ + "template_properties" + ] }, - "ClusterNonEmbedAccessInput": { + "DeleteOrgEmailCustomizationRequest": { "type": "object", "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", - "nullable": true - }, - "groups_identifiers_with_access": { + "org_identifiers": { + "description": "Unique identifier of the organization.", "type": "array", "items": { "type": "string" - }, - "description": "Group identifiers that are allowed non-embed full app access.\nCan only be set when orgs feature is disabled and block_full_app_access is true.", - "nullable": true + } } - }, - "description": "Input for cluster-level non-embed access configuration." + } }, - "SecuritySettingsOrgPreferencesInput": { + "SearchEmailCustomizationRequest": { "type": "object", - "required": [ - "org_identifier" - ], "properties": { - "org_identifier": { - "type": "string", - "description": "Unique identifier or name of the org" - }, - "cors_whitelisted_urls": { + "org_identifiers": { + "description": "Unique ID or name of org
Version: 10.12.0.cl or later", "type": "array", "items": { "type": "string" - }, - "description": "Allowed origins for CORS for this org.", - "nullable": true + } + } + } + }, + "UpdateEmailCustomizationRequest": { + "type": "object", + "properties": { + "template_properties": { + "description": "Email customization configuration as key value pair", + "allOf": [ + { + "$ref": "#/components/schemas/Template_Properties_Input_Create" + } + ] }, - "non_embed_access": { - "$ref": "#/components/schemas/OrgNonEmbedAccessInput", - "description": "Non-embed access configuration for this org.", - "nullable": true + "org_identifier": { + "description": "Unique ID or name of org", + "type": "string" } }, - "description": "Input for org-level security preferences configuration.\nNote: cross-org operations are not supported currently." + "required": [ + "template_properties" + ] }, - "OrgNonEmbedAccessInput": { + "CreateUserGroupRequest": { "type": "object", "properties": { - "block_full_app_access": { - "type": "boolean", - "description": "Block full application access for non-embedded usage.", - "nullable": true + "name": { + "description": "Name of the group. The group name must be unique.", + "type": "string" + }, + "display_name": { + "description": "Display name for the group.", + "type": "string" + }, + "default_liveboard_identifiers": { + "description": "GUID of the Liveboards to assign as default Liveboards to the users in the group.", + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "description": "Description of the group", + "type": "string" + }, + "privileges": { + "description": "Privileges to assign to the group", + "type": "array", + "items": { + "type": "string", + "enum": [ + "ADMINISTRATION", + "AUTHORING", + "USERDATAUPLOADING", + "DATADOWNLOADING", + "USERMANAGEMENT", + "DATAMANAGEMENT", + "SHAREWITHALL", + "JOBSCHEDULING", + "A3ANALYSIS", + "EXPERIMENTALFEATUREPRIVILEGE", + "BYPASSRLS", + "RANALYSIS", + "DEVELOPER", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "SYNCMANAGEMENT", + "CAN_CREATE_CATALOG", + "DISABLE_PINBOARD_CREATION", + "LIVEBOARD_VERIFIER", + "PREVIEW_THOUGHTSPOT_SAGE", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "ALLOW_NON_EMBED_FULL_APP_ACCESS", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "CAN_MODIFY_FOLDERS", + "CAN_MANAGE_VARIABLES", + "CAN_VIEW_FOLDERS", + "PREVIEW_DOCUMENT_SEARCH", + "CAN_SETUP_VERSION_CONTROL", + "CAN_DOWNLOAD_VISUALS", + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" + ] + } + }, + "sub_group_identifiers": { + "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "description": "Group type.", + "default": "LOCAL_GROUP", + "type": "string", + "enum": [ + "LOCAL_GROUP", + "LDAP_GROUP", + "TEAM_GROUP", + "TENANT_GROUP" + ] }, - "groups_identifiers_with_access": { + "user_identifiers": { + "description": "GUID or name of the users to assign to the group.", "type": "array", "items": { "type": "string" - }, - "description": "Group identifiers that are allowed non-embed full app access. Can only be set if block_full_app_access is true.", - "nullable": true + } + }, + "visibility": { + "description": "Visibility of the group. To make a group visible to other users and groups,\nset the visibility to SHAREABLE.", + "default": "SHARABLE", + "type": "string", + "enum": [ + "SHARABLE", + "NON_SHARABLE" + ] + }, + "role_identifiers": { + "description": "Role identifiers of the roles that should be assigned to the group.", + "type": "array", + "items": { + "type": "string" + } } }, - "description": "Input for org-level non-embed access configuration." + "required": [ + "name", + "display_name" + ] }, - "TagMetadataTypeInput": { + "ImportUserGroupsRequest": { "type": "object", - "required": [ - "identifier" - ], "properties": { - "type": { - "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "CONNECTION" - ], - "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n 1. LIVEBOARD\n 2. ANSWERS\n 3. LOGICAL_TABLE for any data object such as table, worksheet or view.\n 4. LOGICAL_COLUMN for a column of any data object such as tables, worksheets or views.", + "groups": { + "description": "Details of groups which are to be imported", + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupsImportListInput" + } + }, + "delete_unspecified_groups": { + "description": "If set to true, removes groups that are not specified in the API request.", + "default": false, + "type": "boolean", "nullable": true }, - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata." + "dry_run": { + "description": "If true, the API performs a test operation and returns user IDs whose\ndata will be edited after the import.", + "default": true, + "type": "boolean", + "nullable": true } } }, - "GroupsImportListInput": { + "SearchUserGroupsRequest": { "type": "object", - "required": [ - "display_name", - "group_identifier" - ], "properties": { + "default_liveboard_identifiers": { + "description": "GUID of Liveboards that are assigned as default Liveboards to the users in the group.", + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "description": "Description of the group", + "type": "string" + }, "display_name": { - "type": "string", - "description": "Unique display name of the group." + "description": "Display name of the group", + "type": "string" + }, + "name_pattern": { + "description": "A pattern to match case-insensitive name of the Group object.", + "type": "string" }, "group_identifier": { - "type": "string", - "description": "Unique ID or name of the group." + "description": "GUID or name of the group", + "type": "string" }, - "default_liveboard_identifiers": { + "org_identifiers": { + "description": "ID or name of the Org to which the group belongs", "type": "array", "items": { "type": "string" - }, - "description": "Unique ID of Liveboards that will be assigned as default Liveboards to the users in the group.", - "nullable": true - }, - "description": { - "type": "string", - "description": "Description of the group.", - "nullable": true + } }, "privileges": { + "description": "Privileges assigned to the group.", "type": "array", "items": { "type": "string", @@ -22864,981 +22857,1245 @@ "DISABLE_PINBOARD_CREATION", "LIVEBOARD_VERIFIER", "PREVIEW_THOUGHTSPOT_SAGE", + "APPLICATION_ADMINISTRATION", + "SYSTEM_INFO_ADMINISTRATION", + "ORG_ADMINISTRATION", + "ROLE_ADMINISTRATION", + "AUTHENTICATION_ADMINISTRATION", + "BILLING_INFO_ADMINISTRATION", + "CAN_MANAGE_CUSTOM_CALENDAR", + "CAN_CREATE_OR_EDIT_CONNECTIONS", + "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", "CAN_MANAGE_VERSION_CONTROL", "THIRDPARTY_ANALYSIS", "ALLOW_NON_EMBED_FULL_APP_ACCESS", "CAN_ACCESS_ANALYST_STUDIO", "CAN_MANAGE_ANALYST_STUDIO", + "PREVIEW_DOCUMENT_SEARCH", "CAN_MODIFY_FOLDERS", "CAN_MANAGE_VARIABLES", "CAN_VIEW_FOLDERS", - "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", + "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", "CAN_DOWNLOAD_DETAILED_DATA", "CAN_USE_SPOTTER" ] - }, - "description": "Privileges that will be assigned to the group.", - "nullable": true + } }, "sub_group_identifiers": { + "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", "type": "array", "items": { "type": "string" - }, - "description": "Unique ID or name of the sub-groups to add to the group.", - "nullable": true + } }, "type": { + "description": "Group type.", "type": "string", "enum": [ "LOCAL_GROUP", "LDAP_GROUP", "TEAM_GROUP", "TENANT_GROUP" - ], - "description": "Type of the group.", - "nullable": true + ] }, "user_identifiers": { + "description": "GUID or name of the users assigned to the group.", "type": "array", "items": { "type": "string" - }, - "description": "Unique ID or name of the users to assign to the group.", - "nullable": true + } }, "visibility": { + "description": "Visibility of the group. To make a group visible to other users and groups,\nset the visibility to SHAREABLE.", "type": "string", "enum": [ "SHARABLE", "NON_SHARABLE" - ], - "description": "Visibility of the group. The SHARABLE makes a group visible to other users and groups, and thus allows them to share objects.", - "nullable": true - } - } - }, - "ImportUserGroupsResponse": { - "type": "object", - "required": [ - "groups_added", - "groups_deleted", - "groups_updated" - ], - "properties": { - "groups_added": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UserGroup" - }, - "description": "The groups which are added into the system." - }, - "groups_deleted": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UserGroup" - }, - "description": "The groups which are deleted from the system." + ] }, - "groups_updated": { + "role_identifiers": { + "description": "Filter groups with a list of Roles assigned to a group", "type": "array", "items": { - "$ref": "#/components/schemas/UserGroup" - }, - "description": "The groups which are updated in the system." - } - } - }, - "Export_Options": { - "type": "object", - "properties": { - "include_obj_id_ref": { - "type": "boolean", - "default": false, - "description": "Boolean Flag to export Object ID of referenced object. This flag will work only after the Object ID feature has been enabled. Please contact support to enable the feature.", - "nullable": true + "type": "string" + } }, - "include_guid": { - "type": "boolean", - "default": true, - "description": "Boolean flag to export guid of the object. This flag will work only after the Object ID feature has been enabled. Please contact support to enable the feature.", - "nullable": true + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" }, - "include_obj_id": { - "type": "boolean", - "default": false, - "description": "Boolean flag to export Object ID of the object. This flag will work only after the Object ID feature has been enabled. Please contact support to enable the feature.", - "nullable": true + "record_size": { + "description": "The number of records that should be included.", + "default": 10, + "type": "integer", + "format": "int32" }, - "export_with_associated_feedbacks": { - "type": "boolean", - "default": false, - "description": "Boolean flag indicating whether to export associated feedbacks of the object. This will only be respected when the object can have feedbacks.
Version: 10.7.0.cl or later", - "nullable": true + "sort_options": { + "description": "Sort options to filter group details.", + "allOf": [ + { + "$ref": "#/components/schemas/SortOptions" + } + ] }, - "export_column_security_rules": { + "include_users": { + "description": "
Version: 10.10.0.cl or later
\n\nDefine Parameter to consider if the users should be included in group search response.", + "default": true, "type": "boolean", - "default": false, - "description": "Boolean flag indicating whether to export column security rules of the object. This will only be respected when the object can have column security rules and export_associated is true.
Beta Version: 10.12.0.cl or later", "nullable": true }, - "export_with_column_aliases": { + "include_sub_groups": { + "description": "
Version: 10.10.0.cl or later
\n\nDefine Parameter to consider if the sub groups should be included in group search response.", + "default": true, "type": "boolean", - "default": false, - "description": "Boolean flag indicating whether to export column aliases of the model. This will only be respected when the object can have column aliases.
Beta Version: 10.13.0.cl or later", - "nullable": true - } - }, - "description": "Flags to specify additional options for export. This will only be active when UserDefinedId in TML is enabled." - }, - "ResponseCopyObject": { - "type": "object", - "properties": { - "metadata_id": { - "type": "string", - "description": "The unique identifier of the object.", "nullable": true } } }, - "ResponseWorksheetToModelConversion": { + "UpdateUserGroupRequest": { "type": "object", - "required": [ - "name", - "success_count", - "failure_count", - "incomplete_count", - "post_upgrade_failed_count", - "total_time_in_millis", - "successful_entities", - "failed_entities", - "incomplete_entities", - "post_upgrade_failed_entities" - ], "properties": { "name": { + "description": "Name of the group to modify.", "type": "string" }, - "success_count": { - "type": "integer", - "format": "int32", - "description": "The number of worksheets successfully converted to models." + "default_liveboard_identifiers": { + "description": "ID of the Liveboards to be assigned as default Liveboards to the users in the group.", + "type": "array", + "items": { + "type": "string" + } }, - "failure_count": { - "type": "integer", - "format": "int32", - "description": "The number of worksheets that failed to convert." + "description": { + "description": "Description for the group.", + "type": "string" }, - "incomplete_count": { - "type": "integer", - "format": "int32", - "description": "The number of worksheets that were incomplete during the conversion process." + "display_name": { + "description": "Display name of the group.", + "type": "string" }, - "post_upgrade_failed_count": { - "type": "integer", - "format": "int32", - "description": "The number of worksheets that failed after an upgrade during the conversion process." + "privileges": { + "description": "Privileges to assign to the group.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "ADMINISTRATION", + "AUTHORING", + "USERDATAUPLOADING", + "DATADOWNLOADING", + "USERMANAGEMENT", + "DATAMANAGEMENT", + "SHAREWITHALL", + "JOBSCHEDULING", + "A3ANALYSIS", + "EXPERIMENTALFEATUREPRIVILEGE", + "BYPASSRLS", + "RANALYSIS", + "DEVELOPER", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "SYNCMANAGEMENT", + "CAN_CREATE_CATALOG", + "DISABLE_PINBOARD_CREATION", + "LIVEBOARD_VERIFIER", + "PREVIEW_THOUGHTSPOT_SAGE", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "ALLOW_NON_EMBED_FULL_APP_ACCESS", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "CAN_MODIFY_FOLDERS", + "CAN_MANAGE_VARIABLES", + "CAN_VIEW_FOLDERS", + "PREVIEW_DOCUMENT_SEARCH", + "CAN_SETUP_VERSION_CONTROL", + "CAN_DOWNLOAD_VISUALS", + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" + ] + } }, - "total_time_in_millis": { - "type": "integer", - "format": "int32", - "description": "The total time taken to complete the conversion process in milliseconds." + "sub_group_identifiers": { + "description": "GUID or name of the sub groups. A subgroup is a group assigned to a parent group.", + "type": "array", + "items": { + "type": "string" + } }, - "successful_entities": { - "$ref": "#/components/schemas/ResponseSuccessfulEntities", - "description": "List of worksheets successfully converted to models." + "type": { + "description": "Type of the group", + "type": "string", + "enum": [ + "LOCAL_GROUP", + "LDAP_GROUP", + "TEAM_GROUP", + "TENANT_GROUP" + ] }, - "failed_entities": { - "$ref": "#/components/schemas/ResponseFailedEntities", - "description": "List of worksheets that failed to convert." + "user_identifiers": { + "description": "GUID or name of the users to assign to the group.", + "type": "array", + "items": { + "type": "string" + } }, - "incomplete_entities": { - "$ref": "#/components/schemas/ResponseIncompleteEntities", - "description": "List of worksheets that were incomplete during the conversion." + "visibility": { + "description": "Visibility of the group. To make a group visible to other users and\ngroups, set the visibility to SHAREABLE.", + "type": "string", + "enum": [ + "SHARABLE", + "NON_SHARABLE" + ] }, - "post_upgrade_failed_entities": { - "$ref": "#/components/schemas/ResponsePostUpgradeFailedEntities", - "description": "List of worksheets that failed after an upgrade during the conversion process." - } - }, - "description": "Name of the conversion process, which involves converting worksheets to models." - }, - "ResponseSuccessfulEntities": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { + "role_identifiers": { + "description": "Role identifiers of the Roles that should be assigned to the group.", "type": "array", "items": { - "$ref": "#/components/schemas/ResponseSuccessfulEntity" + "type": "string" } - } - }, - "description": "Wrapper for the successful entities, as they are inside a 'data' field in the response." - }, - "ResponseSuccessfulEntity": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string" }, - "name": { + "operation": { + "description": "Type of update operation. Default operation type is REPLACE", + "default": "REPLACE", "type": "string", - "description": "Name of the worksheet." + "enum": [ + "ADD", + "REMOVE", + "REPLACE" + ] } - }, - "description": "Unique ID of the worksheet." + } }, - "ResponseFailedEntities": { + "SearchChannelHistoryRequest": { "type": "object", - "required": [ - "data" - ], "properties": { - "data": { + "channel_type": { + "description": "Type of communication channel to search history for.", + "type": "string", + "enum": [ + "WEBHOOK" + ] + }, + "job_ids": { + "description": "List of job execution record IDs to retrieve.", "type": "array", "items": { - "$ref": "#/components/schemas/ResponseFailedEntity" + "type": "string" } - } - }, - "description": "Wrapper for the failed entities, as they are inside a 'data' field in the response." - }, - "ResponseFailedEntity": { - "type": "object", - "required": [ - "id", - "name", - "error" - ], - "properties": { - "id": { - "type": "string" }, - "name": { - "type": "string", - "description": "Name of the worksheet that failed to convert." + "channel_identifiers": { + "description": "List of channel IDs or names to filter by.", + "type": "array", + "items": { + "type": "string" + } }, - "error": { + "channel_status": { + "description": "Filter by channel delivery status.", "type": "string", - "description": "Error details related to the failed conversion." - } - }, - "description": "Unique ID of the failed worksheet." - }, - "ResponseIncompleteEntities": { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { + "enum": [ + "PENDING", + "RETRY", + "SUCCESS", + "FAILED" + ] + }, + "events": { + "description": "Filter by events that triggered the channel.", "type": "array", "items": { - "$ref": "#/components/schemas/ResponseIncompleteEntity" + "$ref": "#/components/schemas/ChannelHistoryEventInput" } + }, + "start_epoch_time_in_millis": { + "description": "Filter records created on or after this time (epoch milliseconds).", + "type": "number", + "format": "float" } }, - "description": "Wrapper for the incomplete entities, as they are inside a 'data' field in the response." + "required": [ + "channel_type" + ] }, - "ResponseIncompleteEntity": { + "FetchLogsRequest": { "type": "object", - "required": [ - "id", - "name", - "error" - ], "properties": { - "id": { - "type": "string" - }, - "name": { + "log_type": { + "description": "Name of the log type", "type": "string", - "description": "Name of the incomplete worksheet." + "enum": [ + "SECURITY_AUDIT" + ] }, - "error": { - "type": "string", - "description": "Error details related to the incomplete conversion." + "start_epoch_time_in_millis": { + "description": "Start time in EPOCH format", + "type": "number", + "format": "float" + }, + "end_epoch_time_in_millis": { + "description": "End time in EPOCH format", + "type": "number", + "format": "float" + }, + "get_all_logs": { + "description": "Fetch all the logs. This is available from 9.10.5.cl", + "default": true, + "type": "boolean", + "nullable": true } }, - "description": "Unique ID of the incomplete worksheet." + "required": [ + "log_type" + ] }, - "ResponsePostUpgradeFailedEntities": { + "ConvertWorksheetToModelRequest": { "type": "object", - "required": [ - "data" - ], "properties": { - "data": { + "worksheet_ids": { + "description": "List of Worksheet IDs.", "type": "array", "items": { - "$ref": "#/components/schemas/ResponsePostUpgradeFailedEntity" + "type": "string" } - } - }, - "description": "Wrapper for the post-upgrade failed entities, as they are inside a 'data' field in the response." - }, - "ResponsePostUpgradeFailedEntity": { - "type": "object", - "required": [ - "id", - "name", - "error" - ], - "properties": { - "id": { - "type": "string" }, - "name": { - "type": "string", - "description": "Name of the worksheet that failed post-upgrade." + "exclude_worksheet_ids": { + "description": "List of Worksheet IDs to be excluded.", + "type": "array", + "items": { + "type": "string" + } }, - "error": { - "type": "string", - "description": "Error details related to the post-upgrade failure." + "convert_all": { + "description": "Indicates whether all the worksheet needs to be converted to models.", + "default": false, + "type": "boolean", + "nullable": true + }, + "apply_changes": { + "description": "Indicates whether the changes should be applied to database.", + "default": false, + "type": "boolean", + "nullable": true } - }, - "description": "Unique ID of the worksheet that failed post-upgrade." + } }, - "HeaderUpdateInput": { + "CopyObjectRequest": { "type": "object", - "required": [ - "attributes" - ], "properties": { - "identifier": { - "type": "string", - "description": "Unique ID of a specified type to identify the header.", - "nullable": true + "description": { + "description": "Description of the new object", + "type": "string" }, - "obj_identifier": { - "type": "string", - "description": "Custom object identifier to uniquely identify header.", - "nullable": true + "identifier": { + "description": "GUID of metadata object to be copied (answer id or liveboard id)", + "type": "string" }, - "type": { - "type": "string", - "enum": [ - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "LIVEBOARD", - "ACTION_OBJECT", - "DATA_SOURCE", - "USER", - "USER_GROUP" - ], - "description": "Optional type of the header object.", - "nullable": true + "type": { + "description": "Type of metadata object", + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER" + ] }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/HeaderAttributeInput" - }, - "description": "List of attributes to update" + "title": { + "description": "Title of the new object", + "type": "string" } }, - "description": "Favorite object options." + "required": [ + "identifier" + ] }, - "HeaderAttributeInput": { + "DeleteMetadataRequest": { "type": "object", - "required": [ - "name", - "value" - ], "properties": { - "name": { - "type": "string", - "description": "Attribute name to be updated." + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/DeleteMetadataTypeInput" + } }, - "value": { - "type": "string", - "description": "Attribute's new value." + "delete_disabled_objects": { + "description": "Indicates whether to delete disabled metadata objects.", + "default": false, + "type": "boolean", + "nullable": true } }, - "description": "Attribute to update in a header." + "required": [ + "metadata" + ] }, - "UpdateObjIdInput": { + "ExportMetadataTMLRequest": { "type": "object", - "required": [ - "new_obj_id" - ], "properties": { - "metadata_identifier": { - "type": "string", - "description": "GUID or name of the metadata object.", + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExportMetadataTypeInput" + } + }, + "export_associated": { + "description": "Indicates whether to export associated metadata objects of specified metadata objects.", + "default": false, + "type": "boolean", "nullable": true }, - "type": { + "export_fqn": { + "description": "Adds FQNs of the referenced objects. For example, if you are exporting a Liveboard and its associated objects,\nthe API returns the Liveboard TML data with the FQNs of the referenced worksheet.\nIf the exported TML data includes FQNs, you don't need to manually add FQNs of the referenced objects during TML import.", + "default": false, + "type": "boolean", + "nullable": true + }, + "edoc_format": { + "description": "TML EDOC content format.\n\n**Note: exporting in YAML format currently requires manual formatting of the output. For more details on the workaround, please click [here](https://developers.thoughtspot.com/docs/known-issues#_version_9_12_0_cl)**", + "default": "JSON", "type": "string", "enum": [ - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "LIVEBOARD", - "ACTION_OBJECT", - "DATA_SOURCE", - "USER", - "USER_GROUP" - ], - "description": "Type of metadata. Required if metadata_identifier is name of the object.", - "nullable": true + "JSON", + "YAML" + ] }, - "current_obj_id": { + "export_schema_version": { + "description": "Indicates whether to export worksheet TML in DEFAULT or V1 or V2 version.", + "default": "DEFAULT", "type": "string", - "description": "Current object ID value.", + "enum": [ + "DEFAULT", + "V1", + "V2" + ] + }, + "export_dependent": { + "description": "Indicates whether to export table while exporting connection.", + "default": false, + "type": "boolean", "nullable": true }, - "new_obj_id": { - "type": "string", - "description": "New object ID value to set." + "export_connection_as_dependent": { + "description": "Indicates whether to export connection as dependent while exporting table/worksheet/answer/liveboard.\nThis will only be active when export_associated is true.", + "default": false, + "type": "boolean", + "nullable": true + }, + "all_orgs_override": { + "description": "Indicates whether to export is happening from all orgs context.", + "default": false, + "type": "boolean", + "nullable": true + }, + "export_options": { + "description": "Flags to specify additional options for export.
Version: 10.6.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/Export_Options" + } + ] } }, - "description": "Input for updating object ID of a metadata object." + "required": [ + "metadata" + ] }, - "ExportMetadataTypeInput": { + "ExportMetadataTMLBatchedRequest": { "type": "object", "properties": { - "type": { + "metadata_type": { + "description": "Type of metadata object to export, can be one of USER | ROLE | USER_GROUP", "type": "string", "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "CONNECTION", - "CUSTOM_ACTION", "USER", "USER_GROUP", - "ROLE", - "FEEDBACK" - ], - "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", - "nullable": true + "ROLE" + ] }, - "identifier": { + "batch_offset": { + "description": "Indicates the position within the complete set from where the API should begin returning objects.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "batch_size": { + "description": "Determines the number of objects or items to be retrieved in a single request.", + "default": 20, + "type": "integer", + "format": "int32" + }, + "edoc_format": { + "description": "TML EDOC content format.", + "default": "JSON", "type": "string", - "description": "Unique ID or name of the metadata object. Not required if the metadata type is ANSWER when session_id and generation_number is set.", + "enum": [ + "JSON", + "YAML" + ] + }, + "export_dependent": { + "description": "Indicates whether to export dependent metadata objects of specified metadata objects.", + "default": false, + "type": "boolean", "nullable": true }, - "session_identifier": { - "type": "string", - "description": "Unique ID of the Answer session. Required if the metadata type is ANSWER and identifier is not set.", + "all_orgs_override": { + "description": "Indicates whether to export is happening from all orgs context.", + "default": false, + "type": "boolean", "nullable": true + } + }, + "required": [ + "metadata_type" + ] + }, + "FetchAnswerSqlQueryRequest": { + "type": "object", + "properties": { + "metadata_identifier": { + "description": "ID or name of an Answer.", + "type": "string" + } + }, + "required": [ + "metadata_identifier" + ] + }, + "FetchAsyncImportTaskStatusRequest": { + "type": "object", + "properties": { + "task_ids": { + "description": "List of task IDs to fetch status for.", + "type": "array", + "items": { + "type": "string" + } }, - "generation_number": { + "task_status": { + "description": "List of task statuses to filter on. Valid values: [IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED]", + "type": "array", + "items": { + "type": "string", + "enum": [ + "COMPLETED", + "IN_QUEUE", + "IN_PROGRESS", + "FAILED" + ] + } + }, + "author_identifier": { + "description": "Author GUID or name of async import tasks to filter on.", + "type": "string" + }, + "record_offset": { + "description": "The offset point, starting from where the task status should be included in the response.", + "default": 0, "type": "integer", - "format": "int32", - "description": "Generation Number of the Answer session. Required if the metadata type is ANSWER and identifier is not set.", + "format": "int32" + }, + "record_size": { + "description": "The number of task statuses that should be included in the response starting from offset position.", + "default": 5, + "type": "integer", + "format": "int32" + }, + "include_import_response": { + "description": "Boolean flag to specify whether to include import response in the task status objects.", + "default": false, + "type": "boolean", "nullable": true } - }, - "description": "MetadataType InputType used in Export MetadataType API" + } }, - "DeleteMetadataTypeInput": { + "FetchLiveboardSqlQueryRequest": { "type": "object", + "properties": { + "metadata_identifier": { + "description": "ID or name of the Liveboard.", + "type": "string" + }, + "visualization_identifiers": { + "description": "Unique ID or name of visualizations.", + "type": "array", + "items": { + "type": "string" + } + } + }, "required": [ - "identifier" - ], + "metadata_identifier" + ] + }, + "ImportMetadataTMLRequest": { + "type": "object", "properties": { - "type": { + "metadata_tmls": { + "description": "Details of TML objects.\n\n**Note: importing TML in YAML format, when coming directly from our Playground, is currently requires manual formatting. For more details on the workaround, please click [here](https://developers.thoughtspot.com/docs/known-issues#_version_9_12_0_cl)**", + "type": "array", + "items": { + "type": "string" + } + }, + "import_policy": { + "description": "Specifies the import policy for the TML import.", + "default": "PARTIAL", "type": "string", "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "LOGICAL_RELATIONSHIP" - ], - "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "PARTIAL", + "ALL_OR_NONE", + "VALIDATE_ONLY", + "PARTIAL_OBJECT" + ] + }, + "create_new": { + "description": "If selected, creates TML objects with new GUIDs.", + "default": false, + "type": "boolean", "nullable": true }, - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata object." + "all_orgs_override": { + "description": "If import is happening from all orgs context.", + "default": false, + "type": "boolean", + "nullable": true + }, + "skip_diff_check": { + "description": "
Version: 10.6.0.cl or later
\n\nBoolean Flag to skip TML diff check before processing object TMLs.", + "default": false, + "type": "boolean", + "nullable": true + }, + "enable_large_metadata_validation": { + "description": "
Version: 10.5.0.cl or later
\n\nBoolean to indicate if the large metadata validation should be enabled.", + "default": false, + "type": "boolean", + "nullable": true } }, - "description": "MetadataType InputType used in Delete MetadataType API" + "required": [ + "metadata_tmls" + ] }, - "PublishMetadataListItem": { + "ImportMetadataTMLAsyncRequest": { "type": "object", - "required": [ - "identifier" - ], "properties": { - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata." + "metadata_tmls": { + "description": "Details of TML objects.", + "type": "array", + "items": { + "type": "string" + } }, - "type": { + "create_new": { + "description": "If selected, creates TML objects with new GUIDs.", + "default": false, + "type": "boolean", + "nullable": true + }, + "all_orgs_override": { + "description": "If import is happening from all orgs context.", + "default": false, + "type": "boolean", + "nullable": true + }, + "import_policy": { + "description": "
Version: 10.5.0.cl or later
\n\nPolicy to be followed while importing the TML. Valid values are [PARTIAL_OBJECT, PARTIAL, VALIDATE_ONLY, ALL_OR_NONE]", + "default": "PARTIAL_OBJECT", "type": "string", "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE" - ], - "description": "Type of metadata. Required if identifier is name.", + "PARTIAL", + "ALL_OR_NONE", + "VALIDATE_ONLY", + "PARTIAL_OBJECT" + ] + }, + "skip_diff_check": { + "description": "
Version: 10.6.0.cl or later
\n\nBoolean Flag to skip TML diff check before processing object TMLs.", + "default": false, + "type": "boolean", + "nullable": true + }, + "enable_large_metadata_validation": { + "description": "
Version: 10.5.0.cl or later
\n\nBoolean to indicate if the large metadata validation should be enabled.", + "default": false, + "type": "boolean", "nullable": true } - } + }, + "required": [ + "metadata_tmls" + ] }, - "AuthorMetadataTypeInput": { + "ParameterizeMetadataRequest": { "type": "object", - "required": [ - "identifier" - ], "properties": { - "type": { + "metadata_type": { + "description": "Type of metadata object to parameterize.", "type": "string", "enum": [ - "LIVEBOARD", - "ANSWER", "LOGICAL_TABLE", - "CONNECTION" - ], - "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", - "nullable": true + "CONNECTION", + "CONNECTION_CONFIG" + ] }, - "identifier": { + "metadata_identifier": { + "description": "Unique ID or name of the metadata object to parameterize.", + "type": "string" + }, + "field_type": { + "description": "Type of field in the metadata to parameterize.", "type": "string", - "description": "Unique ID or name of the metadata object." + "enum": [ + "ATTRIBUTE", + "CONNECTION_PROPERTY" + ] + }, + "field_name": { + "description": "Name of the field which needs to be parameterized.", + "type": "string" + }, + "variable_identifier": { + "description": "Unique ID or name of the variable to use for parameterization", + "type": "string" } }, - "description": "MetadataType InputType used in Author API's" + "required": [ + "metadata_identifier", + "field_type", + "field_name", + "variable_identifier" + ] }, - "ShareMetadataTypeInput": { + "ParameterizeMetadataFieldsRequest": { "type": "object", - "required": [ - "identifier" - ], "properties": { - "type": { + "metadata_type": { + "description": "Type of metadata object to parameterize.", "type": "string", "enum": [ - "LIVEBOARD", - "ANSWER", "LOGICAL_TABLE", - "LOGICAL_COLUMN", - "CONNECTION" - ], - "description": " Type of metadata.\n \n\nType of metadata. Required if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", - "nullable": true + "CONNECTION", + "CONNECTION_CONFIG" + ] }, - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata object." - } - } - }, - "SharePermissionsInput": { - "type": "object", - "required": [ - "principal", - "share_mode" - ], - "properties": { - "principal": { - "$ref": "#/components/schemas/PrincipalsInput", - "description": "Details of users or groups." + "metadata_identifier": { + "description": "Unique ID or name of the metadata object to parameterize.", + "type": "string" }, - "share_mode": { + "field_type": { + "description": "Type of field in the metadata to parameterize.", "type": "string", "enum": [ - "READ_ONLY", - "MODIFY", - "NO_ACCESS" - ], - "description": "Type of access to the shared object" - } - } - }, - "ColumnSecurityRuleUpdate": { - "type": "object", - "required": [ - "column_identifier" - ], - "properties": { - "column_identifier": { - "type": "string", - "description": "Column identifier (col_id or name)" - }, - "is_unsecured": { - "type": "boolean", - "description": "If true, the column will be marked as unprotected and all groups associated with it will be removed", - "nullable": true + "ATTRIBUTE", + "CONNECTION_PROPERTY" + ] }, - "group_access": { + "field_names": { + "description": "JSON array of field names to parameterize. Example: [schemaName, databaseName, tableName]", "type": "array", "items": { - "$ref": "#/components/schemas/ColumnSecurityRuleGroupOperation" - }, - "description": "Array of group operation objects that specifies the actions for groups to be associated with a column", - "nullable": true + "type": "string" + } + }, + "variable_identifier": { + "description": "Unique ID or name of the variable to use for parameterization of these fields.", + "type": "string" } - } + }, + "required": [ + "metadata_identifier", + "field_type", + "field_names", + "variable_identifier" + ] }, - "ColumnSecurityRuleGroupOperation": { + "SearchMetadataRequest": { "type": "object", - "required": [ - "operation", - "group_identifiers" - ], "properties": { - "operation": { - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "REPLACE" - ], - "description": "Type of operation to be performed on the groups" + "metadata": { + "description": "Metadata objects such as Liveboards, Answers, and Worksheets.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataListItemInput" + } }, - "group_identifiers": { + "permissions": { + "description": "Object permission details to search by.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionInput" + } + }, + "created_by_user_identifiers": { + "description": "GUID or name of user who created the metadata object.", "type": "array", "items": { "type": "string" - }, - "description": "Array of group identifiers (name or GUID) on which the operation will be performed" - } - } - }, - "MetadataObject": { - "type": "object", - "required": [ - "identifier" - ], - "properties": { - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata" + } }, - "type": { + "dependent_object_version": { + "description": "Version of the dependent table of the metadata objects like Worksheets.", + "default": "V1", "type": "string", "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "CUSTOM_ACTION" - ], - "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", + "V1", + "V2" + ] + }, + "exclude_objects": { + "description": "List of metadata objects to exclude from search.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExcludeMetadataListItemInput" + } + }, + "favorite_object_options": { + "description": "Options to sort the API response by objects set as favorites\nfor the logged-in user or the users specified in the API request.", + "allOf": [ + { + "$ref": "#/components/schemas/FavoriteObjectOptionsInput" + } + ] + }, + "include_auto_created_objects": { + "description": "Includes system-generated metadata objects.", + "default": false, + "type": "boolean", "nullable": true - } - } - }, - "CommitResponse": { - "type": "object", - "properties": { - "committer": { - "$ref": "#/components/schemas/CommiterType", - "description": "Repository user using which changes were committed", + }, + "include_dependent_objects": { + "description": "Includes dependents of the metadata object specified in the API request.\nFor example, a worksheet can consist of dependent objects such as Liveboards or Answers.", + "default": false, + "type": "boolean", "nullable": true }, - "author": { - "$ref": "#/components/schemas/AuthorType", - "description": "Thoughtspot user who commits the changes", + "dependent_objects_record_size": { + "description": "The maximum number of dependents to include per metadata object.", + "default": 50, + "type": "integer", + "format": "int32" + }, + "include_details": { + "description": "Includes complete details of the metadata objects.", + "default": false, + "type": "boolean", "nullable": true }, - "comment": { - "type": "string", - "description": "Comments associated with the commit", + "include_headers": { + "description": "Includes headers of the metadata objects.", + "default": true, + "type": "boolean", "nullable": true }, - "commit_time": { - "type": "string", - "description": "Time at which the changes were committed.", + "include_hidden_objects": { + "description": "Includes details of the hidden objects, such as a column in a worksheet or a table.", + "default": false, + "type": "boolean", "nullable": true }, - "commit_id": { - "type": "string", - "description": "SHA id associated with the commit", + "include_incomplete_objects": { + "description": "Includes objects with incomplete metadata.", + "default": false, + "type": "boolean", "nullable": true }, - "branch": { - "type": "string", - "description": "Branch where changes were committed", + "include_visualization_headers": { + "description": "Includes visualization headers of the specified Liveboard object.", + "default": false, + "type": "boolean", "nullable": true }, - "committed_files": { + "include_worksheet_search_assist_data": { + "description": "If search assistance lessons are configured on a worksheet,\nthe API returns the search assist data for Worksheet objects.", + "type": "boolean", + "nullable": true + }, + "modified_by_user_identifiers": { + "description": "Includes ID or names of the users who modified the metadata object.", "type": "array", "items": { - "$ref": "#/components/schemas/CommitFileType" - }, - "description": "Files that were pushed as part of this commit", - "nullable": true - } - } - }, - "CommitFileType": { - "type": "object", - "required": [ - "file_name", - "status_code" - ], - "properties": { - "file_name": { - "type": "string", - "description": "Name of the file deployed" + "type": "string" + } }, - "status_code": { - "type": "string", - "description": "Indicates the status of deployment for the file" + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" }, - "status_message": { - "type": "string", - "description": "Any error or warning with the deployment", - "nullable": true - } - } - }, - "RevertResponse": { - "type": "object", - "properties": { - "committer": { - "$ref": "#/components/schemas/CommiterType", - "description": "Repository user using which changes were committed", - "nullable": true + "record_size": { + "description": "The number of records that should be included. It is recommended to use a smaller `record_size` when fetching dependent objects or any of the additional metadata detail options.", + "default": 10, + "type": "integer", + "format": "int32" }, - "author": { - "$ref": "#/components/schemas/AuthorType", - "description": "Thoughtspot user who commits the changes", - "nullable": true + "sort_options": { + "description": "Sort options to filter metadata details.", + "allOf": [ + { + "$ref": "#/components/schemas/MetadataSearchSortOptions" + } + ] }, - "comment": { - "type": "string", - "description": "Comments associated with the commit", - "nullable": true + "tag_identifiers": { + "description": "Tags to filter metadata objects by", + "type": "array", + "items": { + "type": "string" + } }, - "commit_time": { - "type": "string", - "description": "Time at which the changes were committed.", + "include_stats": { + "description": "Indicates whether to include stats of the metadata objects.", + "default": false, + "type": "boolean", "nullable": true }, - "commit_id": { - "type": "string", - "description": "SHA id associated with the commit", + "include_discoverable_objects": { + "description": "
Version: 10.7.0.cl or later
\n\nBoolean to indicate whether to include discoverable metadata objects.", + "default": true, + "type": "boolean", "nullable": true }, - "branch": { - "type": "string", - "description": "Branch where changes were committed", + "show_resolved_parameters": { + "description": "
Version: 10.9.0.cl or later
\n\nIndicates whether to show resolved parameterised values.", + "default": false, + "type": "boolean", "nullable": true }, - "committed_files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CommitFileType" - }, - "description": "Files that were pushed as part of this commit", - "nullable": true + "liveboard_response_version": { + "description": "Indicates the model version of Liveboard to be attached in metadata detail.", + "default": "V1", + "type": "string", + "enum": [ + "V1", + "V2" + ] }, - "reverted_metadata": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RevertedMetadata" - }, - "description": "Metadata of reverted file of this commit", + "include_only_published_objects": { + "description": "
Version: 10.11.0.cl or later
\n\nIf only published objects should be returned", + "default": false, + "type": "boolean", "nullable": true } } }, - "RevertedMetadata": { + "UnparameterizeMetadataRequest": { "type": "object", - "required": [ - "file_name", - "metadata_name", - "metadata_type", - "status_code", - "status_message" - ], "properties": { - "file_name": { + "metadata_type": { + "description": "Type of metadata object to unparameterize.", "type": "string", - "description": "Name of the file deployed" + "enum": [ + "LOGICAL_TABLE", + "CONNECTION", + "CONNECTION_CONFIG" + ] }, - "metadata_name": { - "type": "string", - "description": "Name of the metadata object" + "metadata_identifier": { + "description": "Unique ID or name of the metadata object to unparameterize.", + "type": "string" }, - "metadata_type": { + "field_type": { + "description": "Type of field in the metadata to unparameterize.", "type": "string", - "description": "Type of the metadata object" + "enum": [ + "ATTRIBUTE", + "CONNECTION_PROPERTY" + ] }, - "status_code": { - "type": "string", - "description": "Indicates the status of deployment for the file" + "field_name": { + "description": "Name of the field which needs to be unparameterized.", + "type": "string" }, - "status_message": { - "type": "string", - "description": "Any error or warning with the deployment" + "value": { + "description": "The value to use in place of the variable for the field", + "type": "string" } - } + }, + "required": [ + "metadata_identifier", + "field_type", + "field_name", + "value" + ] }, - "DeployResponse": { + "UpdateMetadataHeaderRequest": { "type": "object", "properties": { - "file_name": { - "type": "string", - "description": "Name of the file deployed", - "nullable": true - }, - "metadata_name": { - "type": "string", - "description": "Name of the metadata object", - "nullable": true - }, - "metadata_type": { - "type": "string", - "description": "Type of the metadata object", - "nullable": true - }, - "status_code": { - "type": "string", - "description": "Indicates the status of deployment for the file", - "nullable": true + "headers_update": { + "description": "List of header objects to update.", + "type": "array", + "items": { + "$ref": "#/components/schemas/HeaderUpdateInput" + } }, - "status_message": { - "type": "string", - "description": "Any error or warning with the deployment", - "nullable": true + "org_identifier": { + "description": "Unique ID or name of the organization.", + "type": "string" } - } + }, + "required": [ + "headers_update" + ] }, - "CreateConnectionResponse": { + "UpdateMetadataObjIdRequest": { "type": "object", + "properties": { + "metadata": { + "description": "List of metadata objects to update their object IDs.", + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateObjIdInput" + } + } + }, "required": [ - "id", - "name", - "data_warehouse_type" - ], + "metadata" + ] + }, + "CreateOrgRequest": { + "type": "object", "properties": { - "id": { - "type": "string", - "description": "ID of the connection created." - }, "name": { - "type": "string", - "description": "Name of the connection." - }, - "data_warehouse_type": { - "type": "string", - "enum": [ - "SNOWFLAKE", - "AMAZON_REDSHIFT", - "GOOGLE_BIGQUERY", - "AZURE_SYNAPSE", - "TERADATA", - "SAP_HANA", - "STARBURST", - "ORACLE_ADW", - "DATABRICKS", - "DENODO", - "DREMIO", - "TRINO", - "PRESTO", - "POSTGRES", - "SQLSERVER", - "MYSQL", - "GENERIC_JDBC", - "AMAZON_RDS_POSTGRESQL", - "AMAZON_AURORA_POSTGRESQL", - "AMAZON_RDS_MYSQL", - "AMAZON_AURORA_MYSQL", - "LOOKER", - "AMAZON_ATHENA", - "SINGLESTORE", - "GCP_SQLSERVER", - "GCP_ALLOYDB_POSTGRESQL", - "GCP_POSTGRESQL", - "GCP_MYSQL", - "MODE", - "GOOGLE_SHEETS", - "FALCON", - "FALCON_ONPREM", - "CLICKHOUSE" - ], - "description": "Type of data warehouse." + "description": "Name of the Org.", + "type": "string" }, - "details": { - "type": "object", - "description": "Details of the connection.", - "nullable": true + "description": { + "description": "Description of the Org.", + "type": "string" } - } + }, + "required": [ + "name" + ] }, - "FetchConnectionDiffStatusResponse": { + "SearchOrgsRequest": { "type": "object", "properties": { + "org_identifier": { + "description": "ID or name of the Org", + "type": "string" + }, + "description": { + "description": "Description of the Org", + "type": "string" + }, + "visibility": { + "description": "Visibility of the Org", + "type": "string", + "enum": [ + "SHOW", + "HIDDEN" + ] + }, "status": { - "type": "boolean", - "description": "Status of the connection diff.", - "nullable": true + "description": "Status of the Org", + "type": "string", + "enum": [ + "ACTIVE", + "IN_ACTIVE" + ] + }, + "user_identifiers": { + "description": "GUIDs or names of the users for which you want to retrieve the Orgs data", + "type": "array", + "items": { + "type": "string" + } } } }, - "RevokeRefreshTokensResponse": { + "UpdateOrgRequest": { "type": "object", - "required": [ - "data" - ], "properties": { - "data": { + "name": { + "description": "Name of the Org", + "type": "string" + }, + "description": { + "description": "Description of the Org", + "type": "string" + }, + "user_identifiers": { + "description": "Add Users to an Org", + "type": "array", + "items": { + "type": "string" + } + }, + "group_identifiers": { + "description": "Add Default Groups to an Org", + "type": "array", + "items": { + "type": "string" + } + }, + "operation": { + "description": "Type of update operation. Default operation type is ADD", + "default": "ADD", "type": "string", - "description": "Result message describing the outcome of the refresh token revocation operation." + "enum": [ + "ADD", + "REMOVE", + "REPLACE" + ] } } }, - "RoleResponse": { + "ExportAnswerReportRequest": { "type": "object", - "required": [ - "id", - "name", - "description", - "privileges" - ], "properties": { - "id": { + "metadata_identifier": { + "description": "Unique ID or name of the metadata object.", + "type": "string" + }, + "session_identifier": { + "description": "Unique ID of the answer session.", + "type": "string" + }, + "generation_number": { + "description": "Generation number of the answer session.", + "type": "integer", + "format": "int32" + }, + "file_format": { + "description": "Export file format.", + "default": "CSV", "type": "string", - "description": "Unique Id of the role." + "enum": [ + "CSV", + "PDF", + "XLSX", + "PNG" + ] }, - "name": { - "type": "string", - "description": "Name of the role" + "runtime_filter": { + "description": "JSON string representing runtime filter.\n{ col1:region, op1: EQ, val1: northeast }", + "type": "object" }, - "description": { - "type": "string", - "description": "Description of the role" + "runtime_sort": { + "description": "JSON string representing runtime sort.\n{ sortCol1: region, asc1 :true, sortCol2 : date }", + "type": "object" }, - "groups_assigned_count": { - "type": "integer", - "format": "int32", - "description": "number of groups assigned with this role", - "nullable": true + "runtime_param_override": { + "description": "JSON object for setting values of parameters in runtime.", + "type": "object" }, - "orgs": { + "regional_settings": { + "description": "Options for specific region specific overrides to support date/number/string/currency formatting.", + "allOf": [ + { + "$ref": "#/components/schemas/RegionalSettingsInput" + } + ] + } + } + }, + "ExportLiveboardReportRequest": { + "type": "object", + "properties": { + "metadata_identifier": { + "description": "GUID or name of the Liveboard object.", + "type": "string" + }, + "tab_identifiers": { + "description": "GUID or name of the tab of the Liveboard object.
Version: 10.9.0.cl or later", "type": "array", "items": { - "$ref": "#/components/schemas/GenericInfo" - }, - "description": "Orgs in which role exists.", - "nullable": true + "type": "string" + } }, - "groups": { + "personalised_view_identifier": { + "description": "GUID or name of the personalised view of the Liveboard object.
Version: 10.9.0.cl or later", + "type": "string" + }, + "visualization_identifiers": { + "description": "GUID or name of visualizations on the Liveboard. If this parameter is\nnot defined, the API returns a report with all visualizations saved on a Liveboard.", "type": "array", "items": { - "$ref": "#/components/schemas/GenericInfo" - }, - "description": "Details of groups assigned with this role", - "nullable": true + "type": "string" + } + }, + "transient_content": { + "description": "Transient content of the Liveboard.", + "type": "string" + }, + "file_format": { + "description": "Export file format.", + "default": "PDF", + "type": "string", + "enum": [ + "PDF", + "PNG", + "CSV", + "XLSX" + ] + }, + "runtime_filter": { + "description": "JSON object with representing filter condition to apply filters at runtime. For example, {\"col1\": \"region\", \"op1\": \"EQ\", \"val1\": \"northeast\" }. You can add multiple keys by incrementing the number at the end, for example, col2, op2, val2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_filters).", + "type": "object" + }, + "override_filters": { + "description": "Applied to the liveboard and overrides any filters already applied on the same columns in liveboard.\nFollowing example illustrate different kinds of filters:\n{\n \"override_filters\": [\n {\n \"column_name\": \"Color\",\n \"generic_filter\": {\n \"op\": \"IN\",\n \"values\": [\n \"almond\",\n \"turquoise\"\n ]\n },\n \"negate\": false\n },\n {\n \"column_name\": \"Commit Date\",\n \"date_filter\": {\n \"datePeriod\": \"HOUR\",\n \"number\": 3,\n \"type\": \"LAST_N_PERIOD\",\n \"op\": \"EQ\"\n }\n },\n {\n \"column_name\": \"Sales\",\n \"generic_filter\": {\n \"op\": \"BW_INC\",\n \"values\": [\n \"100000\",\n \"70000\"\n ]\n },\n \"negate\": true\n }\n ]\n}", + "type": "object" + }, + "runtime_sort": { + "description": "JSON string representing runtime sort. For example, {\"sortCol1\": \"region\", \"asc1\" : true}. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_sort).", + "type": "object" + }, + "pdf_options": { + "description": "Options for PDF export.", + "allOf": [ + { + "$ref": "#/components/schemas/PdfOptionsInput" + } + ] + }, + "png_options": { + "description": "Options for PNG export.", + "allOf": [ + { + "$ref": "#/components/schemas/PngOptionsInput" + } + ] + }, + "runtime_param_override": { + "description": "JSON object for setting values of parameters at runtime. For example, {\"param1\": \"Double List Param\", \"paramVal1\": 0.5}. You can add multiple keys by incrementing the number at the end, for example, param2, paramVal2. For more information, see [API Documentation](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_parameters).", + "type": "object" + }, + "regional_settings": { + "description": "Options for specific region specific overrides to support date/number/string/currency formatting.", + "allOf": [ + { + "$ref": "#/components/schemas/RegionalSettingsInput" + } + ] + } + }, + "required": [ + "metadata_identifier" + ] + }, + "CreateRoleRequest": { + "type": "object", + "properties": { + "name": { + "description": "Unique name of the Role.", + "type": "string" + }, + "description": { + "description": "Description of the Role.", + "type": "string" }, "privileges": { + "description": "Privileges granted to the Role. See [Documentation](https://developers.thoughtspot.com/docs/rbac#_role_categories_and_privileges)for supported roles privileges.", "type": "array", "items": { "type": "string", @@ -23878,1748 +24135,3465 @@ "CAN_MODIFY_FOLDERS", "CAN_VIEW_FOLDERS", "CAN_SETUP_VERSION_CONTROL", - "PREVIEW_THOUGHTSPOT_SAGE", - "CAN_MANAGE_WEBHOOKS", - "CAN_DOWNLOAD_VISUALS", - "CAN_DOWNLOAD_DETAILED_DATA", - "CAN_USE_SPOTTER" - ] - }, - "description": "Privileges granted to the role." - }, - "permission": { - "type": "string", - "enum": [ - "READ_ONLY", - "MODIFY", - "NO_ACCESS" - ], - "description": "Permission details of the Role", - "nullable": true - }, - "author_id": { - "type": "string", - "description": "Unique identifier of author of the role.", - "nullable": true - }, - "modifier_id": { - "type": "string", - "description": "Unique identifier of modifier of the role.", - "nullable": true - }, - "creation_time_in_millis": { - "type": "object", - "description": "Creation time of the role in milliseconds.", - "nullable": true - }, - "modification_time_in_millis": { - "type": "object", - "description": "Last modified time of the role in milliseconds.", - "nullable": true - }, - "deleted": { - "type": "boolean", - "description": "Indicates whether the role is deleted.", - "nullable": true - }, - "deprecated": { - "type": "boolean", - "description": "Indicates whether the role is deprecated.", - "nullable": true - }, - "external": { - "type": "boolean", - "description": "Indicates whether the role is external.", - "nullable": true - }, - "hidden": { - "type": "boolean", - "description": "Indicates whether the role is hidden.", - "nullable": true - }, - "shared_via_connection": { - "type": "boolean", - "description": "Indicates whether the role is shared via connection", - "nullable": true - } - } - }, - "LiveboardOptionsInput": { - "type": "object", - "required": [ - "visualization_identifiers" - ], - "properties": { - "visualization_identifiers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Unique ID or name of visualizations." - } - }, - "description": "Options to specify details of Liveboard." - }, - "SchedulesPdfOptionsInput": { - "type": "object", - "properties": { - "complete_liveboard": { - "type": "boolean", - "description": "Indicates whether to include complete Liveboard.", - "nullable": true - }, - "include_cover_page": { - "type": "boolean", - "description": "Indicates whether to include cover page with the Liveboard title.", - "nullable": true - }, - "include_custom_logo": { - "type": "boolean", - "description": "Indicates whether to include customized wide logo in the footer if available.", - "nullable": true - }, - "include_filter_page": { - "type": "boolean", - "description": "Indicates whether to include a page with all applied filters.", - "nullable": true - }, - "include_page_number": { - "type": "boolean", - "description": "Indicates whether to include page number in the footer of each page", - "nullable": true - }, - "page_footer_text": { - "type": "string", - "description": "Text to include in the footer of each page.", - "nullable": true - }, - "page_orientation": { - "type": "string", - "description": "Page orientation of the PDF.", - "nullable": true - }, - "page_size": { - "type": "string", - "enum": [ - "A4" - ], - "description": "Page size.", - "nullable": true - }, - "truncate_table": { - "type": "boolean", - "description": "Indicates whether to include only first page of the tables.", - "nullable": true - } - }, - "description": "Options for PDF export." - }, - "FrequencyInput": { - "type": "object", - "required": [ - "cron_expression" - ], - "properties": { - "cron_expression": { - "$ref": "#/components/schemas/CronExpressionInput", - "description": "Schedule selected cron expression." - } - }, - "description": "Configuration of schedule with cron expression" - }, - "CronExpressionInput": { - "type": "object", - "required": [ - "day_of_month", - "day_of_week", - "hour", - "minute", - "month", - "second" - ], - "properties": { - "day_of_month": { - "type": "string", - "description": "Day of month of the object." - }, - "day_of_week": { - "type": "string", - "description": "Day of Week of the object." - }, - "hour": { - "type": "string", - "description": "Hour of the object." - }, - "minute": { - "type": "string", - "description": "Minute of the object." - }, - "month": { - "type": "string", - "description": "Month of the object." + "PREVIEW_THOUGHTSPOT_SAGE", + "CAN_MANAGE_WEBHOOKS", + "CAN_DOWNLOAD_VISUALS", + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" + ] + } }, - "second": { - "type": "string", - "description": "Second of the object." + "read_only": { + "description": "
Version: 10.5.0.cl or later
\n\nIndicates whether the role is read only. A readonly role can neither be updated nor deleted.", + "default": false, + "type": "boolean", + "nullable": true } }, - "description": "Schedule selected cron expression." + "required": [ + "name" + ] }, - "RecipientDetailsInput": { + "SearchRolesRequest": { "type": "object", "properties": { - "emails": { + "role_identifiers": { + "description": "unique ID or name of the Roles", "type": "array", "items": { "type": "string" - }, - "description": "Emails of the recipients.", - "nullable": true + } }, - "principals": { + "org_identifiers": { + "description": "Unique Id or name of the Organisation", "type": "array", "items": { - "$ref": "#/components/schemas/PrincipalsListItemInput" - }, - "description": "User or groups to be set as recipients of the schedule notifications.", - "nullable": true - } - }, - "description": "Recipients of the scheduled job notification." - }, - "PrincipalsListItemInput": { - "type": "object", - "required": [ - "identifier", - "type" - ], - "properties": { - "identifier": { - "type": "string", - "description": "Unique ID or name of the user or group." - }, - "type": { - "type": "string", - "description": "Principal type." - } - } - }, - "ResponseSchedule": { - "type": "object", - "required": [ - "author", - "creation_time_in_millis", - "file_format", - "frequency", - "id", - "metadata", - "name", - "recipient_details", - "time_zone" - ], - "properties": { - "author": { - "$ref": "#/components/schemas/Author", - "description": "Author of the schedule." - }, - "creation_time_in_millis": { - "type": "object", - "description": "Schedule creation time in milliseconds." - }, - "description": { - "type": "string", - "description": "Description of the job.", - "nullable": true - }, - "file_format": { - "type": "string", - "description": "Export file format." + "type": "string" + } }, - "frequency": { - "$ref": "#/components/schemas/Frequency", - "description": "Configuration of schedule with cron expression" + "group_identifiers": { + "description": "Unique Id or name of the User Group", + "type": "array", + "items": { + "type": "string" + } }, - "id": { - "type": "string", - "description": "GUID of the scheduled job." + "privileges": { + "description": "Privileges assigned to the Role. See [Documentation](https://developers.thoughtspot.com/docs/rbac#_role_categories_and_privileges)for supported roles privileges.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "UNKNOWN", + "ADMINISTRATION", + "AUTHORING", + "USERDATAUPLOADING", + "DATADOWNLOADING", + "USERMANAGEMENT", + "SECURITYMANAGEMENT", + "LOGICALMODELING", + "DATAMANAGEMENT", + "TAGMANAGEMENT", + "SHAREWITHALL", + "SYSTEMMANAGEMENT", + "JOBSCHEDULING", + "A3ANALYSIS", + "EXPERIMENTALFEATUREPRIVILEGE", + "BYPASSRLS", + "RANALYSIS", + "DISABLE_PINBOARD_CREATION", + "DEVELOPER", + "APPLICATION_ADMINISTRATION", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "BACKUP_ADMINISTRATION", + "SYSTEM_INFO_ADMINISTRATION", + "ENABLESPOTAPPCREATION", + "SYNCMANAGEMENT", + "ORG_ADMINISTRATION", + "ROLE_ADMINISTRATION", + "AUTHENTICATION_ADMINISTRATION", + "BILLING_INFO_ADMINISTRATION", + "PREVIEW_THOUGHTSPOT_SAGE", + "LIVEBOARD_VERIFIER", + "CAN_MANAGE_CUSTOM_CALENDAR", + "CAN_CREATE_OR_EDIT_CONNECTIONS", + "CAN_CONFIGURE_CONNECTIONS", + "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "CONTROL_TRUSTED_AUTH", + "CAN_CREATE_CATALOG", + "ALLOW_NON_EMBED_FULL_APP_ACCESS", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "CAN_VIEW_FOLDERS", + "CAN_MODIDY_FOLDERS", + "CAN_MANAGE_VARIABLES", + "PREVIEW_DOCUMENT_SEARCH", + "CAN_SETUP_VERSION_CONTROL", + "CAN_MANAGE_WEBHOOKS", + "CAN_DOWNLOAD_VISUALS", + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" + ] + } }, - "liveboard_options": { - "$ref": "#/components/schemas/LiveboardOptions", - "description": "Options to specify details of Liveboard.", + "deprecated": { + "description": "Indicates whether the Role is deprecated.", + "type": "boolean", + "deprecated": true, "nullable": true }, - "metadata": { - "$ref": "#/components/schemas/MetadataResponse", - "description": "Unique ID or name of the metadata." - }, - "name": { - "type": "string", - "description": "Name of the scheduled job." - }, - "pdf_options": { - "$ref": "#/components/schemas/PdfOptions", - "description": "Options for PDF export.", + "external": { + "description": "Indicates whether the Role is external", + "type": "boolean", + "deprecated": true, "nullable": true }, - "recipient_details": { - "$ref": "#/components/schemas/RecipientDetails", - "description": "Recipient of the scheduled job notifications." - }, - "status": { - "type": "string", - "description": "Status of the job", + "shared_via_connection": { + "description": "Indicates whether the Role is shared via connection", + "type": "boolean", + "deprecated": true, "nullable": true }, - "time_zone": { - "type": "string", - "description": "Time zone" - }, - "history_runs": { + "permissions": { + "description": "Permission details of the Role", "type": "array", "items": { - "$ref": "#/components/schemas/ResponseScheduleRun" + "type": "string", + "enum": [ + "READ_ONLY", + "MODIFY", + "NO_ACCESS" + ] }, - "description": "Schedule runs history records.", - "nullable": true - }, - "personalised_view_id": { - "type": "string", - "description": "Personalised view id of the liveboard to be scheduled.", - "nullable": true + "deprecated": true } } }, - "Author": { + "UpdateRoleRequest": { "type": "object", - "required": [ - "id", - "name" - ], "properties": { - "id": { - "type": "string", - "description": "The unique identifier of the object." - }, "name": { - "type": "string", - "description": "Name of the object." + "description": "Name of the Role.", + "type": "string" + }, + "description": { + "description": "Description of the Role.", + "type": "string" + }, + "privileges": { + "description": "Privileges granted to the role. See [Documentation](https://developers.thoughtspot.com/docs/rbac#_role_categories_and_privileges)for supported roles privileges.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "USERDATAUPLOADING", + "DATADOWNLOADING", + "DATAMANAGEMENT", + "SHAREWITHALL", + "JOBSCHEDULING", + "A3ANALYSIS", + "BYPASSRLS", + "DISABLE_PINBOARD_CREATION", + "DEVELOPER", + "APPLICATION_ADMINISTRATION", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "SYSTEM_INFO_ADMINISTRATION", + "SYNCMANAGEMENT", + "ORG_ADMINISTRATION", + "ROLE_ADMINISTRATION", + "AUTHENTICATION_ADMINISTRATION", + "BILLING_INFO_ADMINISTRATION", + "CONTROL_TRUSTED_AUTH", + "TAGMANAGEMENT", + "LIVEBOARD_VERIFIER", + "CAN_MANAGE_CUSTOM_CALENDAR", + "CAN_CREATE_OR_EDIT_CONNECTIONS", + "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "CAN_CREATE_CATALOG", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "CAN_MODIFY_FOLDERS", + "CAN_MANAGE_VARIABLES", + "CAN_VIEW_FOLDERS", + "PREVIEW_DOCUMENT_SEARCH", + "PREVIEW_THOUGHTSPOT_SAGE", + "CAN_MANAGE_WEBHOOKS", + "CAN_DOWNLOAD_VISUALS", + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" + ] + } } }, - "description": "Author of the schedule." - }, - "Frequency": { - "type": "object", "required": [ - "cron_expression" - ], - "properties": { - "cron_expression": { - "$ref": "#/components/schemas/CronExpression", - "description": "Schedule selected cron expression." - } - }, - "description": "Configuration of schedule with cron expression" + "name" + ] }, - "CronExpression": { + "CreateScheduleRequest": { "type": "object", - "required": [ - "day_of_month", - "day_of_week", - "hour", - "minute", - "month", - "second" - ], "properties": { - "day_of_month": { - "type": "string", - "description": "Day of month of the object." + "name": { + "description": "Name of the scheduled job.", + "type": "string" }, - "day_of_week": { - "type": "string", - "description": "Day of Week of the object." + "description": { + "description": "Description of the job.", + "type": "string" }, - "hour": { + "metadata_type": { + "description": "Type of the metadata object.", "type": "string", - "description": "Hour of the object." + "enum": [ + "LIVEBOARD" + ] }, - "minute": { - "type": "string", - "description": "Minute of the object." + "metadata_identifier": { + "description": "Unique ID or name of the metadata object.", + "type": "string" }, - "month": { + "file_format": { + "description": "Export file format.", + "default": "PDF", "type": "string", - "description": "Month of the object." + "enum": [ + "CSV", + "PDF", + "XLSX" + ] }, - "second": { + "liveboard_options": { + "description": "Options to specify details of Liveboard.", + "allOf": [ + { + "$ref": "#/components/schemas/LiveboardOptionsInput" + } + ] + }, + "pdf_options": { + "description": "PDF layout and orientation settings. Applicable only if the `file_format` is specified as `PDF`.", + "allOf": [ + { + "$ref": "#/components/schemas/SchedulesPdfOptionsInput" + } + ] + }, + "time_zone": { + "description": "Time zone", + "default": "America/Los_Angeles", "type": "string", - "description": "Second of the object." + "enum": [ + "Africa/Abidjan", + "Africa/Accra", + "Africa/Addis_Ababa", + "Africa/Algiers", + "Africa/Asmara", + "Africa/Asmera", + "Africa/Bamako", + "Africa/Bangui", + "Africa/Banjul", + "Africa/Bissau", + "Africa/Blantyre", + "Africa/Brazzaville", + "Africa/Bujumbura", + "Africa/Cairo", + "Africa/Casablanca", + "Africa/Ceuta", + "Africa/Conakry", + "Africa/Dakar", + "Africa/Dar_es_Salaam", + "Africa/Djibouti", + "Africa/Douala", + "Africa/El_Aaiun", + "Africa/Freetown", + "Africa/Gaborone", + "Africa/Harare", + "Africa/Johannesburg", + "Africa/Juba", + "Africa/Kampala", + "Africa/Khartoum", + "Africa/Kigali", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Libreville", + "Africa/Lome", + "Africa/Luanda", + "Africa/Lubumbashi", + "Africa/Lusaka", + "Africa/Malabo", + "Africa/Maputo", + "Africa/Maseru", + "Africa/Mbabane", + "Africa/Mogadishu", + "Africa/Monrovia", + "Africa/Nairobi", + "Africa/Ndjamena", + "Africa/Niamey", + "Africa/Nouakchott", + "Africa/Ouagadougou", + "Africa/Porto-Novo", + "Africa/Sao_Tome", + "Africa/Timbuktu", + "Africa/Tripoli", + "Africa/Tunis", + "Africa/Windhoek", + "America/Adak", + "America/Anchorage", + "America/Anguilla", + "America/Antigua", + "America/Araguaina", + "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Aruba", + "America/Asuncion", + "America/Atikokan", + "America/Atka", + "America/Bahia", + "America/Bahia_Banderas", + "America/Barbados", + "America/Belem", + "America/Belize", + "America/Blanc-Sablon", + "America/Boa_Vista", + "America/Bogota", + "America/Boise", + "America/Buenos_Aires", + "America/Cambridge_Bay", + "America/Campo_Grande", + "America/Cancun", + "America/Caracas", + "America/Catamarca", + "America/Cayenne", + "America/Cayman", + "America/Chicago", + "America/Chihuahua", + "America/Coral_Harbour", + "America/Cordoba", + "America/Costa_Rica", + "America/Creston", + "America/Cuiaba", + "America/Curacao", + "America/Danmarkshavn", + "America/Dawson", + "America/Dawson_Creek", + "America/Denver", + "America/Detroit", + "America/Dominica", + "America/Edmonton", + "America/Eirunepe", + "America/El_Salvador", + "America/Ensenada", + "America/Fort_Nelson", + "America/Fort_Wayne", + "America/Fortaleza", + "America/Glace_Bay", + "America/Godthab", + "America/Goose_Bay", + "America/Grand_Turk", + "America/Grenada", + "America/Guadeloupe", + "America/Guatemala", + "America/Guayaquil", + "America/Guyana", + "America/Halifax", + "America/Havana", + "America/Hermosillo", + "America/Indiana/Indianapolis", + "America/Indiana/Knox", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Tell_City", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Indianapolis", + "America/Inuvik", + "America/Iqaluit", + "America/Jamaica", + "America/Jujuy", + "America/Juneau", + "America/Kentucky/Louisville", + "America/Kentucky/Monticello", + "America/Knox_IN", + "America/Kralendijk", + "America/La_Paz", + "America/Lima", + "America/Los_Angeles", + "America/Louisville", + "America/Lower_Princes", + "America/Maceio", + "America/Managua", + "America/Manaus", + "America/Marigot", + "America/Martinique", + "America/Matamoros", + "America/Mazatlan", + "America/Mendoza", + "America/Menominee", + "America/Merida", + "America/Metlakatla", + "America/Mexico_City", + "America/Miquelon", + "America/Moncton", + "America/Monterrey", + "America/Montevideo", + "America/Montreal", + "America/Montserrat", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Nome", + "America/Noronha", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Nuuk", + "America/Ojinaga", + "America/Panama", + "America/Pangnirtung", + "America/Paramaribo", + "America/Phoenix", + "America/Port-au-Prince", + "America/Port_of_Spain", + "America/Porto_Acre", + "America/Porto_Velho", + "America/Puerto_Rico", + "America/Punta_Arenas", + "America/Rainy_River", + "America/Rankin_Inlet", + "America/Recife", + "America/Regina", + "America/Resolute", + "America/Rio_Branco", + "America/Rosario", + "America/Santa_Isabel", + "America/Santarem", + "America/Santiago", + "America/Santo_Domingo", + "America/Sao_Paulo", + "America/Scoresbysund", + "America/Shiprock", + "America/Sitka", + "America/St_Barthelemy", + "America/St_Johns", + "America/St_Kitts", + "America/St_Lucia", + "America/St_Thomas", + "America/St_Vincent", + "America/Swift_Current", + "America/Tegucigalpa", + "America/Thule", + "America/Thunder_Bay", + "America/Tijuana", + "America/Toronto", + "America/Tortola", + "America/Vancouver", + "America/Virgin", + "America/Whitehorse", + "America/Winnipeg", + "America/Yakutat", + "America/Yellowknife", + "Antarctica/Casey", + "Antarctica/Davis", + "Antarctica/DumontDUrville", + "Antarctica/Macquarie", + "Antarctica/Mawson", + "Antarctica/McMurdo", + "Antarctica/Palmer", + "Antarctica/Rothera", + "Antarctica/South_Pole", + "Antarctica/Syowa", + "Antarctica/Troll", + "Antarctica/Vostok", + "Arctic/Longyearbyen", + "Asia/Aden", + "Asia/Almaty", + "Asia/Amman", + "Asia/Anadyr", + "Asia/Aqtau", + "Asia/Aqtobe", + "Asia/Ashgabat", + "Asia/Ashkhabad", + "Asia/Atyrau", + "Asia/Baghdad", + "Asia/Bahrain", + "Asia/Baku", + "Asia/Bangkok", + "Asia/Barnaul", + "Asia/Beirut", + "Asia/Bishkek", + "Asia/Brunei", + "Asia/Calcutta", + "Asia/Chita", + "Asia/Choibalsan", + "Asia/Chongqing", + "Asia/Chungking", + "Asia/Colombo", + "Asia/Dacca", + "Asia/Damascus", + "Asia/Dhaka", + "Asia/Dili", + "Asia/Dubai", + "Asia/Dushanbe", + "Asia/Famagusta", + "Asia/Gaza", + "Asia/Harbin", + "Asia/Hebron", + "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong", + "Asia/Hovd", + "Asia/Irkutsk", + "Asia/Istanbul", + "Asia/Jakarta", + "Asia/Jayapura", + "Asia/Jerusalem", + "Asia/Kabul", + "Asia/Kamchatka", + "Asia/Karachi", + "Asia/Kashgar", + "Asia/Kathmandu", + "Asia/Katmandu", + "Asia/Khandyga", + "Asia/Kolkata", + "Asia/Krasnoyarsk", + "Asia/Kuala_Lumpur", + "Asia/Kuching", + "Asia/Kuwait", + "Asia/Macao", + "Asia/Macau", + "Asia/Magadan", + "Asia/Makassar", + "Asia/Manila", + "Asia/Muscat", + "Asia/Nicosia", + "Asia/Novokuznetsk", + "Asia/Novosibirsk", + "Asia/Omsk", + "Asia/Oral", + "Asia/Phnom_Penh", + "Asia/Pontianak", + "Asia/Pyongyang", + "Asia/Qatar", + "Asia/Qostanay", + "Asia/Qyzylorda", + "Asia/Rangoon", + "Asia/Riyadh", + "Asia/Saigon", + "Asia/Sakhalin", + "Asia/Samarkand", + "Asia/Seoul", + "Asia/Shanghai", + "Asia/Singapore", + "Asia/Srednekolymsk", + "Asia/Taipei", + "Asia/Tashkent", + "Asia/Tbilisi", + "Asia/Tehran", + "Asia/Tel_Aviv", + "Asia/Thimbu", + "Asia/Thimphu", + "Asia/Tokyo", + "Asia/Tomsk", + "Asia/Ujung_Pandang", + "Asia/Ulaanbaatar", + "Asia/Ulan_Bator", + "Asia/Urumqi", + "Asia/Ust-Nera", + "Asia/Vientiane", + "Asia/Vladivostok", + "Asia/Yakutsk", + "Asia/Yangon", + "Asia/Yekaterinburg", + "Asia/Yerevan", + "Atlantic/Azores", + "Atlantic/Bermuda", + "Atlantic/Canary", + "Atlantic/Cape_Verde", + "Atlantic/Faeroe", + "Atlantic/Faroe", + "Atlantic/Jan_Mayen", + "Atlantic/Madeira", + "Atlantic/Reykjavik", + "Atlantic/South_Georgia", + "Atlantic/St_Helena", + "Atlantic/Stanley", + "Australia/ACT", + "Australia/Adelaide", + "Australia/Brisbane", + "Australia/Broken_Hill", + "Australia/Canberra", + "Australia/Currie", + "Australia/Darwin", + "Australia/Eucla", + "Australia/Hobart", + "Australia/LHI", + "Australia/Lindeman", + "Australia/Lord_Howe", + "Australia/Melbourne", + "Australia/NSW", + "Australia/North", + "Australia/Perth", + "Australia/Queensland", + "Australia/South", + "Australia/Sydney", + "Australia/Tasmania", + "Australia/Victoria", + "Australia/West", + "Australia/Yancowinna", + "Brazil/Acre", + "Brazil/DeNoronha", + "Brazil/East", + "Brazil/West", + "CET", + "CST6CDT", + "Canada/Atlantic", + "Canada/Central", + "Canada/Eastern", + "Canada/Mountain", + "Canada/Newfoundland", + "Canada/Pacific", + "Canada/Saskatchewan", + "Canada/Yukon", + "Chile/Continental", + "Chile/EasterIsland", + "Cuba", + "EET", + "EST5EDT", + "Egypt", + "Eire", + "Etc/GMT", + "Etc/GMT+0", + "Etc/GMT+1", + "Etc/GMT+10", + "Etc/GMT+11", + "Etc/GMT+12", + "Etc/GMT+2", + "Etc/GMT+3", + "Etc/GMT+4", + "Etc/GMT+5", + "Etc/GMT+6", + "Etc/GMT+7", + "Etc/GMT+8", + "Etc/GMT+9", + "Etc/GMT-0", + "Etc/GMT-1", + "Etc/GMT-10", + "Etc/GMT-11", + "Etc/GMT-12", + "Etc/GMT-13", + "Etc/GMT-14", + "Etc/GMT-2", + "Etc/GMT-3", + "Etc/GMT-4", + "Etc/GMT-5", + "Etc/GMT-6", + "Etc/GMT-7", + "Etc/GMT-8", + "Etc/GMT-9", + "Etc/GMT0", + "Etc/Greenwich", + "Etc/UCT", + "Etc/UTC", + "Etc/Universal", + "Etc/Zulu", + "Europe/Amsterdam", + "Europe/Andorra", + "Europe/Astrakhan", + "Europe/Athens", + "Europe/Belfast", + "Europe/Belgrade", + "Europe/Berlin", + "Europe/Bratislava", + "Europe/Brussels", + "Europe/Bucharest", + "Europe/Budapest", + "Europe/Busingen", + "Europe/Chisinau", + "Europe/Copenhagen", + "Europe/Dublin", + "Europe/Gibraltar", + "Europe/Guernsey", + "Europe/Helsinki", + "Europe/Isle_of_Man", + "Europe/Istanbul", + "Europe/Jersey", + "Europe/Kaliningrad", + "Europe/Kiev", + "Europe/Kirov", + "Europe/Kyiv", + "Europe/Lisbon", + "Europe/Ljubljana", + "Europe/London", + "Europe/Luxembourg", + "Europe/Madrid", + "Europe/Malta", + "Europe/Mariehamn", + "Europe/Minsk", + "Europe/Monaco", + "Europe/Moscow", + "Europe/Nicosia", + "Europe/Oslo", + "Europe/Paris", + "Europe/Podgorica", + "Europe/Prague", + "Europe/Riga", + "Europe/Rome", + "Europe/Samara", + "Europe/San_Marino", + "Europe/Sarajevo", + "Europe/Saratov", + "Europe/Simferopol", + "Europe/Skopje", + "Europe/Sofia", + "Europe/Stockholm", + "Europe/Tallinn", + "Europe/Tirane", + "Europe/Tiraspol", + "Europe/Ulyanovsk", + "Europe/Uzhgorod", + "Europe/Vaduz", + "Europe/Vatican", + "Europe/Vienna", + "Europe/Vilnius", + "Europe/Volgograd", + "Europe/Warsaw", + "Europe/Zagreb", + "Europe/Zaporozhye", + "Europe/Zurich", + "GB", + "GB-Eire", + "GMT", + "GMT0", + "Greenwich", + "Hongkong", + "Iceland", + "Indian/Antananarivo", + "Indian/Chagos", + "Indian/Christmas", + "Indian/Cocos", + "Indian/Comoro", + "Indian/Kerguelen", + "Indian/Mahe", + "Indian/Maldives", + "Indian/Mauritius", + "Indian/Mayotte", + "Indian/Reunion", + "Iran", + "Israel", + "Jamaica", + "Japan", + "Kwajalein", + "Libya", + "MET", + "MST7MDT", + "Mexico/BajaNorte", + "Mexico/BajaSur", + "Mexico/General", + "NZ", + "NZ-CHAT", + "Navajo", + "PRC", + "PST8PDT", + "Pacific/Apia", + "Pacific/Auckland", + "Pacific/Bougainville", + "Pacific/Chatham", + "Pacific/Chuuk", + "Pacific/Easter", + "Pacific/Efate", + "Pacific/Enderbury", + "Pacific/Fakaofo", + "Pacific/Fiji", + "Pacific/Funafuti", + "Pacific/Galapagos", + "Pacific/Gambier", + "Pacific/Guadalcanal", + "Pacific/Guam", + "Pacific/Honolulu", + "Pacific/Johnston", + "Pacific/Kanton", + "Pacific/Kiritimati", + "Pacific/Kosrae", + "Pacific/Kwajalein", + "Pacific/Majuro", + "Pacific/Marquesas", + "Pacific/Midway", + "Pacific/Nauru", + "Pacific/Niue", + "Pacific/Norfolk", + "Pacific/Noumea", + "Pacific/Pago_Pago", + "Pacific/Palau", + "Pacific/Pitcairn", + "Pacific/Pohnpei", + "Pacific/Ponape", + "Pacific/Port_Moresby", + "Pacific/Rarotonga", + "Pacific/Saipan", + "Pacific/Samoa", + "Pacific/Tahiti", + "Pacific/Tarawa", + "Pacific/Tongatapu", + "Pacific/Truk", + "Pacific/Wake", + "Pacific/Wallis", + "Pacific/Yap", + "Poland", + "Portugal", + "ROK", + "Singapore", + "SystemV/AST4", + "SystemV/AST4ADT", + "SystemV/CST6", + "SystemV/CST6CDT", + "SystemV/EST5", + "SystemV/EST5EDT", + "SystemV/HST10", + "SystemV/MST7", + "SystemV/MST7MDT", + "SystemV/PST8", + "SystemV/PST8PDT", + "SystemV/YST9", + "SystemV/YST9YDT", + "Turkey", + "UCT", + "US/Alaska", + "US/Aleutian", + "US/Arizona", + "US/Central", + "US/East-Indiana", + "US/Eastern", + "US/Hawaii", + "US/Indiana-Starke", + "US/Michigan", + "US/Mountain", + "US/Pacific", + "US/Samoa", + "UTC", + "Universal", + "W-SU", + "WET", + "Zulu", + "EST", + "HST", + "MST", + "ACT", + "AET", + "AGT", + "ART", + "AST", + "BET", + "BST", + "CAT", + "CNT", + "CST", + "CTT", + "EAT", + "ECT", + "IET", + "IST", + "JST", + "MIT", + "NET", + "NST", + "PLT", + "PNT", + "PRT", + "PST", + "SST", + "VST" + ] + }, + "frequency": { + "description": "Frequency settings for the scheduled job.", + "allOf": [ + { + "$ref": "#/components/schemas/FrequencyInput" + } + ] + }, + "recipient_details": { + "description": "Recipients of the scheduled job notifications. Add the GUID or name of the ThoughtSpot users or groups as recipients in the `principals` array. If a recipient is not a ThoughtSpot user, specify email address.", + "allOf": [ + { + "$ref": "#/components/schemas/RecipientDetailsInput" + } + ] + }, + "personalised_view_id": { + "description": "Personalised view id of the liveboard to be scheduled.", + "type": "string" } }, - "description": "Schedule selected cron expression." + "required": [ + "name", + "description", + "metadata_type", + "metadata_identifier", + "time_zone", + "recipient_details" + ] }, - "LiveboardOptions": { + "SearchSchedulesRequest": { "type": "object", - "required": [ - "visualization_identifiers" - ], "properties": { - "visualization_identifiers": { + "metadata": { + "description": "Metadata objects associated with the scheduled jobs.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataInput" + } + }, + "record_offset": { + "description": "The starting record number from where the records should be included.", + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included.", + "type": "integer", + "format": "int32" + }, + "sort_options": { + "description": "Sort options.", + "allOf": [ + { + "$ref": "#/components/schemas/SortingOptions" + } + ] + }, + "history_runs_options": { + "description": "Options while fetching history runs for the schedule.", + "allOf": [ + { + "$ref": "#/components/schemas/ScheduleHistoryRunsOptionsInput" + } + ] + }, + "schedule_identifiers": { + "description": "unique ID or name of the Schedule", "type": "array", "items": { "type": "string" - }, - "description": "Unique ID or name of visualizations." + } } - }, - "description": "Options to specify details of Liveboard." + } }, - "MetadataResponse": { + "UpdateScheduleRequest": { "type": "object", - "required": [ - "id", - "type" - ], "properties": { "name": { - "type": "string", - "nullable": true + "description": "Name of the scheduled job.", + "type": "string" }, - "id": { + "description": { + "description": "Description of the scheduled job.", "type": "string" }, - "type": { + "metadata_type": { + "description": "Type of metadata object.", "type": "string", "enum": [ "LIVEBOARD" ] - } - } - }, - "PdfOptions": { - "type": "object", - "properties": { - "complete_liveboard": { - "type": "boolean", - "description": "Indicates whether to include complete Liveboard.", - "nullable": true - }, - "include_cover_page": { - "type": "boolean", - "description": "Indicates whether to include cover page with the Liveboard title.", - "nullable": true - }, - "include_custom_logo": { - "type": "boolean", - "description": "Indicates whether to include customized wide logo in the footer if available.", - "nullable": true - }, - "include_filter_page": { - "type": "boolean", - "description": "Indicates whether to include a page with all applied filters.", - "nullable": true }, - "include_page_number": { - "type": "boolean", - "description": "Indicates whether to include page number in the footer of each page", - "nullable": true + "metadata_identifier": { + "description": "Unique ID or name of the metadata object.", + "type": "string" }, - "page_footer_text": { + "file_format": { + "description": "Export file format.", "type": "string", - "description": "Text to include in the footer of each page.", - "nullable": true + "enum": [ + "CSV", + "PDF", + "XLSX" + ] }, - "page_orientation": { - "type": "string", - "description": "Page orientation of the PDF.", - "nullable": true + "liveboard_options": { + "description": "Options to specify the details of a Liveboard.", + "allOf": [ + { + "$ref": "#/components/schemas/LiveboardOptionsInput" + } + ] }, - "page_size": { + "pdf_options": { + "description": "Options for PDF export.", + "allOf": [ + { + "$ref": "#/components/schemas/SchedulesPdfOptionsInput" + } + ] + }, + "time_zone": { + "description": "Time zone", "type": "string", "enum": [ - "A4" - ], - "description": "Page size.", - "nullable": true + "Africa/Abidjan", + "Africa/Accra", + "Africa/Addis_Ababa", + "Africa/Algiers", + "Africa/Asmara", + "Africa/Asmera", + "Africa/Bamako", + "Africa/Bangui", + "Africa/Banjul", + "Africa/Bissau", + "Africa/Blantyre", + "Africa/Brazzaville", + "Africa/Bujumbura", + "Africa/Cairo", + "Africa/Casablanca", + "Africa/Ceuta", + "Africa/Conakry", + "Africa/Dakar", + "Africa/Dar_es_Salaam", + "Africa/Djibouti", + "Africa/Douala", + "Africa/El_Aaiun", + "Africa/Freetown", + "Africa/Gaborone", + "Africa/Harare", + "Africa/Johannesburg", + "Africa/Juba", + "Africa/Kampala", + "Africa/Khartoum", + "Africa/Kigali", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Libreville", + "Africa/Lome", + "Africa/Luanda", + "Africa/Lubumbashi", + "Africa/Lusaka", + "Africa/Malabo", + "Africa/Maputo", + "Africa/Maseru", + "Africa/Mbabane", + "Africa/Mogadishu", + "Africa/Monrovia", + "Africa/Nairobi", + "Africa/Ndjamena", + "Africa/Niamey", + "Africa/Nouakchott", + "Africa/Ouagadougou", + "Africa/Porto-Novo", + "Africa/Sao_Tome", + "Africa/Timbuktu", + "Africa/Tripoli", + "Africa/Tunis", + "Africa/Windhoek", + "America/Adak", + "America/Anchorage", + "America/Anguilla", + "America/Antigua", + "America/Araguaina", + "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Aruba", + "America/Asuncion", + "America/Atikokan", + "America/Atka", + "America/Bahia", + "America/Bahia_Banderas", + "America/Barbados", + "America/Belem", + "America/Belize", + "America/Blanc-Sablon", + "America/Boa_Vista", + "America/Bogota", + "America/Boise", + "America/Buenos_Aires", + "America/Cambridge_Bay", + "America/Campo_Grande", + "America/Cancun", + "America/Caracas", + "America/Catamarca", + "America/Cayenne", + "America/Cayman", + "America/Chicago", + "America/Chihuahua", + "America/Coral_Harbour", + "America/Cordoba", + "America/Costa_Rica", + "America/Creston", + "America/Cuiaba", + "America/Curacao", + "America/Danmarkshavn", + "America/Dawson", + "America/Dawson_Creek", + "America/Denver", + "America/Detroit", + "America/Dominica", + "America/Edmonton", + "America/Eirunepe", + "America/El_Salvador", + "America/Ensenada", + "America/Fort_Nelson", + "America/Fort_Wayne", + "America/Fortaleza", + "America/Glace_Bay", + "America/Godthab", + "America/Goose_Bay", + "America/Grand_Turk", + "America/Grenada", + "America/Guadeloupe", + "America/Guatemala", + "America/Guayaquil", + "America/Guyana", + "America/Halifax", + "America/Havana", + "America/Hermosillo", + "America/Indiana/Indianapolis", + "America/Indiana/Knox", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Tell_City", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Indianapolis", + "America/Inuvik", + "America/Iqaluit", + "America/Jamaica", + "America/Jujuy", + "America/Juneau", + "America/Kentucky/Louisville", + "America/Kentucky/Monticello", + "America/Knox_IN", + "America/Kralendijk", + "America/La_Paz", + "America/Lima", + "America/Los_Angeles", + "America/Louisville", + "America/Lower_Princes", + "America/Maceio", + "America/Managua", + "America/Manaus", + "America/Marigot", + "America/Martinique", + "America/Matamoros", + "America/Mazatlan", + "America/Mendoza", + "America/Menominee", + "America/Merida", + "America/Metlakatla", + "America/Mexico_City", + "America/Miquelon", + "America/Moncton", + "America/Monterrey", + "America/Montevideo", + "America/Montreal", + "America/Montserrat", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Nome", + "America/Noronha", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Nuuk", + "America/Ojinaga", + "America/Panama", + "America/Pangnirtung", + "America/Paramaribo", + "America/Phoenix", + "America/Port-au-Prince", + "America/Port_of_Spain", + "America/Porto_Acre", + "America/Porto_Velho", + "America/Puerto_Rico", + "America/Punta_Arenas", + "America/Rainy_River", + "America/Rankin_Inlet", + "America/Recife", + "America/Regina", + "America/Resolute", + "America/Rio_Branco", + "America/Rosario", + "America/Santa_Isabel", + "America/Santarem", + "America/Santiago", + "America/Santo_Domingo", + "America/Sao_Paulo", + "America/Scoresbysund", + "America/Shiprock", + "America/Sitka", + "America/St_Barthelemy", + "America/St_Johns", + "America/St_Kitts", + "America/St_Lucia", + "America/St_Thomas", + "America/St_Vincent", + "America/Swift_Current", + "America/Tegucigalpa", + "America/Thule", + "America/Thunder_Bay", + "America/Tijuana", + "America/Toronto", + "America/Tortola", + "America/Vancouver", + "America/Virgin", + "America/Whitehorse", + "America/Winnipeg", + "America/Yakutat", + "America/Yellowknife", + "Antarctica/Casey", + "Antarctica/Davis", + "Antarctica/DumontDUrville", + "Antarctica/Macquarie", + "Antarctica/Mawson", + "Antarctica/McMurdo", + "Antarctica/Palmer", + "Antarctica/Rothera", + "Antarctica/South_Pole", + "Antarctica/Syowa", + "Antarctica/Troll", + "Antarctica/Vostok", + "Arctic/Longyearbyen", + "Asia/Aden", + "Asia/Almaty", + "Asia/Amman", + "Asia/Anadyr", + "Asia/Aqtau", + "Asia/Aqtobe", + "Asia/Ashgabat", + "Asia/Ashkhabad", + "Asia/Atyrau", + "Asia/Baghdad", + "Asia/Bahrain", + "Asia/Baku", + "Asia/Bangkok", + "Asia/Barnaul", + "Asia/Beirut", + "Asia/Bishkek", + "Asia/Brunei", + "Asia/Calcutta", + "Asia/Chita", + "Asia/Choibalsan", + "Asia/Chongqing", + "Asia/Chungking", + "Asia/Colombo", + "Asia/Dacca", + "Asia/Damascus", + "Asia/Dhaka", + "Asia/Dili", + "Asia/Dubai", + "Asia/Dushanbe", + "Asia/Famagusta", + "Asia/Gaza", + "Asia/Harbin", + "Asia/Hebron", + "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong", + "Asia/Hovd", + "Asia/Irkutsk", + "Asia/Istanbul", + "Asia/Jakarta", + "Asia/Jayapura", + "Asia/Jerusalem", + "Asia/Kabul", + "Asia/Kamchatka", + "Asia/Karachi", + "Asia/Kashgar", + "Asia/Kathmandu", + "Asia/Katmandu", + "Asia/Khandyga", + "Asia/Kolkata", + "Asia/Krasnoyarsk", + "Asia/Kuala_Lumpur", + "Asia/Kuching", + "Asia/Kuwait", + "Asia/Macao", + "Asia/Macau", + "Asia/Magadan", + "Asia/Makassar", + "Asia/Manila", + "Asia/Muscat", + "Asia/Nicosia", + "Asia/Novokuznetsk", + "Asia/Novosibirsk", + "Asia/Omsk", + "Asia/Oral", + "Asia/Phnom_Penh", + "Asia/Pontianak", + "Asia/Pyongyang", + "Asia/Qatar", + "Asia/Qostanay", + "Asia/Qyzylorda", + "Asia/Rangoon", + "Asia/Riyadh", + "Asia/Saigon", + "Asia/Sakhalin", + "Asia/Samarkand", + "Asia/Seoul", + "Asia/Shanghai", + "Asia/Singapore", + "Asia/Srednekolymsk", + "Asia/Taipei", + "Asia/Tashkent", + "Asia/Tbilisi", + "Asia/Tehran", + "Asia/Tel_Aviv", + "Asia/Thimbu", + "Asia/Thimphu", + "Asia/Tokyo", + "Asia/Tomsk", + "Asia/Ujung_Pandang", + "Asia/Ulaanbaatar", + "Asia/Ulan_Bator", + "Asia/Urumqi", + "Asia/Ust-Nera", + "Asia/Vientiane", + "Asia/Vladivostok", + "Asia/Yakutsk", + "Asia/Yangon", + "Asia/Yekaterinburg", + "Asia/Yerevan", + "Atlantic/Azores", + "Atlantic/Bermuda", + "Atlantic/Canary", + "Atlantic/Cape_Verde", + "Atlantic/Faeroe", + "Atlantic/Faroe", + "Atlantic/Jan_Mayen", + "Atlantic/Madeira", + "Atlantic/Reykjavik", + "Atlantic/South_Georgia", + "Atlantic/St_Helena", + "Atlantic/Stanley", + "Australia/ACT", + "Australia/Adelaide", + "Australia/Brisbane", + "Australia/Broken_Hill", + "Australia/Canberra", + "Australia/Currie", + "Australia/Darwin", + "Australia/Eucla", + "Australia/Hobart", + "Australia/LHI", + "Australia/Lindeman", + "Australia/Lord_Howe", + "Australia/Melbourne", + "Australia/NSW", + "Australia/North", + "Australia/Perth", + "Australia/Queensland", + "Australia/South", + "Australia/Sydney", + "Australia/Tasmania", + "Australia/Victoria", + "Australia/West", + "Australia/Yancowinna", + "Brazil/Acre", + "Brazil/DeNoronha", + "Brazil/East", + "Brazil/West", + "CET", + "CST6CDT", + "Canada/Atlantic", + "Canada/Central", + "Canada/Eastern", + "Canada/Mountain", + "Canada/Newfoundland", + "Canada/Pacific", + "Canada/Saskatchewan", + "Canada/Yukon", + "Chile/Continental", + "Chile/EasterIsland", + "Cuba", + "EET", + "EST5EDT", + "Egypt", + "Eire", + "Etc/GMT", + "Etc/GMT+0", + "Etc/GMT+1", + "Etc/GMT+10", + "Etc/GMT+11", + "Etc/GMT+12", + "Etc/GMT+2", + "Etc/GMT+3", + "Etc/GMT+4", + "Etc/GMT+5", + "Etc/GMT+6", + "Etc/GMT+7", + "Etc/GMT+8", + "Etc/GMT+9", + "Etc/GMT-0", + "Etc/GMT-1", + "Etc/GMT-10", + "Etc/GMT-11", + "Etc/GMT-12", + "Etc/GMT-13", + "Etc/GMT-14", + "Etc/GMT-2", + "Etc/GMT-3", + "Etc/GMT-4", + "Etc/GMT-5", + "Etc/GMT-6", + "Etc/GMT-7", + "Etc/GMT-8", + "Etc/GMT-9", + "Etc/GMT0", + "Etc/Greenwich", + "Etc/UCT", + "Etc/UTC", + "Etc/Universal", + "Etc/Zulu", + "Europe/Amsterdam", + "Europe/Andorra", + "Europe/Astrakhan", + "Europe/Athens", + "Europe/Belfast", + "Europe/Belgrade", + "Europe/Berlin", + "Europe/Bratislava", + "Europe/Brussels", + "Europe/Bucharest", + "Europe/Budapest", + "Europe/Busingen", + "Europe/Chisinau", + "Europe/Copenhagen", + "Europe/Dublin", + "Europe/Gibraltar", + "Europe/Guernsey", + "Europe/Helsinki", + "Europe/Isle_of_Man", + "Europe/Istanbul", + "Europe/Jersey", + "Europe/Kaliningrad", + "Europe/Kiev", + "Europe/Kirov", + "Europe/Kyiv", + "Europe/Lisbon", + "Europe/Ljubljana", + "Europe/London", + "Europe/Luxembourg", + "Europe/Madrid", + "Europe/Malta", + "Europe/Mariehamn", + "Europe/Minsk", + "Europe/Monaco", + "Europe/Moscow", + "Europe/Nicosia", + "Europe/Oslo", + "Europe/Paris", + "Europe/Podgorica", + "Europe/Prague", + "Europe/Riga", + "Europe/Rome", + "Europe/Samara", + "Europe/San_Marino", + "Europe/Sarajevo", + "Europe/Saratov", + "Europe/Simferopol", + "Europe/Skopje", + "Europe/Sofia", + "Europe/Stockholm", + "Europe/Tallinn", + "Europe/Tirane", + "Europe/Tiraspol", + "Europe/Ulyanovsk", + "Europe/Uzhgorod", + "Europe/Vaduz", + "Europe/Vatican", + "Europe/Vienna", + "Europe/Vilnius", + "Europe/Volgograd", + "Europe/Warsaw", + "Europe/Zagreb", + "Europe/Zaporozhye", + "Europe/Zurich", + "GB", + "GB-Eire", + "GMT", + "GMT0", + "Greenwich", + "Hongkong", + "Iceland", + "Indian/Antananarivo", + "Indian/Chagos", + "Indian/Christmas", + "Indian/Cocos", + "Indian/Comoro", + "Indian/Kerguelen", + "Indian/Mahe", + "Indian/Maldives", + "Indian/Mauritius", + "Indian/Mayotte", + "Indian/Reunion", + "Iran", + "Israel", + "Jamaica", + "Japan", + "Kwajalein", + "Libya", + "MET", + "MST7MDT", + "Mexico/BajaNorte", + "Mexico/BajaSur", + "Mexico/General", + "NZ", + "NZ-CHAT", + "Navajo", + "PRC", + "PST8PDT", + "Pacific/Apia", + "Pacific/Auckland", + "Pacific/Bougainville", + "Pacific/Chatham", + "Pacific/Chuuk", + "Pacific/Easter", + "Pacific/Efate", + "Pacific/Enderbury", + "Pacific/Fakaofo", + "Pacific/Fiji", + "Pacific/Funafuti", + "Pacific/Galapagos", + "Pacific/Gambier", + "Pacific/Guadalcanal", + "Pacific/Guam", + "Pacific/Honolulu", + "Pacific/Johnston", + "Pacific/Kanton", + "Pacific/Kiritimati", + "Pacific/Kosrae", + "Pacific/Kwajalein", + "Pacific/Majuro", + "Pacific/Marquesas", + "Pacific/Midway", + "Pacific/Nauru", + "Pacific/Niue", + "Pacific/Norfolk", + "Pacific/Noumea", + "Pacific/Pago_Pago", + "Pacific/Palau", + "Pacific/Pitcairn", + "Pacific/Pohnpei", + "Pacific/Ponape", + "Pacific/Port_Moresby", + "Pacific/Rarotonga", + "Pacific/Saipan", + "Pacific/Samoa", + "Pacific/Tahiti", + "Pacific/Tarawa", + "Pacific/Tongatapu", + "Pacific/Truk", + "Pacific/Wake", + "Pacific/Wallis", + "Pacific/Yap", + "Poland", + "Portugal", + "ROK", + "Singapore", + "SystemV/AST4", + "SystemV/AST4ADT", + "SystemV/CST6", + "SystemV/CST6CDT", + "SystemV/EST5", + "SystemV/EST5EDT", + "SystemV/HST10", + "SystemV/MST7", + "SystemV/MST7MDT", + "SystemV/PST8", + "SystemV/PST8PDT", + "SystemV/YST9", + "SystemV/YST9YDT", + "Turkey", + "UCT", + "US/Alaska", + "US/Aleutian", + "US/Arizona", + "US/Central", + "US/East-Indiana", + "US/Eastern", + "US/Hawaii", + "US/Indiana-Starke", + "US/Michigan", + "US/Mountain", + "US/Pacific", + "US/Samoa", + "UTC", + "Universal", + "W-SU", + "WET", + "Zulu", + "EST", + "HST", + "MST", + "ACT", + "AET", + "AGT", + "ART", + "AST", + "BET", + "BST", + "CAT", + "CNT", + "CST", + "CTT", + "EAT", + "ECT", + "IET", + "IST", + "JST", + "MIT", + "NET", + "NST", + "PLT", + "PNT", + "PRT", + "PST", + "SST", + "VST" + ] }, - "truncate_table": { - "type": "boolean", - "description": "Indicates whether to include only first page of the tables.", - "nullable": true - } - }, - "description": "Options for PDF export." - }, - "RecipientDetails": { - "type": "object", - "properties": { - "emails": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Emails of the recipients. Specify email address if the recipient is not a ThoughtSpot user.", - "nullable": true + "frequency": { + "description": "Frequency of the scheduled job run.", + "allOf": [ + { + "$ref": "#/components/schemas/FrequencyInput" + } + ] }, - "principals": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PrincipalsListItem" - }, - "description": "List of user or groups to subscribe for the scheduled job notifications.", - "nullable": true - } - }, - "description": "Recipient configuration which includes email address, ID or name of the users and groups." - }, - "PrincipalsListItem": { - "type": "object", - "required": [ - "identifier", - "type" - ], - "properties": { - "identifier": { - "type": "string", - "description": "Unique ID or name of the user or group." + "recipient_details": { + "description": "Recipients of the scheduled job notifications. You can add the ID or name of the ThoughtSpot users or groups as recipients in the `principals` array. If a recipient is not a ThoughtSpot user, specify email address.", + "allOf": [ + { + "$ref": "#/components/schemas/RecipientDetailsInput" + } + ] }, - "type": { + "status": { + "description": "Status of the schedule", "type": "string", - "description": "Principal type. Valid values are" + "enum": [ + "ACTIVE", + "PAUSE" + ] + }, + "personalised_view_id": { + "description": "Personalised view id of the liveboard to be scheduled.", + "type": "string" } } }, - "ResponseScheduleRun": { + "AssignChangeAuthorRequest": { "type": "object", - "required": [ - "id", - "start_time_in_millis", - "end_time_in_millis", - "status" - ], "properties": { - "id": { - "type": "string", - "description": "GUID of the scheduled job." - }, - "start_time_in_millis": { - "type": "integer", - "format": "int32", - "description": "Schedule run start time in milliseconds." - }, - "end_time_in_millis": { - "type": "integer", - "format": "int32", - "description": "Schedule run end time in milliseconds." + "metadata": { + "description": "GUID or name of the metadata object.", + "type": "array", + "items": { + "$ref": "#/components/schemas/AuthorMetadataTypeInput" + } }, - "status": { - "type": "string", - "description": "Status of the schedule run." + "user_identifier": { + "description": "GUID or name of the user who you want to assign as the author.", + "type": "string" }, - "detail": { - "type": "string", - "description": "Message details related to the schedule run.", - "nullable": true + "current_owner_identifier": { + "description": "GUID or name of the current author. When defined, the metadata objects\nauthored by the specified owner are filtered for the API operation.", + "type": "string" } }, - "description": "Schedule run response object" + "required": [ + "metadata", + "user_identifier" + ] }, - "MetadataInput": { + "FetchColumnSecurityRulesRequest": { "type": "object", "properties": { - "identifier": { - "type": "string", - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "LIVEBOARD" - ], - "nullable": true + "tables": { + "description": "Array of table identifier objects for which to fetch column security rules", + "type": "array", + "items": { + "$ref": "#/components/schemas/ColumnSecurityRuleTableInput" + } } - } + }, + "required": [ + "tables" + ] }, - "SortingOptions": { + "FetchObjectPrivilegesRequest": { "type": "object", "properties": { - "field_name": { - "type": "string", - "description": "Name of the field to apply the sort on.", - "nullable": true + "metadata": { + "description": "Metadata objects for which you want to fetch object privileges. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ObjectPrivilegesMetadataInput" + } }, - "order": { - "type": "string", - "description": "Sort order : ASC(Ascending) or DESC(Descending).", - "nullable": true + "principals": { + "description": "User or group objects for which you want to fetch object privileges.\nIf not specified, the API returns all users and groups that\nhave object privileges on the specified metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PrincipalsInput" + } + }, + "record_offset": { + "description": "The starting record number from where the records should be included for each metadata type.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included for each metadata type.", + "default": 20, + "type": "integer", + "format": "int32" } }, - "description": "Sort options." + "required": [ + "metadata" + ] }, - "ScheduleHistoryRunsOptionsInput": { + "FetchPermissionsOfPrincipalsRequest": { "type": "object", "properties": { - "include_history_runs": { - "type": "boolean", - "default": false, - "description": "Indicates whether to fetch history runs for the scheduled notification.", - "nullable": true + "principals": { + "description": "GUID or name of the user or group.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PrincipalsInput" + } }, - "record_size": { - "type": "integer", - "format": "int32", - "default": 10, - "description": "Indicates the max number of records that can be fetched as past runs of any scheduled job.", - "nullable": true + "metadata": { + "description": "Metadata objects for which you want to fetch permission details.\nIf not specified, the API returns permission details for all\nmetadata objects that the specified users and groups can access.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionsMetadataTypeInput" + } }, "record_offset": { - "type": "integer", - "format": "int32", + "description": "The starting record number from where the records should be included for each metadata type.", "default": 0, - "description": "Indicates the starting record number from where history runs records should be fetched.", - "nullable": true + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included for each metadata type.", + "default": -1, + "type": "integer", + "format": "int32" + }, + "default_metadata_type": { + "description": "When no metadata objects input is passed, metadata objects of this type are fetched.", + "type": "string", + "enum": [ + "ALL", + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "CONNECTION" + ] } - } + }, + "required": [ + "principals" + ] }, - "Action_Details_Input_Create": { + "FetchPermissionsOnMetadataRequest": { "type": "object", "properties": { - "CALLBACK": { - "$ref": "#/components/schemas/CALLBACKInputMandatory", - "description": "CALLBACK Custom Action Type", - "nullable": true + "metadata": { + "description": "GUID or name of the metadata object.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionsMetadataTypeInput" + } }, - "URL": { - "$ref": "#/components/schemas/URLInputMandatory", - "description": "URL Custom Action Type", + "principals": { + "description": "User or group objects for which you want to fetch permissions.\nIf not specified, the API returns all users and groups that\ncan access the specified metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PrincipalsInput" + } + }, + "include_dependent_objects": { + "description": "Indicates whether to fetch permissions of dependent metadata objects.", + "default": false, + "type": "boolean", "nullable": true + }, + "record_offset": { + "description": "The starting record number from where the records should be included for each metadata type.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included for each metadata type.", + "default": -1, + "type": "integer", + "format": "int32" + }, + "permission_type": { + "description": "
Version: 10.3.0.cl or later
\n\nSpecifies the type of permission. Valid values are:\n EFFECTIVE - If the user permission to the metadata objects is granted by the privileges assigned to the groups to which they belong.\n DEFINED - If a user or user group received access to metadata objects via object sharing by another user.", + "type": "string" } }, - "description": "Action details includes Type and Configuration for Custom Actions, either Callback or URL is required.\nWhen both callback and url are provided, callback would be considered" + "required": [ + "metadata" + ] }, - "CALLBACKInputMandatory": { + "ManageObjectPrivilegeRequest": { "type": "object", "properties": { - "reference": { + "operation": { + "description": "Operation to perform to manage object privileges. Available operations are: `ADD`, `REMOVE`.", "type": "string", - "description": "Reference name. By default, the value will be set to action name.", - "nullable": true + "enum": [ + "ADD", + "REMOVE" + ] + }, + "metadata_type": { + "description": "Type of metadata objects on which you want to perform the operation. For now only LOGICAL_TABLE is supported. It may be extended to other metadata types in the future.", + "type": "string", + "enum": [ + "LOGICAL_TABLE" + ] + }, + "object_privilege_types": { + "description": "List of object privilege types on which you want to perform the operation.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "SPOTTER_COACHING_PRIVILEGE" + ] + } + }, + "metadata_identifiers": { + "description": "List of metadata identifiers (GUID or name) on which you want to perform the operation.", + "type": "array", + "items": { + "type": "string" + } + }, + "principals": { + "description": "User or group objects (GUID or name) to which you want to apply the given operation and given object privileges.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PrincipalsInput" + } } }, - "description": "CALLBACK Custom Action Type" + "required": [ + "operation", + "metadata_type", + "object_privilege_types", + "metadata_identifiers", + "principals" + ] }, - "URLInputMandatory": { + "PublishMetadataRequest": { "type": "object", - "required": [ - "url" - ], "properties": { - "authentication": { - "$ref": "#/components/schemas/AuthenticationInput", - "description": "Authorization type for the custom action.", - "nullable": true - }, - "parameters": { + "metadata": { + "description": "Metadata objects to be published.", "type": "array", "items": { - "$ref": "#/components/schemas/ParametersListItemInput" - }, - "description": "Query parameters for url.", - "nullable": true + "$ref": "#/components/schemas/PublishMetadataListItem" + } }, - "url": { - "type": "string", - "description": "Request Url for the Custom action." + "org_identifiers": { + "description": "Unique ID or name of orgs to which metadata objects should be published.", + "type": "array", + "items": { + "type": "string" + } }, - "reference": { - "type": "string", - "description": "Reference name. By default the value will be set to action name", + "skip_validation": { + "description": "Skip validations of objects to be published.", + "type": "boolean", "nullable": true } }, - "description": "URL Custom Action Type" + "required": [ + "metadata", + "org_identifiers" + ] }, - "AuthenticationInput": { + "ShareMetadataRequest": { "type": "object", "properties": { - "API_Key": { - "$ref": "#/components/schemas/API_KeyInput", - "description": "With API key auth, you send a key-value pair to the API either in the request headers or query parameters.", - "nullable": true + "metadata_type": { + "description": "Type of metadata. Required if identifier in metadata_identifies is a name.\n1. Liveboard\n2. Answers\n3. LOGICAL_TABLE for any data object such as table, worksheet or view.\n4. LOGICAL_COLUMN\n5. Connection", + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "LOGICAL_COLUMN", + "CONNECTION" + ] }, - "Basic_Auth": { - "$ref": "#/components/schemas/Basic_AuthInput", - "description": "Basic Auth: Basic authentication involves sending a verified username and password with your request.", + "metadata_identifiers": { + "description": "Unique ID or name of metadata objects. Note: All the names should belong to same metadata_type", + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "description": "Metadata details for sharing objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShareMetadataTypeInput" + } + }, + "permissions": { + "description": "Permission details for sharing the objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SharePermissionsInput" + } + }, + "visualization_identifiers": { + "description": "Options to specify details of Liveboard. First Liveboard encountered in payload is considered to be the corresponding Liveboard.", + "type": "array", + "items": { + "type": "string" + } + }, + "emails": { + "description": "Email IDs to which notifications will be sent.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "message": { + "description": "Message to be included in notification.", + "type": "string" + }, + "enable_custom_url": { + "description": "Sends object URLs in the customized format in email notifications.", + "default": false, + "type": "boolean", "nullable": true }, - "Bearer_Token": { - "type": "string", - "description": "Bearer tokens enable requests to authenticate using an access key.", + "notify_on_share": { + "description": "Flag to notify user when any object is shared.", + "default": true, + "type": "boolean", "nullable": true }, - "No_Auth": { - "type": "string", - "description": "No authorization. If your request doesn't require authorization.", + "has_lenient_discoverability": { + "description": "Flag to make the object discoverable.", + "default": false, + "type": "boolean", "nullable": true } }, - "description": "Authorization type for the custom action." + "required": [ + "permissions", + "message" + ] }, - "API_KeyInput": { + "UnpublishMetadataRequest": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "Enter your key name", + "force": { + "description": "Force unpublishes the object. This will break all the dependent objects in the unpublished orgs.", + "type": "boolean", "nullable": true }, - "value": { - "type": "string", - "description": "Enter you key value", - "nullable": true + "include_dependencies": { + "description": "Should we unpublish all the dependencies for the objects specified.\nThe dependencies will be unpublished if no other published object is using it.", + "type": "boolean" + }, + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PublishMetadataListItem" + } + }, + "org_identifiers": { + "description": "Unique ID or name of orgs.", + "type": "array", + "items": { + "type": "string" + } } }, - "description": "With API key auth, you send a key-value pair to the API either in the request headers or query parameters." + "required": [ + "include_dependencies", + "metadata", + "org_identifiers" + ] }, - "Basic_AuthInput": { + "UpdateColumnSecurityRulesRequest": { "type": "object", "properties": { - "password": { - "type": "string", - "description": "Password for the basic authentication", - "nullable": true + "identifier": { + "description": "GUID or name of the table for which we want to create column security rules", + "type": "string" }, - "username": { - "type": "string", - "description": "Username for the basic authentication", + "obj_identifier": { + "description": "The object ID of the table", + "type": "string" + }, + "clear_csr": { + "description": "If true, then all the secured columns will be marked as unprotected, and all the group associations will be removed", + "type": "boolean", "nullable": true + }, + "column_security_rules": { + "description": "Array where each object defines the security rule for a specific column", + "type": "array", + "items": { + "$ref": "#/components/schemas/ColumnSecurityRuleUpdate" + } } }, - "description": "Basic Auth: Basic authentication involves sending a verified username and password with your request." + "required": [ + "column_security_rules" + ] }, - "ParametersListItemInput": { + "ConfigureCommunicationChannelPreferencesRequest": { "type": "object", "properties": { - "key": { - "type": "string", - "description": "Key for the url query parameter", - "nullable": true + "cluster_preferences": { + "description": "Cluster-level default configurations.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EventChannelConfigInput" + } }, - "value": { - "type": "string", - "description": "Value for the url query parameter", - "nullable": true + "org_preferences": { + "description": "Org-specific configurations.", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrgChannelConfigInput" + } } } }, - "Associate_Metadata_Input_Create": { + "ConfigureSecuritySettingsRequest": { "type": "object", - "required": [ - "identifier" - ], "properties": { - "action_config": { - "$ref": "#/components/schemas/ActionConfigInputCreate", - "description": "Specify that the association is enabled for the metadata object", - "nullable": true - }, - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata." + "cluster_preferences": { + "description": "Cluster-level security preferences.", + "allOf": [ + { + "$ref": "#/components/schemas/SecuritySettingsClusterPreferencesInput" + } + ] }, - "type": { - "type": "string", - "enum": [ - "VISUALIZATION", - "ANSWER", - "WORKSHEET" - ], - "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", - "nullable": true + "org_preferences": { + "description": "Org-level security preferences for the current org.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SecuritySettingsOrgPreferencesInput" + } } } }, - "ActionConfigInputCreate": { + "SearchCommunicationChannelPreferencesRequest": { "type": "object", "properties": { - "position": { - "type": "string", - "enum": [ - "MENU", - "PRIMARY", - "CONTEXT_MENU" - ], - "default": "MENU", - "description": "Position of the Custom action on the Metadata object. Earlier naming convention: context.", - "nullable": true + "cluster_preferences": { + "description": "Event types to search for in cluster-level preferences.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] + } }, - "visibility": { - "type": "boolean", - "default": true, - "description": "Visibility of the metadata association with custom action. Earlier naming convention: enabled", - "nullable": true + "org_preferences": { + "description": "Org-specific search criteria.", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrgPreferenceSearchCriteriaInput" + } } - }, - "description": "Specify that the association is enabled for the metadata object Default" + } }, - "Default_Action_Config_Input_Create": { + "SearchSecuritySettingsRequest": { "type": "object", "properties": { - "visibility": { - "type": "boolean", - "default": true, - "description": "Custom action is available on all visualizations. Earlier naming convention: LOCAL/GLOBAL. TRUE signifies GLOBAL for backward compatibility.\nDefault: true", - "nullable": true + "scope": { + "description": "Scope of security settings to retrieve. CLUSTER returns cluster-level settings,\nORG returns org-level settings for the current org.\nIf not specified, returns both cluster and org settings based on user privileges.", + "type": "string", + "enum": [ + "CLUSTER", + "ORG" + ] } - }, - "description": "Default Custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." + } }, - "Action_Details_Input": { + "UpdateSystemConfigRequest": { "type": "object", "properties": { - "CALLBACK": { - "$ref": "#/components/schemas/CALLBACKInput", - "description": "CALLBACK Custom Action Type", - "nullable": true - }, - "URL": { - "$ref": "#/components/schemas/URLInput", - "description": "URL Custom Action Type", - "nullable": true + "configuration": { + "description": "Configuration JSON with the key-value pair of configuration attributes to be updated.", + "type": "object" } }, - "description": "Action details includes `Type` and configuration details of Custom Actions. Either Callback or URL is required." + "required": [ + "configuration" + ] }, - "CALLBACKInput": { + "ValidateCommunicationChannelRequest": { "type": "object", "properties": { - "reference": { + "channel_type": { + "description": "Type of communication channel to validate (e.g., WEBHOOK).", "type": "string", - "description": "Reference name. By default, the value will be set to action name.", - "nullable": true - } - }, - "description": "CALLBACK Custom Action Type" - }, - "URLInput": { - "type": "object", - "properties": { - "authentication": { - "$ref": "#/components/schemas/AuthenticationInput", - "description": "Authorization type for the custom action.", - "nullable": true - }, - "parameters": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ParametersListItemInput" - }, - "description": "Query parameters for url.", - "nullable": true + "enum": [ + "WEBHOOK" + ] }, - "url": { - "type": "string", - "description": "Request Url for the Custom action.", - "nullable": true + "channel_identifier": { + "description": "Unique identifier or name for the communication channel.", + "type": "string" }, - "reference": { + "event_type": { + "description": "Event type to validate for this channel.", "type": "string", - "description": "Reference name. By default the value will be set to action name", - "nullable": true + "enum": [ + "LIVEBOARD_SCHEDULE" + ] } }, - "description": "URL Custom Action Type" + "required": [ + "channel_type", + "channel_identifier", + "event_type" + ] }, - "Associate_Metadata_Input": { + "AssignTagRequest": { "type": "object", "properties": { - "action_config": { - "$ref": "#/components/schemas/ActionConfigInput", - "description": "Specify that the association is enabled for the metadata object", - "nullable": true - }, - "identifier": { - "type": "string", - "description": "Unique ID or name of the metadata.", - "nullable": true + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/TagMetadataTypeInput" + } }, - "type": { - "type": "string", - "enum": [ - "VISUALIZATION", - "ANSWER", - "WORKSHEET" - ], - "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", - "nullable": true + "tag_identifiers": { + "description": "GUID or name of the tag.", + "type": "array", + "items": { + "type": "string" + } } - } + }, + "required": [ + "metadata", + "tag_identifiers" + ] }, - "ActionConfigInput": { + "CreateTagRequest": { "type": "object", "properties": { - "position": { - "type": "string", - "enum": [ - "MENU", - "PRIMARY", - "CONTEXT_MENU" - ], - "description": "Position of the Custom action on the Metadata object. Earlier naming convention: context.", - "nullable": true + "name": { + "description": "Name of the tag.", + "type": "string" }, - "visibility": { - "type": "boolean", - "description": "Visibility of the metadata association with custom action. Earlier naming convention: enabled", - "nullable": true + "color": { + "description": "Hex color code to be assigned to the tag. For example, #ff78a9.", + "type": "string" } }, - "description": "Specify that the association is enabled for the metadata object Default" + "required": [ + "name" + ] }, - "Default_Action_Config_Input": { + "SearchTagsRequest": { "type": "object", "properties": { - "visibility": { - "type": "boolean", - "description": "Custom action is available on all visualizations. Earlier naming convention: LOCAL/GLOBAL. TRUE signifies GLOBAL for backward compatibility.", - "nullable": true + "tag_identifier": { + "description": "Name or Id of the tag.", + "type": "string" + }, + "name_pattern": { + "description": "A pattern to match case-insensitive name of the Tag object.", + "type": "string" + }, + "color": { + "description": "Color of the tag.", + "type": "string" } - }, - "description": "Default Custom action configuration. This includes the custom action's visibility across all visualizations and Answers. By default, a custom action is added to all visualizations and Answers." + } }, - "ModelTableList": { + "UnassignTagRequest": { "type": "object", - "required": [ - "model_name", - "tables" - ], "properties": { - "model_name": { - "type": "string", - "description": "Name of the Model." - }, - "model_path": { - "type": "string", - "description": "Model directory path, this is optional param and required if there are duplicate models with the same name.", - "nullable": true + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/TagMetadataTypeInput" + } }, - "tables": { + "tag_identifiers": { + "description": "GUID or name of the tag.", "type": "array", "items": { "type": "string" - }, - "description": "List of Tables." + } } - } + }, + "required": [ + "metadata", + "tag_identifiers" + ] }, - "DbtSearchResponse": { + "UpdateTagRequest": { "type": "object", "properties": { - "dbt_connection_identifier": { - "type": "string", - "nullable": true - }, - "project_name": { - "type": "string", - "nullable": true - }, - "connection_id": { - "type": "string", - "nullable": true + "name": { + "description": "Name of the tag.", + "type": "string" }, - "connection_name": { - "type": "string", - "nullable": true + "color": { + "description": "Hex color code to be assigned to the tag. For example, #ff78a9.", + "type": "string" + } + } + }, + "ActivateUserRequest": { + "type": "object", + "properties": { + "user_identifier": { + "description": "Unique ID or name of the user.", + "type": "string" }, - "cdw_database": { - "type": "string", - "nullable": true + "auth_token": { + "description": "Auth token for the user.", + "type": "string" }, - "import_type": { - "type": "string", - "nullable": true + "password": { + "description": "New password for the user to access the account.", + "type": "string" }, - "author_name": { - "type": "string", - "nullable": true + "properties": { + "description": "Properties of the user.", + "type": "string" } - } + }, + "required": [ + "user_identifier", + "auth_token", + "password" + ] }, - "Conversation": { + "ChangeUserPasswordRequest": { "type": "object", - "required": [ - "conversation_identifier" - ], "properties": { - "conversation_identifier": { - "type": "string", - "description": "Unique identifier of the conversation." + "current_password": { + "description": "Current password of the user.", + "type": "string" + }, + "new_password": { + "description": "New password for the user.", + "type": "string" + }, + "user_identifier": { + "description": "GUID or name of the user.", + "type": "string" } - } + }, + "required": [ + "current_password", + "new_password", + "user_identifier" + ] }, - "ResponseMessage": { + "CreateUserRequest": { "type": "object", - "required": [ - "message_type" - ], "properties": { - "session_identifier": { - "type": "string", - "description": "Unique identifier of the generated response.", - "nullable": true + "name": { + "description": "Name of the user. The username string must be unique.", + "type": "string" }, - "generation_number": { - "type": "integer", - "format": "int32", - "description": "Generate number of the response.", - "nullable": true + "display_name": { + "description": "A unique display name string for the user account, usually their first and last name", + "type": "string" }, - "message_type": { + "password": { + "description": "Password for the user account. For IAMv2 users, you must set this password if you do not want to trigger an activation email.", + "type": "string" + }, + "email": { + "description": "Email of the user account", + "type": "string" + }, + "account_type": { + "description": "Type of the account.", + "default": "LOCAL_USER", "type": "string", "enum": [ - "TSAnswer" - ], - "description": "Type of the generated response." + "LOCAL_USER", + "LDAP_USER", + "SAML_USER", + "OIDC_USER", + "REMOTE_USER" + ] }, - "visualization_type": { + "account_status": { + "description": "Current status of the user account. The `SUSPENDED` user state indicates a transitional state applicable to IAMv2 users only.", + "default": "ACTIVE", "type": "string", "enum": [ - "Chart", - "Table", - "Undefined" - ], - "description": "Generated visualization type.", - "nullable": true + "ACTIVE", + "INACTIVE", + "EXPIRED", + "LOCKED", + "PENDING", + "SUSPENDED" + ] }, - "tokens": { - "type": "string", - "description": "Tokens for the response.", - "nullable": true + "org_identifiers": { + "description": "List of Org IDs to which the user belongs.", + "type": "array", + "items": { + "type": "string" + } }, - "display_tokens": { - "type": "string", - "description": "User friendly tokens for the response.", - "nullable": true - } - } - }, - "ContextPayloadV2Input": { - "type": "object", - "properties": { - "type": { + "group_identifiers": { + "description": "GUIDs or names of the groups to which the newly created user belongs.", + "type": "array", + "items": { + "type": "string" + } + }, + "visibility": { + "description": "Visibility of the users. When set to SHARABLE, the user is visible to other users and groups when they try to share an object.", + "default": "SHARABLE", "type": "string", "enum": [ - "answer", - "liveboard", - "data_source" - ], - "description": "Type of the context.", - "nullable": true + "SHARABLE", + "NON_SHARABLE" + ] }, - "answer_context": { - "$ref": "#/components/schemas/AnswerContextInput", - "description": "Answer context.", + "notify_on_share": { + "description": "User preference for receiving email notifications when another ThoughtSpot\nuser shares a metadata object such as Answer, Liveboard, or Worksheet.", + "default": true, + "type": "boolean", "nullable": true }, - "liveboard_context": { - "$ref": "#/components/schemas/LBContextInput", - "description": "Liveboard context.", + "show_onboarding_experience": { + "description": "The user preference for revisiting the onboarding experience.", + "default": true, + "type": "boolean", "nullable": true }, - "data_source_context": { - "$ref": "#/components/schemas/DataSourceContextInput", - "description": "Data source context.", + "onboarding_experience_completed": { + "description": "flag to get the on-boarding experience is completed or not.", + "default": false, + "type": "boolean", "nullable": true - } - } - }, - "AnswerContextInput": { - "type": "object", - "required": [ - "session_identifier", - "generation_number" - ], - "properties": { - "session_identifier": { - "type": "string", - "description": "Unique identifier of the answer session." }, - "generation_number": { - "type": "integer", - "format": "int32", - "description": "Generation number of the answer." - } - } - }, - "LBContextInput": { - "type": "object", - "required": [ - "liveboard_identifier", - "visualization_identifier" - ], - "properties": { - "liveboard_identifier": { + "home_liveboard_identifier": { + "description": "GUID of the Liveboard to set a default Liveboard for the user.\nThoughtSpot displays this Liveboard on the Home page when the user logs in.", + "type": "string" + }, + "favorite_metadata": { + "description": "Metadata objects to add to the user's favorites list.", + "type": "array", + "items": { + "$ref": "#/components/schemas/FavoriteMetadataInput" + } + }, + "preferred_locale": { + "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", "type": "string", - "description": "Unique identifier of the liveboard." + "enum": [ + "en-CA", + "en-GB", + "en-US", + "de-DE", + "ja-JP", + "zh-CN", + "pt-BR", + "fr-FR", + "fr-CA", + "es-US", + "da-DK", + "es-ES", + "fi-FI", + "sv-SE", + "nb-NO", + "pt-PT", + "nl-NL", + "it-IT", + "ru-RU", + "en-IN", + "de-CH", + "en-NZ", + "es-MX", + "en-AU", + "zh-Hant", + "ko-KR", + "en-DE" + ] }, - "visualization_identifier": { - "type": "string", - "description": "Unique identifier of the visualization." - } - } - }, - "DataSourceContextInput": { - "type": "object", - "required": [ - "guid" - ], - "properties": { - "guid": { - "type": "string", - "description": "Unique identifier of the data source." - } - } - }, - "ConversationSettingsInput": { - "type": "object", - "properties": { - "enable_contextual_change_analysis": { + "use_browser_language": { + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.
Version: 26.3.0.cl or later", "type": "boolean", - "default": false, - "description": "Enable contextual change analysis.", "nullable": true }, - "enable_natural_language_answer_generation": { + "extended_properties": { + "description": "Properties for the user", + "type": "object" + }, + "extended_preferences": { + "description": "Preferences for the user", + "type": "object" + }, + "trigger_welcome_email": { + "description": "Flag to indicate whether welcome email should be sent to user. This parameter is applied only on clusters on which IAM is disabled.", "type": "boolean", - "default": true, - "description": "Enable natural language to answer generation.", "nullable": true }, - "enable_reasoning": { + "trigger_activation_email": { + "description": "Flag to indicate whether activation email should be sent to the user. Default value for IAMv2 users is set to true. Users must either set this to false, or enter a valid \npassword if they do not want to trigger an activation email.", "type": "boolean", - "default": false, - "description": "Enable reasoning.", "nullable": true } - } - }, - "AgentConversation": { - "type": "object", + }, "required": [ - "conversation_id" - ], - "properties": { - "conversation_id": { - "type": "string", - "description": "Unique identifier of the conversation." - } - } + "name", + "display_name", + "email" + ] }, - "SendAgentMessageResponse": { + "DeactivateUserRequest": { "type": "object", - "required": [ - "success" - ], "properties": { - "success": { - "type": "boolean" + "user_identifier": { + "description": "Unique ID or name of the user.", + "type": "string" }, - "message": { - "type": "string", - "nullable": true + "base_url": { + "description": "Base url of the cluster.", + "type": "string" } - } + }, + "required": [ + "user_identifier", + "base_url" + ] }, - "NLInstructionsInfoInput": { + "ForceLogoutUsersRequest": { "type": "object", - "required": [ - "instructions", - "scope" - ], "properties": { - "instructions": { + "user_identifiers": { + "description": "GUID or name of the users for force logging out their sessions.", "type": "array", "items": { "type": "string" - }, - "description": "User instructions for natural language processing." - }, - "scope": { - "type": "string", - "enum": [ - "GLOBAL" - ], - "description": "Scope of the instruction (USER or GLOBAL). Defaults to GLOBAL." - } - } - }, - "eureka_SetNLInstructionsResponse": { - "type": "object", - "required": [ - "success" - ], - "properties": { - "success": { - "type": "boolean", - "description": "Success status of the operation." + } } } }, - "VariableUpdateAssignmentInput": { + "ImportUsersRequest": { "type": "object", - "required": [ - "variable_identifier", - "variable_values", - "operation" - ], "properties": { - "variable_identifier": { - "type": "string", - "description": "ID or Name of the variable" - }, - "variable_values": { + "users": { + "description": "List of users needs to be imported.", "type": "array", "items": { - "type": "string" - }, - "description": "Values of the variable" - }, - "operation": { - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "REPLACE", - "RESET" - ], - "description": "Operation to perform" - } - }, - "description": "Input for variable value update in batch operations" - }, - "VariableUpdateScopeInput": { - "type": "object", - "required": [ - "org_identifier" - ], - "properties": { - "org_identifier": { - "type": "string", - "description": "The unique name of the org" - }, - "principal_type": { - "type": "string", - "enum": [ - "USER", - "USER_GROUP" - ], - "description": "Principal type", - "nullable": true + "$ref": "#/components/schemas/ImportUser" + } }, - "principal_identifier": { - "type": "string", - "description": "Unique ID or name of the principal", - "nullable": true + "default_password": { + "description": "The default password to assign to users if they do not have a password assigned in ThoughtSpot.", + "type": "string" }, - "model_identifier": { - "type": "string", - "description": "Unique ID of the model", + "dry_run": { + "description": "If true, the API performs a test operation and returns user IDs whose data will be edited after the import.", + "default": true, + "type": "boolean", "nullable": true }, - "priority": { - "type": "integer", - "format": "int32", - "description": "Priority level", + "delete_unspecified_users": { + "description": "If set to true, removes the users that are not specified in the API request.", + "default": false, + "type": "boolean", "nullable": true } }, - "description": "Input for variable value update in batch operations" + "required": [ + "users" + ] }, - "CreateEmailCustomizationResponse": { + "ResetUserPasswordRequest": { "type": "object", - "required": [ - "tenant_id", - "org", - "name", - "template_properties" - ], "properties": { - "tenant_id": { - "type": "string", - "description": "Tenant ID" - }, - "org": { - "$ref": "#/components/schemas/OrgType", - "description": "Email customization org" - }, - "name": { - "type": "string", - "description": "Email customization name." + "new_password": { + "description": "New password for the user.", + "type": "string" }, - "template_properties": { - "type": "object", - "description": "Customization configuration for the email" + "user_identifier": { + "description": "GUID or name of the user.", + "type": "string" } - } + }, + "required": [ + "new_password", + "user_identifier" + ] }, - "OrgType": { + "SearchUsersRequest": { "type": "object", "properties": { - "name": { + "user_identifier": { + "description": "GUID / name of the user to search", + "type": "string" + }, + "display_name": { + "description": "A unique display name string for the user account, usually their first and last name", + "type": "string" + }, + "name_pattern": { + "description": "A pattern to match case-insensitive name of the User object.", + "type": "string" + }, + "visibility": { + "description": "Visibility of the user", "type": "string", - "nullable": true + "enum": [ + "SHARABLE", + "NON_SHARABLE" + ] + }, + "email": { + "description": "Email of the user account", + "type": "string" + }, + "group_identifiers": { + "description": "GUID or name of the group to which the user belongs", + "type": "array", + "items": { + "type": "string" + } + }, + "privileges": { + "description": "Privileges assigned to the user", + "type": "array", + "items": { + "type": "string", + "enum": [ + "ADMINISTRATION", + "AUTHORING", + "USERDATAUPLOADING", + "DATADOWNLOADING", + "USERMANAGEMENT", + "DATAMANAGEMENT", + "SHAREWITHALL", + "JOBSCHEDULING", + "A3ANALYSIS", + "EXPERIMENTALFEATUREPRIVILEGE", + "BYPASSRLS", + "RANALYSIS", + "DEVELOPER", + "USER_ADMINISTRATION", + "GROUP_ADMINISTRATION", + "SYNCMANAGEMENT", + "CAN_CREATE_CATALOG", + "DISABLE_PINBOARD_CREATION", + "LIVEBOARD_VERIFIER", + "PREVIEW_THOUGHTSPOT_SAGE", + "APPLICATION_ADMINISTRATION", + "SYSTEM_INFO_ADMINISTRATION", + "ORG_ADMINISTRATION", + "ROLE_ADMINISTRATION", + "AUTHENTICATION_ADMINISTRATION", + "BILLING_INFO_ADMINISTRATION", + "CAN_MANAGE_CUSTOM_CALENDAR", + "CAN_CREATE_OR_EDIT_CONNECTIONS", + "CAN_MANAGE_WORKSHEET_VIEWS_TABLES", + "CAN_MANAGE_VERSION_CONTROL", + "THIRDPARTY_ANALYSIS", + "ALLOW_NON_EMBED_FULL_APP_ACCESS", + "CAN_ACCESS_ANALYST_STUDIO", + "CAN_MANAGE_ANALYST_STUDIO", + "PREVIEW_DOCUMENT_SEARCH", + "CAN_MODIFY_FOLDERS", + "CAN_MANAGE_VARIABLES", + "CAN_VIEW_FOLDERS", + "CAN_SETUP_VERSION_CONTROL", + "CAN_MANAGE_WEBHOOKS", + "CAN_DOWNLOAD_VISUALS", + "CAN_DOWNLOAD_DETAILED_DATA", + "CAN_USE_SPOTTER" + ] + } }, - "id": { - "type": "integer", - "format": "int32", - "nullable": true - } - } - }, - "Template_Properties_Input_Create": { - "type": "object", - "properties": { - "cta_button_bg_color": { + "account_type": { + "description": "Type of the account", "type": "string", - "description": "Background color for call-to-action button in hex format", - "nullable": true + "enum": [ + "LOCAL_USER", + "LDAP_USER", + "SAML_USER", + "OIDC_USER", + "REMOTE_USER" + ] }, - "cta_text_font_color": { + "account_status": { + "description": "Current status of the user account.", "type": "string", - "description": "Text color for call-to-action button in hex format", - "nullable": true + "enum": [ + "ACTIVE", + "INACTIVE", + "EXPIRED", + "LOCKED", + "PENDING", + "SUSPENDED" + ] }, - "primary_bg_color": { - "type": "string", - "description": "Primary background color in hex format", + "notify_on_share": { + "description": "User preference for receiving email notifications when another ThoughtSpot user\nshares a metadata object such as Answer, Liveboard, or Worksheet.", + "type": "boolean", "nullable": true }, - "home_url": { - "type": "string", - "description": "Home page URL (HTTP/HTTPS only)", + "show_onboarding_experience": { + "description": "The user preference for revisiting the onboarding experience", + "type": "boolean", "nullable": true }, - "logo_url": { - "type": "string", - "description": "Logo image URL (HTTP/HTTPS only)", + "onboarding_experience_completed": { + "description": "Indicates if the user has completed the onboarding walkthrough", + "type": "boolean", "nullable": true }, - "font_family": { - "type": "string", - "description": "Font family for email content (e.g., Arial, sans-serif)", - "nullable": true + "org_identifiers": { + "description": "IDs or names of the Orgs to which the user belongs", + "type": "array", + "items": { + "type": "string" + } }, - "product_name": { - "type": "string", - "description": "Product name to display", - "nullable": true + "home_liveboard_identifier": { + "description": "Unique ID or name of the user's home Liveboard.", + "type": "string" }, - "footer_address": { - "type": "string", - "description": "Footer address text", - "nullable": true + "favorite_metadata": { + "description": "Metadata objects which are assigned as favorites of the user.", + "type": "array", + "items": { + "$ref": "#/components/schemas/FavoriteMetadataInput" + } }, - "footer_phone": { - "type": "string", - "description": "Footer phone number", - "nullable": true + "record_offset": { + "description": "The starting record number from where the records should be included.", + "default": 0, + "type": "integer", + "format": "int32" }, - "replacement_value_for_liveboard": { - "type": "string", - "description": "Replacement value for Liveboard", - "nullable": true + "record_size": { + "description": "The number of records that should be included.", + "default": 10, + "type": "integer", + "format": "int32" }, - "replacement_value_for_answer": { - "type": "string", - "description": "Replacement value for Answer", - "nullable": true + "sort_options": { + "description": "Sort options.", + "allOf": [ + { + "$ref": "#/components/schemas/SortOptions" + } + ] }, - "replacement_value_for_spot_iq": { - "type": "string", - "description": "Replacement value for SpotIQ", - "nullable": true + "role_identifiers": { + "description": "Filters by the role assigned to the user.", + "type": "array", + "items": { + "type": "string" + } }, - "hide_footer_address": { + "include_favorite_metadata": { + "description": "Indicates if the user's favorite objects should be displayed.", + "default": false, "type": "boolean", - "description": "Whether to hide footer address", "nullable": true }, - "hide_footer_phone": { + "include_variable_values": { + "description": "Indicates if the user's formula variable values should be included in the response.", + "default": false, "type": "boolean", - "description": "Whether to hide footer phone number", "nullable": true + } + } + }, + "UpdateUserRequest": { + "type": "object", + "properties": { + "name": { + "description": "Name of the user. The username string must be unique.", + "type": "string" }, - "hide_manage_notification": { - "type": "boolean", - "description": "Whether to hide manage notification link", - "nullable": true + "display_name": { + "description": "A unique display name string for the user account, usually their first and last name", + "type": "string" }, - "hide_mobile_app_nudge": { - "type": "boolean", - "description": "Whether to hide mobile app nudge", - "nullable": true + "visibility": { + "description": "Visibility of the users. When set to SHARABLE, the user is visible to other users and groups when they try to share an object.", + "type": "string", + "enum": [ + "SHARABLE", + "NON_SHARABLE" + ] }, - "hide_privacy_policy": { - "type": "boolean", - "description": "Whether to hide privacy policy link", - "nullable": true + "email": { + "description": "Email of the user account", + "type": "string" }, - "hide_product_name": { - "type": "boolean", - "description": "Whether to hide product name", - "nullable": true + "account_status": { + "description": "Current status of the user account. The `SUSPENDED` user state indicates a transitional state applicable to IAMv2 users only.", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE", + "EXPIRED", + "LOCKED", + "PENDING", + "SUSPENDED" + ] }, - "hide_ts_vocabulary_definitions": { + "notify_on_share": { + "description": "User preference for receiving email notifications when another ThoughtSpot user\nshares a metadata object such as Answer, Liveboard, or Worksheet.", "type": "boolean", - "description": "Whether to hide ThoughtSpot vocabulary definitions", "nullable": true }, - "hide_notification_status": { + "show_onboarding_experience": { + "description": "The user preference for revisiting the onboarding experience.", "type": "boolean", - "description": "Whether to hide notification status", "nullable": true }, - "hide_error_message": { + "onboarding_experience_completed": { + "description": "Indicates if the user has completed the onboarding and allows turning off the onboarding walkthrough.", "type": "boolean", - "description": "Whether to hide error message", "nullable": true }, - "hide_unsubscribe_link": { - "type": "boolean", - "description": "Whether to hide unsubscribe link", - "nullable": true + "account_type": { + "description": "Type of the account.", + "type": "string", + "enum": [ + "LOCAL_USER", + "LDAP_USER", + "SAML_USER", + "OIDC_USER", + "REMOTE_USER" + ] }, - "hide_modify_alert": { - "type": "boolean", - "description": "Whether to hide modify alert", - "nullable": true + "group_identifiers": { + "description": "GUIDs or names of the groups.", + "type": "array", + "items": { + "type": "string" + } }, - "company_privacy_policy_url": { - "type": "string", - "description": "Company privacy policy URL (HTTP/HTTPS only)", - "nullable": true + "home_liveboard_identifier": { + "description": "GUID of the Liveboard to set a default Liveboard for the user. ThoughtSpot displays\nthis Liveboard on the Home page when the user logs in.", + "type": "string" }, - "company_website_url": { + "favorite_metadata": { + "description": "Metadata objects to add to the user's favorites list.", + "type": "array", + "items": { + "$ref": "#/components/schemas/FavoriteMetadataInput" + } + }, + "org_identifiers": { + "description": "IDs of the Orgs.", + "type": "array", + "items": { + "type": "string" + } + }, + "operation": { + "description": "Type of update operation. Default operation type is REPLACE", + "default": "REPLACE", "type": "string", - "description": "Company website URL (HTTP/HTTPS only)", - "nullable": true + "enum": [ + "ADD", + "REMOVE", + "REPLACE" + ] }, - "contact_support_url": { + "preferred_locale": { + "description": "Locale for the user. When setting this value, do not set use_browser_language\nto true, otherwise the browser's language setting will take precedence and the\npreferred_locale value will be ignored.", "type": "string", - "description": "Contact support url (HTTP/HTTPS only).
Version: 26.2.0.cl or later", - "nullable": true + "enum": [ + "en-CA", + "en-GB", + "en-US", + "de-DE", + "ja-JP", + "zh-CN", + "pt-BR", + "fr-FR", + "fr-CA", + "es-US", + "da-DK", + "es-ES", + "fi-FI", + "sv-SE", + "nb-NO", + "pt-PT", + "nl-NL", + "it-IT", + "ru-RU", + "en-IN", + "de-CH", + "en-NZ", + "es-MX", + "en-AU", + "zh-Hant", + "ko-KR", + "en-DE" + ] }, - "hide_contact_support_url": { + "use_browser_language": { + "description": "Flag to indicate whether to use the browser locale for the user in the UI.\nWhen set to true, the preferred_locale value is unset and the browser's\nlanguage setting takes precedence.
Version: 26.3.0.cl or later", "type": "boolean", - "description": "Whether to hide contact support url.
Version: 26.2.0.cl or later", "nullable": true + }, + "extended_properties": { + "description": "Properties for the user", + "type": "object" + }, + "extended_preferences": { + "description": "Preferences for the user", + "type": "object" } - }, - "description": "Email customization configuration properties" + } }, - "ExternalTableInput": { + "CreateVariableRequest": { "type": "object", - "required": [ - "connection_identifier", - "table_name" - ], "properties": { - "connection_identifier": { + "type": { + "description": "Type of variable", "type": "string", - "description": "Unique ID or name of the connection." + "enum": [ + "CONNECTION_PROPERTY", + "TABLE_MAPPING", + "CONNECTION_PROPERTY_PER_PRINCIPAL", + "FORMULA_VARIABLE" + ] }, - "database_name": { - "type": "string", - "default": "", - "description": "Name of the database.", - "nullable": true + "name": { + "description": "Name of the variable. This is unique across the cluster.", + "type": "string" }, - "schema_name": { - "type": "string", - "default": "", - "description": "Name of the schema.", + "is_sensitive": { + "description": "If the variable contains sensitive values like passwords", + "default": false, + "type": "boolean", "nullable": true }, - "table_name": { + "data_type": { + "description": "Variable Data Type, only for formula_variable type, leave empty for others
Version: 10.15.0.cl or later", "type": "string", - "description": "Name of the table. Table names may be case-sensitive depending on the database system." + "enum": [ + "VARCHAR", + "INT32", + "INT64", + "DOUBLE", + "DATE", + "DATE_TIME" + ] } - } + }, + "required": [ + "type", + "name" + ] }, - "PolicyProcessOptionsInput": { + "DeleteVariablesRequest": { "type": "object", "properties": { - "impersonate_user": { - "type": "string", - "nullable": true + "identifiers": { + "description": "Unique id(s) or name(s) of the variable(s) to delete", + "type": "array", + "items": { + "type": "string" + } } - } + }, + "required": [ + "identifiers" + ] }, - "WebhookAuthenticationInput": { + "PutVariableValuesRequest": { "type": "object", "properties": { - "API_KEY": { - "$ref": "#/components/schemas/WebhookAuthApiKeyInput", - "description": "API key authentication configuration.", - "nullable": true - }, - "BASIC_AUTH": { - "$ref": "#/components/schemas/WebhookAuthBasicAuthInput", - "description": "Basic authentication configuration.", - "nullable": true - }, - "BEARER_TOKEN": { + "operation": { + "description": "Operation to perform", "type": "string", - "description": "Bearer token authentication configuration.", - "nullable": true + "enum": [ + "ADD", + "REMOVE", + "REPLACE", + "RESET" + ] }, - "OAUTH2": { - "$ref": "#/components/schemas/WebhookAuthOAuth2Input", - "description": "OAuth2 authentication configuration.", - "nullable": true + "variable_assignment": { + "description": "Variable assignments", + "type": "array", + "items": { + "$ref": "#/components/schemas/VariablePutAssignmentInput" + } } - } + }, + "required": [ + "variable_assignment" + ] }, - "WebhookAuthApiKeyInput": { + "SearchVariablesRequest": { "type": "object", - "required": [ - "key", - "value" - ], "properties": { - "key": { - "type": "string", - "description": "The header or query parameter name for the API key." + "variable_details": { + "description": "Variable details", + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableDetailInput" + } }, - "value": { + "value_scope": { + "description": "Array of scope filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValueScopeInput" + } + }, + "record_offset": { + "description": "The starting record number from where the records should be included", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of records that should be included", + "default": 10, + "type": "integer", + "format": "int32" + }, + "response_content": { + "description": "Format in which we want the output", + "default": "METADATA", "type": "string", - "description": "The API key value." + "enum": [ + "METADATA", + "METADATA_AND_VALUES" + ] } } }, - "WebhookAuthBasicAuthInput": { + "UpdateVariableRequest": { "type": "object", + "properties": { + "name": { + "description": "New name of the variable.", + "type": "string" + } + }, "required": [ - "username", - "password" - ], + "name" + ] + }, + "UpdateVariableValuesRequest": { + "type": "object", "properties": { - "username": { - "type": "string", - "description": "Username for basic authentication." + "variable_assignment": { + "description": "Array of variable assignment objects specifying the variable identifier, values to assign, and the operation type (ADD, REMOVE, REPLACE, or RESET) to perform on each variable.", + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableUpdateAssignmentInput" + } }, - "password": { - "type": "string", - "description": "Password for basic authentication." + "variable_value_scope": { + "description": "Array of scope objects defining where the variable values apply, including organization context, optional principal constraints (user or group), model reference for formula variables, and priority for conflict resolution.", + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableUpdateScopeInput" + } } - } + }, + "required": [ + "variable_assignment", + "variable_value_scope" + ] }, - "WebhookAuthOAuth2Input": { + "CommitBranchRequest": { "type": "object", + "properties": { + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataObject" + } + }, + "delete_aware": { + "description": "Delete the tml files from version control repo if it does not exist in the ThoughSpot instance", + "default": true, + "type": "boolean", + "nullable": true + }, + "branch_name": { + "description": " Name of the remote branch where object should be pushed\n \n\nNote: If no branch_name is specified, then the commit_branch_name will be considered.", + "type": "string" + }, + "comment": { + "description": "Comment to be added to the commit", + "type": "string" + } + }, "required": [ - "authorization_url", - "client_id", - "client_secret" - ], + "metadata", + "comment" + ] + }, + "CreateConfigRequest": { + "type": "object", "properties": { - "authorization_url": { - "type": "string", - "description": "OAuth2 authorization server URL." + "repository_url": { + "description": "URL for connecting to remote repository", + "type": "string" }, - "client_id": { - "type": "string", - "description": "OAuth2 client identifier." + "username": { + "description": "Username to authenticate connection to remote repository", + "type": "string" }, - "client_secret": { - "type": "string", - "description": "OAuth2 client secret key." + "access_token": { + "description": "Access token corresponding to the user to authenticate connection to remote repository", + "type": "string" + }, + "org_identifier": { + "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", + "type": "string" + }, + "branch_names": { + "description": "List the remote branches to configure. Example:[development, production]", + "type": "array", + "items": { + "type": "string" + } + }, + "commit_branch_name": { + "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.
Version: 9.7.0.cl or later", + "type": "string" + }, + "enable_guid_mapping": { + "description": "Maintain mapping of guid for the deployment to an instance
Version: 9.4.0.cl or later", + "default": true, + "type": "boolean", + "nullable": true + }, + "configuration_branch_name": { + "description": " Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.\n \n\nNote: If no branch name is specified, then by default, ts_config_files branch is considered. Ensure this branch exists before configuration.
Version: 9.7.0.cl or later", + "type": "string" + } + }, + "required": [ + "repository_url", + "username", + "access_token" + ] + }, + "DeleteConfigRequest": { + "type": "object", + "properties": { + "cluster_level": { + "description": " Applicable when Orgs is enabled in the cluster\n \n\nIndicator to consider cluster level or org level config. Set it to false to delete configuration from current org. If set to true, then the configuration at cluster level and orgs that inherited the configuration from cluster level will be deleted.
Version: 9.5.0.cl or later", + "type": "boolean", + "nullable": true } } }, - "WebhookSignatureVerificationInput": { + "DeployCommitRequest": { "type": "object", - "required": [ - "type", - "header", - "algorithm", - "secret" - ], "properties": { - "type": { - "type": "string", - "enum": [ - "HMAC_SHA256" - ], - "description": "Signature verification method type." + "commit_id": { + "description": " Commit_id against which the files should be picked to deploy.\n \n\nNote: If no commit_id is specified, then the head of the branch is considered.", + "type": "string" }, - "header": { + "branch_name": { + "description": "Name of the remote branch where changes should be picked", + "type": "string" + }, + "deploy_type": { + "description": "Indicates if all files or only modified file at specified commit point should be considered", + "default": "DELTA", "type": "string", - "description": "HTTP header where the signature is sent." + "enum": [ + "FULL", + "DELTA" + ] }, - "algorithm": { + "deploy_policy": { + "description": "Define the policy to follow while importing TML in the ThoughtSpot environment. Use “ALL_OR_NONE” to cancel the deployment of all ThoughtSpot objects if at least one of them fails to import. Use “Partial” to import ThoughtSpot objects that validate successfully even if other objects in the same deploy operations fail to import.", + "default": "ALL_OR_NONE", "type": "string", "enum": [ - "SHA256" - ], - "description": "Hash algorithm used for signature verification." + "ALL_OR_NONE", + "PARTIAL", + "VALIDATE_ONLY" + ] + } + }, + "required": [ + "branch_name" + ] + }, + "RevertCommitRequest": { + "type": "object", + "properties": { + "metadata": { + "description": "Metadata objects.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataObject" + } + }, + "branch_name": { + "description": " Name of the branch where the reverted version should be committed\n \n\nNote: If no branch_name is specified, then the commit_branch_name will be considered.", + "type": "string" }, - "secret": { + "revert_policy": { + "description": "Policy to apply when reverting a commit. Valid values: [ALL_OR_NONE, PARTIAL]", + "default": "ALL_OR_NONE", "type": "string", - "description": "Shared secret used for HMAC signature generation." + "enum": [ + "ALL_OR_NONE", + "PARTIAL" + ] } } }, - "StorageDestinationInput": { + "SearchCommitsRequest": { "type": "object", - "required": [ - "storage_type", - "storage_config" - ], "properties": { - "storage_type": { + "metadata_identifier": { + "description": "Unique ID or name of the metadata.", + "type": "string" + }, + "metadata_type": { + "description": "Type of metadata.", "type": "string", "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination.\nExample: \"AWS_S3\"" + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "CUSTOM_ACTION" + ] }, - "storage_config": { - "$ref": "#/components/schemas/StorageConfigInput", - "description": "Storage-specific configuration settings.\nExample: {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}" + "branch_name": { + "description": " Name of the branch from which commit history needs to be displayed.\n \n\nNote: If no branch_name is specified, then commits will be returned for the default branch for this configuration.", + "type": "string" + }, + "record_offset": { + "description": " Record offset point in the commit history to display the response.\n \n\nNote: If no record offset is specified, the beginning of the record will be considered.", + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": " Number of history records from record offset point to be displayed in the response.\n \n\nNote: If no record size is specified, then all the records will be considered.", + "type": "integer", + "format": "int32" } }, - "description": "Input type for storage destination configuration." + "required": [ + "metadata_identifier" + ] }, - "StorageConfigInput": { + "SearchConfigRequest": { "type": "object", "properties": { - "aws_s3_config": { - "$ref": "#/components/schemas/AwsS3ConfigInput", - "description": "AWS S3 storage configuration.\nExample: {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}", - "nullable": true + "org_identifiers": { + "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", + "type": "array", + "items": { + "type": "string" + } } - }, - "description": "Input type for storage configuration." + } }, - "AwsS3ConfigInput": { + "UpdateConfigRequest": { "type": "object", - "required": [ - "bucket_name", - "region", - "role_arn" - ], "properties": { - "bucket_name": { - "type": "string", - "description": "Name of the S3 bucket where webhook payloads will be stored.\nExample: \"my-webhook-files\"" + "username": { + "description": "Username to authenticate connection to version control system", + "type": "string" }, - "region": { - "type": "string", - "description": "AWS region where the S3 bucket is located.\nExample: \"us-west-2\"" + "access_token": { + "description": "Access token corresponding to the user to authenticate connection to version control system", + "type": "string" }, - "role_arn": { - "type": "string", - "description": "ARN of the IAM role to assume for S3 access.\nExample: \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\"" + "org_identifier": { + "description": " Applicable when Orgs is enabled in the cluster\n \n\nList of Org ids or name. Provide value -1 for cluster level. Example : [\"OrgID1-or-Name1\", \"OrgID2-or-Name2\"] \n\n\n \n\nNote: If no value is specified, then the configurations will be returned for all orgs the user has access to
Version: 9.5.0.cl or later", + "type": "string" }, - "external_id": { - "type": "string", - "description": "External ID for secure cross-account role assumption.\nExample: \"ts-webhook-a1b2c3d4-7890\"", - "nullable": true + "branch_names": { + "description": "List the remote branches to configure. Example:[development, production]", + "type": "array", + "items": { + "type": "string" + } }, - "path_prefix": { - "type": "string", - "description": "Optional path prefix for organizing objects within the bucket.\nExample: \"thoughtspot-webhooks/\"", + "commit_branch_name": { + "description": "Name of the remote branch where objects from this Thoughtspot instance will be versioned.
Version: 9.7.0.cl or later", + "type": "string" + }, + "enable_guid_mapping": { + "description": "Maintain mapping of guid for the deployment to an instance
Version: 9.4.0.cl or later", + "type": "boolean", "nullable": true + }, + "configuration_branch_name": { + "description": "Name of the branch where the configuration files related to operations between Thoughtspot and version control repo should be maintained.
Version: 9.7.0.cl or later", + "type": "string" } - }, - "description": "Input type for AWS S3 storage configuration." + } }, - "WebhookDeleteResponse": { + "ValidateMergeRequest": { "type": "object", + "properties": { + "source_branch_name": { + "description": "Name of the branch from which changes need to be picked for validation", + "type": "string" + }, + "target_branch_name": { + "description": "Name of the branch where files will be merged", + "type": "string" + } + }, "required": [ - "deleted_count", - "failed_count", - "deleted_webhooks", - "failed_webhooks" - ], + "source_branch_name", + "target_branch_name" + ] + }, + "CreateWebhookConfigurationRequest": { + "type": "object", "properties": { - "deleted_count": { - "type": "integer", - "format": "int32", - "description": "Number of webhooks successfully deleted." + "name": { + "description": "Name of the webhook configuration.", + "type": "string" }, - "failed_count": { - "type": "integer", - "format": "int32", - "description": "Number of webhooks that failed to delete." + "description": { + "description": "Description of the webhook configuration.", + "type": "string" }, - "deleted_webhooks": { + "url": { + "description": "The webhook endpoint URL.", + "type": "string" + }, + "url_params": { + "description": "Additional URL parameters as key-value pairs.", + "type": "object" + }, + "events": { + "description": "List of events to subscribe to.", "type": "array", "items": { - "$ref": "#/components/schemas/WebhookResponse" - }, - "description": "List of successfully deleted webhooks." + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] + } }, - "failed_webhooks": { + "authentication": { + "description": "Authorization configuration for the webhook.", + "allOf": [ + { + "$ref": "#/components/schemas/WebhookAuthenticationInput" + } + ] + }, + "signature_verification": { + "description": "Configuration for webhook signature verification.", + "allOf": [ + { + "$ref": "#/components/schemas/WebhookSignatureVerificationInput" + } + ] + }, + "storage_destination": { + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/StorageDestinationInput" + } + ] + }, + "additional_headers": { + "description": "Additional headers as an array of key-value pairs.\nExample: [{\"key\": \"X-Custom-Header\", \"value\": \"custom_value\"}]
Version: 26.4.0.cl or later", "type": "array", "items": { - "$ref": "#/components/schemas/WebhookDeleteFailure" - }, - "description": "List of webhooks that failed to delete with error details." + "$ref": "#/components/schemas/WebhookKeyValuePairInput" + } } - } - }, - "WebhookDeleteFailure": { - "type": "object", + }, "required": [ - "id", "name", - "error" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the webhook that failed to delete." - }, - "name": { - "type": "string", - "description": "Name of the webhook that failed to delete." - }, - "error": { - "type": "string", - "description": "Error message describing why the deletion failed." - } - } + "url", + "events" + ] }, - "Runtime_Filter": { + "DeleteWebhookConfigurationsRequest": { "type": "object", "properties": { - "runtime_filter": { - "type": "object", - "description": "Runtime filter parameter type in JWT." + "webhook_identifiers": { + "description": "List of webhook identifiers to delete.", + "type": "array", + "items": { + "type": "string" + } } }, - "description": "List of runtime parameters need to set during the session." + "required": [ + "webhook_identifiers" + ] }, - "Runtime_Sort": { + "SearchWebhookConfigurationsRequest": { "type": "object", "properties": { - "runtime_sort": { - "type": "object", - "description": "Runtime sort parameter type in JWT." + "org_identifier": { + "description": "Unique ID or name of the org.", + "type": "string" + }, + "webhook_identifier": { + "description": "Unique ID or name of the webhook.", + "type": "string" + }, + "event_type": { + "description": "Type of webhook event to filter by.", + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] + }, + "record_offset": { + "description": "The offset point, starting from where the webhooks should be included in the response.", + "default": 0, + "type": "integer", + "format": "int32" + }, + "record_size": { + "description": "The number of webhooks that should be included in the response starting from offset position.", + "default": 50, + "type": "integer", + "format": "int32" + }, + "sort_options": { + "description": "Sort option includes sort field and sort order.", + "allOf": [ + { + "$ref": "#/components/schemas/WebhookSortOptionsInput" + } + ] } - }, - "description": "List of runtime parameters need to set during the session." + } }, - "Runtime_Param_Override": { + "UpdateWebhookConfigurationRequest": { "type": "object", "properties": { - "runtime_param_override": { - "type": "object", - "description": "Runtime param override type in JWT." + "name": { + "description": "Name of the webhook configuration.", + "type": "string" + }, + "description": { + "description": "Description of the webhook configuration.", + "type": "string" + }, + "url": { + "description": "The webhook endpoint URL.", + "type": "string" + }, + "url_params": { + "description": "Additional URL parameters as key-value pairs.", + "type": "object" + }, + "events": { + "description": "List of events to subscribe to.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ] + } + }, + "authentication": { + "description": "Authorization configuration for the webhook.", + "allOf": [ + { + "$ref": "#/components/schemas/WebhookAuthenticationInput" + } + ] + }, + "signature_verification": { + "description": "Configuration for webhook signature verification.", + "allOf": [ + { + "$ref": "#/components/schemas/WebhookSignatureVerificationInput" + } + ] + }, + "storage_destination": { + "description": "Configuration for storage destination.\nExample: {\"storage_type\": \"AWS_S3\", \"storage_config\": {\"aws_s3_config\": {\"bucket_name\": \"my-webhook-files\", \"region\": \"us-west-2\", \"role_arn\": \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\", \"external_id\": \"ts-webhook-a1b2c3d4-7890\", \"path_prefix\": \"thoughtspot-webhooks/\"}}}
Version: 26.3.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/StorageDestinationInput" + } + ] + }, + "additional_headers": { + "description": "Additional headers as an array of key-value pairs.\nExample: [{\"key\": \"X-Custom-Header\", \"value\": \"custom_value\"}]
Version: 26.4.0.cl or later", + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookKeyValuePairInput" + } } - }, - "description": "List of runtime parameters need to set during the session." + } } }, "securitySchemes": { From f4471ea5f110f5e63c5d45b1db1da288605d118a Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Fri, 10 Apr 2026 13:51:55 +0530 Subject: [PATCH 19/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 2290 ++++++++++++++++++++++++------- 1 file changed, 1798 insertions(+), 492 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 3dceb4a61..9af8b126a 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -6,12 +6,12 @@ }, "x-roles": [ { - "name": "10.13.0.cl", - "id": "10.13.0.cl", + "name": "26.2.0.cl", + "id": "26.2.0.cl", "tags": [ - "10.13.0.cl" + "26.2.0.cl" ], - "description": "Roles for version 10.13.0.cl" + "description": "Roles for version 26.2.0.cl" }, { "name": "10.4.0.cl", @@ -29,6 +29,14 @@ ], "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": "10.7.0.cl", "id": "10.7.0.cl", @@ -37,6 +45,14 @@ ], "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", @@ -94,12 +110,12 @@ "description": "Roles for version 9.9.0.cl" }, { - "name": "26.2.0.cl", - "id": "26.2.0.cl", + "name": "26.6.0.cl", + "id": "26.6.0.cl", "tags": [ - "26.2.0.cl" + "26.6.0.cl" ], - "description": "Roles for version 26.2.0.cl" + "description": "Roles for version 26.6.0.cl" }, { "name": "9.6.0.cl", @@ -195,10 +211,10 @@ "/api/rest/2.0/ai/agent/conversation/create": { "post": { "operationId": "createAgentConversation", - "description": "\nBeta Version: 10.13.0.cl or later\n\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 26.2.0.cl or later\n\nVersion: 26.2.0.cl or later\n\nCreates a new Spotter agent conversation based on the provided context and settings. The endpoint was in Beta from 26.2.0.cl through 26.4.0.cl.\n\nRequires `CAN_USE_SPOTTER` privilege and at least view access to the metadata object specified in the request.\n\n#### Usage guidelines\n\nThe request must include the `metadata_context` parameter to define the conversation context. The context type can be one of:\n\n- `DATA_SOURCE` *(available from 26.5.0.cl)*: targets a specific data source. Provide `data_source_identifier` in `data_source_context` for a single data source, or `data_source_identifiers` for multi-data-source context. The deprecated `guid` field is accepted for backwards compatibility.\n- `AUTO_MODE` *(available from 26.5.0.cl)*: automatically discovers and selects the most relevant datasets for the user's queries.\n\n> **Note for callers on versions 26.2.0.cl – 26.4.0.cl (Beta):** use the lowercase `data_source` enum value with the `guid` field instead of the above. Example: `{ \"type\": \"data_source\", \"data_source_context\": { \"guid\": \"\" } }`.\n\nThe `conversation_settings` parameter controls which Spotter capabilities are enabled for the conversation:\n\n- `enable_contextual_change_analysis` (default: `true`, **deprecated from 26.2.0.cl**) — always enabled in Spotter 3; setting this to `false` has no effect on versions >= 26.2.0.cl\n- `enable_natural_language_answer_generation` (default: `true`, **deprecated from 26.2.0.cl**) — always enabled in Spotter 3; setting this to `false` has no effect on versions >= 26.2.0.cl\n- `enable_reasoning` (default: `true`, **deprecated from 26.2.0.cl**) — always enabled in Spotter 3; setting this to `false` has no effect on versions >= 26.2.0.cl\n- `enable_save_chat` (default: `false`, *available from 26.5.0.cl*) — enables saving the conversation for later retrieval via conversation history\n\nIf the request is successful, the response includes a unique `conversation_identifier` that must be passed to `sendAgentConversationMessage` or `sendAgentConversationMessageStreaming` to send messages within this conversation. The response also includes `conversation_id` with the same value for backwards compatibility; use `conversation_identifier` for new integrations.\n\n#### Example request\n\n```json\n{\n \"metadata_context\": {\n \"type\": \"DATA_SOURCE\",\n \"data_source_context\": {\n \"data_source_identifier\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n }\n },\n \"conversation_settings\": {}\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 or lacks view permission on the specified metadata object. |\n\n> ###### Note:\n>\n> - This endpoint was in Beta from 26.2.0.cl through 26.4.0.cl and is Generally Available from version 26.5.0.cl.\n> - This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.13.0.cl" + "26.2.0.cl" ], "requestBody": { "content": { @@ -218,6 +234,22 @@ "application/json": { "schema": { "$ref": "#/components/schemas/AgentConversation" + }, + "examples": { + "example_1": { + "summary": "Create a conversation with a specific data source", + "value": { + "conversation_id": "wwHQ5j8O8dQC", + "conversation_identifier": "wwHQ5j8O8dQC" + } + }, + "example_2": { + "summary": "Create a conversation using auto mode where the agent automatically discovers and selects the most relevant datasets for the user's queries", + "value": { + "conversation_id": "aaHQ5j8O8dQC", + "conversation_identifier": "aaHQ5j8O8dQC" + } + } } } } @@ -242,6 +274,26 @@ } } }, + "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": { @@ -258,7 +310,7 @@ "/api/rest/2.0/ai/conversation/create": { "post": { "operationId": "createConversation", - "description": "\nBeta Version: 10.4.0.cl or later\n\nCreates a Conversation object to start an AI-driven conversation based on a specific data model.\n\nRequires at least view access to the metadata object specified in the request.\n\n#### Usage guidelines\n\nThis API requires the `metadata_identifier` parameter to define the context for the conversation.\n\nYou can also specify the tokens to initiate the conversation as shown in this example:\n\n`\"tokens\": \"[tea],[sales],[type]\"`\n\nIf the API request is successful, ThoughtSpot returns the ID of the conversation.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.4.0.cl or later\n\nVersion: 10.4.0.cl or later\n\nCreates a new conversation session tied to a specific data model for AI-driven natural language querying.\n\nRequires `CAN_USE_SPOTTER` privilege and at least view access to the metadata object specified in the request.\n\n#### Usage guidelines\n\nThe request must include:\n- `metadata_identifier`: the unique ID of the data source that provides context for the conversation\n\nOptionally, you can provide:\n- `tokens`: a token string to set initial context for the conversation (e.g., `\"[sales],[item type],[state]\"`)\n\nIf the request is successful, ThoughtSpot returns a unique `conversation_identifier` that must be passed to `sendMessage` to continue the conversation.\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 view permission on the specified metadata object. |\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.4.0.cl" @@ -305,6 +357,26 @@ } } }, + "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": { @@ -321,7 +393,7 @@ "/api/rest/2.0/ai/data-source-suggestions": { "post": { "operationId": "getDataSourceSuggestions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nProvides relevant data source recommendations for a user-submitted natural language query.\n\nTo use this API, the user must have at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include a `query` string via the request body.\n\nThe returned results include metadata such as:\n- `confidence`: a float indicating the model's confidence in the relevance of each recommendation\n- `details`: includes `data_source_identifier`, `data_source_name`, and `description` of each recommended data source\n- `reasoning`: rationale provided by the LLM to explain why each data source was recommended\n\nIf the API request is successful, ThoughtSpot returns a ranked list of data sources, each annotated with relevant reasoning.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nSuggests the most relevant data sources for a given natural language query, ranked by confidence with LLM-generated reasoning.\n\nRequires `CAN_USE_SPOTTER` privilege and at least view-level access to the underlying metadata entities referenced in the response.\n\n#### Usage guidelines\n\nThe request must include:\n- `query`: the natural language question to find relevant data sources for\n\nIf the request is successful, the API returns a ranked list of suggested data sources, each containing:\n- `confidence`: a float score indicating the model's confidence in the relevance of the suggestion\n- `details`: metadata about the data source\n - `data_source_identifier`: the unique ID of the data source\n - `data_source_name`: the display name of the data source\n - `description`: a description of the data source\n- `reasoning`: LLM-generated rationale explaining why the data source was recommended\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 view permission on the underlying metadata entities. |\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before it is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -368,6 +440,26 @@ } } }, + "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": { @@ -384,7 +476,7 @@ "/api/rest/2.0/ai/instructions/get": { "post": { "operationId": "getNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to retrieve existing natural language (NL) instructions for a specific data-model. These instructions guide the AI system in understanding data context and generating more accurate responses when processing natural language queries.\n\n#### Usage guidelines\n\nTo retrieve NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model to retrieve NL instructions\n\nThe API returns a response object with:\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for natural language processing\n - `scope`: The scope of the instruction (`GLOBAL`). It can be extended to data-model-user scope in future.\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\n\n> ###### Note:\n> * To use this API, the user needs atleast view access on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Use this API to view currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nRetrieves existing natural language (NL) instructions configured for a specific data model. These instructions guide the AI system in understanding data context and generating more accurate responses.\n\nRequires `CAN_USE_SPOTTER` privilege, at least view access on the data model, and a bearer token corresponding to the org where the data model exists.\n\n#### Usage guidelines\n\nThe request must include:\n\n- `data_source_identifier`: the unique ID of the data model to retrieve instructions for\n\nIf the request is successful, the API returns:\n\n- `nl_instructions_info`: an array of instruction objects, each containing:\n - `instructions`: the configured text instructions for AI processing\n - `scope`: the scope of the instruction — currently only `GLOBAL` is supported\n\n#### Instructions scope\n\n- **GLOBAL**: Instructions that apply globally across the system on the given data-model (currently only global instructions are supported)\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, lacks view access on the data model, or the bearer token does not correspond to the org where the data model exists. |\n\n> ###### Note:\n>\n> - To use this API, the user needs at least view access on the data model, and must use the bearer token corresponding to the org where the data model exists.\n> - This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> - Available from version 10.15.0.cl and later.\n> - This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> - Use this API to review currently configured instructions before modifying them with `setNLInstructions`.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -431,6 +523,26 @@ } } }, + "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": { @@ -447,7 +559,7 @@ "/api/rest/2.0/ai/relevant-questions/": { "post": { "operationId": "getRelevantQuestions", - "description": "\nBeta Version: 10.13.0.cl or later\n\nBreaks down a user-submitted query into a series of analytical sub-questions using relevant contextual metadata.\n\nTo use this API, the user must have at least view-level access to the referenced metadata objects.\n\n#### Usage guidelines\n\nTo accurately generate relevant questions, the request must include at least one of the following metadata identifiers within `metadata_context` : `conversation_identifier`, `answer_identifiers`, `liveboard_identifiers`, or `data_source_identifiers`.\n\nYou can further enhance the quality and precision of breakdown by providing additional `ai_context` such as:\n\n- `content`: User provided content like text data, csv data as a string message to provide context & potentially improve the quality of the response.\n- `instructions`: User specific text instructions sent to AI system for processing the query.\n\nAdditional optional parameters include:\n\n- `limit_relevant_questions`: Controls the maximum number of relevant questions returned. Defaults to 5 if not specified.\n- `bypass_cache`: If set to true, forces fresh computation instead of returning cached results.\n\nIf the API request is successful, ThoughtSpot returns a list of relevant analytical queries, each aligned with the user's original question. Each returned question includes the query string, along with the identifier and name of the corresponding data source.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.13.0.cl or later\n\nBreaks down a natural language query into a series of smaller analytical sub-questions, each mapped to a relevant data source.\n\nRequires `CAN_USE_SPOTTER` privilege and at least view-level access to the referenced metadata objects.\n\n#### Usage guidelines\n\nThe request must include:\n- `query`: the natural language question to decompose into analytical sub-questions\n- `metadata_context`: at least one of the following context identifiers to guide question generation:\n - `conversation_identifier` — an existing conversation session ID\n - `answer_identifiers` — a list of Answer GUIDs\n - `liveboard_identifiers` — a list of Liveboard GUIDs\n - `data_source_identifiers` — a list of data source GUIDs\n\nOptional parameters for refining the output:\n- `ai_context`: additional context to improve response quality\n - `content` — supplementary text or CSV data as string input\n - `instructions` — custom text instructions for the AI system\n- `limit_relevant_questions`: maximum number of questions to return (default: `5`)\n- `bypass_cache`: if `true`, forces fresh computation instead of returning cached results\n\nIf the request is successful, the API returns a list of relevant analytical questions, each containing:\n- `query`: the generated sub-question\n- `data_source_identifier`: the unique ID of the data source the question targets\n- `data_source_name`: the display name of the corresponding data source\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 view access to the referenced metadata objects. |\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.13.0.cl" @@ -494,6 +606,26 @@ } } }, + "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": { @@ -510,7 +642,7 @@ "/api/rest/2.0/ai/analytical-questions": { "post": { "operationId": "queryGetDecomposedQuery", - "description": "\nBeta Version: 10.7.0.cl or later\n\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.7.0.cl or later\n\nVersion: 10.7.0.cl or later\n\n**Deprecated** — Use `getRelevantQuestions` instead (available from 10.13.0.cl).\n\nBreaks down a topical or goal-oriented natural language question into smaller, actionable analytical sub-questions, each mapped to a relevant data source for independent execution.\n\nRequires `CAN_USE_SPOTTER` privilege and at least view-level access to the referenced metadata objects.\n\n#### Usage guidelines\n\nThe request accepts the following parameters:\n\n- `nlsRequest`: contains the user `query` to decompose, along with optional `instructions` and `bypassCache` flag\n- `worksheetIds`: list of data source identifiers to scope the decomposition\n- `answerIds`: list of Answer GUIDs whose data guides the response\n- `liveboardIds`: list of Liveboard GUIDs whose data guides the response\n- `conversationId`: an existing conversation session ID for context continuity\n- `content`: supplementary text or CSV data to improve response quality\n- `maxDecomposedQueries`: maximum number of sub-questions to return (default: `5`)\n\nIf the request is successful, the API returns a `decomposedQueryResponse` containing a list of `decomposedQueries`, each with:\n- `query`: the generated analytical sub-question\n- `worksheetId`: the unique ID of the data source the question targets\n- `worksheetName`: the display name of the corresponding data source\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 view access to the referenced metadata objects. |\n\n> ###### Note:\n> * This endpoint is deprecated since 10.13.0.cl. Use `getRelevantQuestions` for new integrations.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter — please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "deprecated": true, "tags": [ "AI", @@ -558,6 +690,26 @@ } } }, + "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": { @@ -571,19 +723,19 @@ } } }, - "/api/rest/2.0/ai/agent/{conversation_identifier}/converse": { + "/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send": { "post": { - "operationId": "sendAgentMessage", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nThe API returns a array of object with a type, message, and metadata.\n- `type`: Type of the message — text, answer, or error.\n- `message`: Main content of the response.\n- `metadata`: Additional info depending on the message type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n#### Endpoint URL\n", + "operationId": "sendAgentConversationMessage", + "description": "\n Version: 26.5.0.cl or later\n\nVersion: 26.5.0.cl or later\n\nSends natural language messages to an existing Spotter agent conversation and returns the complete response synchronously.\n\nRequires `CAN_USE_SPOTTER` privilege and access to the metadata object associated with the conversation. The user must have access to the conversation session referenced by `conversation_identifier`. A conversation must first be created using the `createAgentConversation` API.\n\n#### Usage guidelines\n\nThe request must include:\n\n- `conversation_identifier`: the unique session ID returned by `createAgentConversation`, used for context continuity and message tracking\n- `messages`: an array of one or more text messages to send to the agent\n\nThe API returns an array of response objects, each containing:\n\n- `type`: the kind of response — `text`, `answer`, or `error`\n- `message`: the main content of the response\n- `metadata`: additional information depending on the message type (e.g., answer metadata includes analytics and visualization details)\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 permission on the referenced conversation. |\n\n> ###### Note:\n>\n> - This endpoint is Generally Available from version 26.5.0.cl.\n> - This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n> - For real-time streamed responses, use `sendAgentConversationMessageStreaming` instead.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.15.0.cl" + "26.5.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SendAgentMessageRequest" + "$ref": "#/components/schemas/SendAgentConversationMessageRequest" } } }, @@ -607,6 +759,69 @@ "application/json": { "schema": { "type": "object" + }, + "examples": { + "example_1": { + "summary": "Send a message to an existing agent conversation", + "value": { + "messages": [ + { + "metadata": {}, + "internal": {}, + "type": "text", + "text": "\n\nI'll compare sales between 2025 and 2024. First, let me get the dataset context to identify the relevant sales and date columns.", + "agent_context": "" + }, + { + "metadata": {}, + "internal": {}, + "type": "text", + "text": "```json\n{\"search_mode\": \"semantic\", \"dataset_name\": \"(Sample) Retail - Apparel\", \"columns\": [{\"name\": \"sales\", \"type\": \"MEASURE\", \"data_type\": \"double\"}, {\"name\": \"date\", \"type\": \"ATTRIBUTE\", \"data_type\": \"date\", \"sample_values\": [\"2025\", \"2024\"]}]}\n```", + "agent_context": "" + }, + { + "metadata": {}, + "internal": {}, + "type": "text", + "text": "\n\nPerfect! I found the sales and date columns. I can see the dataset contains sales data for both 2025 and 2024. Now I'll create a comparison query to show sales for 2025 versus 2024.", + "agent_context": "" + }, + { + "metadata": { + "output": "", + "worksheet_id": "cd252e5c-b552-49a8-821d-3eadaa049cca", + "assumptions": "", + "chart_type": "KPI", + "interrupted": false, + "data_awareness_enabled": true + }, + "internal": {}, + "type": "answer", + "title": "Compare total sales for 2025 vs 2024", + "description": "", + "session_id": "842bb67a-e08e-4861-97e8-8db9538db51d", + "gen_no": 2, + "sage_query": "[sales] [date] = '2025' vs [date] = '2024'", + "tml_tokens": [ + "[sales]", + "[date] = '2025' vs [date] = '2024'" + ], + "formulas": [], + "parameters": [], + "subqueries": [], + "viz_suggestion": "CAEQIBomEiQ2NjE5NzI0Yy1kMjVlLTU4MDItOWNjOC1jNDA3MWY3OWY5MzAoATIA", + "ac_state": null + }, + { + "metadata": {}, + "internal": {}, + "type": "text", + "text": "\n\nThe visualization shows the side-by-side comparison of total sales (in USD) between the two years, allowing you to see the year-over-year performance. You can see the sales figures for both 2024 and 2025, making it easy to identify growth or decline trends in your retail apparel business.", + "agent_context": "" + } + ] + } + } } } } @@ -631,6 +846,26 @@ } } }, + "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": { @@ -644,25 +879,35 @@ } } }, - "/api/rest/2.0/ai/agent/converse/sse": { + "/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/send/stream": { "post": { - "operationId": "sendAgentMessageStreaming", - "description": "\nBeta Version: 10.13.0.cl or later\n\nThis API allows users to initiate or continue an agent (Spotter) conversation by submitting one or more natural language messages. \nTo use this API, the user must have access to the relevant conversational session (via conversation_identifier) and submit at least one message.\n\n\n#### Usage guidelines\n\nTo initiate or continue a conversation, the request must include:\n- `conversation_identifier`: a unique session ID for continuity and message tracking\n- `messages`: an array of one or more text messages, each with a value and type\n\nAdditionally, user can specify what tool can be included `conversation_settings` parameter, which supports:\n- `enable_contextual_change_analysis` (default: false)\n- `enable_natural_language_answer_generation` (default: true)\n- `enable_reasoning` (default: false)\n\nIf the request is valid, the API returns a stream of messages in real time, including:\n- `ack`: confirms receipt of the request\n- `text / text-chunk`: content chunks, optionally formatted (e.g., markdown)\n- `answer`: the final structured response with metadata and analytics\n- `error`: if a failure occurs\n- `notification`: notification messages for operation being performed\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n> * The streaming protocol uses Server-Sent Events (SSE)\n\n\n\n#### Endpoint URL\n", + "operationId": "sendAgentConversationMessageStreaming", + "description": "\n Version: 26.5.0.cl or later\n\nVersion: 26.5.0.cl or later\n\nSends one or more natural language messages to an existing Spotter agent conversation and returns the response as a real-time Server-Sent Events stream.\n\nRequires `CAN_USE_SPOTTER` privilege and access to the metadata object associated with the conversation. The user must have access to the conversation session referenced by `conversation_identifier`. A conversation must first be created using the `createAgentConversation` API.\n\n#### Usage guidelines\n\nThe request must include:\n\n- `conversation_identifier`: the unique session ID returned by `createAgentConversation`, used for context continuity and message tracking\n- `messages`: an array of one or more text messages to send to the agent\n\nIf the request is valid, the API returns a Server-Sent Events (SSE) stream. Each line has the form `data: [{\"type\": \"...\", ...}]` — a JSON array of event objects. Event types include:\n\n- `ack`: confirms receipt of the request (`node_id`)\n- `conv_title`: conversation title (`title`, `conv_id`)\n- `notification`: status updates on operations (`group_id`, `metadata`, `code` — e.g. `TOOL_CALL_NOTIFICATION`, `nls_start`, `FINAL_RESPONSE_NOTIFICATION`)\n- `text-chunk`: incremental content chunks (`id`, `group_id`, `metadata` with `format` and `type` such as `thinking` or `text`, `content`)\n- `text`: full text block with same structure as `text-chunk`\n- `answer`: structured answer with metadata (`id`, `group_id`, `metadata` with `sage_query`, `session_id`, `title`, etc., `title`)\n- `error`: if a failure occurs\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 permission on the referenced conversation. |\n\n> ###### Note:\n>\n> - This endpoint is Generally Available from version 26.5.0.cl.\n> - This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n> - The streaming protocol uses Server-Sent Events (SSE).\n> - For the complete response in a single payload, use `sendAgentConversationMessage` instead.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", - "10.13.0.cl" + "26.5.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SendAgentMessageStreamingRequest" + "$ref": "#/components/schemas/SendAgentConversationMessageStreamingRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "conversation_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the conversation (used to track context)" + } + ], "responses": { "200": { "description": "Common successful response", @@ -670,6 +915,52 @@ "application/json": { "schema": { "$ref": "#/components/schemas/SendAgentMessageResponse" + }, + "examples": { + "example_1": { + "summary": "SSE stream — each line is data: [{\"type\": \"...\", ...}]. Events arrive over time; this example shows a minimal sequence.", + "value": [ + { + "type": "ack", + "node_id": "aGxzcFVrtom8" + }, + { + "type": "conv_title", + "title": "Sales 2025 vs 2024", + "conv_id": "-XIi04l5rrof" + }, + { + "type": "notification", + "group_id": "cDEsAQbSnd3J", + "metadata": { + "type": "thinking", + "tool_title": "Analyzing Sales Performance: 2025 vs 2024" + }, + "code": "TOOL_CALL_NOTIFICATION" + }, + { + "id": "mNAdvy-NK2l6", + "type": "text-chunk", + "group_id": "cDEsAQbSnd3J", + "metadata": { + "format": "markdown", + "type": "thinking" + }, + "content": "\n\nI need to compare sales performance between 2025 and 2024." + }, + { + "id": "hxWMDP-pgR3B", + "type": "answer", + "group_id": "m1MTvttEUa7o", + "metadata": { + "sage_query": "[sales] [date] = '2025' vs [date] = '2024'", + "session_id": "431adcf9-1328-4d8c-81a1-0faa7fa37ba6", + "title": "Compare sales for 2025 vs 2024" + }, + "title": "Compare sales for 2025 vs 2024" + } + ] + } } } } @@ -694,6 +985,26 @@ } } }, + "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": { @@ -707,10 +1018,188 @@ } } }, - "/api/rest/2.0/ai/conversation/{conversation_identifier}/converse": { + "/api/rest/2.0/ai/agent/{conversation_identifier}/converse": { + "post": { + "operationId": "sendAgentMessage", + "description": "\nBeta Version: 26.2.0.cl or later\n\n**Deprecated** — Use `sendAgentConversationMessage` instead.\n\nSend natural language messages to an existing Spotter agent conversation and returns the complete response synchronously.\n\nRequires `CAN_USE_SPOTTER` privilege and access to the metadata object associated with the conversation. The user must have access to the conversation session referenced by `conversation_identifier`.\nA conversation must first be created using the `createAgentConversation` API.\n\n#### Usage guidelines\n\nThe request must include:\n\n- `conversation_identifier`: the unique session ID returned by `createAgentConversation`, used for context continuity and message tracking\n- `messages`: an array of one or more text messages to send to the agent\n\nThe API returns an array of response objects, each containing:\n\n- `type`: the kind of response — `text`, `answer`, or `error`\n- `message`: the main content of the response\n- `metadata`: additional information depending on the message type (e.g., answer metadata includes analytics and visualization details)\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 permission on the referenced conversation. |\n\n> ###### Note:\n>\n> - This endpoint is deprecated. Use `sendAgentConversationMessage` for new integrations.\n> - This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> - This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "deprecated": true, + "tags": [ + "AI", + "26.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SendAgentMessageRequest" + } + } + }, + "required": true + }, + "parameters": [ + { + "in": "path", + "name": "conversation_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier for the conversation (used to track context)" + } + ], + "responses": { + "200": { + "description": "Common successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "201": { + "description": "Common error response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "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/converse/sse": { + "post": { + "operationId": "sendAgentMessageStreaming", + "description": "\nBeta Version: 26.2.0.cl or later\n\n**Deprecated** — Use `sendAgentConversationMessageStreaming` instead.\n\nSends one or more natural language messages to an existing Spotter agent conversation and returns the response as a real-time Server-Sent Events stream.\n\nRequires `CAN_USE_SPOTTER` privilege and access to the metadata object associated with the conversation. The user must have access to the conversation session referenced by `conversation_identifier`. A conversation must first be created using the `createAgentConversation` API.\n\n#### Usage guidelines\n\nThe request must include:\n\n- `conversation_identifier`: the unique session ID returned by `createAgentConversation`, used for context continuity and message tracking\n- `messages`: an array of one or more text messages to send to the agent\n\nIf the request is valid, the API returns a Server-Sent Events (SSE) stream. Each line has the form `data: [{\"type\": \"...\", ...}]` — a JSON array of event objects. Event types include:\n\n- `ack`: confirms receipt of the request (`node_id`)\n- `conv_title`: conversation title (`title`, `conv_id`)\n- `notification`: status updates on operations (`group_id`, `metadata`, `code` — e.g. `TOOL_CALL_NOTIFICATION`, `nls_start`, `FINAL_RESPONSE_NOTIFICATION`)\n- `text-chunk`: incremental content chunks (`id`, `group_id`, `metadata` with `format` and `type` such as `thinking` or `text`, `content`)\n- `text`: full text block with same structure as `text-chunk`\n- `answer`: structured answer with metadata (`id`, `group_id`, `metadata` with `sage_query`, `session_id`, `title`, etc., `title`)\n- `error`: if a failure occurs\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 permission on the referenced conversation. |\n\n> ###### Note:\n>\n> - This endpoint is deprecated. Use `sendAgentConversationMessageStreaming` for new integrations.\n> - This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> - This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n> - The streaming protocol uses Server-Sent Events (SSE).\n\n\n\n\n#### Endpoint URL\n", + "deprecated": true, + "tags": [ + "AI", + "26.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SendAgentMessageStreamingRequest" + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Common successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SendAgentMessageResponse" + } + } + } + }, + "201": { + "description": "Common error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SendAgentMessageResponse" + } + } + } + }, + "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/conversation/{conversation_identifier}/converse": { "post": { "operationId": "sendMessage", - "description": "\nBeta Version: 10.4.0.cl or later\n\nAllows sending a follow-up message to an ongoing conversation within the context of the metadata model.\n\nRequires at least view access to the metadata object specified in the request.\n\n#### Usage guidelines\n\nThe API requires you to specify the `conversation_identifier` in the request path, and a `metadata_identifier` and `message` string in the request body.\n\nIf the API request is successful, ThoughtSpot returns the session ID, tokens used in the conversation, and visualization type.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.4.0.cl or later\n\nSends a follow-up message to an existing conversation within the context of a data model.\n\nRequires `CAN_USE_SPOTTER` privilege and at least view access to the metadata object specified in the request. A conversation must first be created using the `createConversation` API.\n\n#### Usage guidelines\n\nThe request must include:\n- `conversation_identifier`: the unique session ID returned by `createConversation`\n- `metadata_identifier`: the unique ID of the data source used for the conversation\n- `message`: a natural language string with the follow-up question\n\nIf the request is successful, the API returns an array of response messages, each containing:\n- `session_identifier`: the unique ID of the generated response\n- `generation_number`: the generation number of the response\n- `message_type`: the type of the response (e.g., `TSAnswer`)\n- `visualization_type`: the generated visualization type (`Chart`, `Table`, or `Undefined`)\n- `tokens` / `display_tokens`: the search tokens and user-friendly display tokens for the response\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 view permission on the specified metadata object. |\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.4.0.cl" @@ -773,6 +1262,26 @@ } } }, + "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": { @@ -789,7 +1298,7 @@ "/api/rest/2.0/ai/instructions/set": { "post": { "operationId": "setNLInstructions", - "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n- `data_source_identifier`: The unique ID of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\nThe API returns a response object with:\n- `success`: Boolean indicating whether the operation was successful\n\n#### Instructions Scope\n\n- **GLOBAL**: Instructions that apply globally for that data-model across the system\n\n> ###### Note:\n> * To use this API, the user needs either edit access or SPOTTER_COACHING_PRIVILEGE on the data-model and they must use corresponding org related bearerToken where the data-model exists.\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * Available from version 10.15.0.cl and later.\n> * This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> * Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.15.0.cl or later\n\nThis API allows users to set natural language (NL) instructions for a specific data-model to improve AI-generated answers and query processing. These instructions help guide the AI system to better understand the data context and provide more accurate responses.\n\nRequires `CAN_USE_SPOTTER` privilege, either edit access or `SPOTTER_COACHING_PRIVILEGE` on the data model, and a bearer token corresponding to the org where the data model exists.\n\n#### Usage guidelines\n\nTo set NL instructions for a data-model, the request must include:\n\n- `data_source_identifier`: The unique ID of the data-model for which to set NL instructions\n- `nl_instructions_info`: An array of instruction objects, each containing:\n - `instructions`: Array of text instructions for the LLM\n - `scope`: The scope of the instruction (`GLOBAL`). Currently only `GLOBAL` is supported. It can be extended to data-model-user scope in future.\n\n#### Instructions scope\n\n- **GLOBAL**: instructions that apply to all users querying this data model\n\nIf the request is successful, the API returns:\n\n- `success`: a boolean indicating whether the operation completed successfully\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, lacks edit access or `SPOTTER_COACHING_PRIVILEGE` on the data model, or the bearer token does not correspond to the org where the data model exists. |\n\n> ###### Note:\n>\n> - To use this API, the user needs either edit access or `SPOTTER_COACHING_PRIVILEGE` on the data model, and must use the bearer token corresponding to the org where the data model exists.\n> - This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> - Available from version 10.15.0.cl and later.\n> - This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> - Instructions help improve the accuracy and relevance of AI-generated responses for the specified data-model.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.15.0.cl" @@ -836,6 +1345,26 @@ } } }, + "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": { @@ -852,7 +1381,7 @@ "/api/rest/2.0/ai/answer/create": { "post": { "operationId": "singleAnswer", - "description": "\nBeta Version: 10.4.0.cl or later\n\nProcesses a natural language query and returns an AI-generated response based on a specified data model.\n\nRequires at least view access to the metadata object specified in the request.\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nBeta Version: 10.4.0.cl or later\n\nProcesses a natural language query against a specified data model and returns a single AI-generated answer without requiring a conversation session.\n\nRequires `CAN_USE_SPOTTER` privilege and at least view access to the metadata object specified in the request.\n\n#### Usage guidelines\n\nThe request must include:\n- `query`: a natural language question (e.g., \"What were total sales last quarter?\")\n- `metadata_identifier`: the unique ID of the data source to query against\n\nIf the request is successful, the API returns a response message containing:\n- `session_identifier`: the unique ID of the generated response\n- `generation_number`: the generation number of the response\n- `message_type`: the type of the response (e.g., `TSAnswer`)\n- `visualization_type`: the generated visualization type (`Chart`, `Table`, or `Undefined`)\n- `tokens` / `display_tokens`: the search tokens and user-friendly display tokens for the response\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 view permission on the specified metadata object. |\n\n> ###### Note:\n> * This endpoint is currently in Beta. Breaking changes may be introduced before the endpoint is made Generally Available.\n> * This endpoint requires Spotter - please contact ThoughtSpot support to enable Spotter on your cluster.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "AI", "10.4.0.cl" @@ -899,6 +1428,26 @@ } } }, + "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": { @@ -2654,29 +3203,198 @@ } } }, - "/api/rest/2.0/connection/update": { + "/api/rest/2.0/connections/{connection_identifier}/resync-metadata": { "post": { - "operationId": "updateConnection", - "description": "\n Version: 9.2.0.cl or later\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Update connection V2](#/http/api-endpoints/connections/update-connection-v2) endpoint to update your connection objects.\n\n#### Usage guidelines\n\nUpdates a connection object. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n\n\n\n#### Endpoint URL\n", - "deprecated": true, + "operationId": "syncMetadata", + "description": "\n Version: 26.5.0.cl or later\n\nSynchronizes connection metadata attributes from your Cloud Data Warehouse (CDW) with ThoughtSpot.\n\nRequires the `DATAMANAGEMENT` (**Can manage data**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_MANAGE_WORKSHEET_VIEWS_TABLES` (**Can manage data models**) privilege is required.\n\n#### Usage guidelines\n\nTo synchronize attributes from a CDW, specify the connection GUID or name in the `connection_identifier` path parameter and `sync_attributes` in the request body. Default attribute is `[\"DESCRIPTION\"]`.\n\n##### Hierarchical schema\n\n* Connection: The connection object for the sync operation.\n* Tables: Tables for the sync operation. When no table is specified, all tables are synchronized.\n* Columns: If the table is specified, you can add the columns for the sync operation. If no columns are specified, all columns in the specified table are considered for the sync operation.\n\nTo set the scope for the sync operation:\n\n* Connection-level: To sync all tables and columns, pass an empty request body, or only the attributes in the request body.\n* Table-level: To synchronize specific tables and their columns, specify the table identifiers in the `tables` array.\n* Column-level: To synchronize specific columns, specify the table identifier as the key and column identifiers as the value in the `tables` array.\n\n```\n{\n \"tables\": [\n {\"table-guid-1\": [\"column-guid-1\", \"column-guid-2\"]},\n \"table-guid-2\"\n ],\n \"sync_attributes\": [\"DESCRIPTION\"]\n}\n```\n\n##### API response\n\nIf the sync operation is successful, the API returns the following information:\n\n* Status of the sync operation. For example, `SUCCESS`, `PARTIAL_SUCCESS`, or `NO_UPDATE`.\n* Number of tables and columns that were updated.\n* Number of tables and columns with the sync failed status when the overall sync status is `PARTIAL_SUCCESS`.\n* Message text indicating the sync results.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Connections", - "9.2.0.cl" + "26.5.0.cl" ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateConnectionRequest" + "$ref": "#/components/schemas/SyncMetadataRequest" } } }, "required": true }, - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the connection." + } + ], "responses": { - "204": { - "description": "Connection successfully updated." + "200": { + "description": "Metadata synced successfully.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyncMetadataResponse" + } + } + } + }, + "400": { + "description": "Invalid request parameters or hierarchy.", + "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": "Connection, table, or column not 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/connection/update": { + "post": { + "operationId": "updateConnection", + "description": "\n Version: 9.2.0.cl or later\n\n**Important**: This endpoint is deprecated and will be removed from ThoughtSpot in September 2025. ThoughtSpot strongly recommends using the\n[Update connection V2](#/http/api-endpoints/connections/update-connection-v2) endpoint to update your connection objects.\n\n#### Usage guidelines\n\nUpdates a connection object. \n\nRequires `DATAMANAGEMENT` (**Can manage data**) and edit permissions to the connection object, or `ADMINISTRATION` (**Can administer ThoughtSpot**) privilege.\nIf [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required.\n\nTo update a connection object, pass these parameters in your API request:\n\n1. GUID of the connection object.\n2. If you are updating tables or database schema of a connection object:\n a. Add the updated JSON map of metadata with database, schema, and tables in `data_warehouse_config`.\n b. Set `validate` to `true`.\n3. If you are updating a configuration attribute, connection name, or description, you can set `validate` to `false`.\n\n\n\n\n#### Endpoint URL\n", + "deprecated": true, + "tags": [ + "Connections", + "9.2.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateConnectionRequest" + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Connection successfully updated." + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/rest/2.0/connections/{connection_identifier}/status": { + "post": { + "operationId": "updateConnectionStatus", + "description": "\n Version: 26.6.0.cl or later\n\nActivates or deactivates a connection. A deactivated connection cannot be used for queries or operations until it is activated again.\n\nRequires `DATAMANAGEMENT` (**Can manage data**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, the `CAN_CREATE_OR_EDIT_CONNECTIONS` (**Can create/edit Connections**) privilege is required. Only the connection owner or an administrator can perform this operation.\n\n#### Usage guidelines\n\nTo update the status of a connection, specify the connection GUID or name in the `connection_identifier` path parameter and the desired `status` in the request body.\n\n- **ACTIVATED**: Enables the connection. Queries and operations can resume on an activated connection.\n- **DEACTIVATED**: Disables the connection. It does not remove the connection metadata, but only makes the connection unavailable for queries and operations. You can reactivate a deactivated connection by setting \"status\": \"ACTIVATED\".\n\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Connections", + "26.6.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateConnectionStatusRequest" + } + } + }, + "required": true + }, + "parameters": [ + { + "in": "path", + "name": "connection_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique ID or name of the connection." + } + ], + "responses": { + "204": { + "description": "Connection status updated successfully." }, "400": { "description": "Invalid request.", @@ -2708,6 +3426,16 @@ } } }, + "404": { + "description": "Object not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, "500": { "description": "Unexpected error", "content": { @@ -5985,7 +6713,7 @@ "/api/rest/2.0/metadata/parameterize": { "post": { "operationId": "parameterizeMetadata", - "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be parameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", + "description": "\nParameterize fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\n**Note:** This API endpoint is deprecated and will be removed from ThoughtSpot in a future release. Use [POST /api/rest/2.0/metadata/parameterize-fields](/api/rest/2.0/metadata/parameterize-fields) instead.\n\nAllows parameterizing fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be parameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", "deprecated": true, "tags": [ "Metadata", @@ -6052,10 +6780,10 @@ "/api/rest/2.0/metadata/parameterize-fields": { "post": { "operationId": "parameterizeMetadataFields", - "description": "\nParameterize multiple fields of metadata objects. For example [schemaName, databaseName] for LOGICAL_TABLE.
Version: 26.4.0.cl or later\n\nAllows parameterizing multiple fields of metadata objects in ThoughtSpot. For example, you can parameterize [schemaName, databaseName] for LOGICAL_TABLE.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table, the field type must be `ATTRIBUTE` and field names can include:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_names specifies the exact properties of the Connection or Connection Config that need to be parameterized.\n\nFor Connection Config, supported field names include:\n* impersonate_user\n\nYou can parameterize multiple fields at once by providing an array of field names.\n\n\n\n\n#### Endpoint URL\n", + "description": "\nParameterize multiple fields of metadata objects. For example [schemaName, databaseName] for LOGICAL_TABLE.
Version: 26.5.0.cl or later\n\nAllows parameterizing multiple fields of metadata objects in ThoughtSpot. For example, you can parameterize [schemaName, databaseName] for LOGICAL_TABLE.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows parameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table, the field type must be `ATTRIBUTE` and field names can include:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_names specifies the exact properties of the Connection or Connection Config that need to be parameterized.\n\nFor Connection Config, supported field names include:\n* impersonate_user\n\nYou can parameterize multiple fields at once by providing an array of field names.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "26.4.0.cl" + "26.5.0.cl" ], "requestBody": { "content": { @@ -6194,10 +6922,10 @@ "/api/rest/2.0/metadata/unparameterize": { "post": { "operationId": "unparameterizeMetadata", - "description": "\nRemove parameterization from fields in metadata objects.
Beta Version: 10.9.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be unparameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", + "description": "\nRemove parameterization from fields in metadata objects.
Version: 26.5.0.cl or later\n\nAllows removing parameterization from fields in metadata objects in ThoughtSpot.\n\nRequires appropriate permissions to modify the metadata object.\n\nThe API endpoint allows unparameterizing the following types of metadata objects:\n* Logical Tables\n* Connections\n* Connection Configs\n\nFor a Logical Table the field type must be `ATTRIBUTE` and field name can be one of:\n* databaseName\n* schemaName\n* tableName\n\nFor a Connection or Connection Config, the field type is always `CONNECTION_PROPERTY`. In this case, field_name specifies the exact property of the Connection or Connection Config that needs to be unparameterized.\n\nFor Connection Config, the only supported field name is:\n* impersonate_user\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Metadata", - "10.9.0.cl" + "26.5.0.cl" ], "requestBody": { "content": { @@ -7960,10 +8688,10 @@ "/api/rest/2.0/security/metadata/publish": { "post": { "operationId": "publishMetadata", - "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 26.5.0.cl or later\n\nAllows publishing metadata objects across organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows publishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nThis API will essentially share the objects along with it's dependencies to\nthe org admins of the orgs to which it is being published.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "10.9.0.cl" + "26.5.0.cl" ], "requestBody": { "content": { @@ -8026,7 +8754,7 @@ "/api/rest/2.0/security/metadata/share": { "post": { "operationId": "shareMetadata", - "description": "\n Version: 9.0.0.cl or later\n\nAllows sharing one or several metadata objects with users and groups in ThoughtSpot.\n\nRequires edit access to the metadata object.\n\n#### Supported metadata objects:\n* Liveboards\n* Visualizations\n* Answers\n* Models\n* Views\n* Connections\n\n#### Object permissions\n\nYou can provide `READ_ONLY` or `MODIFY` access when sharing an object with another user or group. The `READ_ONLY` permission grants view access to the shared object, whereas `MODIFY` provides edit access.\n\nTo prevent a user or group from accessing the shared object, specify the GUID or name of the principal and set `shareMode` to `NO_ACCESS`.\n\n#### Sharing a visualization\n\n* Sharing a visualization implicitly shares the entire Liveboard with the recipient. \n* Object permissions set for a shared visualization also apply to the Liveboard unless overridden by another API request or via UI.\n* If email notifications for object sharing are enabled, a notification with a link to the shared visualization will be sent to the recipient’s email address. Although this link opens the shared visualization, recipients can also access other visualizations in the Liveboard.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 9.0.0.cl or later\n\nAllows sharing one or several metadata objects with users and groups in ThoughtSpot.\n\nRequires edit access to the metadata object.\n\n#### Supported metadata objects:\n* Liveboards\n* Visualizations\n* Answers\n* Models\n* Views\n* Connections\n* Collections\n\n#### Object permissions\n\nYou can provide `READ_ONLY` or `MODIFY` access when sharing an object with another user or group. The `READ_ONLY` permission grants view access to the shared object, whereas `MODIFY` provides edit access.\n\nTo prevent a user or group from accessing the shared object, specify the GUID or name of the principal and set `shareMode` to `NO_ACCESS`.\n\n#### Sharing a visualization\n\n* Sharing a visualization implicitly shares the entire Liveboard with the recipient.\n* Object permissions set for a shared visualization also apply to the Liveboard unless overridden by another API request or via UI.\n* If email notifications for object sharing are enabled, a notification with a link to the shared visualization will be sent to the recipient’s email address. Although this link opens the shared visualization, recipients can also access other visualizations in the Liveboard.\n\n#### Sharing a collection\n\nCollections support **dual permissions** that provide fine-grained control:\n\n* **Collection permissions** (`share_mode`) - controls access to the collection itself (view, edit, delete the collection)\n* **Content permissions** (`content_share_mode`) - controls access to objects within the collection (view, edit objects inside)\n\n**Default Behavior:**\n- If only `share_mode` is specified, the content permissions default to `READ_ONLY` (except when `share_mode` is `NO_ACCESS`, then content also gets `NO_ACCESS`)\n- To give users edit access to collection contents, explicitly set `content_share_mode: \"MODIFY\"`\n\n## Examples\n\nThe following JSON examples can be copy-pasted as request bodies for the REST v2 API endpoint:\n\n```bash\nPOST /callosum/v1/v2/security/metadata/share\nContent-Type: application/x-www-form-urlencoded\n```\n\n### Basic collection sharing\nShare a collection with read-only access:\n\n```json\n{\n \"metadata_type\": \"COLLECTION\",\n \"metadata_identifiers\": [\"Sales Reports Collection\"],\n \"permissions\": [{\n \"principal\": {\n \"type\": \"USER\",\n \"identifier\": \"alice@company.com\"\n },\n \"share_mode\": \"READ_ONLY\"\n }],\n \"notification\": {\n \"message\": \"I've shared the Sales Reports collection with you\",\n \"notify_on_share\": true\n }\n}\n```\n\n### Collection sharing with dual permissions\nShare a collection with different permissions for the collection vs. its contents:\n\n```json\n{\n \"metadata_type\": \"COLLECTION\",\n \"metadata_identifiers\": [\"Marketing Analytics\"],\n \"permissions\": [{\n \"principal\": {\n \"type\": \"USER\",\n \"identifier\": \"bob@company.com\"\n },\n \"share_mode\": \"MODIFY\",\n \"content_share_mode\": \"READ_ONLY\"\n }, {\n \"principal\": {\n \"type\": \"USER_GROUP\",\n \"identifier\": \"Marketing Team\"\n },\n \"share_mode\": \"READ_ONLY\",\n \"content_share_mode\": \"READ_ONLY\"\n }],\n \"notification\": {\n \"emails\": [\"bob@company.com\"],\n \"message\": \"You can edit the collection but content is read-only\",\n \"enable_custom_url\": false,\n \"notify_on_share\": true\n },\n \"has_lenient_discoverability\": false\n}\n```\n\n### Multiple collections sharing\nShare multiple collections with different users:\n\n```json\n{\n \"metadata\": [\n {\n \"type\": \"COLLECTION\",\n \"identifier\": \"Q4 Reports\"\n },\n {\n \"type\": \"COLLECTION\",\n \"identifier\": \"Executive Dashboard Collection\"\n }\n ],\n \"permissions\": [{\n \"principal\": {\n \"type\": \"USER_GROUP\",\n \"identifier\": \"Executives\"\n },\n \"share_mode\": \"MODIFY\"\n }, {\n \"principal\": {\n \"type\": \"USER\",\n \"identifier\": \"manager@company.com\"\n },\n \"share_mode\": \"READ_ONLY\",\n \"content_share_mode\": \"MODIFY\"\n }],\n \"notification\": {\n \"message\": \"Sharing quarterly collections with leadership team\",\n \"notify_on_share\": true\n }\n}\n```\n\n### Remove collection access\nRemove access to a collection by setting share_mode to NO_ACCESS:\n\n```json\n{\n \"metadata_type\": \"COLLECTION\",\n \"metadata_identifiers\": [\"Confidential Reports\"],\n \"permissions\": [{\n \"principal\": {\n \"type\": \"USER\",\n \"identifier\": \"former-employee@company.com\"\n },\n \"share_mode\": \"NO_ACCESS\"\n }],\n \"notification\": {\n \"notify_on_share\": false\n }\n}\n```\n\n### Collection Permission Scenarios\n\n**Scenario 1: Collection Admin**\n- `share_mode: MODIFY` + `content_share_mode: MODIFY` = Full control over collection and its contents\n\n**Scenario 2: Collection Curator**\n- `share_mode: MODIFY` + `content_share_mode: READ_ONLY` = Can manage collection structure but not edit contents\n\n**Scenario 3: Content Editor**\n- `share_mode: READ_ONLY` + `content_share_mode: MODIFY` = Can edit objects within collection but can't change collection itself\n\n**Scenario 4: Viewer**\n- `share_mode: READ_ONLY` + `content_share_mode: READ_ONLY` = View-only access to collection and contents\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", "9.0.0.cl" @@ -8092,10 +8820,10 @@ "/api/rest/2.0/security/metadata/unpublish": { "post": { "operationId": "unpublishMetadata", - "description": "\nBeta Version: 10.9.0.cl or later\n\nAllows unpublishing metadata objects from organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows unpublishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nWhen unpublishing objects, you can:\n* Include dependencies by setting `include_dependencies` to true - this will unpublish all dependent objects if no other published object is using them\n* Force unpublish by setting `force` to true - this will break all dependent objects in the unpublished organizations\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 26.5.0.cl or later\n\nAllows unpublishing metadata objects from organizations in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\n\nThe API endpoint allows unpublishing the following types of metadata objects:\n* Liveboards\n* Answers\n* Logical Tables\n\nWhen unpublishing objects, you can:\n* Include dependencies by setting `include_dependencies` to true - this will unpublish all dependent objects if no other published object is using them\n* Force unpublish by setting `force` to true - this will break all dependent objects in the unpublished organizations\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Security", - "10.9.0.cl" + "26.5.0.cl" ], "requestBody": { "content": { @@ -10145,10 +10873,10 @@ "/api/rest/2.0/template/variables/create": { "post": { "operationId": "createVariable", - "description": "\nCreate a variable which can be used for parameterizing metadata objects
Beta Version: 10.14.0.cl or later\n\nAllows creating a variable which can be used for parameterizing metadata objects in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports the following types of variables:\n* CONNECTION_PROPERTY - For connection properties\n* TABLE_MAPPING - For table mappings\n* CONNECTION_PROPERTY_PER_PRINCIPAL - For connection properties per principal. In order to use this please contact support to enable this.\n* FORMULA_VARIABLE - For Formula variables, introduced in 10.15.0.cl\n\nWhen creating a variable, you need to specify:\n* The variable type\n* A unique name for the variable\n* Whether the variable contains sensitive values (defaults to false)\n* The data type of the variable, only specify for formula variables (defaults to null)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable name already exists\n* The variable type is invalid\n\n\n\n#### Endpoint URL\n", + "description": "\nCreate a variable which can be used for parameterizing metadata objects
Version: 26.4.0.cl or later\n\nAllows creating a variable which can be used for parameterizing metadata objects in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports the following types of variables:\n* CONNECTION_PROPERTY - For connection properties\n* TABLE_MAPPING - For table mappings\n* CONNECTION_PROPERTY_PER_PRINCIPAL - For connection properties per principal. In order to use this please contact support to enable this.\n* FORMULA_VARIABLE - For Formula variables, introduced in 10.15.0.cl\n\nWhen creating a variable, you need to specify:\n* The variable type\n* A unique name for the variable\n* Whether the variable contains sensitive values (defaults to false)\n* The data type of the variable, only specify for formula variables (defaults to null)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable name already exists\n* The variable type is invalid\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", - "10.14.0.cl" + "26.4.0.cl" ], "requestBody": { "content": { @@ -10218,7 +10946,7 @@ "/api/rest/2.0/template/variables/{identifier}/delete": { "post": { "operationId": "deleteVariable", - "description": "\nDelete a variable
Beta Version: 10.14.0.cl or later\n\nAllows deleting a variable from ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint requires:\n* The variable identifier (ID or name)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable doesn't exist\n* The variable is being used by other objects \n\n\n\n#### Endpoint URL\n", + "description": "\nDelete a variable
Version: 10.14.0.cl or later\n\n**Note:** This API endpoint is deprecated and will be removed from ThoughtSpot in a future release. Use [POST /api/rest/2.0/template/variables/delete](/api/rest/2.0/template/variables/delete) instead.\n\nAllows deleting a variable from ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint requires:\n* The variable identifier (ID or name)\n\nThe operation will fail if:\n* The user lacks required permissions\n* The variable doesn't exist\n* The variable is being used by other objects \n\n\n\n#### Endpoint URL\n", "deprecated": true, "tags": [ "Variable", @@ -10285,7 +11013,7 @@ "/api/rest/2.0/template/variables/delete": { "post": { "operationId": "deleteVariables", - "description": "\nDelete variable(s)
Beta Version: 26.4.0.cl or later\n\nAllows deleting multiple variables from ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint requires:\n* The variable identifiers (IDs or names)\n\nThe operation will fail if:\n* The user lacks required permissions\n* Any of the variables don't exist\n* Any of the variables are being used by other objects\n\n\n\n\n#### Endpoint URL\n", + "description": "\nDelete variable(s)
Version: 26.4.0.cl or later\n\nAllows deleting multiple variables from ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint requires:\n* The variable identifiers (IDs or names)\n\nThe operation will fail if:\n* The user lacks required permissions\n* Any of the variables don't exist\n* Any of the variables are being used by other objects\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "26.4.0.cl" @@ -10351,7 +11079,7 @@ "/api/rest/2.0/template/variables/{identifier}/update-values": { "post": { "operationId": "putVariableValues", - "description": "\nUpdate values for a variable
Beta Version: 26.4.0.cl or later\n\nAllows updating values for a specific variable in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to the variable\n* Replacing existing values\n* Deleting values from the variable\n* Resetting all values\n\nWhen updating variable values, you need to specify:\n* The variable identifier (ID or name)\n* The values to add/replace/remove\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constraints for the given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate values for a variable
Version: 26.4.0.cl or later\n\nAllows updating values for a specific variable in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to the variable\n* Replacing existing values\n* Deleting values from the variable\n* Resetting all values\n\nWhen updating variable values, you need to specify:\n* The variable identifier (ID or name)\n* The values to add/replace/remove\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constraints for the given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", "26.4.0.cl" @@ -10427,10 +11155,10 @@ "/api/rest/2.0/template/variables/search": { "post": { "operationId": "searchVariables", - "description": "\nSearch variables
Beta Version: 10.14.0.cl or later\n\nAllows searching for variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports searching variables by:\n* Variable identifier (ID or name)\n* Variable type\n* Name pattern (case-insensitive, supports % for wildcard)\n\nThe search results can be formatted in three ways:\n* METADATA - Returns only variable metadata (default)\n* METADATA_AND_VALUES - Returns variable metadata and values\n\nThe values can be filtered by scope:\n* org_identifier\n* principal_identifier\n* model_identifier\n\n\n\n\n#### Endpoint URL\n", + "description": "\nSearch variables
Version: 26.4.0.cl or later\n\nAllows searching for variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint supports searching variables by:\n* Variable identifier (ID or name)\n* Variable type\n* Name pattern (case-insensitive, supports % for wildcard)\n\nThe search results can be formatted in three ways:\n* METADATA - Returns only variable metadata (default)\n* METADATA_AND_VALUES - Returns variable metadata and values\n\nThe values can be filtered by scope:\n* org_identifier\n* principal_identifier\n* model_identifier\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", - "10.14.0.cl" + "26.4.0.cl" ], "requestBody": { "content": { @@ -10503,10 +11231,10 @@ "/api/rest/2.0/template/variables/{identifier}/update": { "post": { "operationId": "updateVariable", - "description": "\nUpdate a variable's name
Beta Version: 10.14.0.cl or later\n\nAllows updating a variable's name in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate a variable's name
Version: 26.4.0.cl or later\n\nAllows updating a variable's name in ThoughtSpot.\n\nRequires ADMINISTRATION role and TENANT scope.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows updating:\n* The variable name\n\n\n\n#### Endpoint URL\n", "tags": [ "Variable", - "10.14.0.cl" + "26.4.0.cl" ], "requestBody": { "content": { @@ -10579,7 +11307,7 @@ "/api/rest/2.0/template/variables/update-values": { "post": { "operationId": "updateVariableValues", - "description": "\nUpdate values for multiple variables
Beta Version: 10.14.0.cl or later\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", + "description": "\nUpdate values for multiple variables
Version: 10.14.0.cl or later\n\n**Note:** This API endpoint is deprecated and will be removed from ThoughtSpot in a future release. Use [POST /api/rest/2.0/template/variables/{identifier}/update-values](/api/rest/2.0/template/variables/%7Bidentifier%7D/update-values) instead.\n\nAllows updating values for multiple variables in ThoughtSpot.\n\nRequires ADMINISTRATION role.\nThe CAN_MANAGE_VARIABLES permission allows you to manage Formula Variables in the current organization scope.\n\nThe API endpoint allows:\n* Adding new values to variables\n* Replacing existing values\n* Deleting values from variables\n\nWhen updating variable values, you need to specify:\n* The variable identifiers\n* The values to add/replace/remove for each variable\n* The operation to perform (ADD, REPLACE, REMOVE, RESET)\n\nBehaviour based on operation type:\n* ADD - Adds values to the variable if this is a list type variable, else same as replace.\n* REPLACE - Replaces all values of a given set of constraints with the current set of values.\n* REMOVE - Removes any values which match the set of conditions of the variables if this is a list type variable, else clears value.\n* RESET - Removes all constrains for a given variable, scope is ignored\n\n\n\n\n#### Endpoint URL\n", "deprecated": true, "tags": [ "Variable", @@ -11638,215 +12366,72 @@ } } }, - "/api/rest/2.0/webhooks/{webhook_identifier}/storage-config": { - "get": { - "operationId": "getWebhookStorageConfig", - "description": "\nBeta Version: 26.4.0.cl or later\n\nGet storage config information for a webhook configuration. This endpoint provides ThoughtSpot's identity information and IAM policy configuration required for customers to set up cross-account access to their S3 buckets.\n\nThe setup info returned depends on the ThoughtSpot cluster type:\n- For AWS clusters: Returns `aws_config` with STS AssumeRole configuration\n- For GCP clusters: Returns `gcp_config` with STS AssumeRoleWithWebIdentity configuration\n\n**Note:** This endpoint only returns data if the webhook has a storage destination configured.\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", + "/api/rest/2.0/webhooks/search": { + "post": { + "operationId": "searchWebhookConfigurations", + "description": "\nBeta Version: 10.14.0.cl or later\n\nSearches for webhook configurations based on various criteria such as Org, webhook identifier, event type, with support for pagination and sorting. Returns matching webhook configurations with their complete details.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Webhooks", - "26.4.0.cl" - ], - "parameters": [ - { - "in": "path", - "name": "webhook_identifier", - "required": true, - "schema": { - "type": "string" - }, - "description": "Unique ID or name of the webhook configuration." - } + "10.14.0.cl" ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchWebhookConfigurationsRequest" + } + } + }, + "required": true + }, + "parameters": [], "responses": { "200": { - "description": "Storage setup information retrieved successfully", + "description": "Webhook configurations retrieved successfully", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StorageSetupInfo" + "$ref": "#/components/schemas/WebhookSearchResponse" }, "examples": { "example_1": { - "description": "Storage setup info for AWS cluster deployment", + "description": "Search results with multiple webhooks", "value": { - "cluster_type": "AWS", - "storage_type": "AWS_S3", - "aws_config": { - "thoughtspot_aws_account_id": "123456789012", - "trust_policy_template": { - "Version": "2012-10-17", - "Statement": [ + "webhooks": [ + { + "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "name": "Liveboard Schedule Webhook", + "description": "Webhook for liveboard schedule notifications", + "org": { + "id": "0", + "name": "Primary" + }, + "url": "https://myapp.example.com/webhooks", + "url_params": { + "api_key": "abc123" + }, + "events": [ + "LIVEBOARD_SCHEDULE" + ], + "authentication": { + "BEARER_TOKEN": "***" + }, + "signature_verification": { + "type": "HMAC_SHA256", + "header": "X-Webhook-Signature", + "algorithm": "SHA256", + "secret": "***" + }, + "creation_time_in_millis": 1724277430243, + "modification_time_in_millis": 1724278215123, + "additional_headers": [ { - "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. Copy the trust policy template and attach it to your 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": "Storage setup info for GCP cluster deployment", - "value": { - "cluster_type": "GCP", - "storage_type": "AWS_S3", - "gcp_config": { - "thoughtspot_gcp_service_account_id": "115663769112811637952", - "oidc_provider": "accounts.google.com", - "trust_policy_template": { - "Version": "2012-10-17", - "Statement": [ + "key": "Custom-Header", + "value": "value1" + }, { - "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 ThoughtSpot's 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" - ] - } - } - } - } - } - } - }, - "400": { - "description": "Invalid request. Webhook not found or does not have storage destination configured.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Forbidden access.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "500": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, - "/api/rest/2.0/webhooks/search": { - "post": { - "operationId": "searchWebhookConfigurations", - "description": "\nBeta Version: 10.14.0.cl or later\n\nSearches for webhook configurations based on various criteria such as Org, webhook identifier, event type, with support for pagination and sorting. Returns matching webhook configurations with their complete details.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "Webhooks", - "10.14.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SearchWebhookConfigurationsRequest" - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Webhook configurations retrieved successfully", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WebhookSearchResponse" - }, - "examples": { - "example_1": { - "description": "Search results with multiple webhooks", - "value": { - "webhooks": [ - { - "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", - "name": "Liveboard Schedule Webhook", - "description": "Webhook for liveboard schedule notifications", - "org": { - "id": "0", - "name": "Primary" - }, - "url": "https://myapp.example.com/webhooks", - "url_params": { - "api_key": "abc123" - }, - "events": [ - "LIVEBOARD_SCHEDULE" - ], - "authentication": { - "BEARER_TOKEN": "***" - }, - "signature_verification": { - "type": "HMAC_SHA256", - "header": "X-Webhook-Signature", - "algorithm": "SHA256", - "secret": "***" - }, - "creation_time_in_millis": 1724277430243, - "modification_time_in_millis": 1724278215123, - "additional_headers": [ - { - "key": "Custom-Header", - "value": "value1" - }, - { - "key": "Custom-Header-2", - "value": "value2" + "key": "Custom-Header-2", + "value": "value2" } ], "created_by": { @@ -13699,6 +14284,21 @@ "PdfOptionsInput": { "type": "object", "properties": { + "page_size": { + "type": "string", + "enum": [ + "A4", + "CONTINUOUS" + ], + "description": "Size of PDF page. `A4` generates a paginated A4 PDF. `CONTINUOUS` generates a continuous PDF that matches the Liveboard layout. Each Liveboard tab has its own page of variable length. Defaults to `A4` if not specified.
Beta Version: 26.5.0.cl or later", + "nullable": true + }, + "zoom_level": { + "type": "integer", + "format": "int32", + "description": "Zoom level percentage for the PDF. Only applicable when `page_size` is `CONTINUOUS`. Acceptable values are integers in the range [45, 175]. Defaults to 100 if not specified.
Beta Version: 26.5.0.cl or later", + "nullable": true + }, "include_cover_page": { "type": "boolean", "default": true, @@ -13714,7 +14314,7 @@ "include_filter_page": { "type": "boolean", "default": true, - "description": "Indicates whether to include a page with all applied filters.", + "description": "Indicates whether to include a page with all applied filters. For `CONTINUOUS` page_size, this parameter indicates whether to include the filter header.", "nullable": true }, "include_page_number": { @@ -14134,6 +14734,29 @@ } } }, + "AnswerPngOptionsInput": { + "type": "object", + "properties": { + "x_resolution": { + "type": "integer", + "format": "int32", + "description": "Desired width of the answer image in pixels. Ex. 1920 for Full HD image
Beta Version: 26.6.0.cl or later", + "nullable": true + }, + "y_resolution": { + "type": "integer", + "format": "int32", + "description": "Desired height of the answer image in pixels. Ex. 1080 for Full HD image
Beta Version: 26.6.0.cl or later", + "nullable": true + }, + "scaling": { + "type": "integer", + "format": "int32", + "description": "The scale of the image in percentage. Ex. 100 for 100% scale.
Beta Version: 26.6.0.cl or later", + "nullable": true + } + } + }, "PermissionOfPrincipalsResponse": { "type": "object", "properties": { @@ -14215,7 +14838,8 @@ "ANSWER", "LOGICAL_TABLE", "LOGICAL_COLUMN", - "CONNECTION" + "CONNECTION", + "COLLECTION" ], "description": " Type of metadata object.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", "nullable": true @@ -14786,7 +15410,8 @@ "GOOGLE_SHEETS", "FALCON", "FALCON_ONPREM", - "CLICKHOUSE" + "CLICKHOUSE", + "IOMETE" ], "description": "Type of data warehouse." }, @@ -15930,7 +16555,8 @@ "GOOGLE_SHEETS", "FALCON", "FALCON_ONPREM", - "CLICKHOUSE" + "CLICKHOUSE", + "IOMETE" ], "nullable": true }, @@ -16379,98 +17005,6 @@ } } }, - "StorageSetupInfo": { - "type": "object", - "required": [ - "cluster_type", - "storage_type" - ], - "properties": { - "cluster_type": { - "type": "string", - "enum": [ - "AWS", - "GCP" - ], - "description": "The type of ThoughtSpot cluster deployment.\nDetermines which authentication method is used for S3 access.\nExample: \"AWS\" or \"GCP\"" - }, - "storage_type": { - "type": "string", - "enum": [ - "AWS_S3" - ], - "description": "Type of storage destination (e.g., AWS_S3)." - }, - "aws_config": { - "$ref": "#/components/schemas/AWSAssumeRoleSetup", - "description": "Setup info for AWS clusters using STS AssumeRole.\nOnly populated when cluster_type is AWS.", - "nullable": true - }, - "gcp_config": { - "$ref": "#/components/schemas/GCPWebIdentitySetup", - "description": "Setup info for GCP clusters using STS AssumeRoleWithWebIdentity.\nOnly populated when cluster_type is GCP.", - "nullable": true - } - }, - "description": "Setup information for customer-managed storage configuration.\nProvides ThoughtSpot's identity information and IAM policy configuration\nrequired for customers to set up cross-account access to their S3 buckets.\nThe response contains cluster-specific configuration based on the cluster_type:\n- For AWS clusters: aws_config will be populated\n- For GCP clusters: gcp_config will be populated\nExample query:\n```graphql\nquery {\n getWebhookStorageConfig(webhook_identifier: \"my-webhook\") {\n cluster_type\n storage_type\n aws_config {\n thoughtspot_aws_account_id\n trust_policy_template\n setup_instructions\n }\n gcp_config {\n thoughtspot_gcp_service_account_id\n oidc_provider\n trust_policy_template\n setup_instructions\n }\n }\n}\n```\nExample AWS response:\n{\n \"cluster_type\": \"AWS\",\n \"storage_type\": \"AWS_S3\",\n \"aws_config\": {\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Create an IAM role...\", \"2. Add trust policy...\"]\n },\n \"gcp_config\": null\n}\nExample GCP response:\n{\n \"cluster_type\": \"GCP\",\n \"storage_type\": \"AWS_S3\",\n \"aws_config\": null,\n \"gcp_config\": {\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": { \"Version\": \"2012-10-17\", \"Statement\": [...] },\n \"setup_instructions\": [\"1. Add accounts.google.com as Identity Provider...\"]\n }\n}" - }, - "AWSAssumeRoleSetup": { - "type": "object", - "required": [ - "thoughtspot_aws_account_id", - "trust_policy_template" - ], - "properties": { - "thoughtspot_aws_account_id": { - "type": "string", - "description": "ThoughtSpot's AWS Account ID. You must include this in your IAM role's\ntrust policy to allow ThoughtSpot to assume your role.\nExample: \"123456789012\"" - }, - "trust_policy_template": { - "type": "object", - "description": "Sample IAM trust policy JSON object that you should attach to your IAM role.\nThe policy includes ThoughtSpot's AWS Account ID and your External ID.\nExample: { \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } } }] }" - }, - "setup_instructions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Step-by-step instructions to configure your AWS IAM role.\nExample: [\"1. Create an IAM role in your AWS account\", \"2. Add the trust policy with ThoughtSpot's AWS Account ID\"]", - "nullable": true - } - }, - "description": "Setup information for AWS clusters using STS AssumeRole.\nThoughtSpot will use its AWS IAM role to assume your role in your AWS account.\nExample:\n{\n \"thoughtspot_aws_account_id\": \"123456789012\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:root\" },\n \"Action\": \"sts:AssumeRole\",\n \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"your-external-id\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Create an IAM role in your AWS account\",\n \"2. Copy the trust policy template and attach it to your role\",\n \"3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"4. Use the role ARN in your webhook storage configuration\"\n ]\n}" - }, - "GCPWebIdentitySetup": { - "type": "object", - "required": [ - "thoughtspot_gcp_service_account_id", - "trust_policy_template" - ], - "properties": { - "thoughtspot_gcp_service_account_id": { - "type": "string", - "description": "ThoughtSpot's GCP service account unique ID (numeric).\nThis is the 'sub' claim in OIDC tokens and must be included in your\nIAM role's trust policy condition.\nExample: \"115663769112811637952\"" - }, - "oidc_provider": { - "type": "string", - "description": "The OIDC identity provider URL. For GCP, this is always 'accounts.google.com'.\nYou must configure this as an Identity Provider in AWS IAM.\nExample: \"accounts.google.com\"", - "nullable": true - }, - "trust_policy_template": { - "type": "object", - "description": "Sample IAM trust policy JSON object for Web Identity Federation.\nThis policy allows ThoughtSpot's GCP service account to assume your AWS role.\nExample: { \"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": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Step-by-step instructions to configure AWS for GCP Web Identity Federation.\nExample: [\"1. Add accounts.google.com as an Identity Provider in AWS IAM\", \"2. Create an IAM role with Web Identity Federation trust\"]", - "nullable": true - } - }, - "description": "Setup information for GCP clusters using STS AssumeRoleWithWebIdentity.\nThoughtSpot will use its GCP service account to obtain OIDC tokens for AWS access.\nExample:\n{\n \"thoughtspot_gcp_service_account_id\": \"115663769112811637952\",\n \"oidc_provider\": \"accounts.google.com\",\n \"trust_policy_template\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": { \"Federated\": \"arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com\" },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": { \"StringEquals\": { \"accounts.google.com:sub\": \"115663769112811637952\" } }\n }]\n },\n \"setup_instructions\": [\n \"1. Add accounts.google.com as an Identity Provider in AWS IAM\",\n \"2. Create an IAM role with Web Identity Federation trust\",\n \"3. Configure the trust policy with ThoughtSpot's GCP service account ID\",\n \"4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role\",\n \"5. Use the role ARN in your webhook storage configuration\"\n ]\n}" - }, "CollectionSearchResponse": { "type": "object", "required": [ @@ -17943,7 +18477,8 @@ "ANSWER", "LOGICAL_TABLE", "LOGICAL_COLUMN", - "CONNECTION" + "CONNECTION", + "COLLECTION" ], "description": " Type of metadata.\n \n\nRequired if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.\n 1. LIVEBOARD\n 2. ANSWERS\n 3. LOGICAL_TABLE for any data object such as table, worksheet or view.\n 4. LOGICAL_COLUMN for a column of any data object such as tables, worksheets or views.", "nullable": true @@ -18570,7 +19105,8 @@ "ANSWER", "LOGICAL_TABLE", "LOGICAL_COLUMN", - "CONNECTION" + "CONNECTION", + "COLLECTION" ], "description": " Type of metadata.\n \n\nType of metadata. Required if the name of the object is set as the identifier. This attribute is optional when the object GUID is specified as the identifier.", "nullable": true @@ -18600,6 +19136,15 @@ "NO_ACCESS" ], "description": "Type of access to the shared object" + }, + "content_share_mode": { + "type": "string", + "enum": [ + "READ_ONLY", + "MODIFY" + ], + "description": "Content share mode for collections. Controls access to objects within the collection. Only applicable when sharing COLLECTION metadata type.", + "nullable": true } } }, @@ -18905,7 +19450,8 @@ "GOOGLE_SHEETS", "FALCON", "FALCON_ONPREM", - "CLICKHOUSE" + "CLICKHOUSE", + "IOMETE" ], "description": "Type of data warehouse." }, @@ -18938,6 +19484,51 @@ } } }, + "SyncMetadataResponse": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "SUCCESS", + "PARTIAL_SUCCESS", + "NO_UPDATE" + ], + "description": "Overall status of the sync operation.", + "nullable": true + }, + "tables_updated": { + "type": "integer", + "format": "int32", + "description": "Number of tables with metadata updates.", + "nullable": true + }, + "columns_updated": { + "type": "integer", + "format": "int32", + "description": "Number of columns with metadata updates.", + "nullable": true + }, + "tables_failed": { + "type": "integer", + "format": "int32", + "description": "Number of tables that failed to sync (for PARTIAL_SUCCESS).", + "nullable": true + }, + "columns_failed": { + "type": "integer", + "format": "int32", + "description": "Number of columns that failed to sync (for PARTIAL_SUCCESS).", + "nullable": true + }, + "message": { + "type": "string", + "description": "Message describing the result.", + "nullable": true + } + }, + "description": "Response from sync metadata operation." + }, "RoleResponse": { "type": "object", "required": [ @@ -20052,23 +20643,13 @@ "type": { "type": "string", "enum": [ - "answer", - "liveboard", - "data_source" + "data_source", + "DATA_SOURCE", + "AUTO_MODE" ], "description": "Type of the context.", "nullable": true }, - "answer_context": { - "$ref": "#/components/schemas/AnswerContextInput", - "description": "Answer context.", - "nullable": true - }, - "liveboard_context": { - "$ref": "#/components/schemas/LBContextInput", - "description": "Liveboard context.", - "nullable": true - }, "data_source_context": { "$ref": "#/components/schemas/DataSourceContextInput", "description": "Data source context.", @@ -20076,50 +20657,26 @@ } } }, - "AnswerContextInput": { + "DataSourceContextInput": { "type": "object", - "required": [ - "session_identifier", - "generation_number" - ], "properties": { - "session_identifier": { + "data_source_identifier": { "type": "string", - "description": "Unique identifier of the answer session." + "description": "Unique identifier of the data source.\nRequired when context type is DATA_SOURCE and `data_source_identifiers` is not provided.\nAt least one of `data_source_identifier` or `data_source_identifiers` must be supplied for DATA_SOURCE context;\nomit only when context type is AUTO_MODE.
Version: 26.5.0.cl or later", + "nullable": true }, - "generation_number": { - "type": "integer", - "format": "int32", - "description": "Generation number of the answer." - } - } - }, - "LBContextInput": { - "type": "object", - "required": [ - "liveboard_identifier", - "visualization_identifier" - ], - "properties": { - "liveboard_identifier": { - "type": "string", - "description": "Unique identifier of the liveboard." + "data_source_identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Unique identifiers of data sources for multi-data-source context.\nRequired when context type is DATA_SOURCE and `data_source_identifier` is not provided.
Version: 26.5.0.cl or later", + "nullable": true }, - "visualization_identifier": { - "type": "string", - "description": "Unique identifier of the visualization." - } - } - }, - "DataSourceContextInput": { - "type": "object", - "required": [ - "guid" - ], - "properties": { "guid": { "type": "string", - "description": "Unique identifier of the data source." + "description": "Deprecated. Use `data_source_identifier` instead.\nPreviously required when neither `data_source_identifier` nor `data_source_identifiers` was provided for DATA_SOURCE context.
Version: 26.2.0.cl or later", + "nullable": true } } }, @@ -20128,20 +20685,26 @@ "properties": { "enable_contextual_change_analysis": { "type": "boolean", - "default": false, - "description": "Enable contextual change analysis.", + "default": true, + "description": "Enable contextual change analysis.\nDefault changed from `false` to `true` in 26.2.0.cl.\nIgnored on versions >= 26.2.0.cl where it is always enabled.
Version: 10.4.0.cl or later", "nullable": true }, "enable_natural_language_answer_generation": { "type": "boolean", "default": true, - "description": "Enable natural language to answer generation.", + "description": "Enable natural language to answer generation.\nDefault changed from `false` to `true` in 26.2.0.cl.\nIgnored on versions >= 26.2.0.cl where it is always enabled.
Version: 10.4.0.cl or later", "nullable": true }, "enable_reasoning": { + "type": "boolean", + "default": true, + "description": "Enable reasoning.\nDefault changed from `false` to `true` in 26.2.0.cl.\nIgnored on versions >= 26.2.0.cl where it is always enabled.
Version: 10.4.0.cl or later", + "nullable": true + }, + "enable_save_chat": { "type": "boolean", "default": false, - "description": "Enable reasoning.", + "description": "Enable save conversation. When `true`, the conversation is persisted\nand can be retrieved later via conversation history.
Version: 26.5.0.cl or later", "nullable": true } } @@ -20149,12 +20712,17 @@ "AgentConversation": { "type": "object", "required": [ - "conversation_id" + "conversation_id", + "conversation_identifier" ], "properties": { "conversation_id": { "type": "string", "description": "Unique identifier of the conversation." + }, + "conversation_identifier": { + "type": "string", + "description": "Unique identifier of the conversation.
Version: 26.5.0.cl or later" } } }, @@ -20165,10 +20733,12 @@ ], "properties": { "success": { - "type": "boolean" + "type": "boolean", + "description": "Indicates whether the agent response was received and processed successfully." }, "message": { "type": "string", + "description": "Optional message providing additional context about the operation outcome.", "nullable": true } } @@ -20765,141 +21335,789 @@ "format": "int32", "description": "Number of webhooks that failed to delete." }, - "deleted_webhooks": { + "deleted_webhooks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookResponse" + }, + "description": "List of successfully deleted webhooks." + }, + "failed_webhooks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookDeleteFailure" + }, + "description": "List of webhooks that failed to delete with error details." + } + } + }, + "WebhookDeleteFailure": { + "type": "object", + "required": [ + "id", + "name", + "error" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the webhook that failed to delete." + }, + "name": { + "type": "string", + "description": "Name of the webhook that failed to delete." + }, + "error": { + "type": "string", + "description": "Error message describing why the deletion failed." + } + } + }, + "CollectionMetadataInput": { + "type": "object", + "required": [ + "type", + "identifiers" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "COLLECTION" + ], + "description": "Type of metadata object." + }, + "identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of unique IDs or names of metadata objects." + } + }, + "description": "Input type for metadata to be added to a collection." + }, + "CollectionDeleteResponse": { + "type": "object", + "properties": { + "metadata_deleted": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" + }, + "description": "List of metadata objects that were successfully deleted.", + "nullable": true + }, + "metadata_skipped": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" + }, + "description": "List of metadata objects that were skipped during deletion.\nObjects may be skipped due to lack of permissions, dependencies, or other constraints.", + "nullable": true + } + }, + "description": "Response object for delete collection operation." + }, + "CollectionDeleteTypeIdentifiers": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of the metadata object (e.g., Collection, Worksheet, Table).", + "nullable": true + }, + "identifiers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GenericInfo" + }, + "description": "List of metadata identifiers belonging to the given type.", + "nullable": true + } + }, + "description": "Group of metadata objects identified by type." + }, + "Runtime_Filter": { + "type": "object", + "properties": { + "runtime_filter": { + "type": "object", + "description": "Runtime filter parameter type in JWT." + } + }, + "description": "List of runtime parameters need to set during the session." + }, + "Runtime_Sort": { + "type": "object", + "properties": { + "runtime_sort": { + "type": "object", + "description": "Runtime sort parameter type in JWT." + } + }, + "description": "List of runtime parameters need to set during the session." + }, + "Runtime_Param_Override": { + "type": "object", + "properties": { + "runtime_param_override": { + "type": "object", + "description": "Runtime param override type in JWT." + } + }, + "description": "List of runtime parameters need to set during the session." + }, + "WebhookLiveboardPayload": { + "type": "object", + "description": "Top-level payload delivered by ThoughtSpot to the configured webhook endpoint when a LIVEBOARD_SCHEDULE event fires. Sent as an HTTP POST with Content-Type: application/json.", + "required": [ + "eventId", + "timestamp", + "eventType", + "schemaVersion", + "source", + "actor", + "metadataObject", + "data" + ], + "properties": { + "eventId": { + "type": "string", + "description": "Unique identifier for this webhook delivery attempt." + }, + "timestamp": { + "type": "string", + "description": "ISO 8601 timestamp of when the event was generated.", + "example": "2025-04-10T12:00:00Z" + }, + "eventType": { + "type": "string", + "enum": [ + "LIVEBOARD_SCHEDULE" + ], + "description": "Type of event that triggered this webhook delivery." + }, + "schemaVersion": { + "type": "string", + "description": "Schema version of this payload format.", + "example": "1.0" + }, + "source": { + "$ref": "#/components/schemas/WebhookPayloadSource" + }, + "actor": { + "$ref": "#/components/schemas/WebhookPayloadActor" + }, + "metadataObject": { + "$ref": "#/components/schemas/WebhookPayloadMetadataObject" + }, + "data": { + "$ref": "#/components/schemas/WebhookLiveboardScheduleData" + }, + "unsubscribeUrl": { + "type": "string", + "nullable": true, + "description": "URL to manage notification preferences. Present for end-user-facing events." + } + } + }, + "WebhookPayloadSource": { + "type": "object", + "description": "Source information identifying the ThoughtSpot instance that generated the event.", + "required": [ + "applicationName", + "instanceId", + "orgId" + ], + "properties": { + "applicationName": { + "type": "string", + "description": "Name of the application. Always \"ThoughtSpot\".", + "example": "ThoughtSpot" + }, + "applicationUrl": { + "type": "string", + "nullable": true, + "description": "Base URL of the ThoughtSpot instance.", + "example": "https://mycompany.thoughtspot.cloud" + }, + "instanceId": { + "type": "string", + "description": "Unique identifier of the ThoughtSpot instance (cluster or deployment ID)." + }, + "orgId": { + "type": "string", + "description": "Unique identifier of the organization within ThoughtSpot that owns the event." + } + } + }, + "WebhookPayloadActor": { + "type": "object", + "description": "Information about the entity that initiated the webhook event. For scheduled Liveboard deliveries, actorType is always SYSTEM and id, name, and email are omitted.", + "required": [ + "actorType" + ], + "properties": { + "actorType": { + "type": "string", + "description": "Type of actor. One of: USER, SYSTEM, API_CLIENT.", + "enum": [ + "USER", + "SYSTEM", + "API_CLIENT" + ], + "example": "SYSTEM" + }, + "id": { + "type": "string", + "nullable": true, + "description": "Unique identifier (GUID) of the actor. Omitted for SYSTEM actors." + }, + "name": { + "type": "string", + "nullable": true, + "description": "Display name of the actor. Omitted for SYSTEM actors." + }, + "email": { + "type": "string", + "nullable": true, + "description": "Email address of the actor. Omitted for SYSTEM actors." + } + } + }, + "WebhookPayloadMetadataObject": { + "type": "object", + "description": "The primary ThoughtSpot metadata object associated with the event. For LIVEBOARD_SCHEDULE events, this is always the scheduled Liveboard.", + "required": [ + "objectType", + "name", + "url" + ], + "properties": { + "objectType": { + "type": "string", + "description": "Type of the metadata object. For LIVEBOARD_SCHEDULE events, always \"LIVEBOARD\".", + "example": "LIVEBOARD" + }, + "id": { + "type": "string", + "nullable": true, + "description": "Unique identifier (GUID) of the metadata object." + }, + "name": { + "type": "string", + "description": "Display name of the metadata object." + }, + "url": { + "type": "string", + "description": "Direct URL to the metadata object within ThoughtSpot." + } + } + }, + "WebhookLiveboardScheduleData": { + "type": "object", + "description": "Event-specific data payload for LIVEBOARD_SCHEDULE webhook events.", + "required": [ + "scheduleDetails", + "recipients" + ], + "properties": { + "scheduleDetails": { + "$ref": "#/components/schemas/WebhookScheduleDetails" + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookScheduleRecipient" + }, + "description": "List of all recipients for this schedule delivery." + }, + "aiHighlights": { + "type": "string", + "nullable": true, + "description": "AI-generated highlights for the Liveboard content, if available." + }, + "msgUniqueId": { + "type": "string", + "nullable": true, + "description": "Idempotency key used to deduplicate deliveries for the same schedule run." + }, + "channelID": { + "type": "string", + "nullable": true, + "description": "Internal identifier for the delivery channel." + }, + "channelType": { + "type": "string", + "nullable": true, + "description": "Type of the delivery channel (e.g., \"WEBHOOK\").", + "example": "WEBHOOK" + }, + "communicationType": { + "type": "string", + "nullable": true, + "description": "Internal communication type identifier (e.g., \"LiveboardSchedules\").", + "example": "LiveboardSchedules" + }, + "viewInfo": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/WebhookLiveboardViewInfo" + } + ], + "description": "Personalized Liveboard view information, present when the schedule targets a specific saved view." + } + } + }, + "WebhookScheduleDetails": { + "type": "object", + "description": "Configuration and run-time details of the Liveboard schedule that triggered the webhook event.", + "required": [ + "scheduleId", + "name" + ], + "properties": { + "scheduleId": { + "type": "string", + "description": "Unique identifier (GUID) of the schedule." + }, + "name": { + "type": "string", + "description": "Display name of the schedule." + }, + "frequency": { + "type": "object", + "nullable": true, + "description": "Frequency configuration of the schedule (cron expression or interval object)." + }, + "creationTime": { + "type": "string", + "nullable": true, + "description": "ISO 8601 timestamp of when the schedule was created.", + "example": "2025-01-15T08:00:00Z" + }, + "timezone": { + "type": "string", + "nullable": true, + "description": "Timezone for the schedule (e.g., \"America/Los_Angeles\", \"Etc/UTC\").", + "example": "America/Los_Angeles" + }, + "description": { + "type": "string", + "nullable": true, + "description": "Description of the schedule." + }, + "authorId": { + "type": "string", + "nullable": true, + "description": "Unique identifier (GUID) of the user who created the schedule." + }, + "gatingFunction": { + "type": "string", + "nullable": true, + "description": "Gating function applied to the schedule, if configured." + }, + "useCustomEmbedUrls": { + "type": "string", + "nullable": true, + "description": "Whether the schedule uses custom embed URLs for Liveboard links." + }, + "userIds": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true, + "description": "List of ThoughtSpot user GUIDs explicitly added as recipients." + }, + "groupIds": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true, + "description": "List of ThoughtSpot group GUIDs explicitly added as recipients." + }, + "runId": { + "type": "string", + "nullable": true, + "description": "Unique identifier for this specific execution (run) of the schedule." + }, + "exportRequest": { + "type": "object", + "nullable": true, + "description": "Export configuration for the schedule. Contains rendering settings and visualization selection. Key fields: object_type, liveboard_params (layout_type, liveboard_viz_selection, print_document_params), pdf_params (page_size, orientation), request_type.", + "properties": { + "object_type": { + "type": "string", + "description": "Type of the exported object (e.g., \"LIVEBOARD\").", + "example": "LIVEBOARD" + }, + "pdf_params": { + "type": "object", + "nullable": true, + "description": "PDF rendering parameters.", + "properties": { + "page_size": { + "type": "string", + "example": "A4" + }, + "orientation": { + "type": "string", + "example": "LANDSCAPE" + } + } + }, + "liveboard_params": { + "type": "object", + "nullable": true, + "description": "Liveboard-specific export parameters.", + "properties": { + "layout_type": { + "type": "string", + "example": "LIVEBOARD" + }, + "visualization_format_options": { + "type": "object", + "properties": { + "truncate_tables": { + "type": "boolean" + } + } + }, + "print_document_params": { + "type": "object", + "properties": { + "include_cover_page": { + "type": "boolean" + }, + "include_filter_page": { + "type": "boolean" + }, + "pageFooterParams": { + "type": "object", + "properties": { + "include_logo": { + "type": "boolean" + }, + "include_page_number": { + "type": "boolean" + }, + "text": { + "type": "string" + } + } + } + } + }, + "liveboard_viz_selection": { + "type": "object", + "properties": { + "complete_liveboard": { + "type": "boolean" + } + } + } + } + }, + "request_type": { + "type": "string", + "description": "Type of export request.", + "example": "SCHEDULE" + } + } + }, + "fileFormat": { + "type": "string", + "nullable": true, + "description": "File format for the exported attachment.", + "enum": [ + "PDF", + "CSV", + "XLSX", + "PNG" + ] + }, + "status": { + "type": "string", + "nullable": true, + "description": "Current status of this schedule run.", + "example": "SCHEDULED" + }, + "emailIds": { "type": "array", "items": { - "$ref": "#/components/schemas/WebhookResponse" + "type": "string" }, - "description": "List of successfully deleted webhooks." + "nullable": true, + "description": "List of external (non-ThoughtSpot) email addresses receiving this schedule." }, - "failed_webhooks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookDeleteFailure" - }, - "description": "List of webhooks that failed to delete with error details." + "viewInfo": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/WebhookLiveboardViewInfo" + } + ], + "description": "Personalized view information when the schedule targets a specific Liveboard view." } } }, - "WebhookDeleteFailure": { + "WebhookScheduleRecipient": { "type": "object", + "description": "A recipient for a Liveboard schedule webhook delivery.", "required": [ - "id", - "name", - "error" + "type", + "email" ], "properties": { + "type": { + "type": "string", + "description": "Type of recipient.", + "enum": [ + "USER", + "GROUP", + "EXTERNAL_EMAIL" + ] + }, "id": { "type": "string", - "description": "Unique identifier of the webhook that failed to delete." + "nullable": true, + "description": "Unique identifier (GUID) of the recipient. Present for USER and GROUP recipients." }, "name": { "type": "string", - "description": "Name of the webhook that failed to delete." + "nullable": true, + "description": "Display name of the recipient. Present for USER and GROUP recipients." }, - "error": { + "email": { "type": "string", - "description": "Error message describing why the deletion failed." + "description": "Email address of the recipient." + }, + "memberEmails": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true, + "description": "Email addresses of group members. Present when recipient type is GROUP." } } }, - "CollectionMetadataInput": { + "WebhookLiveboardViewInfo": { "type": "object", + "description": "Personalized Liveboard view associated with a schedule. Present only when the schedule targets a specific saved view of the Liveboard.", "required": [ - "type", - "identifiers" + "viewName", + "viewId" ], "properties": { - "type": { + "viewName": { "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "COLLECTION" - ], - "description": "Type of metadata object." + "description": "Display name of the personalized Liveboard view." }, - "identifiers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of unique IDs or names of metadata objects." + "viewId": { + "type": "string", + "description": "Unique identifier (GUID) of the personalized Liveboard view." } - }, - "description": "Input type for metadata to be added to a collection." + } }, - "CollectionDeleteResponse": { + "WebhookLiveboardMultipartPayload": { "type": "object", + "description": "Multipart/form-data payload delivered by ThoughtSpot when a LIVEBOARD_SCHEDULE event includes file attachments. Content-Type is multipart/form-data. The request contains a \"payload\" form field with the JSON payload and one or more file form fields (pdf_files, csv_files, xlsx_files, other_files). When there are no attachments, ThoughtSpot sends application/json (WebhookLiveboardPayload) instead.", "properties": { - "metadata_deleted": { + "payload": { + "allOf": [ + { + "$ref": "#/components/schemas/WebhookLiveboardPayload" + } + ], + "description": "JSON part of the multipart request (form field name: \"payload\"). Contains the same structured payload as a JSON-only delivery." + }, + "pdf_files": { "type": "array", "items": { - "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" + "$ref": "#/components/schemas/WebhookFileAttachment" }, - "description": "List of metadata objects that were successfully deleted.", - "nullable": true + "description": "PDF file attachments (form field name: \"pdf_files\"). Present when the schedule file format is PDF. Content-Type: application/pdf." }, - "metadata_skipped": { + "csv_files": { "type": "array", "items": { - "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" + "$ref": "#/components/schemas/WebhookFileAttachment" }, - "description": "List of metadata objects that were skipped during deletion.\nObjects may be skipped due to lack of permissions, dependencies, or other constraints.", - "nullable": true + "description": "CSV file attachments (form field name: \"csv_files\"). Present when the schedule file format is CSV. Content-Type: text/csv." + }, + "xlsx_files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookFileAttachment" + }, + "description": "Excel file attachments (form field name: \"xlsx_files\"). Present when the schedule file format is XLSX. Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet." + }, + "other_files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookFileAttachment" + }, + "description": "Fallback file attachments for any format not matched above (form field name: \"other_files\")." } - }, - "description": "Response object for delete collection operation." + } }, - "CollectionDeleteTypeIdentifiers": { + "WebhookFileAttachment": { "type": "object", + "description": "A single file attachment within a webhook multipart delivery.", + "required": [ + "filename", + "contentType" + ], "properties": { - "type": { + "filename": { "type": "string", - "description": "Type of the metadata object (e.g., Collection, Worksheet, Table).", - "nullable": true + "description": "Original filename of the attachment.", + "example": "Quarterly_Sales.pdf" }, - "identifiers": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GenericInfo" - }, - "description": "List of metadata identifiers belonging to the given type.", - "nullable": true + "contentType": { + "type": "string", + "description": "MIME type of the attachment content.", + "enum": [ + "application/pdf", + "text/csv", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + ], + "example": "application/pdf" + }, + "content": { + "type": "string", + "format": "binary", + "description": "Binary content of the file. In the actual HTTP request this is the raw bytes of the multipart form part; in SDK models it is represented as a byte array or stream." } - }, - "description": "Group of metadata objects identified by type." + } }, - "Runtime_Filter": { + "WebhookLiveboardStorageMultipartPayload": { "type": "object", + "description": "Multipart/form-data payload with two JSON parts delivered when a LIVEBOARD_SCHEDULE webhook has a customer-managed storage destination (S3) configured. ThoughtSpot uploads the attachments to the customer's S3 bucket first, then sends only the file references via the webhook — no binary data is delivered to the endpoint. Content-Type is multipart/form-data with two JSON form fields: \"payload\" and \"file_attachments\". Used instead of WebhookLiveboardMultipartPayload when storage_destination is set on the webhook.", + "required": [ + "payload", + "file_attachments" + ], "properties": { - "runtime_filter": { - "type": "object", - "description": "Runtime filter parameter type in JWT." + "payload": { + "allOf": [ + { + "$ref": "#/components/schemas/WebhookLiveboardPayload" + } + ], + "description": "Structured event payload (form field name: \"payload\"). Contains the same fields as a JSON-only delivery." + }, + "file_attachments": { + "allOf": [ + { + "$ref": "#/components/schemas/WebhookFileAttachmentsPayload" + } + ], + "description": "S3 file reference metadata (form field name: \"file_attachments\"). Lists each file uploaded to the customer's S3 bucket with its upload status. Contains an empty files list and a non-empty error field when upload failed entirely." } - }, - "description": "List of runtime parameters need to set during the session." + } }, - "Runtime_Sort": { + "WebhookFileAttachmentsPayload": { "type": "object", + "description": "The \"file_attachments\" JSON part of a customer-storage multipart webhook delivery. Contains S3 object references for every file that was (or should have been) uploaded to the customer's bucket, plus an optional top-level error on complete upload failure.", + "required": [ + "files" + ], "properties": { - "runtime_sort": { - "type": "object", - "description": "Runtime sort parameter type in JWT." + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookS3FileReference" + }, + "description": "List of file references. Each entry corresponds to one schedule attachment. uploadStatus indicates whether that individual file was uploaded successfully. May be empty when a critical upload error prevented all uploads." + }, + "error": { + "type": "string", + "nullable": true, + "description": "Top-level error message set when the cloud storage upload failed entirely. Empty on full success; may be non-empty even when some files succeeded (partial failure).", + "example": "cloud storage upload failed: failed to assume role: AccessDenied" } - }, - "description": "List of runtime parameters need to set during the session." + } }, - "Runtime_Param_Override": { + "WebhookS3FileReference": { "type": "object", + "description": "Reference to a single file uploaded (or attempted) to the customer's S3 bucket as part of a LIVEBOARD_SCHEDULE webhook delivery.", + "required": [ + "filename", + "contentType", + "size", + "provider", + "uploadStatus" + ], "properties": { - "runtime_param_override": { - "type": "object", - "description": "Runtime param override type in JWT." + "filename": { + "type": "string", + "description": "Original filename of the attachment.", + "example": "Quarterly_Sales.pdf" + }, + "contentType": { + "type": "string", + "description": "MIME type of the file.", + "example": "application/pdf" + }, + "size": { + "type": "integer", + "format": "int64", + "description": "Size of the file in bytes." + }, + "provider": { + "type": "string", + "description": "Storage provider. Currently always \"AWS_S3\".", + "enum": [ + "AWS_S3" + ] + }, + "bucketName": { + "type": "string", + "nullable": true, + "description": "Name of the customer's S3 bucket. Omitted when upload failed.", + "example": "my-webhook-files" + }, + "region": { + "type": "string", + "nullable": true, + "description": "AWS region of the S3 bucket. Omitted when upload failed.", + "example": "us-west-2" + }, + "objectKey": { + "type": "string", + "nullable": true, + "description": "Full object key (path) of the file within the S3 bucket. Omitted when upload failed.", + "example": "thoughtspot-webhooks/org-0/liveboard-schedules/sched-id/run-id/Quarterly_Sales.pdf" + }, + "uploadStatus": { + "type": "string", + "enum": [ + "SUCCESS", + "FAILED" + ], + "description": "Upload result for this file." + }, + "errorMessage": { + "type": "string", + "nullable": true, + "description": "Error details when uploadStatus is FAILED. Omitted on success." + }, + "uploadedAt": { + "type": "string", + "nullable": true, + "description": "ISO 8601 timestamp of when the file was uploaded. Omitted when upload failed.", + "example": "2025-04-10T12:00:00Z" } - }, - "description": "List of runtime parameters need to set during the session." + } }, "CreateAgentConversationRequest": { "type": "object", @@ -21055,6 +22273,36 @@ } } }, + "SendAgentConversationMessageRequest": { + "type": "object", + "properties": { + "messages": { + "description": "messages to be sent to the agent", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "messages" + ] + }, + "SendAgentConversationMessageStreamingRequest": { + "type": "object", + "properties": { + "messages": { + "description": "messages to be sent to the agent", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "messages" + ] + }, "SendAgentMessageRequest": { "type": "object", "properties": { @@ -21793,7 +23041,8 @@ "GOOGLE_SHEETS", "FALCON", "FALCON_ONPREM", - "CLICKHOUSE" + "CLICKHOUSE", + "IOMETE" ] }, "data_warehouse_config": { @@ -21899,7 +23148,8 @@ "GOOGLE_SHEETS", "FALCON", "FALCON_ONPREM", - "CLICKHOUSE" + "CLICKHOUSE", + "IOMETE" ] } }, @@ -21975,6 +23225,28 @@ } } }, + "SyncMetadataRequest": { + "type": "object", + "properties": { + "tables": { + "description": "Array of tables to sync. Each element can be:\n- String: Table identifier (GUID or name) to sync\n all columns for that table.\n- Object: {tableId: [columnIds]} to sync specific\n columns.\nIf not provided, syncs all tables in the connection.", + "type": "object" + }, + "sync_attributes": { + "description": "List of sync_attributes to sync from CDW.\nThe default value is DESCRIPTION.", + "default": [ + "DESCRIPTION" + ], + "type": "array", + "items": { + "type": "string", + "enum": [ + "DESCRIPTION" + ] + } + } + } + }, "UpdateConnectionRequest": { "type": "object", "properties": { @@ -22005,6 +23277,20 @@ "connection_identifier" ] }, + "UpdateConnectionStatusRequest": { + "type": "object", + "properties": { + "status": { + "description": "Status to set for the connection. Use ACTIVATED to enable the connection or DEACTIVATED to disable it.", + "default": "ACTIVATED", + "type": "string", + "enum": [ + "ACTIVATED", + "DEACTIVATED" + ] + } + } + }, "UpdateConnectionV2Request": { "type": "object", "properties": { @@ -23688,6 +24974,12 @@ "type": "boolean", "nullable": true }, + "include_personalised_views": { + "description": "When set to true and include_details is also true, includes personalised views\nin the metadata_detail for LIVEBOARD objects.", + "default": false, + "type": "boolean", + "nullable": true + }, "include_headers": { "description": "Includes headers of the metadata objects.", "default": true, @@ -23995,6 +25287,18 @@ "$ref": "#/components/schemas/RegionalSettingsInput" } ] + }, + "png_options": { + "description": "Options for PNG export.
Beta Version: 26.6.0.cl or later", + "allOf": [ + { + "$ref": "#/components/schemas/AnswerPngOptionsInput" + } + ] + }, + "personalised_view_identifier": { + "description": "GUID or name of the personalised view of the Answer object.
Beta Version: 26.6.0.cl or later", + "type": "string" } } }, @@ -25919,7 +27223,8 @@ "ANSWER", "LOGICAL_TABLE", "LOGICAL_COLUMN", - "CONNECTION" + "CONNECTION", + "COLLECTION" ] } }, @@ -26054,14 +27359,15 @@ "type": "object", "properties": { "metadata_type": { - "description": "Type of metadata. Required if identifier in metadata_identifies is a name.\n1. Liveboard\n2. Answers\n3. LOGICAL_TABLE for any data object such as table, worksheet or view.\n4. LOGICAL_COLUMN\n5. Connection", + "description": "Type of metadata. Required if identifier in metadata_identifies is a name.\n1. Liveboard\n2. Answers\n3. LOGICAL_TABLE for any data object such as table, worksheet or view.\n4. LOGICAL_COLUMN\n5. Connection\n6. Collection", "type": "string", "enum": [ "LIVEBOARD", "ANSWER", "LOGICAL_TABLE", "LOGICAL_COLUMN", - "CONNECTION" + "CONNECTION", + "COLLECTION" ] }, "metadata_identifiers": { From dc0848298b064821c57c86a89018822d4d6c9d64 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Fri, 10 Apr 2026 14:25:39 +0530 Subject: [PATCH 20/23] Webhook payload --- api-spec/openapiSpecv3-2_0.json | 133 ++++++++++++++++---------------- 1 file changed, 65 insertions(+), 68 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 9af8b126a..dfdef572a 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -21471,6 +21471,71 @@ }, "description": "List of runtime parameters need to set during the session." }, + "WebhookLiveboardDelivery": { + "type": "object", + "description": "Single entry point for all LIVEBOARD_SCHEDULE webhook event payloads. ThoughtSpot selects the delivery kind automatically based on webhook configuration.\n\n**KIND 1 — FILE_ATTACHMENT** (webhookDeliveryKind: FILE_ATTACHMENT): Sent as multipart/form-data. The \"payload\" form field carries the JSON event data; exactly one of pdf_files, csv_files, xlsx_files, or other_files carries the binary attachment.\n\n**KIND 2 — STORAGE** (webhookDeliveryKind: STORAGE): Sent as multipart/form-data with two JSON parts. ThoughtSpot uploads files to the customer S3 bucket first, then sends \"payload\" (JSON event data) and \"file_attachments\" (S3 object references). No binary data is delivered to the endpoint.", + "required": [ + "webhookDeliveryKind", + "payload" + ], + "properties": { + "webhookDeliveryKind": { + "$ref": "#/components/schemas/WebhookDeliveryKind" + }, + "payload": { + "allOf": [ + { + "$ref": "#/components/schemas/WebhookLiveboardPayload" + } + ], + "description": "The structured event data. Always present. HTTP form field name: \"payload\"." + }, + "pdf_files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookFileAttachment" + }, + "description": "PDF file attachments (HTTP form field: \"pdf_files\", Content-Type: application/pdf). Present when webhookDeliveryKind is FILE_ATTACHMENT and the schedule file format is PDF." + }, + "csv_files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookFileAttachment" + }, + "description": "CSV file attachments (HTTP form field: \"csv_files\", Content-Type: text/csv). Present when webhookDeliveryKind is FILE_ATTACHMENT and the schedule file format is CSV." + }, + "xlsx_files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookFileAttachment" + }, + "description": "Excel file attachments (HTTP form field: \"xlsx_files\", Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet). Present when webhookDeliveryKind is FILE_ATTACHMENT and the schedule file format is XLSX." + }, + "other_files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookFileAttachment" + }, + "description": "Fallback file attachments for unrecognised extensions (HTTP form field: \"other_files\"). Present when webhookDeliveryKind is FILE_ATTACHMENT and the file format is not PDF, CSV, or XLSX." + }, + "file_attachments": { + "allOf": [ + { + "$ref": "#/components/schemas/WebhookFileAttachmentsPayload" + } + ], + "description": "S3 file references (HTTP form field: \"file_attachments\"). Present when webhookDeliveryKind is STORAGE. Lists each file uploaded to the customer S3 bucket with its upload status and metadata." + } + } + }, + "WebhookDeliveryKind": { + "type": "string", + "description": "Identifies which of the two delivery modes a LIVEBOARD_SCHEDULE webhook payload uses. FILE_ATTACHMENT: multipart/form-data with one JSON part (\"payload\") and one binary file part. STORAGE: multipart/form-data with two JSON parts (\"payload\" and \"file_attachments\"); files are already stored in the customer S3 bucket — no binary data is sent to the endpoint.", + "enum": [ + "FILE_ATTACHMENT", + "STORAGE" + ] + }, "WebhookLiveboardPayload": { "type": "object", "description": "Top-level payload delivered by ThoughtSpot to the configured webhook endpoint when a LIVEBOARD_SCHEDULE event fires. Sent as an HTTP POST with Content-Type: application/json.", @@ -21927,48 +21992,6 @@ } } }, - "WebhookLiveboardMultipartPayload": { - "type": "object", - "description": "Multipart/form-data payload delivered by ThoughtSpot when a LIVEBOARD_SCHEDULE event includes file attachments. Content-Type is multipart/form-data. The request contains a \"payload\" form field with the JSON payload and one or more file form fields (pdf_files, csv_files, xlsx_files, other_files). When there are no attachments, ThoughtSpot sends application/json (WebhookLiveboardPayload) instead.", - "properties": { - "payload": { - "allOf": [ - { - "$ref": "#/components/schemas/WebhookLiveboardPayload" - } - ], - "description": "JSON part of the multipart request (form field name: \"payload\"). Contains the same structured payload as a JSON-only delivery." - }, - "pdf_files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookFileAttachment" - }, - "description": "PDF file attachments (form field name: \"pdf_files\"). Present when the schedule file format is PDF. Content-Type: application/pdf." - }, - "csv_files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookFileAttachment" - }, - "description": "CSV file attachments (form field name: \"csv_files\"). Present when the schedule file format is CSV. Content-Type: text/csv." - }, - "xlsx_files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookFileAttachment" - }, - "description": "Excel file attachments (form field name: \"xlsx_files\"). Present when the schedule file format is XLSX. Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet." - }, - "other_files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookFileAttachment" - }, - "description": "Fallback file attachments for any format not matched above (form field name: \"other_files\")." - } - } - }, "WebhookFileAttachment": { "type": "object", "description": "A single file attachment within a webhook multipart delivery.", @@ -21999,32 +22022,6 @@ } } }, - "WebhookLiveboardStorageMultipartPayload": { - "type": "object", - "description": "Multipart/form-data payload with two JSON parts delivered when a LIVEBOARD_SCHEDULE webhook has a customer-managed storage destination (S3) configured. ThoughtSpot uploads the attachments to the customer's S3 bucket first, then sends only the file references via the webhook — no binary data is delivered to the endpoint. Content-Type is multipart/form-data with two JSON form fields: \"payload\" and \"file_attachments\". Used instead of WebhookLiveboardMultipartPayload when storage_destination is set on the webhook.", - "required": [ - "payload", - "file_attachments" - ], - "properties": { - "payload": { - "allOf": [ - { - "$ref": "#/components/schemas/WebhookLiveboardPayload" - } - ], - "description": "Structured event payload (form field name: \"payload\"). Contains the same fields as a JSON-only delivery." - }, - "file_attachments": { - "allOf": [ - { - "$ref": "#/components/schemas/WebhookFileAttachmentsPayload" - } - ], - "description": "S3 file reference metadata (form field name: \"file_attachments\"). Lists each file uploaded to the customer's S3 bucket with its upload status. Contains an empty files list and a non-empty error field when upload failed entirely." - } - } - }, "WebhookFileAttachmentsPayload": { "type": "object", "description": "The \"file_attachments\" JSON part of a customer-storage multipart webhook delivery. Contains S3 object references for every file that was (or should have been) uploaded to the customer's bucket, plus an optional top-level error on complete upload failure.", From 52438b85ff5b46be191e14cdc8c2b9feca0c4ded Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 29 Apr 2026 17:20:23 +0530 Subject: [PATCH 21/23] Examples update --- api-spec/openapiSpecv3-2_0.json | 3388 +++++++++++++++++++++++-------- 1 file changed, 2548 insertions(+), 840 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index dfdef572a..cd0550e4e 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -53,6 +53,14 @@ ], "description": "Roles for version 26.5.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": "9.0.0.cl", "id": "9.0.0.cl", @@ -109,14 +117,6 @@ ], "description": "Roles for version 9.9.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": "9.6.0.cl", "id": "9.6.0.cl", @@ -333,6 +333,14 @@ "application/json": { "schema": { "$ref": "#/components/schemas/Conversation" + }, + "examples": { + "example_1": { + "description": "Conversation created successfully", + "value": { + "conversation_identifier": "conv-a1b2c3d4-e5f6-7890-abcd-ef1234567890" + } + } } } } @@ -416,6 +424,33 @@ "application/json": { "schema": { "$ref": "#/components/schemas/eureka_DataSourceSuggestionResponse" + }, + "examples": { + "example_1": { + "description": "Data source suggestions returned", + "value": { + "data_sources": [ + { + "confidence": 0.95, + "details": { + "description": "Comprehensive sales data including revenue, orders, and customers", + "data_source_name": "Sales Analytics", + "data_source_identifier": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8" + }, + "reasoning": "This data source contains revenue and order data relevant to sales performance analysis" + }, + { + "confidence": 0.82, + "details": { + "description": "Customer lifecycle and churn metrics", + "data_source_name": "Customer Success", + "data_source_identifier": "c4d5e6f7-a8b9-4c0d-e1f2-a3b4c5d6e7f8" + }, + "reasoning": "Contains churn rate, retention metrics, and customer health scores" + } + ] + } + } } } } @@ -499,6 +534,23 @@ "application/json": { "schema": { "$ref": "#/components/schemas/eureka_GetNLInstructionsResponse" + }, + "examples": { + "example_1": { + "description": "NL instructions returned", + "value": { + "nl_instructions_info": [ + { + "instructions": [ + "Revenue is measured in USD thousands", + "When asked about 'this year', use the current fiscal year starting April", + "Region 'Northeast' includes NY, NJ, CT, MA, VT, NH, ME, RI" + ], + "scope": "GLOBAL" + } + ] + } + } } } } @@ -582,6 +634,30 @@ "application/json": { "schema": { "$ref": "#/components/schemas/eureka_GetRelevantQuestionsResponse" + }, + "examples": { + "example_1": { + "description": "Relevant questions returned", + "value": { + "relevant_questions": [ + { + "query": "What is the revenue trend by region for the last 12 months?", + "data_source_identifier": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "data_source_name": "Sales Analytics" + }, + { + "query": "Which product categories have the highest conversion rate?", + "data_source_identifier": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "data_source_name": "Sales Analytics" + }, + { + "query": "What is the average deal size by sales rep?", + "data_source_identifier": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "data_source_name": "Sales Analytics" + } + ] + } + } } } } @@ -666,6 +742,27 @@ "application/json": { "schema": { "$ref": "#/components/schemas/eureka_DecomposeQueryResponse" + }, + "examples": { + "example_1": { + "description": "Decomposed queries returned", + "value": { + "decomposedQueryResponse": { + "decomposedQueries": [ + { + "query": "Revenue trend in Northeast region by month", + "worksheetId": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "worksheetName": "Sales Analytics" + }, + { + "query": "Top customers by revenue change in Northeast", + "worksheetId": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "worksheetName": "Sales Analytics" + } + ] + } + } + } } } } @@ -1055,6 +1152,21 @@ "application/json": { "schema": { "type": "object" + }, + "examples": { + "example_1": { + "description": "Agent response received", + "value": { + "id": "resp-xyz789", + "messages": [ + { + "id": "msg-001", + "type": "text", + "value": "I analyzed revenue trends for the last 6 months by product category. Here's what I found..." + } + ] + } + } } } } @@ -1139,6 +1251,15 @@ "application/json": { "schema": { "$ref": "#/components/schemas/SendAgentMessageResponse" + }, + "examples": { + "example_1": { + "description": "Streaming message sent successfully", + "value": { + "success": true, + "message": "Streaming response initiated" + } + } } } } @@ -1235,6 +1356,21 @@ "items": { "$ref": "#/components/schemas/ResponseMessage" } + }, + "examples": { + "example_1": { + "description": "AI response received", + "value": [ + { + "session_identifier": "sess-abc123", + "generation_number": 1, + "message_type": "TSAnswer", + "visualization_type": "Table", + "tokens": "[revenue] [region] [date]", + "display_tokens": "Revenue by Region (Last Quarter)" + } + ] + } } } } @@ -1321,6 +1457,14 @@ "application/json": { "schema": { "$ref": "#/components/schemas/eureka_SetNLInstructionsResponse" + }, + "examples": { + "example_1": { + "description": "NL instructions set successfully", + "value": { + "success": true + } + } } } } @@ -1404,6 +1548,19 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ResponseMessage" + }, + "examples": { + "example_1": { + "description": "Single answer generated successfully", + "value": { + "session_identifier": "sess-abc123", + "generation_number": 1, + "message_type": "TSAnswer", + "visualization_type": "Chart", + "tokens": "[revenue] [region] [date range] last year", + "display_tokens": "Total Revenue by Region (Last Year)" + } + } } } } @@ -1461,6 +1618,138 @@ } } }, + "/api/rest/2.0/ai/agent/conversation/{conversation_identifier}/stop-response": { + "post": { + "operationId": "stopConversation", + "description": "\nStops an in-progress agent conversation response.
Version: 26.6.0.cl or later\n\nVersion: 26.6.0.cl or later\n\nStops an in-progress agent response for the specified conversation. Use this endpoint to cancel a response that is actively being generated — for example, when the user navigates away, reformulates their question, or no longer needs the current result.\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 whose active response should be stopped, as returned by `createAgentConversation`\n\nA successful request returns an empty `204 No Content` response. If there is no active response in progress at the time of the call, the request is still treated as successful.\n\nAfter stopping a response, the conversation session remains active. You can continue sending messages using `sendAgentConversationMessage` or `sendAgentConversationMessageStreaming`.\n\n#### Example request\n\n```bash\nPOST /api/rest/2.0/ai/agent/conversation/{conversation_identifier}/stop-response\n```\n\n#### Typical usage scenario\n\nThis endpoint is useful when integrating Spotter into a chat UI where users can cancel a long-running query. For example:\n\n1. User sends a message via `sendAgentConversationMessageStreaming`.\n2. User clicks a \"Stop generating\" button while the response is streaming.\n3. Your client calls `stopConversation` with the active `conversation_identifier`.\n4. The stream is terminated and the user can ask a new question.\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\n> ###### Note:\n>\n> - Calling this endpoint when no response is in progress does not return an error.\n> - The conversation context is preserved after stopping — previous messages and answers remain accessible.\n> - Available from version 26.6.0.cl and later.\n> - This endpoint requires Spotter — please contact ThoughtSpot Support to enable Spotter on your cluster.\n> - This feature is available only for **Spotter 3** (`SPOTTER3`) version.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "AI", + "26.6.0.cl" + ], + "parameters": [ + { + "in": "path", + "name": "conversation_identifier", + "required": true, + "schema": { + "type": "string" + }, + "description": "Unique identifier of the conversation to stop." + } + ], + "responses": { + "204": { + "description": "Successfully stopped the in-progress agent conversation response for the given." + }, + "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/auth/configure": { + "post": { + "operationId": "configureAuthSettings", + "description": "\n Version: 26.6.0.cl or later\n\nVersion: 26.6.0.cl or later\n\nEnables or disables authentication at cluster or org level for the specified auth type. Currently supports `TRUSTED_AUTH`.\n\n#### Required privileges\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `CONTROL_TRUSTED_AUTH` (**Can Enable or Disable Trusted Authentication**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH` privilege is required.\n\n#### Usage guidelines\n\nUse `cluster_preferences` to enable or disable authentication at the cluster level. Cluster-level settings can only be configured from the Primary Org.\n- `ENABLED` — Generates a new access token if one does not exist. An existing token is preserved.\n- `DISABLED` — Revokes the existing cluster-level access token.\n\nUse `org_preferences` to enable or disable authentication for one or more Orgs. Each entry must include an `org_identifier` (unique ID or name) and an `auth_status`. Org-level configuration requires the per-Org authentication feature to be enabled on your instance.\n- `ENABLED` — Generates a new org-level access token if one does not exist.\n- `DISABLED` — Revokes the existing org-level access token for that Org.\n\nBoth `cluster_preferences` and `org_preferences` are optional. Omitting a field leaves the corresponding settings unchanged. If both are omitted, the API returns `204 No Content` without making any changes.\n\n**Note**: Cluster-level and org-level settings are independent of each other. Enabling or disabling one does not affect the other.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Authentication", + "26.6.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigureAuthSettingsRequest" + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "204": { + "description": "Trusted authentication settings configured successfully." + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/auth/session/user": { "get": { "operationId": "getCurrentUserInfo", @@ -1477,6 +1766,28 @@ "application/json": { "schema": { "$ref": "#/components/schemas/User" + }, + "examples": { + "example_1": { + "description": "Returns information about the currently authenticated user", + "value": { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "tsadmin", + "display_name": "TS Admin", + "visibility": "SHARABLE", + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "can_change_password": true, + "complete_detail": true, + "creation_time_in_millis": 1685441468684, + "account_type": "LOCAL_USER", + "account_status": "ACTIVE", + "email": "admin@example.com", + "current_org": { + "id": 0, + "name": "Primary" + } + } + } } } } @@ -1540,6 +1851,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/GetTokenResponse" + }, + "examples": { + "example_1": { + "description": "Returns the current session token for the authenticated user", + "value": { + "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.example", + "creation_time_in_millis": 1724277430000, + "expiration_time_in_millis": 1724277730000, + "valid_for_user_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "valid_for_username": "tsadmin" + } + } } } } @@ -1613,6 +1936,25 @@ "application/json": { "schema": { "$ref": "#/components/schemas/AccessToken" + }, + "examples": { + "example_1": { + "description": "Custom access token issued successfully", + "value": { + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.example", + "org": { + "id": 0, + "name": "Primary" + }, + "user": { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "john_doe" + }, + "creation_time_in_millis": 1724277430000, + "expiration_time_in_millis": 1724277730000 + } + } } } } @@ -1687,7 +2029,24 @@ "application/json": { "schema": { "$ref": "#/components/schemas/Token" - } + }, + "examples": { + "example_1": { + "description": "Full access token issued successfully", + "value": { + "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.example", + "creation_time_in_millis": 1724277430000, + "expiration_time_in_millis": 1724277730000, + "scope": { + "access_type": "FULL", + "org_id": 0, + "metadata_id": null + }, + "valid_for_user_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "valid_for_username": "john_doe" + } + } + } } } }, @@ -1761,6 +2120,23 @@ "application/json": { "schema": { "$ref": "#/components/schemas/Token" + }, + "examples": { + "example_1": { + "description": "Object-scoped access token issued successfully", + "value": { + "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.example", + "creation_time_in_millis": 1724277430000, + "expiration_time_in_millis": 1724277730000, + "scope": { + "access_type": "REPORT_BOOK_VIEW", + "org_id": 0, + "metadata_id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f" + }, + "valid_for_user_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "valid_for_username": "john_doe" + } + } } } } @@ -1997,6 +2373,108 @@ } } }, + "/api/rest/2.0/auth/search": { + "post": { + "operationId": "searchAuthSettings", + "description": "\n Version: 26.6.0.cl or later\n\nVersion: 26.6.0.cl or later\n\nReturns the authentication configuration for the specified auth type at cluster and org level. Currently supports `TRUSTED_AUTH`.\n\n#### Required privileges\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `CONTROL_TRUSTED_AUTH` (**Can Enable or Disable Trusted Authentication**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled, the `CONTROL_TRUSTED_AUTH` privilege is required.\n\n#### Usage guidelines\n\nUse `scope` to control which level of settings are returned:\n- `CLUSTER` — Returns cluster-level authentication status and access tokens. Accessible only from the Primary Org.\n- `ORG` — Returns org-level authentication status and access tokens for the current Org. Requires the per-Org authentication feature to be enabled on your instance.\n- If `scope` is omitted, both cluster and org-level settings are returned based on the caller's org context and feature availability.\n\nThe `access_tokens` array in `cluster_preferences` or `org_preferences` is omitted when no token is configured at that level.\n\n**Note**: Access tokens returned in the response are sensitive credentials. Treat them with the same care as passwords.\n\n\n\n\n#### Endpoint URL\n", + "tags": [ + "Authentication", + "26.6.0.cl" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchAuthSettingsRequest" + } + } + }, + "required": true + }, + "parameters": [], + "responses": { + "200": { + "description": "Authentication settings retrieved successfully.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchAuthSettingsResponse" + }, + "examples": { + "example_1": { + "value": { + "auth_type": "TRUSTED_AUTH", + "cluster_preferences": { + "auth_status": "ENABLED", + "access_tokens": [ + { + "key": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + } + ] + }, + "org_preferences": [ + { + "org": { + "id": 583464508, + "name": "sales_org" + }, + "auth_status": "ENABLED", + "access_tokens": [ + { + "key": "f9e8d7c6-b5a4-3210-fedc-ba9876543210" + } + ] + } + ] + } + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/rest/2.0/auth/token/validate": { "post": { "operationId": "validateToken", @@ -2023,6 +2501,22 @@ "application/json": { "schema": { "$ref": "#/components/schemas/TokenValidationResponse" + }, + "examples": { + "example_1": { + "description": "Token is valid", + "value": { + "creation_time_in_millis": 1724277430000, + "expiration_time_in_millis": 1724277730000, + "scope": { + "access_type": "FULL", + "org_id": 0, + "metadata_id": null + }, + "valid_for_user_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "token_type": "JWT" + } + } } } } @@ -2096,6 +2590,31 @@ "application/json": { "schema": { "$ref": "#/components/schemas/Collection" + }, + "examples": { + "example_1": { + "description": "Collection created successfully", + "value": { + "id": "col-a1b2c3d4-e5f6", + "name": "Q1 2024 Reports", + "description": "Collection of Q1 2024 reports", + "author_name": "john_doe", + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "created_at": "1724277430000", + "updated_at": "1724277430000", + "metadata": [ + { + "type": "LIVEBOARD", + "identifiers": [ + { + "identifier": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", + "name": "Sales Dashboard" + } + ] + } + ] + } + } } } } @@ -2169,6 +2688,25 @@ "application/json": { "schema": { "$ref": "#/components/schemas/CollectionDeleteResponse" + }, + "examples": { + "example_1": { + "description": "Collections deleted (or would be deleted in dry run)", + "value": { + "metadata_deleted": [ + { + "type": "COLLECTION", + "identifiers": [ + { + "id": "col-a1b2c3d4-e5f6", + "name": "Q1 2024 Reports" + } + ] + } + ], + "metadata_skipped": [] + } + } } } } @@ -2252,6 +2790,32 @@ "application/json": { "schema": { "$ref": "#/components/schemas/CollectionSearchResponse" + }, + "examples": { + "example_1": { + "description": "Search all collections", + "value": { + "collections": [ + { + "id": "col-a1b2c3d4-e5f6", + "name": "Q1 2024 Reports", + "description": "Collection of Q1 2024 reports", + "author_name": "john_doe", + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "created_at": "1724277430000", + "updated_at": "1724277430000", + "org": { + "identifier": "0", + "name": "Primary" + } + } + ], + "record_offset": 0, + "record_size": 10, + "is_last_batch": true, + "count": 1 + } + } } } } @@ -2414,6 +2978,34 @@ "items": { "$ref": "#/components/schemas/ConnectionConfigurationResponse" } + }, + "examples": { + "example_1": { + "description": "Search connection configurations for a Snowflake connection", + "value": [ + { + "configuration_identifier": "cfg-a1b2c3d4-e5f6", + "name": "Sales Team Config", + "description": "Configuration for the sales team", + "configuration": { + "warehouse": "SALES_WH", + "database": "SALES_DB" + }, + "policy_type": "PRINCIPALS", + "policy_principals": [ + { + "id": "b25ee394-9d13-49e3-9385-cd97f5b253b4", + "name": "Sales Team", + "type": "USER_GROUP" + } + ], + "policy_processes": [], + "disabled": false, + "data_warehouse_type": "SNOWFLAKE", + "same_as_parent": false + } + ] + } } } } @@ -2487,6 +3079,31 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ConnectionConfigurationResponse" + }, + "examples": { + "example_1": { + "description": "Connection configuration created successfully", + "value": { + "configuration_identifier": "cfg-a1b2c3d4-e5f6", + "name": "Sales Team Config", + "description": "Configuration for the sales team", + "configuration": { + "warehouse": "SALES_WH", + "database": "SALES_DB" + }, + "policy_type": "PRINCIPALS", + "policy_principals": [ + { + "id": "b25ee394-9d13-49e3-9385-cd97f5b253b4", + "name": "Sales Team", + "type": "USER_GROUP" + } + ], + "disabled": false, + "data_warehouse_type": "SNOWFLAKE", + "same_as_parent": false + } + } } } } @@ -2702,6 +3319,21 @@ "application/json": { "schema": { "$ref": "#/components/schemas/CreateConnectionResponse" + }, + "examples": { + "example_1": { + "description": "Connection created successfully", + "value": { + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "name": "Production Snowflake", + "data_warehouse_type": "SNOWFLAKE", + "details": { + "accountName": "my-account.snowflakecomputing.com", + "warehouse": "COMPUTE_WH", + "database": "PROD_DB" + } + } + } } } } @@ -2977,6 +3609,20 @@ "application/json": { "schema": { "$ref": "#/components/schemas/FetchConnectionDiffStatusResponse" + }, + "examples": { + "example_1": { + "description": "Connection has schema differences", + "value": { + "status": true + } + }, + "example_2": { + "description": "No schema differences detected", + "value": { + "status": false + } + } } } } @@ -3060,6 +3706,14 @@ "application/json": { "schema": { "$ref": "#/components/schemas/RevokeRefreshTokensResponse" + }, + "examples": { + "example_1": { + "description": "Refresh tokens revoked successfully", + "value": { + "data": "Refresh tokens revoked successfully for 5 users" + } + } } } } @@ -3156,6 +3810,48 @@ "items": { "$ref": "#/components/schemas/SearchConnectionResponse" } + }, + "examples": { + "example_1": { + "description": "Search all Snowflake connections", + "value": [ + { + "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "name": "Production Snowflake", + "description": "Main production Snowflake connection", + "data_warehouse_type": "SNOWFLAKE", + "data_warehouse_objects": { + "databases": [ + { + "name": "PROD_DB", + "schemas": [ + { + "name": "PUBLIC", + "tables": [ + { + "name": "SALES_FACT", + "columns": [ + { + "name": "SALE_ID", + "data_type": "NUMBER", + "selected": true + }, + { + "name": "AMOUNT", + "data_type": "FLOAT", + "selected": true + } + ] + } + ] + } + ] + } + ] + } + } + ] + } } } } @@ -3239,6 +3935,30 @@ "application/json": { "schema": { "$ref": "#/components/schemas/SyncMetadataResponse" + }, + "examples": { + "example_1": { + "description": "Metadata sync completed successfully", + "value": { + "status": "SUCCESS", + "tables_updated": 5, + "columns_updated": 42, + "tables_failed": 0, + "columns_failed": 0, + "message": "Metadata sync completed successfully" + } + }, + "example_2": { + "description": "Partial metadata sync success", + "value": { + "status": "PARTIAL_SUCCESS", + "tables_updated": 3, + "columns_updated": 28, + "tables_failed": 2, + "columns_failed": 14, + "message": "Some tables failed to sync" + } + } } } } @@ -3878,6 +4598,20 @@ "application/json": { "schema": { "$ref": "#/components/schemas/CalendarResponse" + }, + "examples": { + "example_1": { + "description": "Custom calendar created successfully", + "value": { + "calendar_id": "cal-a1b2c3d4-e5f6", + "calendar_name": "Fiscal Year 2024", + "connection_name": "Production Snowflake", + "data_warehouse_type": "SNOWFLAKE", + "modification_time_in_millis": "1724277430000", + "author_name": "john_doe", + "connection_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + } + } } } } @@ -4093,6 +4827,22 @@ "items": { "$ref": "#/components/schemas/CalendarResponse" } + }, + "examples": { + "example_1": { + "description": "Search all custom calendars", + "value": [ + { + "calendar_id": "cal-a1b2c3d4-e5f6", + "calendar_name": "Fiscal Year 2024", + "connection_name": "Production Snowflake", + "data_warehouse_type": "SNOWFLAKE", + "modification_time_in_millis": "1724277430000", + "author_name": "john_doe", + "connection_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + } + ] + } } } } @@ -4242,6 +4992,42 @@ "application/json": { "schema": { "$ref": "#/components/schemas/AnswerDataResponse" + }, + "examples": { + "example_1": { + "description": "Answer data returned successfully", + "value": { + "metadata_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "metadata_name": "Revenue Analysis", + "contents": [ + { + "column_names": [ + "Region", + "Revenue" + ], + "data_rows": [ + [ + "Northeast", + 1250000 + ], + [ + "Southeast", + 890000 + ], + [ + "West", + 1050000 + ] + ], + "available_data_row_count": 3, + "returned_data_row_count": 3, + "record_offset": 0, + "record_size": 100, + "sampling_ratio": 1 + } + ] + } + } } } } @@ -4315,22 +5101,79 @@ "application/json": { "schema": { "$ref": "#/components/schemas/LiveboardDataResponse" - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Unauthorized access.", + }, + "examples": { + "example_1": { + "description": "Liveboard data returned successfully", + "value": { + "metadata_id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", + "metadata_name": "Sales Dashboard", + "contents": [ + { + "visualization_id": "viz-001", + "visualization_name": "Revenue by Region", + "column_names": [ + "Region", + "Total Revenue" + ], + "data_rows": [ + [ + "Northeast", + 1250000 + ], + [ + "West", + 1050000 + ] + ], + "available_data_row_count": 2, + "returned_data_row_count": 2, + "record_offset": 0, + "record_size": 100, + "sampling_ratio": 1 + }, + { + "visualization_id": "viz-002", + "visualization_name": "Monthly Trend", + "column_names": [ + "Month", + "Revenue" + ], + "data_rows": [ + [ + "January", + 420000 + ], + [ + "February", + 385000 + ] + ], + "available_data_row_count": 12, + "returned_data_row_count": 2, + "record_offset": 0, + "record_size": 100, + "sampling_ratio": 1 + } + ] + } + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", "content": { "application/json": { "schema": { @@ -4388,6 +5231,40 @@ "application/json": { "schema": { "$ref": "#/components/schemas/SearchDataResponse" + }, + "examples": { + "example_1": { + "description": "Search query results returned", + "value": { + "contents": [ + { + "column_names": [ + "Region", + "Total Sales" + ], + "data_rows": [ + [ + "Northeast", + 5250000 + ], + [ + "Southeast", + 3890000 + ], + [ + "West", + 4050000 + ] + ], + "available_data_row_count": 3, + "returned_data_row_count": 3, + "record_offset": 0, + "record_size": 50, + "sampling_ratio": 1 + } + ] + } + } } } } @@ -4513,6 +5390,18 @@ "application/json": { "schema": { "type": "object" + }, + "examples": { + "example_1": { + "description": "dbt connection created successfully", + "value": { + "dbt_connection_identifier": "dbt-a1b2c3d4-e5f6", + "project_name": "my-dbt-project", + "connection_name": "Production Snowflake", + "cdw_database": "ANALYTICS", + "import_type": "DBT_CLOUD" + } + } } } } @@ -4600,6 +5489,16 @@ "application/json": { "schema": { "type": "object" + }, + "examples": { + "example_1": { + "description": "dbt TML sync completed successfully", + "value": { + "status": "SUCCESS", + "synced_models": 5, + "failed_models": 0 + } + } } } } @@ -4708,6 +5607,20 @@ "application/json": { "schema": { "type": "object" + }, + "examples": { + "example_1": { + "description": "TML generated from dbt models", + "value": { + "status": "SUCCESS", + "generated_tml": [ + { + "model_name": "stg_orders", + "tml": "{\"worksheet\":{\"name\":\"stg_orders\"}}" + } + ] + } + } } } } @@ -4774,6 +5687,22 @@ "items": { "$ref": "#/components/schemas/DbtSearchResponse" } + }, + "examples": { + "example_1": { + "description": "List all dbt connections", + "value": [ + { + "dbt_connection_identifier": "dbt-a1b2c3d4-e5f6", + "project_name": "my-dbt-project", + "connection_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "connection_name": "Production Snowflake", + "cdw_database": "ANALYTICS", + "import_type": "DBT_CLOUD", + "author_name": "john_doe" + } + ] + } } } } @@ -5041,6 +5970,24 @@ "application/json": { "schema": { "$ref": "#/components/schemas/CreateEmailCustomizationResponse" + }, + "examples": { + "example_1": { + "description": "Email customization created successfully", + "value": { + "tenant_id": "tenant-abc123", + "org": { + "name": "Primary", + "id": 0 + }, + "name": "Primary Email Customization", + "template_properties": { + "product_name": "MyAnalytics", + "primary_bg_color": "#1a73e8", + "logo_url": "https://cdn.example.com/logo.png" + } + } + } } } } @@ -5230,6 +6177,32 @@ "items": { "$ref": "#/components/schemas/CreateEmailCustomizationResponse" } + }, + "examples": { + "example_1": { + "description": "Get email customization for all orgs", + "value": [ + { + "tenant_id": "tenant-abc123", + "org": { + "name": "Primary", + "id": 0 + }, + "name": "Primary Email Customization", + "template_properties": { + "product_name": "MyAnalytics", + "primary_bg_color": "#1a73e8", + "cta_button_bg_color": "#1a73e8", + "cta_text_font_color": "#ffffff", + "home_url": "https://analytics.example.com", + "logo_url": "https://cdn.example.com/logo.png", + "font_family": "Arial, sans-serif", + "footer_address": "123 Main St, San Francisco, CA", + "hide_privacy_policy": false + } + } + ] + } } } } @@ -5405,6 +6378,37 @@ "application/json": { "schema": { "$ref": "#/components/schemas/UserGroupResponse" + }, + "examples": { + "example_1": { + "description": "User group created successfully", + "value": { + "id": "b25ee394-9d13-49e3-9385-cd97f5b253b4", + "name": "Sales Team", + "display_name": "Sales Team", + "description": "Group for all sales personnel", + "type": "LOCAL_GROUP", + "visibility": "SHARABLE", + "privileges": [ + "DATADOWNLOADING" + ], + "users": [ + { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "john_doe" + }, + { + "id": "7f5e7f87-09a1-487c-a1da-c4bb35e45270", + "name": "jane_smith" + } + ], + "sub_groups": [], + "creation_time_in_millis": 1724277430000, + "modification_time_in_millis": 1724277430000, + "system_group": false, + "deleted": false + } + } } } } @@ -5544,6 +6548,21 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ImportUserGroupsResponse" + }, + "examples": { + "example_1": { + "description": "Dry run result showing groups that would be modified", + "value": { + "groups_added": [ + { + "id": "new-group-guid-1", + "name": "sales-team" + } + ], + "groups_deleted": [], + "groups_updated": [] + } + } } } } @@ -5620,6 +6639,59 @@ "items": { "$ref": "#/components/schemas/UserGroupResponse" } + }, + "examples": { + "example_1": { + "description": "Search all user groups", + "value": [ + { + "id": "b25ee394-9d13-49e3-9385-cd97f5b253b4", + "name": "Sales Team", + "display_name": "Sales Team", + "description": "Group for all sales personnel", + "type": "LOCAL_GROUP", + "visibility": "SHARABLE", + "privileges": [ + "DATADOWNLOADING" + ], + "users": [ + { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "john_doe" + } + ], + "sub_groups": [], + "orgs": [ + { + "id": "0", + "name": "Primary" + } + ], + "creation_time_in_millis": 1685441468684, + "modification_time_in_millis": 1685441468684, + "system_group": false, + "deleted": false + }, + { + "id": "c36ff495-ae24-5ae4-a496-de08a6c364c5", + "name": "Analytics Users", + "display_name": "Analytics Users", + "description": "Group for analytics team", + "type": "LOCAL_GROUP", + "visibility": "SHARABLE", + "privileges": [ + "DATADOWNLOADING", + "USERDATAUPLOADING" + ], + "users": [], + "sub_groups": [], + "creation_time_in_millis": 1685441468684, + "modification_time_in_millis": 1685441468684, + "system_group": false, + "deleted": false + } + ] + } } } } @@ -5746,7 +6818,7 @@ "/api/rest/2.0/jobs/history/communication-channels/search": { "post": { "operationId": "searchChannelHistory", - "description": "\n Version: 26.4.0.cl or later\n\nSearches delivery history for communication channels such as webhooks. Returns channel-level delivery status for each job execution record. Use this to monitor channel health and delivery success rates across events.\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**NOTE**: When `channel_type` is `WEBHOOK`, the following constraints apply:\n\n- `job_ids`, `channel_identifiers`, and `events` each accept at most one element.\n- When `job_ids` is provided, it is used as the sole lookup key and other filter fields are ignored.\n- When `job_ids` is not provided, `channel_identifiers` and `events` are both required. Each must contain exactly one element, and the event object must include the `identifier` field.\n- Records older than the configured retention period are not returned.\n\n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 26.4.0.cl or later\n\nSearches delivery history for communication channels such as webhooks. Returns channel-level delivery status for each job execution record. Use this to monitor channel health and delivery success rates across events.\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**NOTE**: When `channel_type` is `WEBHOOK`, the following constraints apply:\n\n- `job_ids`, `channel_identifiers`, and `events` each accept at most one element.\n- When `job_ids` is provided, it is used as the sole lookup key and other filter fields are ignored.\n- When `job_ids` is not provided, `channel_identifiers` and `events` are both required, each containing exactly one element.\n- Records older than the configured retention period are not returned.\n- Use `start_epoch_time_in_millis` and/or `end_epoch_time_in_millis` to narrow results to a specific time window.\n\n\n\n\n#### Endpoint URL\n", "tags": [ "Jobs", "26.4.0.cl" @@ -5924,6 +6996,25 @@ "items": { "$ref": "#/components/schemas/LogResponse" } + }, + "examples": { + "example_1": { + "description": "Security audit logs returned", + "value": [ + { + "date": "2024-08-21T12:30:00Z", + "log": "{\"type\":\"LOGIN\",\"user\":\"john_doe\",\"ip\":\"192.168.1.100\",\"status\":\"SUCCESS\"}" + }, + { + "date": "2024-08-21T12:35:00Z", + "log": "{\"type\":\"OBJECT_SHARE\",\"user\":\"jane_smith\",\"object_id\":\"2ff57a24-cf90-485f-8b4b-45fc17474c6f\",\"recipient\":\"Sales Team\"}" + }, + { + "date": "2024-08-21T12:40:00Z", + "log": "{\"type\":\"LOGOUT\",\"user\":\"john_doe\",\"ip\":\"192.168.1.100\"}" + } + ] + } } } } @@ -5997,6 +7088,36 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ResponseWorksheetToModelConversion" + }, + "examples": { + "example_1": { + "description": "Worksheet conversion result", + "value": { + "name": "WorksheetToModelConversion", + "success_count": 1, + "failure_count": 0, + "incomplete_count": 0, + "post_upgrade_failed_count": 0, + "total_time_in_millis": 1250, + "successful_entities": { + "data": [ + { + "id": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "name": "Sales Analytics" + } + ] + }, + "failed_entities": { + "data": [] + }, + "incomplete_entities": { + "data": [] + }, + "post_upgrade_failed_entities": { + "data": [] + } + } + } } } } @@ -6070,6 +7191,14 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ResponseCopyObject" + }, + "examples": { + "example_1": { + "description": "Object copied successfully", + "value": { + "metadata_id": "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a" + } + } } } } @@ -6222,6 +7351,17 @@ "items": { "type": "object" } + }, + "examples": { + "example_1": { + "description": "TML exported successfully", + "value": [ + { + "guid": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", + "edoc": "{\"liveboard\":{\"name\":\"Sales Dashboard\",\"visualizations\":[]}}" + } + ] + } } } } @@ -6295,6 +7435,22 @@ "application/json": { "schema": { "type": "object" + }, + "examples": { + "example_1": { + "description": "Batch TML export result", + "value": { + "batch_offset": 0, + "batch_size": 20, + "total_count": 45, + "objects": [ + { + "guid": "59481331-ee53-42be-a548-bd87be6ddd4a", + "edoc": "{\"user\":{\"name\":\"john_doe\",\"display_name\":\"John Doe\"}}" + } + ] + } + } } } } @@ -6368,6 +7524,23 @@ "application/json": { "schema": { "$ref": "#/components/schemas/SqlQueryResponse" + }, + "examples": { + "example_1": { + "description": "SQL query generated for an Answer", + "value": { + "metadata_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "metadata_name": "Revenue Analysis", + "metadata_type": "ANSWER", + "sql_queries": [ + { + "metadata_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "metadata_name": "Revenue Analysis", + "sql_query": "SELECT SUM(revenue) as total_revenue, region FROM sales_fact GROUP BY region ORDER BY total_revenue DESC LIMIT 100" + } + ] + } + } } } } @@ -6441,6 +7614,47 @@ "application/json": { "schema": { "$ref": "#/components/schemas/GetAsyncImportStatusResponse" + }, + "examples": { + "example_1": { + "description": "Async import task completed", + "value": { + "status_list": [ + { + "tenant_id": "tenant-abc123", + "org_id": 0, + "task_id": "task-abc123-def456", + "task_name": "TML Import - Sales Dashboard", + "task_status": "COMPLETED", + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "author_display_name": "Administrator", + "import_policy": "PARTIAL", + "created_at": 1724277000000, + "in_progress_at": 1724277010000, + "completed_at": 1724277030000, + "modified_at": 1724277030000, + "total_object_count": 2, + "object_processed_count": 2, + "import_response": null + } + ], + "last_batch": true + } + }, + "example_2": { + "description": "Async import task in progress", + "value": { + "status_list": [ + { + "task_id": "task-abc123-def456", + "task_status": "IN_PROGRESS", + "total_object_count": 5, + "object_processed_count": 2 + } + ], + "last_batch": true + } + } } } } @@ -6514,6 +7728,28 @@ "application/json": { "schema": { "$ref": "#/components/schemas/SqlQueryResponse" + }, + "examples": { + "example_1": { + "description": "SQL queries for all visualizations in a Liveboard", + "value": { + "metadata_id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", + "metadata_name": "Sales Dashboard", + "metadata_type": "LIVEBOARD", + "sql_queries": [ + { + "metadata_id": "viz-001", + "metadata_name": "Revenue by Region", + "sql_query": "SELECT SUM(revenue) as total_revenue, region FROM sales_fact GROUP BY region" + }, + { + "metadata_id": "viz-002", + "metadata_name": "Orders by Category", + "sql_query": "SELECT product_category, COUNT(*) as order_count FROM orders GROUP BY product_category" + } + ] + } + } } } } @@ -6590,6 +7826,27 @@ "items": { "type": "object" } + }, + "examples": { + "example_1": { + "description": "TML imported successfully", + "value": [ + { + "response": { + "status": { + "status_code": "OK" + }, + "object": [ + { + "id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", + "name": "Sales Dashboard", + "type": "LIVEBOARD" + } + ] + } + } + ] + } } } } @@ -6663,6 +7920,24 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ImportEPackAsyncTaskStatus" + }, + "examples": { + "example_1": { + "description": "Async import task created", + "value": { + "tenant_id": "tenant-abc123", + "org_id": 0, + "task_id": "task-abc123-def456", + "task_name": "TML Async Import", + "task_status": "IN_QUEUE", + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "author_display_name": "Administrator", + "import_policy": "PARTIAL_OBJECT", + "created_at": 1724277000000, + "total_object_count": 2, + "object_processed_count": 0 + } + } } } } @@ -6872,26 +8147,222 @@ "items": { "$ref": "#/components/schemas/MetadataSearchResponse" } - } - } - } - }, - "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": { + "example_1": { + "description": "Liveboards with metadata headers (default)", + "value": [ + { + "metadata_id": "4145513c-c9bd-4e48-af44-8dc001b5f955", + "metadata_name": "Sales Dashboard", + "metadata_type": "LIVEBOARD", + "metadata_obj_id": "SalesDashboard-4145513c", + "dependent_objects": null, + "incomplete_objects": null, + "metadata_detail": null, + "metadata_header": { + "id": "4145513c-c9bd-4e48-af44-8dc001b5f955", + "name": "Sales Dashboard", + "description": "Monthly sales performance dashboard", + "author": "59481331-ee53-42be-a548-bd87be6ddd4a", + "authorName": "tsadmin", + "authorDisplayName": "Administrator", + "created": 1640112926087, + "modified": 1724277430000, + "modifiedBy": "59481331-ee53-42be-a548-bd87be6ddd4a", + "owner": "4145513c-c9bd-4e48-af44-8dc001b5f955", + "isDeleted": false, + "isHidden": false, + "isAutoCreated": false, + "isAutoDelete": false, + "isExternal": false, + "isDeprecated": false, + "isSharedViaConnection": false, + "isVerified": false, + "isVersioningEnabled": false, + "isPublished": false, + "hasTabs": false, + "modelVersion": "V2", + "hasMandatoryFilter": false, + "isMandatoryFilterValueSelected": true, + "totalContainerCount": 6, + "indexVersion": 2903279, + "generationNum": 4175059, + "orgIds": [ + 0 + ], + "ownerOrgId": 0, + "objId": "SalesDashboard-4145513c", + "tags": [ + { + "id": "ea0fa175-f387-4d9e-97b6-e79c4b4d82b2", + "name": "finance", + "clientState": { + "color": "#c2d578" + }, + "isDeleted": false, + "isHidden": false + } + ], + "aiAnswerGenerationDisabled": false, + "syncWithSource": false, + "csrProtected": false, + "resolvedObjects": {} + }, + "visualization_headers": null, + "stats": null + }, + { + "metadata_id": "9b815531-ccb0-480e-b0fa-85e036d7377f", + "metadata_name": "Revenue Analysis", + "metadata_type": "LIVEBOARD", + "metadata_obj_id": "RevenueAnalysis-9b815531", + "dependent_objects": null, + "incomplete_objects": null, + "metadata_detail": null, + "metadata_header": { + "id": "9b815531-ccb0-480e-b0fa-85e036d7377f", + "name": "Revenue Analysis", + "description": "", + "author": "7f5e7f87-09a1-487c-a1da-c4bb35e45270", + "authorName": "jane_smith", + "authorDisplayName": "Jane Smith", + "created": 1641226956140, + "modified": 1641226956140, + "modifiedBy": "7f5e7f87-09a1-487c-a1da-c4bb35e45270", + "owner": "9b815531-ccb0-480e-b0fa-85e036d7377f", + "isDeleted": false, + "isHidden": false, + "isAutoCreated": false, + "isAutoDelete": false, + "isExternal": false, + "isDeprecated": false, + "isSharedViaConnection": false, + "isVerified": false, + "isVersioningEnabled": false, + "isPublished": false, + "hasTabs": true, + "modelVersion": "V2", + "hasMandatoryFilter": false, + "isMandatoryFilterValueSelected": true, + "totalContainerCount": 5, + "indexVersion": 302968, + "generationNum": 4175270, + "orgIds": [ + 0 + ], + "ownerOrgId": 0, + "objId": "RevenueAnalysis-9b815531", + "tags": [], + "aiAnswerGenerationDisabled": false, + "syncWithSource": false, + "csrProtected": false, + "resolvedObjects": {} + }, + "visualization_headers": null, + "stats": null + } + ] + }, + "example_2": { + "description": "Worksheets with stats and dependent objects", + "value": [ + { + "metadata_id": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "metadata_name": "Sales Analytics", + "metadata_type": "LOGICAL_TABLE", + "metadata_obj_id": "SalesAnalytics-b3e4f5a6", + "dependent_objects": { + "dependents": [ + { + "id": "4145513c-c9bd-4e48-af44-8dc001b5f955", + "name": "Sales Dashboard", + "type": "PINBOARD_ANSWER_BOOK" + } + ], + "total_count": 1 + }, + "incomplete_objects": null, + "metadata_detail": null, + "metadata_header": { + "id": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "name": "Sales Analytics", + "description": "Comprehensive sales worksheet", + "author": "59481331-ee53-42be-a548-bd87be6ddd4a", + "authorName": "tsadmin", + "authorDisplayName": "Administrator", + "created": 1640112926087, + "modified": 1724277430000, + "modifiedBy": "59481331-ee53-42be-a548-bd87be6ddd4a", + "owner": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "isDeleted": false, + "isHidden": false, + "isAutoCreated": false, + "isAutoDelete": false, + "isExternal": false, + "isDeprecated": false, + "isSharedViaConnection": false, + "isVerified": false, + "isVersioningEnabled": false, + "isPublished": false, + "indexVersion": 2903279, + "generationNum": 4175059, + "orgIds": [ + 0 + ], + "ownerOrgId": 0, + "tags": [], + "aiAnswerGenerationDisabled": false, + "syncWithSource": false, + "csrProtected": false, + "resolvedObjects": {} + }, + "visualization_headers": null, + "stats": { + "views": 1250, + "favorites": 34, + "last_accessed": 1724277430000 + } + } + ] + }, + "example_3": { + "description": "Answers without headers (minimal response)", + "value": [ + { + "metadata_id": "c4d5e6f7-a8b9-4c0d-e1f2-a3b4c5d6e7f8", + "metadata_name": "Monthly Revenue by Region", + "metadata_type": "ANSWER", + "metadata_obj_id": null, + "dependent_objects": null, + "incomplete_objects": null, + "metadata_detail": null, + "metadata_header": null, + "visualization_headers": null, + "stats": null + } + ] + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" } } } @@ -7146,6 +8617,7 @@ }, "examples": { "example_1": { + "description": "Org created successfully", "value": { "id": 1980035173, "name": "test_org", @@ -7442,7 +8914,7 @@ "/api/rest/2.0/report/answer": { "post": { "operationId": "exportAnswerReport", - "description": "\n Version: 9.0.0.cl or later\n\nExports an Answer in the given file format. You can download the Answer data as a PDF, PNG, CSV, or XLSX file.\n\nRequires at least view access to the Answer.\n\n#### Usage guidelines\n\nIn the request body, the GUID or name of the Answer and set `file_format`. The default file format is CSV.\n\n**NOTE**:\n* The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n* HTML rendering is not supported for PDF exports of Answers with tables.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data. \n\n\n\n#### Endpoint URL\n", + "description": "\n Version: 9.0.0.cl or later\n\nExports an Answer in the given file format. You can download the Answer data as a PDF, PNG, CSV, or XLSX file.\n\nRequires at least view access to the Answer.\n\n#### Usage guidelines\n\nIn the request body, specify the GUID or name of the Answer and set `file_format`. The default file format is CSV.\n\nUse the `type` parameter to specify whether the Answer being exported is a saved Answer (`SAVED`) or a pinned Answer on a Liveboard (`PINNED`). Defaults to `SAVED`. When using `PINNED`, the `metadata_identifier` must be the container id.\n\n**NOTE**:\n* The downloadable file returned in API response file is extensionless. Please rename the downloaded file by typing in the relevant extension.\n* HTML rendering is not supported for PDF exports of Answers with tables.\n\nOptionally, you can define [runtime overrides](https://developers.thoughtspot.com/docs/fetch-data-and-report-apis#_runtime_overrides) to apply to the Answer data. \n\n\n\n#### Endpoint URL\n", "tags": [ "Reports", "9.0.0.cl" @@ -7603,6 +9075,32 @@ "application/json": { "schema": { "$ref": "#/components/schemas/RoleResponse" + }, + "examples": { + "example_1": { + "description": "Role created successfully", + "value": { + "id": "d3f8c4a2-6b9e-4d7f-a1c3-8e5b2f7d4a9c", + "name": "Data Analyst", + "description": "Role for data analysts with download and search permissions", + "privileges": [ + "DATADOWNLOADING", + "USERDATAUPLOADING" + ], + "groups_assigned_count": 0, + "groups": [], + "orgs": [ + { + "id": "0", + "name": "Primary" + } + ], + "creation_time_in_millis": 1724277430000, + "modification_time_in_millis": 1724277430000, + "deleted": false, + "deprecated": false + } + } } } } @@ -7745,6 +9243,39 @@ "items": { "$ref": "#/components/schemas/SearchRoleResponse" } + }, + "examples": { + "example_1": { + "description": "Search all roles", + "value": [ + { + "id": "d3f8c4a2-6b9e-4d7f-a1c3-8e5b2f7d4a9c", + "name": "Data Analyst", + "description": "Role for data analysts with download and search permissions", + "privileges": [ + "DATADOWNLOADING", + "USERDATAUPLOADING" + ], + "groups_assigned_count": 2, + "groups": [ + { + "id": "b25ee394-9d13-49e3-9385-cd97f5b253b4", + "name": "Analytics Users" + } + ], + "orgs": [ + { + "id": "0", + "name": "Primary" + } + ], + "creation_time_in_millis": 1685441468684, + "modification_time_in_millis": 1685441468684, + "deleted": false, + "deprecated": false + } + ] + } } } } @@ -7828,6 +9359,25 @@ "application/json": { "schema": { "$ref": "#/components/schemas/RoleResponse" + }, + "examples": { + "example_1": { + "description": "Role updated successfully", + "value": { + "id": "d3f8c4a2-6b9e-4d7f-a1c3-8e5b2f7d4a9c", + "name": "Senior Data Analyst", + "description": "Role for senior data analysts with extended permissions", + "privileges": [ + "DATADOWNLOADING", + "USERDATAUPLOADING", + "A3ANALYSIS" + ], + "groups_assigned_count": 2, + "creation_time_in_millis": 1685441468684, + "modification_time_in_millis": 1724277430000, + "deleted": false + } + } } } } @@ -7901,6 +9451,55 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ResponseSchedule" + }, + "examples": { + "example_1": { + "description": "Schedule created successfully", + "value": { + "id": "sch-a1b2c3d4-e5f6", + "name": "Weekly Sales Report", + "description": "Weekly PDF report for the sales team", + "file_format": "PDF", + "status": "ACTIVE", + "time_zone": "America/New_York", + "frequency": { + "cron_expression": { + "day_of_month": "?", + "day_of_week": "MON", + "hour": "8", + "minute": "0", + "month": "*", + "second": "0" + } + }, + "metadata": { + "id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", + "name": "Sales Dashboard", + "type": "LIVEBOARD" + }, + "recipient_details": { + "emails": [ + "sales@example.com" + ], + "principals": [ + { + "identifier": "Sales Team", + "type": "USER_GROUP" + } + ] + }, + "pdf_options": { + "include_cover_page": true, + "page_orientation": "LANDSCAPE", + "page_size": "A4" + }, + "author": { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "john_doe" + }, + "creation_time_in_millis": 1724277430000 + } + } } } } @@ -8043,6 +9642,52 @@ "items": { "$ref": "#/components/schemas/ResponseSchedule" } + }, + "examples": { + "example_1": { + "description": "Search all active schedules", + "value": [ + { + "id": "sch-a1b2c3d4-e5f6", + "name": "Weekly Sales Report", + "description": "Weekly PDF report for the sales team", + "file_format": "PDF", + "frequency": { + "cron_expression": { + "day_of_month": "?", + "day_of_week": "MON", + "hour": "8", + "minute": "0", + "month": "*", + "second": "0" + } + }, + "metadata": { + "id": "2ff57a24-cf90-485f-8b4b-45fc17474c6f", + "name": "Sales Dashboard", + "type": "LIVEBOARD" + }, + "recipient_details": { + "emails": [ + "sales@example.com" + ], + "principals": [ + { + "identifier": "Sales Team", + "type": "USER_GROUP" + } + ] + }, + "status": "ACTIVE", + "time_zone": "America/New_York", + "author": { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "john_doe" + }, + "creation_time_in_millis": 1685441468684 + } + ] + } } } } @@ -8261,6 +9906,51 @@ "items": { "$ref": "#/components/schemas/ColumnSecurityRuleResponse" } + }, + "examples": { + "example_1": { + "description": "Column security rules for a table", + "value": [ + { + "table_guid": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "obj_id": "SALES_FACT", + "column_security_rules": [ + { + "column": { + "id": "col-a1b2c3d4-e5f6", + "name": "SALARY" + }, + "groups": [ + { + "id": "b25ee394-9d13-49e3-9385-cd97f5b253b4", + "name": "HR Team" + } + ], + "source_table_details": { + "id": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "name": "SALES_FACT" + } + }, + { + "column": { + "id": "col-b2c3d4e5-f6a7", + "name": "SSN" + }, + "groups": [ + { + "id": "c36ff495-ae24-5ae4-a496-de08a6c364c5", + "name": "Admin Group" + } + ], + "source_table_details": { + "id": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "name": "SALES_FACT" + } + } + ] + } + ] + } } } } @@ -8334,6 +10024,31 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ObjectPrivilegesOfMetadataResponse" + }, + "examples": { + "example_1": { + "description": "Fetch object privileges for a logical table", + "value": { + "metadata_object_privileges": { + "metadata_privilege_details": [ + { + "metadata_id": "b3e4f5a6-c7d8-4e9f-a1b2-c3d4e5f6a7b8", + "metadata_type": "LOGICAL_TABLE", + "principal_privileges": [ + { + "principal_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "principal_name": "john_doe", + "principal_type": "USER", + "object_privileges": [ + "SPOTTER_COACHING_PRIVILEGE" + ] + } + ] + } + ] + } + } + } } } } @@ -9261,6 +10976,19 @@ "application/json": { "schema": { "$ref": "#/components/schemas/SystemOverrideInfo" + }, + "examples": { + "example_1": { + "description": "Returns system configuration override details", + "value": { + "config_override_info": { + "disable_cors": false, + "enableColumnLevelSecurity": true, + "maxRowsInExport": 100000, + "sessionTimeout": 86400 + } + } + } } } } @@ -9640,6 +11368,46 @@ "application/json": { "schema": { "$ref": "#/components/schemas/CommunicationChannelValidateResponse" + }, + "examples": { + "example_1": { + "description": "Webhook validation successful", + "value": { + "channel_type": "WEBHOOK", + "channel_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "channel_name": "My Liveboard Webhook", + "event_type": "LIVEBOARD_SCHEDULE", + "job_id": "job-abc123-def456", + "result_code": "SUCCESS", + "details": [ + { + "validation_step": "HTTP_CONNECTION_CHECK", + "status": "SUCCESS", + "http_status": 200, + "error_message": null + } + ] + } + }, + "example_2": { + "description": "Webhook validation failed", + "value": { + "channel_type": "WEBHOOK", + "channel_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "channel_name": "Failed Webhook", + "event_type": "LIVEBOARD_SCHEDULE", + "job_id": "job-xyz789-uvw012", + "result_code": "FAILED", + "details": [ + { + "validation_step": "HTTP_CONNECTION_CHECK", + "status": "FAILED", + "http_status": 404, + "error_message": "Connection refused: target URL unreachable" + } + ] + } + } } } } @@ -9782,6 +11550,7 @@ }, "examples": { "example_1": { + "description": "Tag created successfully", "value": { "name": "test5", "id": "6abf5aec-3485-4f83-b25f-8c55b92e2b20", @@ -10188,6 +11957,22 @@ "application/json": { "schema": { "$ref": "#/components/schemas/User" + }, + "examples": { + "example_1": { + "description": "User activated successfully", + "value": { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "john_doe", + "display_name": "John Doe", + "visibility": "SHARABLE", + "account_type": "LOCAL_USER", + "account_status": "ACTIVE", + "email": "john.doe@example.com", + "creation_time_in_millis": 1724277430000, + "modification_time_in_millis": 1724277430000 + } + } } } } @@ -10327,6 +12112,24 @@ "application/json": { "schema": { "$ref": "#/components/schemas/User" + }, + "examples": { + "example_1": { + "description": "User created successfully", + "value": { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "john_doe", + "display_name": "John Doe", + "visibility": "SHARABLE", + "account_type": "LOCAL_USER", + "account_status": "ACTIVE", + "email": "john.doe@example.com", + "creation_time_in_millis": 1724277430000, + "modification_time_in_millis": 1724277430000, + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "complete_detail": true + } + } } } } @@ -10400,6 +12203,14 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ResponseActivationURL" + }, + "examples": { + "example_1": { + "description": "User deactivated and activation link returned", + "value": { + "activation_link": "https://your-thoughtspot-instance.thoughtspot.cloud/activate?token=abc123xyz" + } + } } } } @@ -10605,6 +12416,25 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ImportUsersResponse" + }, + "examples": { + "example_1": { + "description": "Dry run result showing users that would be created/updated", + "value": { + "users_added": [ + { + "id": "new-user-guid-1", + "name": "alice_wonder" + }, + { + "id": "new-user-guid-2", + "name": "bob_builder" + } + ], + "users_deleted": [], + "users_updated": [] + } + } } } } @@ -10747,6 +12577,43 @@ "items": { "$ref": "#/components/schemas/User" } + }, + "examples": { + "example_1": { + "description": "Search all active local users", + "value": [ + { + "id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "name": "john_doe", + "display_name": "John Doe", + "visibility": "SHARABLE", + "account_type": "LOCAL_USER", + "account_status": "ACTIVE", + "email": "john.doe@example.com", + "creation_time_in_millis": 1685441468684, + "modification_time_in_millis": 1685441468684, + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "complete_detail": true, + "current_org": { + "id": 0, + "name": "Primary" + } + }, + { + "id": "7f5e7f87-09a1-487c-a1da-c4bb35e45270", + "name": "jane_smith", + "display_name": "Jane Smith", + "visibility": "SHARABLE", + "account_type": "LOCAL_USER", + "account_status": "ACTIVE", + "email": "jane.smith@example.com", + "creation_time_in_millis": 1685441468684, + "modification_time_in_millis": 1685441468684, + "author_id": "59481331-ee53-42be-a548-bd87be6ddd4a", + "complete_detail": true + } + ] + } } } } @@ -10896,6 +12763,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/Variable" + }, + "examples": { + "example_1": { + "description": "Variable created successfully", + "value": { + "id": "var-a1b2c3d4-e5f6", + "name": "warehouse_config", + "variable_type": "CONNECTION_PROPERTY", + "sensitive": false, + "values": [] + } + } } } } @@ -11181,6 +13060,33 @@ "items": { "$ref": "#/components/schemas/Variable" } + }, + "examples": { + "example_1": { + "description": "Search all connection property variables", + "value": [ + { + "id": "var-a1b2c3d4-e5f6", + "name": "warehouse_config", + "variable_type": "CONNECTION_PROPERTY", + "sensitive": false, + "values": [ + { + "value": "COMPUTE_WH", + "org_identifier": "Primary", + "priority": 1 + } + ] + }, + { + "id": "var-b2c3d4e5-f6g7", + "name": "db_password", + "variable_type": "CONNECTION_PROPERTY", + "sensitive": true, + "values": [] + } + ] + } } } } @@ -11397,6 +13303,32 @@ "application/json": { "schema": { "$ref": "#/components/schemas/CommitResponse" + }, + "examples": { + "example_1": { + "description": "Objects committed to branch successfully", + "value": { + "committer": { + "email": "service@github.com", + "username": "ts-service-account" + }, + "author": { + "email": "admin@example.com", + "username": "tsadmin" + }, + "comment": "Add Q1 2024 sales dashboard", + "commit_time": "2024-08-21T12:30:00Z", + "commit_id": "a1b2c3d4e5f6789012345678901234567890abcd", + "branch": "main", + "committed_files": [ + { + "file_name": "Liveboard/Sales_Dashboard.liveboard.tml", + "status_code": "OK", + "status_message": "File committed successfully" + } + ] + } + } } } } @@ -11470,13 +13402,33 @@ "application/json": { "schema": { "$ref": "#/components/schemas/RepoConfigObject" - } - } - } - }, - "400": { - "description": "Invalid request.", - "content": { + }, + "examples": { + "example_1": { + "description": "Version control configuration created successfully", + "value": { + "repository_url": "https://github.com/mycompany/thoughtspot-content.git", + "username": "ts-service-account", + "commit_branch_name": "main", + "branches": [ + "main", + "development" + ], + "enable_guid_mapping": true, + "configuration_branch_name": "ts_config_files", + "org": { + "id": 0, + "name": "Primary" + } + } + } + } + } + } + }, + "400": { + "description": "Invalid request.", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" @@ -11612,6 +13564,20 @@ "items": { "$ref": "#/components/schemas/DeployResponse" } + }, + "examples": { + "example_1": { + "description": "Commit deployed successfully", + "value": [ + { + "file_name": "Liveboard/Sales_Dashboard.liveboard.tml", + "metadata_name": "Sales Dashboard", + "metadata_type": "LIVEBOARD", + "status_code": "OK", + "status_message": "Deployed successfully" + } + ] + } } } } @@ -11695,6 +13661,40 @@ "application/json": { "schema": { "$ref": "#/components/schemas/RevertResponse" + }, + "examples": { + "example_1": { + "description": "Commit reverted successfully", + "value": { + "committer": { + "email": "service@github.com", + "username": "ts-service-account" + }, + "author": { + "email": "admin@example.com", + "username": "tsadmin" + }, + "comment": "Revert to commit abc123def456", + "commit_time": "2024-08-21T13:00:00Z", + "commit_id": "def456abc789012345678901234567890abcdef", + "branch": "main", + "committed_files": [ + { + "file_name": "Liveboard/Sales_Dashboard.liveboard.tml", + "status_code": "OK" + } + ], + "reverted_metadata": [ + { + "file_name": "Liveboard/Sales_Dashboard.liveboard.tml", + "metadata_name": "Sales Dashboard", + "metadata_type": "LIVEBOARD", + "status_code": "OK", + "status_message": "Successfully reverted" + } + ] + } + } } } } @@ -11771,6 +13771,41 @@ "items": { "$ref": "#/components/schemas/CommitHistoryResponse" } + }, + "examples": { + "example_1": { + "description": "Commit history for a Liveboard", + "value": [ + { + "committer": { + "email": "service@github.com", + "username": "ts-service-account" + }, + "author": { + "email": "admin@example.com", + "username": "tsadmin" + }, + "comment": "Add Q1 2024 sales dashboard", + "commit_time": "2024-08-21T12:30:00Z", + "commit_id": "a1b2c3d4e5f6789012345678901234567890abcd", + "branch": "main" + }, + { + "committer": { + "email": "service@github.com", + "username": "ts-service-account" + }, + "author": { + "email": "john.doe@example.com", + "username": "john_doe" + }, + "comment": "Update visualization layout", + "commit_time": "2024-08-15T09:15:00Z", + "commit_id": "b2c3d4e5f678901234567890123456789012abcd", + "branch": "main" + } + ] + } } } } @@ -11847,6 +13882,29 @@ "items": { "$ref": "#/components/schemas/RepoConfigObject" } + }, + "examples": { + "example_1": { + "description": "Search version control configurations", + "value": [ + { + "repository_url": "https://github.com/mycompany/thoughtspot-content.git", + "username": "ts-service-account", + "commit_branch_name": "main", + "branches": [ + "main", + "development", + "staging" + ], + "enable_guid_mapping": true, + "configuration_branch_name": "ts_config_files", + "org": { + "id": 0, + "name": "Primary" + } + } + ] + } } } } @@ -11920,6 +13978,23 @@ "application/json": { "schema": { "$ref": "#/components/schemas/RepoConfigObject" + }, + "examples": { + "example_1": { + "description": "Version control configuration updated successfully", + "value": { + "repository_url": "https://github.com/mycompany/thoughtspot-content.git", + "username": "ts-service-account", + "commit_branch_name": "main", + "branches": [ + "main", + "development", + "staging" + ], + "enable_guid_mapping": true, + "configuration_branch_name": "ts_config_files" + } + } } } } @@ -11996,6 +14071,27 @@ "items": { "$ref": "#/components/schemas/DeployResponse" } + }, + "examples": { + "example_1": { + "description": "Merge validation result", + "value": [ + { + "file_name": "Liveboard/Sales_Dashboard.liveboard.tml", + "metadata_name": "Sales Dashboard", + "metadata_type": "LIVEBOARD", + "status_code": "OK", + "status_message": "No conflicts found" + }, + { + "file_name": "Answer/Revenue_Analysis.answer.tml", + "metadata_name": "Revenue Analysis", + "metadata_type": "ANSWER", + "status_code": "CONFLICT", + "status_message": "Merge conflict detected in visualization settings" + } + ] + } } } } @@ -12314,7 +14410,7 @@ { "id": "a3f7c1e4-9b2d-4a6e-8f3c-1e5b7a9c4f2e", "name": "Non-existent Webhook", - "error_message": "Webhook not found or access denied" + "error": "Webhook not found or access denied" } ] } @@ -12658,6 +14754,116 @@ } } }, + "SearchAuthSettingsResponse": { + "type": "object", + "properties": { + "auth_type": { + "type": "string", + "enum": [ + "TRUSTED_AUTH" + ], + "description": "Type of authentication mechanism returned.", + "nullable": true + }, + "cluster_preferences": { + "$ref": "#/components/schemas/AuthClusterPreferences", + "description": "Cluster-level authentication configuration. Present when cluster scope was requested and the caller has ADMINISTRATION or CONTROL_TRUSTED_AUTH privilege.", + "nullable": true + }, + "org_preferences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuthOrgPreference" + }, + "description": "Org-level authentication configurations. Present when org scope was requested and per-org auth feature is enabled.", + "nullable": true + } + }, + "description": "Response for searchAuthSettings. Contains auth type and cluster/org-level preferences." + }, + "AuthClusterPreferences": { + "type": "object", + "properties": { + "auth_status": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "description": "Whether authentication is enabled or disabled at the cluster level.", + "nullable": true + }, + "access_tokens": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuthSettingsAccessToken" + }, + "description": "Cluster-level access tokens. Absent when no token is configured.", + "nullable": true + } + }, + "description": "Cluster-level authentication preferences." + }, + "AuthSettingsAccessToken": { + "type": "object", + "required": [ + "key" + ], + "properties": { + "key": { + "type": "string", + "description": "The plaintext token key value." + } + }, + "description": "An auth settings access token." + }, + "AuthOrgPreference": { + "type": "object", + "properties": { + "org": { + "$ref": "#/components/schemas/AuthOrgInfo", + "description": "Org identifier details.", + "nullable": true + }, + "auth_status": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "description": "Whether authentication is enabled or disabled for this org.", + "nullable": true + }, + "access_tokens": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuthSettingsAccessToken" + }, + "description": "Org-level access tokens. Absent when no token is configured or the feature flag is off.", + "nullable": true + } + }, + "description": "Org-level authentication preferences for a single org." + }, + "AuthOrgInfo": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique identifier of the org." + }, + "name": { + "type": "string", + "description": "Name of the org.", + "nullable": true + } + }, + "description": "Org identifier returned in auth settings search results." + }, "RiseSetter": { "type": "object", "required": [ @@ -13383,6 +15589,15 @@ "$ref": "#/components/schemas/ClusterNonEmbedAccess", "description": "Non-embed access configuration at cluster level.", "nullable": true + }, + "trusted_auth_status": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "description": "Trusted authentication status at the cluster level.
Version: 26.6.0.cl or later", + "nullable": true } }, "description": "Cluster-level security preferences." @@ -13520,6 +15735,15 @@ "$ref": "#/components/schemas/OrgNonEmbedAccess", "description": "Non-embed access configuration for this org.", "nullable": true + }, + "trusted_auth_status": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "description": "Trusted authentication status for this org.
Version: 26.6.0.cl or later", + "nullable": true } }, "description": "Org-level security preferences." @@ -15666,6 +17890,8 @@ "CAN_VIEW_FOLDERS", "CAN_MODIDY_FOLDERS", "CAN_MANAGE_VARIABLES", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", @@ -17896,6 +20122,43 @@ } } }, + "AuthClusterPreferencesInput": { + "type": "object", + "properties": { + "auth_status": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "description": "Enable or disable authentication at the cluster level. When enabled, a new token is generated if one does not exist. When disabled, the existing token is revoked.", + "nullable": true + } + }, + "description": "Input for cluster-level auth configuration." + }, + "AuthOrgPreferenceInput": { + "type": "object", + "required": [ + "org_identifier" + ], + "properties": { + "org_identifier": { + "type": "string", + "description": "Unique ID or name of the org to configure." + }, + "auth_status": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "description": "Enable or disable authentication for this org. When enabled, a new token is generated if one does not exist. When disabled, the existing token is revoked.", + "nullable": true + } + }, + "description": "Input for org-level auth configuration." + }, "ResponseActivationURL": { "type": "object", "properties": { @@ -17936,7 +20199,6 @@ "OIDC_USER", "REMOTE_USER" ], - "default": "LOCAL_USER", "description": "Type of the user account.", "nullable": true }, @@ -17950,7 +20212,6 @@ "PENDING", "SUSPENDED" ], - "default": "ACTIVE", "description": "Status of the user account.", "nullable": true }, @@ -18550,6 +20811,8 @@ "CAN_MODIFY_FOLDERS", "CAN_MANAGE_VARIABLES", "CAN_VIEW_FOLDERS", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", @@ -18646,7 +20909,7 @@ }, "include_obj_id": { "type": "boolean", - "default": true, + "default": false, "description": "Boolean flag to export Object ID of the object. This flag will work only after the Object ID feature has been enabled. Please contact support to enable the feature.", "nullable": true }, @@ -19611,6 +21874,8 @@ "CAN_MANAGE_VARIABLES", "CAN_MODIFY_FOLDERS", "CAN_VIEW_FOLDERS", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "CAN_SETUP_VERSION_CONTROL", "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", @@ -19735,7 +22000,8 @@ "page_size": { "type": "string", "enum": [ - "A4" + "A4", + "TAB_BASED" ], "description": "Page size.", "nullable": true @@ -20071,7 +22337,8 @@ "page_size": { "type": "string", "enum": [ - "A4" + "A4", + "TAB_BASED" ], "description": "Page size.", "nullable": true @@ -21281,840 +23548,195 @@ "type": "string", "description": "AWS region where the S3 bucket is located.\nExample: \"us-west-2\"" }, - "role_arn": { - "type": "string", - "description": "ARN of the IAM role to assume for S3 access.\nExample: \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\"" - }, - "external_id": { - "type": "string", - "description": "External ID for secure cross-account role assumption.\nExample: \"ts-webhook-a1b2c3d4-7890\"", - "nullable": true - }, - "path_prefix": { - "type": "string", - "description": "Optional path prefix for organizing objects within the bucket.\nExample: \"thoughtspot-webhooks/\"", - "nullable": true - } - }, - "description": "Input type for AWS S3 storage configuration." - }, - "WebhookKeyValuePairInput": { - "type": "object", - "required": [ - "key", - "value" - ], - "properties": { - "key": { - "type": "string", - "description": "Header name." - }, - "value": { - "type": "string", - "description": "Header value." - } - }, - "description": "Key-value pair input for additional webhook headers." - }, - "WebhookDeleteResponse": { - "type": "object", - "required": [ - "deleted_count", - "failed_count", - "deleted_webhooks", - "failed_webhooks" - ], - "properties": { - "deleted_count": { - "type": "integer", - "format": "int32", - "description": "Number of webhooks successfully deleted." - }, - "failed_count": { - "type": "integer", - "format": "int32", - "description": "Number of webhooks that failed to delete." - }, - "deleted_webhooks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookResponse" - }, - "description": "List of successfully deleted webhooks." - }, - "failed_webhooks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookDeleteFailure" - }, - "description": "List of webhooks that failed to delete with error details." - } - } - }, - "WebhookDeleteFailure": { - "type": "object", - "required": [ - "id", - "name", - "error" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the webhook that failed to delete." - }, - "name": { - "type": "string", - "description": "Name of the webhook that failed to delete." - }, - "error": { - "type": "string", - "description": "Error message describing why the deletion failed." - } - } - }, - "CollectionMetadataInput": { - "type": "object", - "required": [ - "type", - "identifiers" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "LIVEBOARD", - "ANSWER", - "LOGICAL_TABLE", - "COLLECTION" - ], - "description": "Type of metadata object." - }, - "identifiers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of unique IDs or names of metadata objects." - } - }, - "description": "Input type for metadata to be added to a collection." - }, - "CollectionDeleteResponse": { - "type": "object", - "properties": { - "metadata_deleted": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" - }, - "description": "List of metadata objects that were successfully deleted.", - "nullable": true - }, - "metadata_skipped": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" - }, - "description": "List of metadata objects that were skipped during deletion.\nObjects may be skipped due to lack of permissions, dependencies, or other constraints.", - "nullable": true - } - }, - "description": "Response object for delete collection operation." - }, - "CollectionDeleteTypeIdentifiers": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Type of the metadata object (e.g., Collection, Worksheet, Table).", - "nullable": true - }, - "identifiers": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GenericInfo" - }, - "description": "List of metadata identifiers belonging to the given type.", - "nullable": true - } - }, - "description": "Group of metadata objects identified by type." - }, - "Runtime_Filter": { - "type": "object", - "properties": { - "runtime_filter": { - "type": "object", - "description": "Runtime filter parameter type in JWT." - } - }, - "description": "List of runtime parameters need to set during the session." - }, - "Runtime_Sort": { - "type": "object", - "properties": { - "runtime_sort": { - "type": "object", - "description": "Runtime sort parameter type in JWT." - } - }, - "description": "List of runtime parameters need to set during the session." - }, - "Runtime_Param_Override": { - "type": "object", - "properties": { - "runtime_param_override": { - "type": "object", - "description": "Runtime param override type in JWT." - } - }, - "description": "List of runtime parameters need to set during the session." - }, - "WebhookLiveboardDelivery": { - "type": "object", - "description": "Single entry point for all LIVEBOARD_SCHEDULE webhook event payloads. ThoughtSpot selects the delivery kind automatically based on webhook configuration.\n\n**KIND 1 — FILE_ATTACHMENT** (webhookDeliveryKind: FILE_ATTACHMENT): Sent as multipart/form-data. The \"payload\" form field carries the JSON event data; exactly one of pdf_files, csv_files, xlsx_files, or other_files carries the binary attachment.\n\n**KIND 2 — STORAGE** (webhookDeliveryKind: STORAGE): Sent as multipart/form-data with two JSON parts. ThoughtSpot uploads files to the customer S3 bucket first, then sends \"payload\" (JSON event data) and \"file_attachments\" (S3 object references). No binary data is delivered to the endpoint.", - "required": [ - "webhookDeliveryKind", - "payload" - ], - "properties": { - "webhookDeliveryKind": { - "$ref": "#/components/schemas/WebhookDeliveryKind" - }, - "payload": { - "allOf": [ - { - "$ref": "#/components/schemas/WebhookLiveboardPayload" - } - ], - "description": "The structured event data. Always present. HTTP form field name: \"payload\"." - }, - "pdf_files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookFileAttachment" - }, - "description": "PDF file attachments (HTTP form field: \"pdf_files\", Content-Type: application/pdf). Present when webhookDeliveryKind is FILE_ATTACHMENT and the schedule file format is PDF." - }, - "csv_files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookFileAttachment" - }, - "description": "CSV file attachments (HTTP form field: \"csv_files\", Content-Type: text/csv). Present when webhookDeliveryKind is FILE_ATTACHMENT and the schedule file format is CSV." - }, - "xlsx_files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookFileAttachment" - }, - "description": "Excel file attachments (HTTP form field: \"xlsx_files\", Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet). Present when webhookDeliveryKind is FILE_ATTACHMENT and the schedule file format is XLSX." - }, - "other_files": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookFileAttachment" - }, - "description": "Fallback file attachments for unrecognised extensions (HTTP form field: \"other_files\"). Present when webhookDeliveryKind is FILE_ATTACHMENT and the file format is not PDF, CSV, or XLSX." - }, - "file_attachments": { - "allOf": [ - { - "$ref": "#/components/schemas/WebhookFileAttachmentsPayload" - } - ], - "description": "S3 file references (HTTP form field: \"file_attachments\"). Present when webhookDeliveryKind is STORAGE. Lists each file uploaded to the customer S3 bucket with its upload status and metadata." - } - } - }, - "WebhookDeliveryKind": { - "type": "string", - "description": "Identifies which of the two delivery modes a LIVEBOARD_SCHEDULE webhook payload uses. FILE_ATTACHMENT: multipart/form-data with one JSON part (\"payload\") and one binary file part. STORAGE: multipart/form-data with two JSON parts (\"payload\" and \"file_attachments\"); files are already stored in the customer S3 bucket — no binary data is sent to the endpoint.", - "enum": [ - "FILE_ATTACHMENT", - "STORAGE" - ] - }, - "WebhookLiveboardPayload": { - "type": "object", - "description": "Top-level payload delivered by ThoughtSpot to the configured webhook endpoint when a LIVEBOARD_SCHEDULE event fires. Sent as an HTTP POST with Content-Type: application/json.", - "required": [ - "eventId", - "timestamp", - "eventType", - "schemaVersion", - "source", - "actor", - "metadataObject", - "data" - ], - "properties": { - "eventId": { - "type": "string", - "description": "Unique identifier for this webhook delivery attempt." - }, - "timestamp": { - "type": "string", - "description": "ISO 8601 timestamp of when the event was generated.", - "example": "2025-04-10T12:00:00Z" - }, - "eventType": { - "type": "string", - "enum": [ - "LIVEBOARD_SCHEDULE" - ], - "description": "Type of event that triggered this webhook delivery." - }, - "schemaVersion": { - "type": "string", - "description": "Schema version of this payload format.", - "example": "1.0" - }, - "source": { - "$ref": "#/components/schemas/WebhookPayloadSource" - }, - "actor": { - "$ref": "#/components/schemas/WebhookPayloadActor" - }, - "metadataObject": { - "$ref": "#/components/schemas/WebhookPayloadMetadataObject" - }, - "data": { - "$ref": "#/components/schemas/WebhookLiveboardScheduleData" - }, - "unsubscribeUrl": { - "type": "string", - "nullable": true, - "description": "URL to manage notification preferences. Present for end-user-facing events." - } - } - }, - "WebhookPayloadSource": { - "type": "object", - "description": "Source information identifying the ThoughtSpot instance that generated the event.", - "required": [ - "applicationName", - "instanceId", - "orgId" - ], - "properties": { - "applicationName": { - "type": "string", - "description": "Name of the application. Always \"ThoughtSpot\".", - "example": "ThoughtSpot" - }, - "applicationUrl": { - "type": "string", - "nullable": true, - "description": "Base URL of the ThoughtSpot instance.", - "example": "https://mycompany.thoughtspot.cloud" - }, - "instanceId": { - "type": "string", - "description": "Unique identifier of the ThoughtSpot instance (cluster or deployment ID)." - }, - "orgId": { - "type": "string", - "description": "Unique identifier of the organization within ThoughtSpot that owns the event." - } - } - }, - "WebhookPayloadActor": { - "type": "object", - "description": "Information about the entity that initiated the webhook event. For scheduled Liveboard deliveries, actorType is always SYSTEM and id, name, and email are omitted.", - "required": [ - "actorType" - ], - "properties": { - "actorType": { - "type": "string", - "description": "Type of actor. One of: USER, SYSTEM, API_CLIENT.", - "enum": [ - "USER", - "SYSTEM", - "API_CLIENT" - ], - "example": "SYSTEM" - }, - "id": { - "type": "string", - "nullable": true, - "description": "Unique identifier (GUID) of the actor. Omitted for SYSTEM actors." - }, - "name": { - "type": "string", - "nullable": true, - "description": "Display name of the actor. Omitted for SYSTEM actors." - }, - "email": { - "type": "string", - "nullable": true, - "description": "Email address of the actor. Omitted for SYSTEM actors." - } - } - }, - "WebhookPayloadMetadataObject": { - "type": "object", - "description": "The primary ThoughtSpot metadata object associated with the event. For LIVEBOARD_SCHEDULE events, this is always the scheduled Liveboard.", - "required": [ - "objectType", - "name", - "url" - ], - "properties": { - "objectType": { - "type": "string", - "description": "Type of the metadata object. For LIVEBOARD_SCHEDULE events, always \"LIVEBOARD\".", - "example": "LIVEBOARD" - }, - "id": { - "type": "string", - "nullable": true, - "description": "Unique identifier (GUID) of the metadata object." - }, - "name": { - "type": "string", - "description": "Display name of the metadata object." - }, - "url": { - "type": "string", - "description": "Direct URL to the metadata object within ThoughtSpot." - } - } - }, - "WebhookLiveboardScheduleData": { - "type": "object", - "description": "Event-specific data payload for LIVEBOARD_SCHEDULE webhook events.", - "required": [ - "scheduleDetails", - "recipients" - ], - "properties": { - "scheduleDetails": { - "$ref": "#/components/schemas/WebhookScheduleDetails" - }, - "recipients": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WebhookScheduleRecipient" - }, - "description": "List of all recipients for this schedule delivery." - }, - "aiHighlights": { - "type": "string", - "nullable": true, - "description": "AI-generated highlights for the Liveboard content, if available." - }, - "msgUniqueId": { - "type": "string", - "nullable": true, - "description": "Idempotency key used to deduplicate deliveries for the same schedule run." - }, - "channelID": { - "type": "string", - "nullable": true, - "description": "Internal identifier for the delivery channel." - }, - "channelType": { - "type": "string", - "nullable": true, - "description": "Type of the delivery channel (e.g., \"WEBHOOK\").", - "example": "WEBHOOK" - }, - "communicationType": { - "type": "string", - "nullable": true, - "description": "Internal communication type identifier (e.g., \"LiveboardSchedules\").", - "example": "LiveboardSchedules" - }, - "viewInfo": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/WebhookLiveboardViewInfo" - } - ], - "description": "Personalized Liveboard view information, present when the schedule targets a specific saved view." - } - } - }, - "WebhookScheduleDetails": { - "type": "object", - "description": "Configuration and run-time details of the Liveboard schedule that triggered the webhook event.", - "required": [ - "scheduleId", - "name" - ], - "properties": { - "scheduleId": { - "type": "string", - "description": "Unique identifier (GUID) of the schedule." - }, - "name": { - "type": "string", - "description": "Display name of the schedule." - }, - "frequency": { - "type": "object", - "nullable": true, - "description": "Frequency configuration of the schedule (cron expression or interval object)." - }, - "creationTime": { - "type": "string", - "nullable": true, - "description": "ISO 8601 timestamp of when the schedule was created.", - "example": "2025-01-15T08:00:00Z" - }, - "timezone": { - "type": "string", - "nullable": true, - "description": "Timezone for the schedule (e.g., \"America/Los_Angeles\", \"Etc/UTC\").", - "example": "America/Los_Angeles" - }, - "description": { - "type": "string", - "nullable": true, - "description": "Description of the schedule." - }, - "authorId": { - "type": "string", - "nullable": true, - "description": "Unique identifier (GUID) of the user who created the schedule." - }, - "gatingFunction": { - "type": "string", - "nullable": true, - "description": "Gating function applied to the schedule, if configured." - }, - "useCustomEmbedUrls": { - "type": "string", - "nullable": true, - "description": "Whether the schedule uses custom embed URLs for Liveboard links." - }, - "userIds": { - "type": "array", - "items": { - "type": "string" - }, - "nullable": true, - "description": "List of ThoughtSpot user GUIDs explicitly added as recipients." - }, - "groupIds": { - "type": "array", - "items": { - "type": "string" - }, - "nullable": true, - "description": "List of ThoughtSpot group GUIDs explicitly added as recipients." - }, - "runId": { - "type": "string", - "nullable": true, - "description": "Unique identifier for this specific execution (run) of the schedule." - }, - "exportRequest": { - "type": "object", - "nullable": true, - "description": "Export configuration for the schedule. Contains rendering settings and visualization selection. Key fields: object_type, liveboard_params (layout_type, liveboard_viz_selection, print_document_params), pdf_params (page_size, orientation), request_type.", - "properties": { - "object_type": { - "type": "string", - "description": "Type of the exported object (e.g., \"LIVEBOARD\").", - "example": "LIVEBOARD" - }, - "pdf_params": { - "type": "object", - "nullable": true, - "description": "PDF rendering parameters.", - "properties": { - "page_size": { - "type": "string", - "example": "A4" - }, - "orientation": { - "type": "string", - "example": "LANDSCAPE" - } - } - }, - "liveboard_params": { - "type": "object", - "nullable": true, - "description": "Liveboard-specific export parameters.", - "properties": { - "layout_type": { - "type": "string", - "example": "LIVEBOARD" - }, - "visualization_format_options": { - "type": "object", - "properties": { - "truncate_tables": { - "type": "boolean" - } - } - }, - "print_document_params": { - "type": "object", - "properties": { - "include_cover_page": { - "type": "boolean" - }, - "include_filter_page": { - "type": "boolean" - }, - "pageFooterParams": { - "type": "object", - "properties": { - "include_logo": { - "type": "boolean" - }, - "include_page_number": { - "type": "boolean" - }, - "text": { - "type": "string" - } - } - } - } - }, - "liveboard_viz_selection": { - "type": "object", - "properties": { - "complete_liveboard": { - "type": "boolean" - } - } - } - } - }, - "request_type": { - "type": "string", - "description": "Type of export request.", - "example": "SCHEDULE" - } - } - }, - "fileFormat": { - "type": "string", - "nullable": true, - "description": "File format for the exported attachment.", - "enum": [ - "PDF", - "CSV", - "XLSX", - "PNG" - ] - }, - "status": { + "role_arn": { "type": "string", - "nullable": true, - "description": "Current status of this schedule run.", - "example": "SCHEDULED" + "description": "ARN of the IAM role to assume for S3 access.\nExample: \"arn:aws:iam::123456789012:role/ThoughtSpotDeliveryRole\"" }, - "emailIds": { - "type": "array", - "items": { - "type": "string" - }, - "nullable": true, - "description": "List of external (non-ThoughtSpot) email addresses receiving this schedule." + "external_id": { + "type": "string", + "description": "External ID for secure cross-account role assumption.\nExample: \"ts-webhook-a1b2c3d4-7890\"", + "nullable": true }, - "viewInfo": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/WebhookLiveboardViewInfo" - } - ], - "description": "Personalized view information when the schedule targets a specific Liveboard view." + "path_prefix": { + "type": "string", + "description": "Optional path prefix for organizing objects within the bucket.\nExample: \"thoughtspot-webhooks/\"", + "nullable": true } - } + }, + "description": "Input type for AWS S3 storage configuration." }, - "WebhookScheduleRecipient": { + "WebhookKeyValuePairInput": { "type": "object", - "description": "A recipient for a Liveboard schedule webhook delivery.", "required": [ - "type", - "email" + "key", + "value" ], "properties": { - "type": { + "key": { "type": "string", - "description": "Type of recipient.", - "enum": [ - "USER", - "GROUP", - "EXTERNAL_EMAIL" - ] + "description": "Header name." }, - "id": { + "value": { "type": "string", - "nullable": true, - "description": "Unique identifier (GUID) of the recipient. Present for USER and GROUP recipients." + "description": "Header value." + } + }, + "description": "Key-value pair input for additional webhook headers." + }, + "WebhookDeleteResponse": { + "type": "object", + "required": [ + "deleted_count", + "failed_count", + "deleted_webhooks", + "failed_webhooks" + ], + "properties": { + "deleted_count": { + "type": "integer", + "format": "int32", + "description": "Number of webhooks successfully deleted." }, - "name": { - "type": "string", - "nullable": true, - "description": "Display name of the recipient. Present for USER and GROUP recipients." + "failed_count": { + "type": "integer", + "format": "int32", + "description": "Number of webhooks that failed to delete." }, - "email": { - "type": "string", - "description": "Email address of the recipient." + "deleted_webhooks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebhookResponse" + }, + "description": "List of successfully deleted webhooks." }, - "memberEmails": { + "failed_webhooks": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/WebhookDeleteFailure" }, - "nullable": true, - "description": "Email addresses of group members. Present when recipient type is GROUP." + "description": "List of webhooks that failed to delete with error details." } } }, - "WebhookLiveboardViewInfo": { + "WebhookDeleteFailure": { "type": "object", - "description": "Personalized Liveboard view associated with a schedule. Present only when the schedule targets a specific saved view of the Liveboard.", "required": [ - "viewName", - "viewId" + "id", + "name", + "error" ], "properties": { - "viewName": { + "id": { + "type": "string", + "description": "Unique identifier of the webhook that failed to delete." + }, + "name": { "type": "string", - "description": "Display name of the personalized Liveboard view." + "description": "Name of the webhook that failed to delete." }, - "viewId": { + "error": { "type": "string", - "description": "Unique identifier (GUID) of the personalized Liveboard view." + "description": "Error message describing why the deletion failed." } } }, - "WebhookFileAttachment": { + "CollectionMetadataInput": { "type": "object", - "description": "A single file attachment within a webhook multipart delivery.", "required": [ - "filename", - "contentType" + "type", + "identifiers" ], "properties": { - "filename": { - "type": "string", - "description": "Original filename of the attachment.", - "example": "Quarterly_Sales.pdf" - }, - "contentType": { + "type": { "type": "string", - "description": "MIME type of the attachment content.", "enum": [ - "application/pdf", - "text/csv", - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + "LIVEBOARD", + "ANSWER", + "LOGICAL_TABLE", + "COLLECTION" ], - "example": "application/pdf" + "description": "Type of metadata object." }, - "content": { - "type": "string", - "format": "binary", - "description": "Binary content of the file. In the actual HTTP request this is the raw bytes of the multipart form part; in SDK models it is represented as a byte array or stream." + "identifiers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of unique IDs or names of metadata objects." } - } + }, + "description": "Input type for metadata to be added to a collection." }, - "WebhookFileAttachmentsPayload": { + "CollectionDeleteResponse": { "type": "object", - "description": "The \"file_attachments\" JSON part of a customer-storage multipart webhook delivery. Contains S3 object references for every file that was (or should have been) uploaded to the customer's bucket, plus an optional top-level error on complete upload failure.", - "required": [ - "files" - ], "properties": { - "files": { + "metadata_deleted": { "type": "array", "items": { - "$ref": "#/components/schemas/WebhookS3FileReference" + "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" }, - "description": "List of file references. Each entry corresponds to one schedule attachment. uploadStatus indicates whether that individual file was uploaded successfully. May be empty when a critical upload error prevented all uploads." + "description": "List of metadata objects that were successfully deleted.", + "nullable": true }, - "error": { - "type": "string", - "nullable": true, - "description": "Top-level error message set when the cloud storage upload failed entirely. Empty on full success; may be non-empty even when some files succeeded (partial failure).", - "example": "cloud storage upload failed: failed to assume role: AccessDenied" + "metadata_skipped": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionDeleteTypeIdentifiers" + }, + "description": "List of metadata objects that were skipped during deletion.\nObjects may be skipped due to lack of permissions, dependencies, or other constraints.", + "nullable": true } - } + }, + "description": "Response object for delete collection operation." }, - "WebhookS3FileReference": { + "CollectionDeleteTypeIdentifiers": { "type": "object", - "description": "Reference to a single file uploaded (or attempted) to the customer's S3 bucket as part of a LIVEBOARD_SCHEDULE webhook delivery.", - "required": [ - "filename", - "contentType", - "size", - "provider", - "uploadStatus" - ], "properties": { - "filename": { - "type": "string", - "description": "Original filename of the attachment.", - "example": "Quarterly_Sales.pdf" - }, - "contentType": { - "type": "string", - "description": "MIME type of the file.", - "example": "application/pdf" - }, - "size": { - "type": "integer", - "format": "int64", - "description": "Size of the file in bytes." - }, - "provider": { - "type": "string", - "description": "Storage provider. Currently always \"AWS_S3\".", - "enum": [ - "AWS_S3" - ] - }, - "bucketName": { - "type": "string", - "nullable": true, - "description": "Name of the customer's S3 bucket. Omitted when upload failed.", - "example": "my-webhook-files" - }, - "region": { - "type": "string", - "nullable": true, - "description": "AWS region of the S3 bucket. Omitted when upload failed.", - "example": "us-west-2" - }, - "objectKey": { - "type": "string", - "nullable": true, - "description": "Full object key (path) of the file within the S3 bucket. Omitted when upload failed.", - "example": "thoughtspot-webhooks/org-0/liveboard-schedules/sched-id/run-id/Quarterly_Sales.pdf" - }, - "uploadStatus": { - "type": "string", - "enum": [ - "SUCCESS", - "FAILED" - ], - "description": "Upload result for this file." - }, - "errorMessage": { + "type": { "type": "string", - "nullable": true, - "description": "Error details when uploadStatus is FAILED. Omitted on success." + "description": "Type of the metadata object (e.g., Collection, Worksheet, Table).", + "nullable": true }, - "uploadedAt": { - "type": "string", - "nullable": true, - "description": "ISO 8601 timestamp of when the file was uploaded. Omitted when upload failed.", - "example": "2025-04-10T12:00:00Z" + "identifiers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GenericInfo" + }, + "description": "List of metadata identifiers belonging to the given type.", + "nullable": true } - } + }, + "description": "Group of metadata objects identified by type." + }, + "Runtime_Filter": { + "type": "object", + "properties": { + "runtime_filter": { + "type": "object", + "description": "Runtime filter parameter type in JWT." + } + }, + "description": "List of runtime parameters need to set during the session." + }, + "Runtime_Sort": { + "type": "object", + "properties": { + "runtime_sort": { + "type": "object", + "description": "Runtime sort parameter type in JWT." + } + }, + "description": "List of runtime parameters need to set during the session." + }, + "Runtime_Param_Override": { + "type": "object", + "properties": { + "runtime_param_override": { + "type": "object", + "description": "Runtime param override type in JWT." + } + }, + "description": "List of runtime parameters need to set during the session." }, "CreateAgentConversationRequest": { "type": "object", @@ -22389,6 +24011,36 @@ "metadata_identifier" ] }, + "ConfigureAuthSettingsRequest": { + "type": "object", + "properties": { + "auth_type": { + "description": "Type of authentication mechanism to configure. Currently supports TRUSTED_AUTH.", + "type": "string", + "enum": [ + "TRUSTED_AUTH" + ] + }, + "cluster_preferences": { + "description": "Cluster-level authentication preferences. Omit to leave the existing cluster setting unchanged.", + "allOf": [ + { + "$ref": "#/components/schemas/AuthClusterPreferencesInput" + } + ] + }, + "org_preferences": { + "description": "Org-level authentication preferences. Each entry identifies an org and the desired status. Omit to leave existing org settings unchanged.", + "type": "array", + "items": { + "$ref": "#/components/schemas/AuthOrgPreferenceInput" + } + } + }, + "required": [ + "auth_type" + ] + }, "GetCustomAccessTokenRequest": { "type": "object", "properties": { @@ -22643,6 +24295,29 @@ } } }, + "SearchAuthSettingsRequest": { + "type": "object", + "properties": { + "auth_type": { + "description": "Type of authentication mechanism to retrieve settings for. Currently supports TRUSTED_AUTH.", + "type": "string", + "enum": [ + "TRUSTED_AUTH" + ] + }, + "scope": { + "description": "Scope of auth settings to retrieve. When absent, both cluster and org settings are returned (subject to caller privileges). Set to CLUSTER to retrieve only cluster-level settings, or ORG to retrieve only org-level settings.", + "type": "string", + "enum": [ + "CLUSTER", + "ORG" + ] + } + }, + "required": [ + "auth_type" + ] + }, "ValidateTokenRequest": { "type": "object", "properties": { @@ -24002,6 +25677,8 @@ "CAN_MODIFY_FOLDERS", "CAN_MANAGE_VARIABLES", "CAN_VIEW_FOLDERS", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", @@ -24158,6 +25835,8 @@ "CAN_MODIFY_FOLDERS", "CAN_MANAGE_VARIABLES", "CAN_VIEW_FOLDERS", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", @@ -24295,6 +25974,8 @@ "CAN_MODIFY_FOLDERS", "CAN_MANAGE_VARIABLES", "CAN_VIEW_FOLDERS", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_DOWNLOAD_VISUALS", @@ -24399,6 +26080,11 @@ "description": "Filter records created on or after this time (epoch milliseconds).", "type": "number", "format": "float" + }, + "end_epoch_time_in_millis": { + "description": "Filter records created on or before this time (epoch milliseconds).
Version: 26.7.0.cl or later", + "type": "number", + "format": "float" } }, "required": [ @@ -25296,6 +26982,15 @@ "personalised_view_identifier": { "description": "GUID or name of the personalised view of the Answer object.
Beta Version: 26.6.0.cl or later", "type": "string" + }, + "type": { + "description": "Type of the answer being exported.
Beta Version: 26.6.0.cl or later", + "default": "SAVED", + "type": "string", + "enum": [ + "SAVED", + "PINNED" + ] } } }, @@ -25378,6 +27073,11 @@ "$ref": "#/components/schemas/RegionalSettingsInput" } ] + }, + "rows_per_sheet": { + "description": "Maximum number of rows to export per sheet. Only applicable for XLSX exports.\nIf not specified, the system default limit is used.
Beta Version: 26.7.0.cl or later", + "type": "integer", + "format": "int32" } }, "required": [ @@ -25435,6 +27135,8 @@ "CAN_MANAGE_VARIABLES", "CAN_MODIFY_FOLDERS", "CAN_VIEW_FOLDERS", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "CAN_SETUP_VERSION_CONTROL", "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", @@ -25531,6 +27233,8 @@ "CAN_VIEW_FOLDERS", "CAN_MODIDY_FOLDERS", "CAN_MANAGE_VARIABLES", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "PREVIEW_DOCUMENT_SEARCH", "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", @@ -25622,6 +27326,8 @@ "CAN_MODIFY_FOLDERS", "CAN_MANAGE_VARIABLES", "CAN_VIEW_FOLDERS", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "PREVIEW_DOCUMENT_SEARCH", "PREVIEW_THOUGHTSPOT_SAGE", "CAN_MANAGE_WEBHOOKS", @@ -28060,6 +29766,8 @@ "CAN_MODIFY_FOLDERS", "CAN_MANAGE_VARIABLES", "CAN_VIEW_FOLDERS", + "CAN_MANAGE_AGENTSPOT", + "CAN_ACCESS_AGENTSPOT", "CAN_SETUP_VERSION_CONTROL", "CAN_MANAGE_WEBHOOKS", "CAN_DOWNLOAD_VISUALS", From 3930604b74bbcf604ecc6c08db1657c0a8182918 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 29 Apr 2026 17:46:08 +0530 Subject: [PATCH 22/23] example with success and errors --- api-spec/openapiSpecv3-2_0.json | 209 -------------------------------- 1 file changed, 209 deletions(-) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index 62c805e32..cd0550e4e 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -21,14 +21,6 @@ ], "description": "Roles for version 10.4.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", @@ -406,79 +398,6 @@ } } }, - "/api/rest/2.0/ai/agent/instructions/get": { - "get": { - "operationId": "getAgentInstructions", - "description": "\nBeta Version: 26.6.0.cl or later\n\nRetrieves the admin instructions currently configured for the AI agent (Spotter). Admin instructions are tenant- and org-scoped text that guide agent behavior across all conversations.\n\nRequires admin privileges. Only users with org admin access can retrieve agent instructions.\n\n#### Usage guidelines\n\nNo input parameters are required. The API returns the stored `AgentInstructions` record for the caller's tenant and org.\n\nIf no instructions have been configured yet, the API returns a record with an empty `instructions` field and `null` values for `id`, `created_at`, `updated_at`, and `last_updated_by`.\n\nIf the request is successful, the response includes:\n\n- `id`: unique identifier of the instructions record\n- `instructions`: the configured instructions text\n- `created_at`: ISO timestamp when the instructions were first saved\n- `updated_at`: ISO timestamp when the instructions were last updated\n- `last_updated_by`: user ID of the admin who last updated the instructions (may be `null` for older records)\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 org admin privileges required to read agent instructions. |\n\n> ###### Note:\n>\n> - Use `setAgentInstructions` to create or update agent instructions.\n> - Available from version 26.6.0.cl and later.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "AI", - "26.6.0.cl" - ], - "parameters": [], - "responses": { - "200": { - "description": "Common successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AgentInstructions" - } - } - } - }, - "201": { - "description": "Common error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AgentInstructions" - } - } - } - }, - "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/data-source-suggestions": { "post": { "operationId": "getDataSourceSuggestions", @@ -1512,89 +1431,6 @@ } } }, - "/api/rest/2.0/ai/agent/instructions/set": { - "put": { - "operationId": "setAgentInstructions", - "description": "\nBeta Version: 26.6.0.cl or later\n\nCreates or updates the admin instructions for the AI agent (Spotter). Admin instructions are tenant- and org-scoped text that guide agent behavior across all conversations. If instructions already exist for the org, they are replaced (upsert semantics).\n\nRequires admin privileges. Only users with org admin access can set agent instructions.\n\n#### Usage guidelines\n\nThe request must include:\n\n- `instructions`: the instructions text to apply to the agent (maximum 5000 characters)\n\nInstructions are validated against system guardrails before being saved. If the instructions contain content that conflicts with guardrails, the request is rejected with a `409` error and the existing instructions remain unchanged.\n\nIf the request is successful, the response includes the saved `AgentInstructions` record:\n\n- `id`: unique identifier of the record\n- `instructions`: the saved instructions text\n- `created_at`: ISO timestamp when the instructions were first created\n- `updated_at`: ISO timestamp of this update\n- `last_updated_by`: user ID of the admin who performed this update\n\n#### Error responses\n\n| Code | Description |\n|------|-------------|\n| 400 | Bad request — the request body is missing required fields or the `instructions` field exceeds the maximum allowed length of 5000 characters. |\n| 401 | Unauthorized — authentication token is missing, expired, or invalid. |\n| 403 | Forbidden — the authenticated user does not have org admin privileges required to set agent instructions. |\n| 409 | Conflict — the provided instructions conflict with system guardrails. Review and revise the instructions text before retrying. |\n| 500 | Internal server error. |\n\n> ###### Note:\n>\n> - This operation uses upsert semantics: it creates the instructions record if none exists, or replaces the existing one.\n> - Instructions take effect immediately for new conversations created after the update.\n> - Use `getAgentInstructions` to retrieve the current instructions before making changes.\n> - Available from version 26.6.0.cl and later.\n\n\n\n\n#### Endpoint URL\n", - "tags": [ - "AI", - "26.6.0.cl" - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SetAgentInstructionsRequest" - } - } - }, - "required": true - }, - "parameters": [], - "responses": { - "200": { - "description": "Common successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AgentInstructions" - } - } - } - }, - "201": { - "description": "Common error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AgentInstructions" - } - } - } - }, - "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/instructions/set": { "post": { "operationId": "setNLInstructions", @@ -18634,39 +18470,6 @@ } } }, - "AgentInstructions": { - "type": "object", - "required": [ - "instructions" - ], - "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the record.", - "nullable": true - }, - "instructions": { - "type": "string", - "description": "The admin instructions text for the agent." - }, - "created_at": { - "type": "string", - "description": "ISO timestamp when the instructions were created.", - "nullable": true - }, - "updated_at": { - "type": "string", - "description": "ISO timestamp when the instructions were last updated.", - "nullable": true - }, - "last_updated_by": { - "type": "string", - "description": "User ID of the admin who last updated the instructions.", - "nullable": true - } - }, - "description": "Admin instructions configured for the AI agent." - }, "RiseGQLArgWrapper": { "type": "object", "required": [ @@ -24171,18 +23974,6 @@ "message" ] }, - "SetAgentInstructionsRequest": { - "type": "object", - "properties": { - "instructions": { - "description": "The admin instructions text to set for the agent.", - "type": "string" - } - }, - "required": [ - "instructions" - ] - }, "SetNLInstructionsRequest": { "type": "object", "properties": { From c0dd4dfecfc606813f5f9fe3aba5849e1d17e848 Mon Sep 17 00:00:00 2001 From: Sandeep Yadav Date: Wed, 29 Apr 2026 17:52:15 +0530 Subject: [PATCH 23/23] Update openapiSpecv3-2_0.json --- api-spec/openapiSpecv3-2_0.json | 7716 +++++++++++++++++++++++++++++++ 1 file changed, 7716 insertions(+) diff --git a/api-spec/openapiSpecv3-2_0.json b/api-spec/openapiSpecv3-2_0.json index cd0550e4e..c691380fc 100644 --- a/api-spec/openapiSpecv3-2_0.json +++ b/api-spec/openapiSpecv3-2_0.json @@ -270,6 +270,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -280,6 +292,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -290,6 +314,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -300,6 +336,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -361,6 +409,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -371,6 +431,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -381,6 +453,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -391,6 +475,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -471,6 +567,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -481,6 +589,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -491,6 +611,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -501,6 +633,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -571,6 +715,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -581,6 +737,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -591,6 +759,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -601,6 +781,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -678,6 +870,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -688,6 +892,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -698,6 +914,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -708,6 +936,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -783,6 +1023,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -793,6 +1045,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -803,6 +1067,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -813,6 +1089,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -939,6 +1227,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -949,6 +1249,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -959,6 +1271,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -969,6 +1293,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1078,6 +1414,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1088,6 +1436,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1098,6 +1458,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1108,6 +1480,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1187,6 +1571,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1197,6 +1593,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1207,6 +1615,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1217,6 +1637,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1280,6 +1712,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1290,6 +1734,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1300,6 +1756,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1310,6 +1778,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1394,6 +1874,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1404,6 +1896,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1414,6 +1918,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1424,6 +1940,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1485,6 +2013,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1495,6 +2035,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1505,6 +2057,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1515,6 +2079,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1581,6 +2157,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1591,6 +2179,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1601,6 +2201,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1611,6 +2223,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1647,6 +2271,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1657,6 +2293,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1667,6 +2315,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1677,6 +2337,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1713,6 +2385,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1723,6 +2407,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -1733,6 +2429,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1743,6 +2451,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1798,6 +2518,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1808,6 +2540,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -1818,6 +2562,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1828,6 +2584,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1873,6 +2641,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1883,6 +2663,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -1893,6 +2685,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1903,6 +2707,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -1965,6 +2781,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -1975,6 +2803,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -1985,6 +2825,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -1995,6 +2847,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2056,6 +2920,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2066,6 +2942,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2076,6 +2964,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2086,6 +2986,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2147,6 +3059,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2157,6 +3081,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2167,6 +3103,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2177,6 +3125,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2214,6 +3174,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2224,6 +3196,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2234,6 +3218,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2244,6 +3240,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2270,6 +3278,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2280,6 +3300,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2290,6 +3322,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2300,6 +3344,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2336,6 +3392,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2346,6 +3414,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2356,6 +3436,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2366,6 +3458,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2438,6 +3542,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2448,6 +3564,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2458,6 +3586,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2468,6 +3608,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2527,6 +3679,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2537,6 +3701,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2547,6 +3723,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2557,6 +3745,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2625,6 +3825,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2635,6 +3847,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2645,6 +3869,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2655,6 +3891,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2717,6 +3965,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2727,6 +3987,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2737,6 +4009,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2747,6 +4031,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Resource not found", + "value": { + "error": { + "message": { + "debug": "The requested resource was not found." + } + } + } + } } } } @@ -2757,6 +4053,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2826,6 +4134,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2836,6 +4156,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2846,6 +4178,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2856,6 +4200,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -2902,6 +4258,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -2912,6 +4280,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -2922,6 +4302,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -2932,6 +4324,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Resource not found", + "value": { + "error": { + "message": { + "debug": "The requested resource was not found." + } + } + } + } } } } @@ -2942,6 +4346,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3016,6 +4432,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3026,6 +4454,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3036,6 +4476,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3046,6 +4498,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3114,6 +4578,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3124,6 +4600,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3134,6 +4622,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3144,6 +4644,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3180,6 +4692,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3190,6 +4714,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3200,6 +4736,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3210,6 +4758,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3256,6 +4816,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3266,6 +4838,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3276,6 +4860,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3286,6 +4882,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3344,6 +4952,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3354,6 +4974,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3364,6 +4996,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3374,6 +5018,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3411,6 +5067,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3421,6 +5089,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3431,6 +5111,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3441,6 +5133,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3477,6 +5181,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3487,6 +5203,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3497,6 +5225,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3507,6 +5247,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3546,6 +5298,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3556,6 +5320,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3566,6 +5342,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3576,6 +5364,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3633,6 +5433,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3643,6 +5455,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3653,6 +5477,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3663,6 +5499,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3724,6 +5572,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3734,6 +5594,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3744,6 +5616,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3754,6 +5638,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Resource not found", + "value": { + "error": { + "message": { + "debug": "The requested resource was not found." + } + } + } + } } } } @@ -3764,6 +5660,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Conflict", + "value": { + "error": { + "message": { + "debug": "Operation failed due to a conflict with the current state of the resource." + } + } + } + } } } } @@ -3774,6 +5682,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3862,6 +5782,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3872,6 +5804,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3882,6 +5826,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3892,6 +5848,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -3969,6 +5937,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -3979,6 +5959,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -3989,6 +5981,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -3999,6 +6003,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Resource not found", + "value": { + "error": { + "message": { + "debug": "The requested resource was not found." + } + } + } + } } } } @@ -4009,6 +6025,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4046,6 +6074,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4056,6 +6096,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4066,6 +6118,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4076,6 +6140,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4122,6 +6198,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4132,6 +6220,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4142,6 +6242,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4152,6 +6264,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Resource not found", + "value": { + "error": { + "message": { + "debug": "The requested resource was not found." + } + } + } + } } } } @@ -4162,6 +6286,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4208,6 +6344,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4218,6 +6366,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4228,6 +6388,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4238,6 +6410,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4299,6 +6483,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4309,6 +6505,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4319,6 +6527,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4329,6 +6549,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4365,6 +6597,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4375,6 +6619,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4385,6 +6641,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4395,6 +6663,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4459,6 +6739,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4469,6 +6761,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4479,6 +6783,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4489,6 +6805,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4535,6 +6863,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4545,6 +6885,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4555,6 +6907,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4565,6 +6929,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4622,6 +6998,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4632,6 +7020,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4642,6 +7042,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4652,6 +7064,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4688,6 +7112,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4698,6 +7134,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4708,6 +7156,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4718,6 +7178,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4761,6 +7233,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4771,6 +7255,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4781,6 +7277,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4791,6 +7299,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4853,6 +7373,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4863,6 +7395,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4873,6 +7417,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4883,6 +7439,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -4929,6 +7497,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -4939,6 +7519,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -4949,6 +7541,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -4959,6 +7563,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5038,6 +7654,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -5048,6 +7676,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -5058,6 +7698,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -5068,6 +7720,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5168,6 +7832,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -5178,6 +7854,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -5188,6 +7876,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -5198,6 +7898,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5275,6 +7987,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -5285,6 +8009,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -5295,6 +8031,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -5305,6 +8053,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5412,6 +8172,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -5422,6 +8194,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -5432,6 +8216,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -5442,6 +8238,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5509,6 +8317,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -5519,6 +8339,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -5529,6 +8361,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -5539,6 +8383,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5631,6 +8487,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -5641,6 +8509,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -5651,6 +8531,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -5661,6 +8553,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5713,6 +8617,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -5723,6 +8639,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -5733,6 +8661,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -5743,6 +8683,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5779,6 +8731,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -5789,6 +8753,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -5799,6 +8775,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -5809,6 +8797,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5907,6 +8907,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -5917,6 +8929,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -5927,6 +8951,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -5937,6 +8973,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -5998,6 +9046,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6008,6 +9068,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6018,6 +9090,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6055,6 +9139,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6065,6 +9161,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6075,6 +9183,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6111,6 +9231,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6121,6 +9253,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -6131,6 +9275,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6141,6 +9297,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6213,6 +9381,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6223,6 +9403,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6233,6 +9425,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6269,6 +9473,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6279,6 +9495,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -6289,6 +9517,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6299,6 +9539,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6325,6 +9577,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6335,6 +9599,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6345,6 +9621,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6419,6 +9707,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6429,6 +9729,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -6439,6 +9751,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6449,6 +9773,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6485,6 +9821,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6495,6 +9843,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -6505,6 +9865,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6515,6 +9887,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6573,6 +9957,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6583,6 +9979,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -6593,6 +10001,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6603,6 +10023,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6702,6 +10134,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6712,6 +10156,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -6722,6 +10178,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6732,6 +10200,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6778,6 +10258,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6788,6 +10280,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -6798,6 +10302,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6808,6 +10324,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -6930,6 +10458,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -6940,6 +10480,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -6950,6 +10502,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -6960,6 +10524,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7025,6 +10601,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7035,6 +10623,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7045,6 +10645,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7055,6 +10667,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7128,6 +10752,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7138,6 +10774,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7148,6 +10796,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7158,6 +10818,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7209,6 +10881,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7219,6 +10903,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7229,6 +10925,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7239,6 +10947,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Resource not found", + "value": { + "error": { + "message": { + "debug": "The requested resource was not found." + } + } + } + } } } } @@ -7249,6 +10969,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7285,6 +11017,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7295,6 +11039,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7305,6 +11061,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7315,6 +11083,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7372,6 +11152,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7382,6 +11174,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7392,6 +11196,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7402,6 +11218,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7461,6 +11289,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7471,6 +11311,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7481,6 +11333,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7491,6 +11355,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7551,6 +11427,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7561,6 +11449,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7571,6 +11471,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7581,6 +11493,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7665,6 +11589,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7675,6 +11611,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7685,6 +11633,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7695,6 +11655,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7760,6 +11732,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7770,6 +11754,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7780,6 +11776,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7790,6 +11798,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7857,6 +11877,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7867,6 +11899,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7877,6 +11921,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7887,6 +11943,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -7948,6 +12016,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -7958,6 +12038,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -7968,6 +12060,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -7978,6 +12082,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8015,6 +12131,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8025,6 +12153,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8035,6 +12175,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8045,6 +12197,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8081,6 +12245,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8091,6 +12267,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8101,6 +12289,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8111,6 +12311,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8353,6 +12565,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8363,6 +12587,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8373,6 +12609,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8383,6 +12631,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8419,6 +12679,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8429,6 +12701,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8439,6 +12723,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8449,6 +12745,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8485,6 +12793,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8495,6 +12815,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8505,6 +12837,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8515,6 +12859,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8551,6 +12907,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8561,6 +12929,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8571,6 +12951,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8581,6 +12973,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8636,6 +13040,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8646,6 +13062,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8656,6 +13084,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8666,6 +13106,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8702,6 +13154,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8712,6 +13176,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8722,6 +13198,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8732,6 +13220,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8798,6 +13298,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8808,6 +13320,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8818,6 +13342,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8828,6 +13364,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8874,6 +13422,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8884,6 +13444,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8894,6 +13466,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8904,6 +13488,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -8943,6 +13539,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -8953,6 +13561,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -8963,6 +13583,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -8973,6 +13605,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9012,6 +13656,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9022,6 +13678,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9032,6 +13700,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9042,6 +13722,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9111,6 +13803,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9121,6 +13825,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9131,6 +13847,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9141,6 +13869,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9177,6 +13917,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9187,6 +13939,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9197,6 +13961,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9207,6 +13983,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9286,6 +14074,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9296,6 +14096,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9306,6 +14118,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9316,6 +14140,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9388,6 +14224,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9398,6 +14246,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9408,6 +14268,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9418,6 +14290,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9510,6 +14394,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9520,6 +14416,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9530,6 +14438,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9540,6 +14460,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9576,6 +14508,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9586,6 +14530,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9596,6 +14552,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9606,6 +14574,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9698,6 +14678,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9708,6 +14700,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9718,6 +14722,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9728,6 +14744,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9774,6 +14802,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9784,6 +14824,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9794,6 +14846,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9804,6 +14868,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9840,6 +14916,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9850,6 +14938,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9860,6 +14960,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9870,6 +14982,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -9961,6 +15085,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -9971,6 +15107,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -9981,6 +15129,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -9991,6 +15151,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10059,6 +15231,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10069,6 +15253,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10079,6 +15275,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10089,6 +15297,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10168,6 +15388,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10178,6 +15410,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10188,6 +15432,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10198,6 +15454,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10297,6 +15565,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10307,6 +15587,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10317,6 +15609,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10327,6 +15631,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10363,6 +15679,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10373,6 +15701,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10383,6 +15723,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10393,6 +15745,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10429,6 +15793,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10439,6 +15815,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10449,6 +15837,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10459,6 +15859,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10495,6 +15907,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10505,6 +15929,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10515,6 +15951,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10525,6 +15973,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10561,6 +16021,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10571,6 +16043,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10581,6 +16065,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10591,6 +16087,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10627,6 +16135,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10637,6 +16157,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10647,6 +16179,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10657,6 +16201,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10693,6 +16249,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10703,6 +16271,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10713,6 +16293,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10723,6 +16315,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10759,6 +16363,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10769,6 +16385,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10779,6 +16407,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10789,6 +16429,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10831,6 +16483,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10841,6 +16505,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10851,6 +16527,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10861,6 +16549,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10923,6 +16623,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -10933,6 +16645,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -10943,6 +16667,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -10953,6 +16689,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -10999,6 +16747,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11009,6 +16769,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11019,6 +16791,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11029,6 +16813,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11102,6 +16898,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11112,6 +16920,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11122,6 +16942,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11132,6 +16964,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11239,6 +17083,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11249,6 +17105,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11259,6 +17127,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11269,6 +17149,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11305,6 +17197,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11315,6 +17219,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11325,6 +17241,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11335,6 +17263,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11418,6 +17358,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11428,6 +17380,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11438,6 +17402,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11448,6 +17424,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11484,6 +17472,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11494,6 +17494,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11504,6 +17516,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11514,6 +17538,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11576,6 +17612,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11586,6 +17634,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11596,6 +17656,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11606,6 +17678,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11642,6 +17726,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11652,6 +17748,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11662,6 +17770,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11672,6 +17792,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11752,6 +17884,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11762,6 +17906,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11772,6 +17928,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11782,6 +17950,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11818,6 +17998,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11828,6 +18020,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11838,6 +18042,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11848,6 +18064,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11894,6 +18122,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11904,6 +18144,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -11914,6 +18166,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -11924,6 +18188,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -11983,6 +18259,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -11993,6 +18281,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12003,6 +18303,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12013,6 +18325,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12049,6 +18373,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12059,6 +18395,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12069,6 +18417,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12079,6 +18439,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12140,6 +18512,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12150,6 +18534,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12160,6 +18556,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12170,6 +18578,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12221,6 +18641,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12231,6 +18663,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12241,6 +18685,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12251,6 +18707,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12287,6 +18755,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12297,6 +18777,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12307,6 +18799,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12317,6 +18821,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12353,6 +18869,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12363,6 +18891,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12373,6 +18913,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12383,6 +18935,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12445,6 +19009,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12455,6 +19031,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12465,6 +19053,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12475,6 +19075,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12511,6 +19123,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12521,6 +19145,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12531,6 +19167,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12541,6 +19189,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12624,6 +19284,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12634,6 +19306,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12644,6 +19328,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12654,6 +19350,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12700,6 +19408,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12710,6 +19430,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12720,6 +19452,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12730,6 +19474,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12785,6 +19541,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12795,6 +19563,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12805,6 +19585,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12815,6 +19607,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12852,6 +19656,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12862,6 +19678,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12872,6 +19700,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12882,6 +19722,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12918,6 +19770,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -12928,6 +19792,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -12938,6 +19814,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -12948,6 +19836,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -12994,6 +19894,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13004,6 +19916,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13014,6 +19938,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13024,6 +19960,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13097,6 +20045,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13107,6 +20067,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13117,6 +20089,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13127,6 +20111,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13173,6 +20169,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13183,6 +20191,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13193,6 +20213,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13203,6 +20235,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13240,6 +20284,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13250,6 +20306,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13260,6 +20328,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13270,6 +20350,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13339,6 +20431,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13349,6 +20453,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13359,6 +20475,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13369,6 +20497,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13432,6 +20572,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13442,6 +20594,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13452,6 +20616,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13462,6 +20638,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13498,6 +20686,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13508,6 +20708,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13518,6 +20730,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13528,6 +20752,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13588,6 +20824,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13598,6 +20846,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13608,6 +20868,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13618,6 +20890,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13705,6 +20989,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13715,6 +21011,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13725,6 +21033,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13735,6 +21055,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13816,6 +21148,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13826,6 +21170,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13836,6 +21192,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13846,6 +21214,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -13915,6 +21295,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -13925,6 +21317,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -13935,6 +21339,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -13945,6 +21361,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -14005,6 +21433,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -14015,6 +21455,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -14025,6 +21477,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -14035,6 +21499,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -14102,6 +21578,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -14112,6 +21600,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -14122,6 +21622,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -14132,6 +21644,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -14255,6 +21779,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -14265,6 +21801,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -14275,6 +21823,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -14285,6 +21845,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -14425,6 +21997,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -14435,6 +22019,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -14445,6 +22041,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -14455,6 +22063,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -14595,6 +22215,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -14605,6 +22237,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -14615,6 +22259,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -14625,6 +22281,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } } @@ -14671,6 +22339,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Operation failed due to an invalid input", + "value": { + "error": { + "message": { + "debug": "Invalid parameter value: one or more request parameters are missing or invalid." + } + } + } + } } } } @@ -14681,6 +22361,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Unauthorized access", + "value": { + "error": { + "message": { + "debug": "Access denied. Please authenticate using a valid token." + } + } + } + } } } } @@ -14691,6 +22383,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Forbidden access", + "value": { + "error": { + "message": { + "debug": "You do not have permission to perform this operation." + } + } + } + } } } } @@ -14701,6 +22405,18 @@ "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" + }, + "examples": { + "example_1": { + "description": "Internal server error", + "value": { + "error": { + "message": { + "debug": "An unexpected error occurred. Please try again or contact support." + } + } + } + } } } }