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