openapi: 3.0.0
info:
title: ThoughtSpot Public REST 10.1.0.cl Security API
version: '2.0'
servers:
- url: '{base-url}'
variables:
base-url:
default: https://localhost:443
security:
- bearerAuth: []
tags:
- name: Security
paths:
/api/rest/2.0/security/metadata/assign:
post:
operationId: assignChangeAuthor
description: "\n <span class=\"since-beta-tag\">Version: 9.0.0.cl or later</span>\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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AssignChangeAuthorRequest'
required: true
parameters: []
responses:
'204':
description: Author assignment for given metadata objects is successful.
'400':
description: Invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/rest/2.0/security/column/rules/fetch:
post:
operationId: fetchColumnSecurityRules
description: "\n<span class=\"since-beta-tag\">Beta</span> <span class=\"since-beta-tag\">Version: 10.12.0.cl or later</span>\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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FetchColumnSecurityRulesRequest'
required: true
parameters: []
responses:
'200':
description: Successfully fetched column security rules
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ColumnSecurityRuleResponse'
'400':
description: Bad request - Table not found or invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden - User doesn't have permission to access security rules for this table
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/rest/2.0/security/metadata/fetch-object-privileges:
post:
operationId: fetchObjectPrivileges
description: "\n <span class=\"since-beta-tag\">Version: 26.3.0.cl or later</span>\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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FetchObjectPrivilegesRequest'
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
description: "\n <span class=\"since-beta-tag\">Version: 9.0.0.cl or later</span>\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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FetchPermissionsOfPrincipalsRequest'
required: true
parameters: []
responses:
'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.
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/fetch-permissions:
post:
operationId: fetchPermissionsOnMetadata
description: "\n <span class=\"since-beta-tag\">Version: 9.0.0.cl or later</span>\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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FetchPermissionsOnMetadataRequest'
required: true
parameters: []
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: []
'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/manage-object-privilege:
post:
operationId: manageObjectPrivilege
description: "\n <span class=\"since-beta-tag\">Version: 26.3.0.cl or later</span>\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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ManageObjectPrivilegeRequest'
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: "\n <span class=\"since-beta-tag\">Version: 26.5.0.cl or later</span>\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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublishMetadataRequest'
required: true
parameters: []
responses:
'204':
description: Publishing metadata objects is successful.
'400':
description: Invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden access.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/rest/2.0/security/metadata/share:
post:
operationId: shareMetadata
description: "\n <span class=\"since-beta-tag\">Version: 9.0.0.cl or later</span>\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
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:
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/unpublish:
post:
operationId: unpublishMetadata
description: "\n <span class=\"since-beta-tag\">Version: 26.5.0.cl or later</span>\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
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:
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/column/rules/update:
post:
operationId: updateColumnSecurityRules
description: "\n<span class=\"since-beta-tag\">Beta</span> <span class=\"since-beta-tag\">Version: 10.12.0.cl or later</span>\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
# --- truncated at 32 KB (57 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/thoughtspot/refs/heads/main/openapi/thoughtspot-security-api-openapi.yml