openapi: 3.0.0
info:
title: ThoughtSpot Public REST 10.1.0.cl Webhooks API
version: '2.0'
servers:
- url: '{base-url}'
variables:
base-url:
default: https://localhost:443
security:
- bearerAuth: []
tags:
- name: Webhooks
paths:
/api/rest/2.0/webhooks/create:
post:
operationId: createWebhookConfiguration
description: "\n 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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWebhookConfigurationRequest'
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
example_3:
description: Webhook with GCP GCS storage destination
value:
id: c9d8e7f6-a5b4-4321-9876-fedcba012345
name: GCS Storage Webhook
description: Webhook that uploads payloads to a GCS bucket
org:
id: '0'
name: Primary
url: https://api.example.com/webhooks
events:
- LIVEBOARD_SCHEDULE
storage_destination:
storage_type: GCP_GCS
storage_config:
gcp_gcs_config:
bucket_name: my-webhook-files
service_account_email: my-sa@my-project.iam.gserviceaccount.com
path_prefix: webhooks/
creation_time_in_millis: 1724279630456
modification_time_in_millis: 1724279630456
created_by:
id: 3a2b1c4d-5e6f-7890-abcd-ef0123456789
name: priya_sharma
last_modified_by:
id: 3a2b1c4d-5e6f-7890-abcd-ef0123456789
name: priya_sharma
'400':
description: Invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalid_request:
summary: Invalid request
value:
error:
message:
code: 10002
incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
debug: At least one event type must be specified in the events field.
'401':
description: Unauthorized access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unauthorized_access:
summary: Unauthorized access
value:
error:
message:
code: 10097
incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
debug: Authentication required to create a webhook configuration.
'403':
description: Forbidden access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
forbidden_access:
summary: Forbidden access
value:
error:
message:
code: 10023
incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
debug: Insufficient privileges to create webhook configurations.
'500':
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unexpected_error:
summary: Unexpected error
value:
error:
message:
code: 10038
incident_id_guid: d4e5f678-9012-3456-defa-456789012345
trace_id_guid: d4e5f678-9012-3456-defa-456789012345
debug: Unexpected server error while creating the webhook configuration.
/api/rest/2.0/webhooks/delete:
post:
operationId: deleteWebhookConfigurations
description: "\n 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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteWebhookConfigurationsRequest'
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:
BEARER_TOKEN: '***'
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: Webhook not found or access denied
'400':
description: Invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalid_request:
summary: Invalid request
value:
error:
message:
code: 10002
incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
debug: webhook_identifiers must contain at least one identifier.
'401':
description: Unauthorized access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unauthorized_access:
summary: Unauthorized access
value:
error:
message:
code: 10097
incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
debug: Authentication required to delete webhook configurations.
'403':
description: Forbidden access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
forbidden_access:
summary: Forbidden access
value:
error:
message:
code: 10023
incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
debug: Insufficient privileges to delete webhook configurations.
'500':
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unexpected_error:
summary: Unexpected error
value:
error:
message:
code: 10038
incident_id_guid: d4e5f678-9012-3456-defa-456789012345
trace_id_guid: d4e5f678-9012-3456-defa-456789012345
debug: Unexpected server error while deleting webhook configurations.
/api/rest/2.0/webhooks/storage-config:
get:
operationId: getWebhookStorageConfig
description: "\n Version: 26.7.0.cl or later\n\nReturns cluster-level storage setup information for configuring customer-managed storage. Use this endpoint to obtain the IAM identity details required before configuring a webhook storage destination. For S3 destinations, returns the platform AWS account ID and IAM trust policy template. For GCS destinations, returns the platform GCP service account email and the IAM role to grant for service account impersonation.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege. If [Role-Based Access Control (RBAC)](https://developers.thoughtspot.com/docs/rbac) is enabled on your instance, users with `CAN_MANAGE_WEBHOOKS` (**Can manage webhooks**) privilege are also authorized to perform this action.\n\n\n\n\n#### Endpoint URL\n"
tags:
- Webhooks
parameters: []
responses:
'200':
description: Storage setup information retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WebhookStorageConfigInfo'
examples:
example_1:
description: AWS-hosted cluster — customer configuring S3 storage destination
value:
- storage_type: OBJECT_STORAGE
provider: AWS_S3
config:
config_type: AWS_TO_S3_STORAGE
aws_account_id: '123456789012'
trust_policy_template:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
AWS: arn:aws:iam::123456789012:root
Action: sts:AssumeRole
Condition:
StringEquals:
sts:ExternalId: ts-webhook-a1b2c3d4-7890
setup_instructions:
- 1. Create an IAM role in your AWS account
- 2. Attach the trust policy template to the role
- 3. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role
- 4. Use the role ARN in your webhook storage configuration
example_2:
description: GCP-hosted cluster — customer configuring S3 storage destination
value:
- storage_type: OBJECT_STORAGE
provider: AWS_S3
config:
config_type: GCP_TO_S3_STORAGE
gcp_service_account_id: '115663769112811637952'
oidc_provider: accounts.google.com
trust_policy_template:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Federated: arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com
Action: sts:AssumeRoleWithWebIdentity
Condition:
StringEquals:
accounts.google.com:sub: '115663769112811637952'
setup_instructions:
- 1. Add accounts.google.com as an Identity Provider in AWS IAM
- 2. Create an IAM role with Web Identity Federation trust
- 3. Configure the trust policy with the GCP service account ID
- 4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role
- 5. Use the role ARN in your webhook storage configuration
example_3:
description: GCP-hosted cluster — customer configuring both S3 and GCS storage destinations
value:
- storage_type: OBJECT_STORAGE
provider: AWS_S3
config:
config_type: GCP_TO_S3_STORAGE
gcp_service_account_id: '115663769112811637952'
oidc_provider: accounts.google.com
trust_policy_template:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Federated: arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/accounts.google.com
Action: sts:AssumeRoleWithWebIdentity
Condition:
StringEquals:
accounts.google.com:sub: '115663769112811637952'
setup_instructions:
- 1. Add accounts.google.com as an Identity Provider in AWS IAM
- 2. Create an IAM role with Web Identity Federation trust
- 3. Configure the trust policy with the GCP service account ID
- 4. Attach S3 permissions (s3:PutObject, s3:PutObjectAcl) to the role
- 5. Use the role ARN in your webhook storage configuration
- storage_type: OBJECT_STORAGE
provider: GCP_GCS
config:
config_type: GCP_TO_GCS_STORAGE
service_account_email: webhook-sa@example-project.iam.gserviceaccount.com
required_role: roles/iam.serviceAccountTokenCreator
setup_instructions:
- 1. In GCP Console, go to IAM & Admin > Service Accounts
- 2. Click on the service account that has write access to your GCS bucket
- 3. Open the 'Principals with access' tab and click 'Grant Access'
- 4. Enter the service account email as the principal
- 5. Assign the roles/iam.serviceAccountTokenCreator role and save
- 6. Use your service account email in the webhook storage configuration
'400':
description: Invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unauthorized_access:
summary: Unauthorized access
value:
error:
message:
code: 10097
incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
debug: Authentication required to retrieve webhook storage configuration.
'403':
description: Forbidden access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
forbidden_access:
summary: Forbidden access
value:
error:
message:
code: 10023
incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
debug: Insufficient privileges to retrieve webhook storage configuration.
'500':
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unexpected_error:
summary: Unexpected error
value:
error:
message:
code: 10038
incident_id_guid: d4e5f678-9012-3456-defa-456789012345
trace_id_guid: d4e5f678-9012-3456-defa-456789012345
debug: Unexpected server error while retrieving webhook storage configuration.
/api/rest/2.0/webhooks/search:
post:
operationId: searchWebhookConfigurations
description: "\n 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
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
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
'400':
description: Invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalid_request:
summary: Invalid request
value:
error:
message:
code: 10002
incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
debug: record_size must be a positive integer.
'401':
description: Unauthorized access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unauthorized_access:
summary: Unauthorized access
value:
error:
message:
code: 10097
incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
debug: Authentication required to search webhook configurations.
'403':
description: Forbidden access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
forbidden_access:
summary: Forbidden access
value:
error:
message:
code: 10023
incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
debug: Insufficient privileges to search webhook configurations.
'500':
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unexpected_error:
summary: Unexpected error
value:
error:
message:
code: 10038
incident_id_guid: d4e5f678-9012-3456-defa-456789012345
trace_id_guid: d4e5f678-9012-3456-defa-456789012345
debug: Unexpected server error while searching webhook configurations.
/api/rest/2.0/webhooks/{webhook_identifier}/update:
post:
operationId: updateWebhookConfiguration
description: "\n 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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWebhookConfigurationRequest'
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
'400':
description: Invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalid_request:
summary: Invalid request
value:
error:
message:
code: 10002
incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
debug: Webhook with the specified identifier was not found.
'401':
description: Unauthorized access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unauthorized_access:
summary: Unauthorized access
value:
error:
message:
code: 10097
incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012
debug: Authentication required to update a webhook configuration.
'403':
description: Forbidden access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
forbidden_access:
summary: Forbidden access
value:
error:
message:
code: 10023
incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234
debug: Insufficient privileges to update webhook configurations.
'500':
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unexpected_error:
summary: Unexpected error
value:
error:
message:
code: 10038
incident_id_guid: d4e5f678-9012-3456-defa-456789012345
trace_id_guid: d4e5f678-9012-3456-defa-456789012345
debug: Unexpected server error while updating the webhook configuration.
components:
schemas:
WebhookUser:
type: object
required:
- id
- name
properties:
id:
type: string
description: Unique identifier of the user.
name:
type: string
description: Name of the user.
WebhookAuthenticationInput:
type: object
properties:
API_KEY:
$ref: '#/components/schemas/WebhookAuthApiKeyInput'
description: API key authentication configuration.
nullable: true
BASIC_AUTH:
$ref: '#/components/schemas/WebhookAuthBasicAuthInput'
description: Basic authentication configuration.
nullable: true
BEARER_TOKEN:
type: string
description: Bearer token authentication configuration.
nullable: true
OAUTH2:
$ref: '#/components/schemas/WebhookAuthOAuth2Input'
description: OAuth2 authentication configuration.
nullable: true
StorageDestinationInput:
type: object
required:
- storage_type
- storage_config
properties:
storage_type:
type: string
enum:
- AWS_S3
- GCP_GCS
description: 'Type of storage destination.
Example: "AWS_S3"'
storage_config:
$ref: '#/components/schemas/StorageConfigInput'
description: 'Storage-specific configuration settings.
Example: {"aws_s3_config": {"bucket_name": "my-webhook-files", "region": "us-west-2", "role_arn": "arn:aws:iam::123456789012:role/WebhookDeliveryRole", "external_id": "ts-webhook-a1b2c3d4-7890", "path_prefix": "webhook-deliveries/"}}'
description: Input type for storage destination configuration.
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.
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.
GcpGcsConfig:
type: object
required:
- bucket_name
- service_account_email
properties:
bucket_name:
type: string
description: Name of the GCS bucket where webhook payloads are stored.
service_account_email:
type: string
description: Email of the GCP service account to impersonate for bucket access.
path_prefix:
type: string
description: Path prefix for organizing objects within the bucket.
nullable: true
description: GCP GCS storage configuration details.
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.
Example: "my-webhook-files"'
region:
type: string
description: 'AWS region where the S3 bucket is located.
Example: "us-west-2"'
role_arn:
type: string
description: 'ARN of the IAM role to assume for S3 access.
Example: "arn:aws:iam::123456789012:role/WebhookDeliveryRole"'
external_id:
type: string
description: 'External ID for secure cross-account role assumption.
Example: "ts-webhook-a1b2c3d4-7890"'
nullable: true
path_prefix:
type: string
description: 'Optional path prefix for organizing objects within the bucket.
Example: "webhook-deliveries/"'
nullable: true
description: Input type for AWS S3 storage configuration.
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.
ErrorResponse:
type: object
properties:
error:
type: object
nullable: true
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.
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.
WebhookOrg:
type: object
required:
- id
- name
properties:
id:
type: string
description: Unique identifier of the org.
name:
type: string
description: Name of the org.
WebhookSignatureVerificationInput:
type: object
required:
- type
- header
- algorithm
- secret
properties:
type:
type: string
enum:
- HMAC_SHA256
description: Signature verification method type.
header:
type: string
description: HTTP header where the signature is sent.
algorithm:
type: string
enum:
- SHA256
description: Hash algorithm used for signature verification.
secret:
type: string
description: Shared secret used for HMAC signature generation.
DeleteWebhookConfigurationsRequest:
type: object
properties:
webhook_identifiers:
description: List of webhook identifiers to delete.
type: array
items:
type: string
required:
- webhook_identifiers
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.
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.
WebhookAuthOAuth2Input:
type: object
required:
- authorization_url
- client_id
- client_secret
properties:
authorization_url:
type: string
description: OAuth2 authorization server URL.
client_id:
type: string
description: OAuth2 client identifier.
client_secret:
type: string
description: OAuth2 client secret key.
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.
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
status:
type: string
enum:
- ENABLED
- DISABLED
description: 'Status of the webhook (ENABLED or DISABLED).
Only present when explicitly set.
Version: 26.7.0.cl or later'
nullable: true
StorageDestination:
type: object
required:
- storage_type
- storage_config
properties:
storage_type:
type: string
enum:
- AWS_S3
- GCP_GCS
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.
GcpGcsConfigInput:
type: object
required:
- bucket_name
- service_account_email
properties:
bucket_name:
type: string
description: 'Name of the GCS bucket where webhook payloads will be stored.
Example: "my-webhook-files"'
service_account_email:
type: string
description: 'Email of the GCP service account to impersonate for bucket access.
The platform''s service account must be granted roles/iam.serviceAccountTokenCreator on this SA.
Example: "my-sa@my-project.iam.gserviceaccount.com"'
path_prefix:
type: string
description: 'Optional path prefix for organizing objects within the bucket.
Example: "webhooks/"'
nullable: true
description: Input type for GCP GCS storage configuration.
StorageConfigInput:
type: object
properties:
aws_s3_config:
$ref: '#/components/schemas/AwsS3ConfigInput'
description: 'AWS S3 storage configuration.
Example: {"bucket_name": "my-webhook-files", "region": "us-west-2", "role_arn": "arn:aws:iam::123456789012:role/WebhookDeliveryRole", "external_id": "ts-webhook-a1b2c3d4-7890", "path_prefix": "webhook-deliveries/"}'
nullable: true
gcp_gcs_config:
$ref: '#/components/schemas/GcpGcsConfigInput'
description: 'GCP GCS storage configuration.
Example: {"bucket_name": "my-webhook-files", "service_account_email": "my-sa@my-project.iam.gserviceaccount.com", "path_prefix": "webhooks/"}
Version: 26.7.0.cl or later'
nullable: true
description: Input type for storage configuration.
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
StorageConfig:
type: object
properties:
aws_s3_config:
$ref: '#/components/schemas/AwsS3Config'
description: AWS S3 storage configuration.
nullable: true
gcp_gcs_config:
$ref: '#/components/schemas/GcpGcsConfig'
description: 'GCP GCS storage configuration.
Version: 26.7.0.cl or later'
nullable: true
description: Storage configuration containing provider-specific settings.
WebhookStorageConfigInfo:
type: object
required:
- storage_type
- provider
- config
properties:
storage_type:
type: string
enum:
- OBJECT_STORAGE
description: Type of storage destination.
provider:
type: string
enum:
- AWS_S3
- GCP_GCS
description: Storage destination provider.
config:
$ref: '#/components/schemas/WebhookStorageSetupConfig'
description: Setup configuration specific to the upload path.
description: Cluster-level storage setup information for configuring customer-managed storage.
WebhookAuthApiKeyInput:
type: object
required:
- key
- value
properties:
key:
type: string
description: The header or query parameter name for the API key.
value:
type: string
description: The API key value.
CreateWebhookConfigurationRequest:
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.
AWS S3 example: {"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/"}}}
GCP GCS example: {"storage_type": "GCP_GCS", "storage_config": {"gcp_gcs_config": {"bucket_name": "my-webhook-files", "service_account_email": "my-sa@my-project.iam.gserviceaccount.com", "path_prefix": "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.
Example: [{"key": "X-Custom-Header", "value": "custom_value"}]
Version: 26.4.0.cl or later'
type: array
items:
$ref: '#/components/schemas/WebhookKeyValuePairInput'
status:
description: 'Status of the webhook (ENABLED or DISABLED). Optional — when omitted,
status is not stored and will be absent from the response.
Version: 26.7.0.cl or later'
type: string
enum:
- ENABLED
- DISABLED
required:
- name
- url
- events
UpdateWebhookConfigurationRequest:
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.
AWS S3 example: {"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/"}}}
GCP GCS example: {"storage_type": "GCP_GCS", "storage_config": {"gcp_gcs_config": {"bucket_name": "my-webhook-files", "service_account_email": "my-sa@my-project.iam.gserviceaccount.com", "path_prefix": "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.
Example: [{"key": "X-Custom-Header", "value": "custom_value"}]
Version: 26.4.0.cl or later'
type: array
items:
$ref: '#/components/schemas/WebhookKeyValuePairInput'
status:
description: 'Status of the webhook (ENABLED or DISABLED).
Version: 26.7.0.cl or later'
type: string
enum:
- ENABLED
- DISABLED
reset_options:
description: 'List of optional configuration sections to clear. Each value removes the
corresponding configuration entirely from the webhook: AUTHENTICATION
removes the authentication config, SIGNATURE_VERIFICATION removes the
signature verification config, STORAGE_DESTINATION removes the storage
destination config.
Version: 26.7.0.cl or later'
type: array
items:
type: string
enum:
- AUTHENTICATION
- SIGNATURE_VERIFICATION
- STORAGE_DESTINATION
WebhookAuthBasicAuthInput:
type: object
required:
- username
- password
properties:
username:
type: string
description: Username for basic authentication.
password:
type: string
description: Password for basic authentication.
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
SearchWebhookConfigurationsRequest:
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'
status:
description: 'Filter webhooks by status (ENABLED or DISABLED).
Version: 26.7.0.cl or later'
type: string
enum:
- ENABLED
- DISABLED
WebhookAuthBasicAuth:
type: object
required:
- username
- password
properties:
username:
type: string
description: Username for basic authentication.
password:
type: string
description: Password for basic authentication.
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.
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.
WebhookStorageSetupConfig:
type: object
required:
- config_type
- setup_instructions
properties:
config_type:
type: string
enum:
- AWS_TO_S3_STORAGE
- GCP_TO_S3_STORAGE
- GCP_TO_GCS_STORAGE
description: 'Discriminator identifying the upload path. One of: AWS_TO_S3_STORAGE, GCP_TO_S3_STORAGE, GCP_TO_GCS_STORAGE.'
aws_account_id:
type: string
description: AWS Account ID of the platform. Populated for AWS_TO_S3_STORAGE. Include in your IAM role trust policy.
nullable: true
gcp_service_account_id:
type: string
description: GCP service account numeric ID of the platform (the 'sub' claim in OIDC tokens). Populated for GCP_TO_S3_STORAGE.
nullable: true
oidc_provider:
type: string
description: OIDC identity provider URL. Populated for GCP_TO_S3_STORAGE; always 'accounts.google.com' for GCP.
nullable: true
trust_policy_template:
type: object
description: Sample IAM trust policy JSON. Populated for AWS_TO_S3_STORAGE and GCP_TO_S3_STORAGE.
nullable: true
service_account_email:
type: string
description: GCP service account email of the platform. Populated for GCP_TO_GCS_STORAGE. Grant it roles/iam.serviceAccountTokenCreator on your service account.
nullable: true
required_role:
type: string
description: IAM role the customer must grant to the platform service account. Populated for GCP_TO_GCS_STORAGE.
nullable: true
setup_instructions:
type: array
items:
type: string
description: Step-by-step instructions to configure the storage destination.
description: 'Storage setup configuration for a specific upload path. The populated fields depend on config_type:
AWS_TO_S3_STORAGE: aws_account_id, trust_policy_template, setup_instructions.
GCP_TO_S3_STORAGE: gcp_service_account_id, oidc_provider, trust_policy_template, setup_instructions.
GCP_TO_GCS_STORAGE: service_account_email, required_role, setup_instructions.'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
x-roles:
- name: 26.2.0.cl
id: 26.2.0.cl
tags:
- 26.2.0.cl
description: Roles for version 26.2.0.cl
- name: 10.4.0.cl
id: 10.4.0.cl
tags:
- 10.4.0.cl
description: Roles for version 10.4.0.cl
- name: 26.7.0.cl
id: 26.7.0.cl
tags:
- 26.7.0.cl
description: Roles for version 26.7.0.cl
- name: 26.8.0.cl
id: 26.8.0.cl
tags:
- 26.8.0.cl
description: Roles for version 26.8.0.cl
- name: 26.6.0.cl
id: 26.6.0.cl
tags:
- 26.6.0.cl
description: Roles for version 26.6.0.cl
- name: 10.15.0.cl
id: 10.15.0.cl
tags:
- 10.15.0.cl
description: Roles for version 10.15.0.cl
- name: 10.13.0.cl
id: 10.13.0.cl
tags:
- 10.13.0.cl
description: Roles for version 10.13.0.cl
- name: 26.9.0.cl
id: 26.9.0.cl
tags:
- 26.9.0.cl
description: Roles for version 26.9.0.cl
- name: 10.7.0.cl
id: 10.7.0.cl
tags:
- 10.7.0.cl
description: Roles for version 10.7.0.cl
- name: 26.5.0.cl
id: 26.5.0.cl
tags:
- 26.5.0.cl
description: Roles for version 26.5.0.cl
- name: 9.0.0.cl
id: 9.0.0.cl
tags:
- 9.0.0.cl
description: Roles for version 9.0.0.cl
- name: 9.4.0.cl
id: 9.4.0.cl
tags:
- 9.4.0.cl
description: Roles for version 9.4.0.cl
- name: 9.12.0.cl
id: 9.12.0.cl
tags:
- 9.12.0.cl
description: Roles for version 9.12.0.cl
- name: 26.4.0.cl
id: 26.4.0.cl
tags:
- 26.4.0.cl
description: Roles for version 26.4.0.cl
- name: 10.12.0.cl
id: 10.12.0.cl
tags:
- 10.12.0.cl
description: Roles for version 10.12.0.cl
- name: 9.2.0.cl
id: 9.2.0.cl
tags:
- 9.2.0.cl
description: Roles for version 9.2.0.cl
- name: 9.9.0.cl
id: 9.9.0.cl
tags:
- 9.9.0.cl
description: Roles for version 9.9.0.cl
- name: 9.6.0.cl
id: 9.6.0.cl
tags:
- 9.6.0.cl
description: Roles for version 9.6.0.cl
- name: 10.10.0.cl
id: 10.10.0.cl
tags:
- 10.10.0.cl
description: Roles for version 10.10.0.cl
- name: 10.6.0.cl
id: 10.6.0.cl
tags:
- 10.6.0.cl
description: Roles for version 10.6.0.cl
- name: 10.3.0.cl
id: 10.3.0.cl
tags:
- 10.3.0.cl
description: Roles for version 10.3.0.cl
- name: 10.1.0.cl
id: 10.1.0.cl
tags:
- 10.1.0.cl
description: Roles for version 10.1.0.cl
- name: 10.9.0.cl
id: 10.9.0.cl
tags:
- 10.9.0.cl
description: Roles for version 10.9.0.cl
- name: 10.8.0.cl
id: 10.8.0.cl
tags:
- 10.8.0.cl
description: Roles for version 10.8.0.cl
- name: 9.5.0.cl
id: 9.5.0.cl
tags:
- 9.5.0.cl
description: Roles for version 9.5.0.cl
- name: 26.3.0.cl
id: 26.3.0.cl
tags:
- 26.3.0.cl
description: Roles for version 26.3.0.cl
- name: 10.14.0.cl
id: 10.14.0.cl
tags:
- 10.14.0.cl
description: Roles for version 10.14.0.cl
- name: 9.7.0.cl
id: 9.7.0.cl
tags:
- 9.7.0.cl
description: Roles for version 9.7.0.cl