# generated: '2026-08-29' # method: searched # source: https://docs.soda.io/reference/soda-apis/rest-api/ — assembled from the OpenAPI 3.1.0 # documents Soda publishes inline on each REST API reference page (16 pages, 103 operations, # zero conflicting definitions). Ownership: info.title 'Soda Cloud API v4', servers # https://cloud.soda.io + https://cloud.us.soda.io — Soda's own hosts. openapi: 3.1.0 info: title: Soda Cloud API v4 version: v1 description: The Soda Cloud REST API (v4 public API). Assembled verbatim from the OpenAPI 3.1.0 documents Soda publishes inside each REST API reference page at https://docs.soda.io/reference/soda-apis/rest-api/. contact: name: Soda url: https://www.soda.io servers: - description: Cloud EU url: https://cloud.soda.io - description: Cloud US url: https://cloud.us.soda.io security: - basicAuthApiKey: [] - cookieToken: [] tags: - name: Attributes description: Soda Cloud API Attribute Endpoints - name: Checks description: Soda Cloud API Check Endpoints - name: Contracts description: Soda Cloud API Contract Endpoints - name: Data Standards description: Soda Cloud API Data Standard Endpoints - name: Datasets description: Soda Cloud API Dataset Endpoints - name: Datasources description: Soda Cloud API Datasource Endpoints - name: Discovered Datasets description: Soda Cloud API Discovered Dataset Endpoints - name: Incidents description: Soda Cloud API Incidents Endpoints - name: Licensing description: Soda Cloud API Licensing Endpoints - name: Notification Rules description: Soda Cloud API Notification Rule Endpoints - name: Runners description: Soda Cloud API Runner Endpoints - name: Scans description: Soda Cloud API Scan Endpoints - name: Secrets description: Soda Cloud API Secret Endpoints - name: Users description: Soda Cloud API Users Endpoints - name: Utility description: Soda Cloud API Utility Endpoints paths: /api/v1/attributes: get: description: 'This endpoint enables you to list the attributes available in your organization''s Soda Cloud account. Optionally filter by resource type using the `resourceType` query parameter. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 1000. - `page`: Supply an integer value. The default value is 0. - `resourceType`: Optional. Filter by resource type (`dataset`, `check`, or `column`). ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Any Soda Cloud user in your organization may execute this query. ## Tags `Attributes` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/attributes parameters: - in: query name: page schema: type: integer format: int32 - in: query name: resourceType schema: type: object $ref: '#/components/schemas/AttributeResourceTypeDTO' - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListAttributesResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List attributes tags: - Attributes post: description: 'This endpoint enables you to create a new attribute in your organization''s Soda Cloud account. Attributes are scoped to a resource type (dataset, check, or column). Once an attribute is created, it can be set on the associated resource type. Attributes can be used to configure notification rules, dashboards, filters, etc. For example sending email alerts when checks marked as critical fail. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ATTRIBUTES to execute this call. ## Tags `Attributes` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/attributes requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateAttributeRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateAttributeResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create an attribute tags: - Attributes /api/v1/attributes/{attributeId}: post: description: 'This endpoint enables you to update an existing attribute in your organization''s Soda Cloud account. Only label, description, and allowedValues (for select types) can be updated. When updating allowedValues, existing attribute values on resources are left in place, even if they are no longer in the allowed set. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ATTRIBUTES to execute this call. ## Tags `Attributes` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/attributes/{attributeId} parameters: - in: path name: attributeId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateAttributeRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateAttributeResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update an attribute tags: - Attributes delete: description: 'This endpoint enables you to delete an existing attribute from your organization''s Soda Cloud account. The attribute will be removed from any resources where it is set. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ATTRIBUTES to execute this call. ## Tags `Attributes` ## Rate limiting 100 requests/60 seconds' operationId: DELETE/api/v1/attributes/{attributeId} parameters: - in: path name: attributeId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteAttributeResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete an attribute tags: - Attributes /api/v1/checks: get: description: 'This endpoint enables you to gather information about the checks that in exist in your organization''s Soda Cloud account, including information about the datasets and agreements with which they are associated and the incidents to which they are linked. . This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. - `datasetId`: Optionally, use this parameter to collect only the information for checks associated with a specific dataset. Find the `datasetId` in the URL of the dataset page in Soda Cloud. - `dataStandardId`: Optionally, use this parameter to collect only the information for checks belonging to a specific data standard. Find the `dataStandardId` in the URL of the data standard page in Soda Cloud. - `checkIds`: Optionally, use this parameter to collect only the information for a specific batch of checks. Provide multiple values as a comma-separated list of check IDs, which you can find on the individual check pages in Soda Cloud. This query parameter is limited to 1000 check IDs and it can''t be combined with other query parameters like `page`, `datasetId`, `size`. If not specified, the query gathers information for all checks in the account and sorts the results by check name in ascending order. ## Authorization Soda only returns the checks linked to datasets to which the user has **View dataset** permissions. Soda Cloud Admins have access to all checks.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Checks` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/checks parameters: - in: query name: checkIds schema: type: string - in: query name: dataStandardId schema: type: string - in: query name: datasetId schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiChecksResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Check information tags: - Checks /api/v1/checks/{checkId}: delete: description: 'This endpoint allows you to delete a specific check in your organization''s Soda Cloud account. ## Authorization Only users with **Manage checks** permission (V3 datasets) or **Manage contracts** permission (V4 datasets) can delete checks. Soda Cloud Admins can delete checks for all datasets. **See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Checks` ## Rate limiting 1000 requests/60 seconds' operationId: DELETE/api/v1/checks/{checkId} parameters: - in: path name: checkId required: true schema: type: string responses: '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a check tags: - Checks /api/v1/contracts: get: description: 'This endpoint allows you to list contracts in your organization. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. - `datasetId`: Optionally, use this parameter to list only the contracts for a specific dataset. - `datasetQualifiedName`: Optionally, use this parameter instead of `datasetId` to identify the dataset by its qualified name. Do not supply both `datasetId` and `datasetQualifiedName`. ## Authorization When filtering by dataset, only users with **View dataset** permission on the specified dataset can list its contracts. When no dataset filter is supplied, all contracts in the organization are returned. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/contracts parameters: - in: query name: datasetId schema: type: string - in: query name: datasetQualifiedName schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListContractsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List contracts tags: - Contracts post: description: 'This endpoint allows you to create a new contract on a dataset. The contract is initialized with a template containing the dataset identifier and an empty columns list. Use the publish endpoint to replace this with your full contract YAML. Provide either `datasetId` or `datasetQualifiedName` in the request body to identify the target dataset. Exactly one must be supplied. If both are supplied, the request is rejected with a 400 error. ## Authorization Only users with **Manage contracts** permission can create contracts. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/contracts requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateContractRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateContractResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a contract tags: - Contracts /api/v1/contracts/actions/createSkeleton: post: description: 'Triggers skeleton contract generation for a single dataset based on its schema. The dataset must be connected to a Soda Runner and must not already have a published contract. Provide either `datasetId` (UUID) or `datasetQualifiedName` (e.g. `my_datasource/my_schema/my_table`). Exactly one must be supplied. Returns `202 Accepted` with a `Location` header pointing to the status endpoint. Use the status endpoint to monitor the progress of the skeleton generation. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/contracts/actions/createSkeleton requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateSkeletonContractRequestDTO' required: true responses: '202': description: Accepted headers: Location: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Generate skeleton contract tags: - Contracts /api/v1/contracts/actions/createSkeleton/{operationId}: get: description: 'Returns the status of a skeleton contract generation operation that was triggered via the **Generate skeleton contract** endpoint. The `operationId` is the last path segment of the `Location` header returned by the **Generate skeleton contract** response. The response includes the operation state, dataset information, and creation timestamp. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/contracts/actions/createSkeleton/{operationId} parameters: - in: path name: operationId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateSkeletonContractStatusResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get skeleton contract generation status tags: - Contracts /api/v1/contracts/actions/generate: post: description: 'Triggers AI-powered contract generation for one or more datasets. The contract generation runs asynchronously. Each dataset must be connected to a Soda Runner and must not already have a contract. If any dataset is not eligible, the request is rejected with a `400` response listing the ineligible datasets and reasons. Provide `datasetIds` (list of UUIDs) and/or `datasetQualifiedNames` (list of qualified names, e.g. `my_datasource/my_schema/my_table`). Both lists are additive. At least one must be non-empty. Returns `202 Accepted` with a `Location` header pointing to the status endpoint. Use the status endpoint to monitor the progress of the contract generation. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/contracts/actions/generate requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiGenerateContractRequestDTO' required: true responses: '202': description: Accepted headers: Location: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Generate contracts tags: - Contracts /api/v1/contracts/actions/generate/{operationId}: get: description: 'Returns the status of a contract generation operation that was triggered via the **Generate contracts** endpoint. The `operationId` is the last path segment of the `Location` header returned by the **Generate contracts** response. While the operation is ongoing, only the operation state is returned (`datasets` will be `null`). Once the operation reaches a terminal state (completed, failed, or canceled), the full per-dataset scan details are included. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/contracts/actions/generate/{operationId} parameters: - in: path name: operationId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiGenerateContractStatusResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get contract generation status tags: - Contracts /api/v1/contracts/{contractId}: get: description: 'This endpoint allows you to retrieve a specific contract, including its YAML content. ## Authorization Only users with **View dataset** permission can view contracts. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/contracts/{contractId} parameters: - in: path name: contractId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiGetContractResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get a contract tags: - Contracts post: description: 'This endpoint allows you to publish new YAML content for an existing contract. The `contents` field must contain valid Soda contract YAML. If the YAML is malformed or does not conform to the contract schema, the request is rejected with a 400 error. The `dataset` in the YAML must name the dataset that `contractId` belongs to. Contents naming a different dataset are rejected with a 400 error. ## Authorization Only users with **Manage contracts** permission can publish contracts. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/contracts/{contractId} parameters: - in: path name: contractId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiPublishContractRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiPublishContractResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Publish a contract tags: - Contracts /api/v1/contracts/{contractId}/verify: post: description: 'This endpoint triggers a contract verification scan for the specified contract. The response, when successful, is `201` and contains headers `Location` and `X-Soda-Scan-Id` which identify the triggered scan. Use the value of `X-Soda-Scan-Id` in the `scanId` parameter of the **Get scan status**, **Get scan logs**, and **Cancel a scan** endpoints. Optionally, you can provide `checkPaths` to limit verification to specific checks within the contract. Note: `checkPaths` may not be available for all organizations. ## Authorization Only users with **Manage contracts** permission can verify contracts. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/contracts/{contractId}/verify parameters: - in: path name: contractId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiVerifyContractRequestDTO' required: true responses: '201': description: Created headers: Location: schema: type: string X-Soda-Scan-Id: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Verify a contract tags: - Contracts /api/v1/contracts/{contractId}/versions: get: description: 'This endpoint allows you to list versions of a specific contract. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. - `createdBefore`: Optionally, supply a UTC datetime value (ISO 8601, e.g. `2024-01-15T10:30:00`) to only return versions created strictly before this timestamp. Use this for consistent pagination. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Contracts` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/contracts/{contractId}/versions parameters: - in: path name: contractId required: true schema: type: string - in: query name: createdBefore schema: type: string format: date-time - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListContractVersionsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List contract versions tags: - Contracts /api/v1/dataStandards: get: description: 'This endpoint allows you to list the data standards in your organization. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 1 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. - `search`: Optionally, use this parameter to perform a fuzzy search on the data standard name and label. - `status`: Optionally, use this parameter to list only data standards with a given status (`draft`, `active`, `paused`, or `invalid`). - `sort`: Optionally, sort the results by `name` (default) or `label`. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Data Standards` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/dataStandards parameters: - in: query name: page schema: type: integer format: int32 - in: query name: search schema: type: string - in: query name: size schema: type: integer format: int32 - in: query name: sort schema: type: object $ref: '#/components/schemas/DataStandardSortFieldDTO' - in: query name: status schema: type: object $ref: '#/components/schemas/DataStandardStatusDTO' responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListDataStandardsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List data standards tags: - Data Standards post: description: 'This endpoint allows you to create a new data standard from YAML contents, a structured scope, status, owners and an optional schedule. The `contents` field must contain valid data standard YAML. If the YAML is malformed, the request is rejected with a 400 error. ## Authorization Only users with **Manage data standards** permission can create data standards. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATA_STANDARDS to execute this call. ## Tags `Data Standards` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/dataStandards requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDataStandardRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateDataStandardResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a data standard tags: - Data Standards /api/v1/dataStandards/actions/execute: post: description: 'This endpoint triggers a scan that runs the active data standards linked to the specified dataset. The response, when successful, is `201` and contains the header `X-Soda-Scan-Id` and a `Location` header which identify the triggered scan. Use the value of `X-Soda-Scan-Id` in the `scanId` parameter of the **Get scan status**, **Get scan logs**, and **Cancel a scan** endpoints. ## Authorization Only users with **Manage data standards** permission can execute data standards. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATA_STANDARDS to execute this call. ## Tags `Data Standards` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/dataStandards/actions/execute requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiExecuteDataStandardsRequestDTO' required: true responses: '201': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiExecuteDataStandardsResponse' description: Created '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Execute data standards for a dataset tags: - Data Standards /api/v1/dataStandards/actions/previewScope: post: description: 'This endpoint evaluates a candidate scope and returns the datasets that would match it, without creating or modifying any data standard. The `scope` uses the same structured rule grammar as the create-data-standard endpoint. An omitted or empty scope matches **all** datasets, mirroring how a data standard without a scope applies to every dataset. Results are paged with `page` (0-based, default 0) and `size` (between 1 and 1000, default 10). ## Authorization Only users with **Manage data standards** permission can preview a data standard scope. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATA_STANDARDS to execute this call. ## Tags `Data Standards` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/dataStandards/actions/previewScope requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiPreviewDataStandardScopeRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiPreviewDataStandardScopeResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Preview the datasets matching a data standard scope tags: - Data Standards /api/v1/dataStandards/actions/test: post: description: 'This endpoint runs the checks of an unsaved data standard against one dataset''s live data, without creating or modifying any data standard. The tested standard does not appear in your data standards and no checks or check results are persisted; the outcome is only visible on the triggered scan. The `contents` field must contain valid data standard YAML. If the YAML is malformed, the request is rejected with a 400 error. The response, when successful, is `201` and contains the header `X-Soda-Scan-Id` and a `Location` header which identify the triggered scan. Use the value of `X-Soda-Scan-Id` in the `scanId` parameter of the **Get scan status**, **Get scan logs**, and **Cancel a scan** endpoints. ## Authorization Only users with **Manage data standards** permission who can view the dataset''s datasource can test a data standard. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATA_STANDARDS to execute this call. ## Tags `Data Standards` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/dataStandards/actions/test requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiTestDataStandardRequestDTO' required: true responses: '201': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiTestDataStandardResponse' description: Created '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Test a data standard against a dataset tags: - Data Standards /api/v1/dataStandards/activity: get: description: 'This endpoint returns an organization-wide rollup of data standards activity, including counts of active and total standards, matched datasets, and check results. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Data Standards` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/dataStandards/activity responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDataStandardsActivityResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Data standards activity tags: - Data Standards /api/v1/dataStandards/{dataStandardId}: get: description: 'This endpoint allows you to retrieve a specific data standard, including its YAML contents and scope. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Data Standards` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/dataStandards/{dataStandardId} parameters: - in: path name: dataStandardId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiGetDataStandardResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get a data standard tags: - Data Standards post: description: 'This endpoint allows you to replace an existing data standard''s YAML contents, scope, status, owners and schedule. The `contents` field must contain valid data standard YAML. If the YAML is malformed, the request is rejected with a 400 error. ## Authorization Only users with **Manage data standards** permission can update data standards. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATA_STANDARDS to execute this call. ## Tags `Data Standards` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/dataStandards/{dataStandardId} parameters: - in: path name: dataStandardId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDataStandardRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDataStandardResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update a data standard tags: - Data Standards delete: description: 'Schedules a data standard for deletion. Deletion is processed asynchronously: the standard and its dataset associations, owners and YAML file are removed in the background. ## Authorization Only users with **Manage data standards** permission can delete data standards. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATA_STANDARDS to execute this call. ## Tags `Data Standards` ## Rate limiting 100 requests/60 seconds' operationId: DELETE/api/v1/dataStandards/{dataStandardId} parameters: - in: path name: dataStandardId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteDataStandardResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a data standard tags: - Data Standards /api/v1/dataStandards/{dataStandardId}/actions/evaluateScope: post: description: 'This endpoint re-evaluates a data standard''s scope and returns the ids of the datasets that currently match it. ## Authorization Only users with **Manage data standards** permission can evaluate a data standard''s scope. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATA_STANDARDS to execute this call. ## Tags `Data Standards` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/dataStandards/{dataStandardId}/actions/evaluateScope parameters: - in: path name: dataStandardId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiEvaluateDataStandardScopeResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Evaluate a data standard's scope tags: - Data Standards /api/v1/dataStandards/{dataStandardId}/actions/status: post: description: 'This endpoint transitions a data standard to a new status without modifying its contents, scope, owners or schedule. Allowed transitions are validated; an invalid transition is rejected with a 400 error. ## Authorization Only users with **Manage data standards** permission can update a data standard''s status. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATA_STANDARDS to execute this call. ## Tags `Data Standards` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/dataStandards/{dataStandardId}/actions/status parameters: - in: path name: dataStandardId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDataStandardStatusRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDataStandardStatusResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update a data standard's status tags: - Data Standards /api/v1/dataStandards/{dataStandardId}/checks: get: description: 'This endpoint allows you to list the aggregated checks of a specific data standard. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 1 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Data Standards` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/dataStandards/{dataStandardId}/checks parameters: - in: path name: dataStandardId required: true schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListDataStandardChecksResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List data standard checks tags: - Data Standards /api/v1/dataStandards/{dataStandardId}/datasets: get: description: 'This endpoint allows you to list the datasets matched by a specific data standard. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 1 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Data Standards` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/dataStandards/{dataStandardId}/datasets parameters: - in: path name: dataStandardId required: true schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListDataStandardDatasetsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List data standard datasets tags: - Data Standards /api/v1/datasets: get: description: 'This endpoint enables you to gather information about the datasets that in exist in your organization''s Soda Cloud account, including information about the Soda Cloud resources with which it is associated, such as data source, incidents, attributes and health status. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. - `from`: Optionally, use this parameter to collect only the information for datasets that have been updated after a particular point in time. Supply an ISO8601 timestamp value. Example: `2023-12-31T10:15:30+01:00` - `datasourceName`: Optionally, use this parameter to collect only the information for datasets associated with a specific datasource. - `search`: Optionally, use this parameter to perform a fuzzy search on the dataset name. If not specified, the query gathers information for all datasets in the account and sorts the results first by dataset name and then by datasource name in ascending order. ## Authorization Soda only returns the datasets to which the user has **View dataset** permissions. Soda Cloud Admins have access to all datasets.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 30 requests/60 seconds' operationId: GET/api/v1/datasets parameters: - in: query name: datasourceName schema: type: string - in: query name: from schema: type: string format: date-time - in: query name: page schema: type: integer format: int32 - in: query name: search schema: type: string - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasetsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Dataset information tags: - Datasets /api/v1/datasets/byDatasetQualifiedName/{datasetQualifiedName}: get: description: 'This endpoint enables you to retrieve a single dataset by its qualified name (contractIdentifier) from your organization''s Soda Cloud account. ## Authorization Only users with **View dataset** permission can view a dataset. Soda Cloud Admins have permission to view any dataset. **See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/datasets/byDatasetQualifiedName/{datasetQualifiedName} parameters: - in: path name: datasetQualifiedName required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/DatasetsContentDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get dataset by qualified name tags: - Datasets /api/v1/datasets/roles: get: description: 'This endpoint enables you to gather information about the dataset roles available in your organization''s Soda Cloud account. Use the dataset roles to manage access to individual datasets. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 100, inclusive. The default value is 100. - `page`: Supply an integer value. The default value is 0. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Any Soda Cloud user in your organization may execute this query. ## Tags `Datasets` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/datasets/roles parameters: - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasetRolesResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List dataset roles tags: - Datasets post: description: 'This endpoint allows you to create a new custom dataset role in your organization''s Soda Cloud account. Dataset roles define a named set of permissions that control what actions users can perform on individual datasets, such as managing checks, viewing profiling data, configuring the dataset, or managing incidents. Once created, the role can be assigned to users or user groups via the dataset responsibilities endpoints. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Datasets` ## Rate limiting 60 requests/60 seconds' operationId: POST/api/v1/datasets/roles requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasetRoleRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateDatasetRoleResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a dataset role tags: - Datasets /api/v1/datasets/roles/{roleId}: post: description: 'This endpoint allows you to update the name or permissions of an existing custom dataset role. Dataset roles define a named set of permissions that control what actions users can perform on individual datasets, such as managing checks, viewing profiling data, configuring the dataset, or managing incidents. Changes apply immediately to all users and user groups assigned this role. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Datasets` ## Rate limiting 60 requests/60 seconds' operationId: POST/api/v1/datasets/roles/{roleId} parameters: - in: path name: roleId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasetRoleRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDatasetRoleResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update a dataset role tags: - Datasets delete: description: 'This endpoint allows you to delete a custom dataset role from your organization''s Soda Cloud account. Dataset roles define a named set of permissions that control what actions users can perform on individual datasets, such as managing checks, viewing profiling data, configuring the dataset, or managing incidents. Deletion is performed asynchronously and may take some time to complete. Deletion will fail if the role is still assigned to any dataset permissions or used in responsibility settings. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Datasets` ## Rate limiting 60 requests/60 seconds' operationId: DELETE/api/v1/datasets/roles/{roleId} parameters: - in: path name: roleId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteDatasetRoleResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a dataset role tags: - Datasets /api/v1/datasets/{datasetId}: get: description: 'This endpoint enables you to retrieve a single dataset by its ID from your organization''s Soda Cloud account. ## Authorization Only users with **View dataset** permission can view a dataset. Soda Cloud Admins have permission to view any dataset. **See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/datasets/{datasetId} parameters: - in: path name: datasetId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/DatasetsContentDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get dataset tags: - Datasets post: description: 'This endpoint enables you to update an existing dataset properties in your organization''s Soda Cloud account. ## Authorization Only users with **Configure dataset** permission can update dataset properties. Soda Cloud Admins have permission to update all datasets.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/datasets/{datasetId} parameters: - in: path name: datasetId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDatasetDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/DatasetsContentDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update dataset tags: - Datasets delete: description: "This endpoint enables you to delete an existing dataset in your organization's Soda\ \ Cloud account. \n\nDeletion is not immediate and can take some time to complete, depending on\ \ the size of your dataset. You can check the status of the deletion by calling the **Get dataset**\ \ endpoint.\n\n## Authorization\n\nOnly users with **Delete dataset** permission can delete a\ \ dataset. Soda Cloud Admins have permission to delete any dataset.**See [Manage dataset roles](https://go.soda.io/roles-dataset)\ \ for more information.**\n\n## Authentication\n\nUser authentication required: `true`\n\nThis\ \ endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated\ \ token in HTTP cookie `token`. Cookie sessions extend automatically on each request.\n\n## Tags\n\ \n`Datasets`\n\n## Rate limiting\n\n10 requests/60 seconds" operationId: DELETE/api/v1/datasets/{datasetId} parameters: - in: path name: datasetId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteDatasetResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete dataset tags: - Datasets /api/v1/datasets/{datasetId}/columnAttributes: post: description: 'Upsert attribute values on the columns of a dataset. The request body maps a column name to a map of attribute-name to value. Setting one attribute on a column does not affect other attribute values on the same column. If any column or attribute name is unknown, or any value has the wrong type, the entire request is rejected and no changes are persisted. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have dataset role permission CONFIGURE_DATASET to execute this call. ## Tags `Datasets` ## Rate limiting 60 requests/60 seconds' operationId: POST/api/v1/datasets/{datasetId}/columnAttributes parameters: - in: path name: datasetId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiSetColumnAttributesRequestDTO' required: true responses: '200': description: Successful response headers: Location: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Set column attribute values in bulk tags: - Datasets /api/v1/datasets/{datasetId}/columnMetricMonitors: post: description: 'This endpoint allows you to create a new column metric monitor for a specific dataset in your organization''s Soda Cloud account. ## Authorization Only users with **Manage checks** permission (V3 datasets) or **Manage contracts** permission (V4 datasets) can create column metric monitors. Soda Cloud Admins can create column metric monitors for all datasets.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/datasets/{datasetId}/columnMetricMonitors parameters: - in: path name: datasetId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateColumnMetricMonitorRequestDTO' required: true responses: '201': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateColumnMetricMonitorResponse' description: Created '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a column metric monitor tags: - Datasets /api/v1/datasets/{datasetId}/columnMetricMonitors/{monitorId}: post: description: 'This endpoint allows you to update an existing column metric monitor for a specific dataset in your organization''s Soda Cloud account. ## Authorization Only users with **Manage checks** permission (V3 datasets) or **Manage contracts** permission (V4 datasets) can update column metric monitors. Soda Cloud Admins can update column metric monitors for all datasets. **See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/datasets/{datasetId}/columnMetricMonitors/{monitorId} parameters: - in: path name: datasetId required: true schema: type: string - in: path name: monitorId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateColumnMetricMonitorRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateColumnMetricMonitorResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update a column metric monitor tags: - Datasets delete: description: 'This endpoint allows you to delete a column metric monitor for a specific dataset in your organization''s Soda Cloud account. ## Authorization Only users with **Manage checks** permission (V3 datasets) or **Manage contracts** permission (V4 datasets) can delete column metric monitors. Soda Cloud Admins can delete column metric monitors for all datasets. **See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: DELETE/api/v1/datasets/{datasetId}/columnMetricMonitors/{monitorId} parameters: - in: path name: datasetId required: true schema: type: string - in: path name: monitorId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteColumnMetricMonitorResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a column metric monitor tags: - Datasets /api/v1/datasets/{datasetId}/columns: get: description: 'Returns the active columns of a dataset, each with the attribute values currently assigned to it. Columns are ordered by name ascending. Columns with no assigned attribute values are returned with an empty `attributes` map. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 1000. - `page`: Supply a non-negative integer. The default value is 0. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have dataset role permission VIEW to execute this call. ## Tags `Datasets` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/datasets/{datasetId}/columns parameters: - in: path name: datasetId required: true schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListDatasetColumnsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List the active columns of a dataset with their attribute values tags: - Datasets /api/v1/datasets/{datasetId}/computeWarehouse: get: description: 'This endpoint retrieves the compute warehouse configuration for a specific dataset in your organization''s Soda Cloud account. When the compute warehouse configuration is enabled, the warehouse in the configuration will be used for compute-heavy tasks like data contract execution, metric monitoring, and profiling. ## Authorization Only users with **View dataset** permission can retrieve dataset compute warehouse configuration. Soda Cloud Admins have permission to view all datasets.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: GET/api/v1/datasets/{datasetId}/computeWarehouse parameters: - in: path name: datasetId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/DatasetComputeWarehouseConfigurationDTO' description: Successful response '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get dataset compute warehouse configuration tags: - Datasets /api/v1/datasets/{datasetId}/customSqlMonitors: post: description: 'This endpoint allows you to create a new custom SQL monitor for a specific dataset in your organization''s Soda Cloud account. ## Authorization Only users with **Manage contracts** permission can create custom SQL monitors. Soda Cloud Admins can create custom SQL monitors for all datasets.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/datasets/{datasetId}/customSqlMonitors parameters: - in: path name: datasetId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateCustomSqlMonitorRequestDTO' required: true responses: '201': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateCustomSqlMonitorResponse' description: Created '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a custom SQL monitor tags: - Datasets /api/v1/datasets/{datasetId}/customSqlMonitors/{monitorId}: post: description: 'This endpoint allows you to update an existing custom SQL monitor for a specific dataset in your organization''s Soda Cloud account. ## Authorization Only users with **Manage contracts** permission can update custom SQL monitors. Soda Cloud Admins can update custom SQL monitors for all datasets. **See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/datasets/{datasetId}/customSqlMonitors/{monitorId} parameters: - in: path name: datasetId required: true schema: type: string - in: path name: monitorId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateCustomSqlMonitorRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateCustomSqlMonitorResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update a custom SQL monitor tags: - Datasets delete: description: 'This endpoint allows you to delete a custom SQL monitor for a specific dataset in your organization''s Soda Cloud account. ## Authorization Only users with **Manage contracts** permission can delete custom SQL monitors. Soda Cloud Admins can delete custom SQL monitors for all datasets. **See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: DELETE/api/v1/datasets/{datasetId}/customSqlMonitors/{monitorId} parameters: - in: path name: datasetId required: true schema: type: string - in: path name: monitorId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteCustomSqlMonitorResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a custom SQL monitor tags: - Datasets /api/v1/datasets/{datasetId}/diagnosticsWarehouse: get: description: 'This endpoint allows you to retrieve detailed diagnostics warehouse information for a specific dataset in your organization''s Soda Cloud account. The diagnostics warehouse collects scan-related data and securely forwards it to the customer''s warehouse for storage and analysis. ## Authorization Only users with **View dataset** permission can view dataset diagnostics warehouse. Soda Cloud Admins have access to diagnostics warehouse information for all datasets.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/datasets/{datasetId}/diagnosticsWarehouse parameters: - in: path name: datasetId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasetDiagnosticsWarehouseResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get dataset diagnostics warehouse information tags: - Datasets /api/v1/datasets/{datasetId}/metricMonitoring: get: description: 'This endpoint allows you to retrieve detailed metric monitoring configuration information for a specific dataset in your organization''s Soda Cloud account. ## Authorization Only users with **View dataset** permission can view dataset metric monitoring configuration. Soda Cloud Admins have access to metric monitoring configuration information for all datasets.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/datasets/{datasetId}/metricMonitoring parameters: - in: path name: datasetId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasetMetricMonitoringResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get dataset metric monitoring configuration information tags: - Datasets /api/v1/datasets/{datasetId}/metricMonitoring/historicalMetricCollection: post: description: 'This endpoint triggers a historical metric collection scan for a specific dataset in your organization''s Soda Cloud account. The dataset must have metric monitoring enabled and a historical collection scan definition configured. The response includes the scan ID and a Location header pointing to the scan status endpoint. ## Authorization Only users with **Manage contracts** permission can run historical metric collection. Soda Cloud Admins have access to run historical metric collection for all datasets. **See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/datasets/{datasetId}/metricMonitoring/historicalMetricCollection parameters: - in: path name: datasetId required: true schema: type: string responses: '201': description: Created headers: Location: schema: type: string X-Soda-Scan-Id: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Run historical metric collection for a dataset tags: - Datasets /api/v1/datasets/{datasetId}/profiling: get: description: 'This endpoint allows you to retrieve detailed profiling information for a specific dataset in your organization''s Soda Cloud account. Profiling information provides insights into the dataset''s structure, statistical summaries, and data characteristics. ## Authorization Only users with **Access dataset profiling and sampling** permission can view dataset profiling. Soda Cloud Admins have access to profiling information for all datasets.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/datasets/{datasetId}/profiling parameters: - in: path name: datasetId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasetProfilingResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get dataset profiling information tags: - Datasets /api/v1/datasets/{datasetId}/responsibilities: get: description: 'This endpoint enables you to gather information about the user and user groups permissions assigned to a dataset, and their associated roles in your organization''s Soda Cloud account. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 1 and 100, inclusive. The default value is 100. - `page`: Supply an integer value. The default value is 0. ## Authorization Soda only returns the dataset responsibilities to which the user has **View dataset** permissions. Soda Cloud Admins have access to all dataset responsibilities.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: GET/api/v1/datasets/{datasetId}/responsibilities parameters: - in: path name: datasetId required: true schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasetResponsibilitiesResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List dataset responsibilities tags: - Datasets post: description: 'This endpoint enables you to update the user and user groups permissions and their associated roles for a dataset in your organization''s Soda Cloud account. **Note**: This API fully replaces the existing responsibilities. The entire list of responsibilities must be provided in the request, including both new and existing entries, as any omissions will result in their removal. ## Authorization Only users with **Manage dataset responsibilities** permission can update dataset responsibilities. Soda Cloud Admins have permission to update all datasets responsibilities.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.**The Response of this call, when successful, is `201` and contains header `Location` which identify the URL where the responsibilities will eventually become available. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasets` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/datasets/{datasetId}/responsibilities parameters: - in: path name: datasetId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDatasetResponsibilitiesRequestDTO' required: true responses: '201': description: Created headers: Location: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update dataset responsibilities tags: - Datasets /api/v1/datasources: get: description: 'This endpoint allows you to list datasources in your organization. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. - `search`: Supply a string value to filter datasources by name (case-insensitive partial match). ## Authorization Soda only returns datasources for which the user has the **View** permission. Soda Cloud Admins have access to all datasources. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/datasources parameters: - in: query name: page schema: type: integer format: int32 - in: query name: search schema: type: string - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListDatasourcesResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List datasources tags: - Datasources post: description: 'Creates a new V4 datasource with the provided configuration. The datasource type is extracted from the YAML configuration file contents. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATASOURCES_AND_AGENTS to execute this call. ## Tags `Datasources` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/datasources requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateDatasourceRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateDatasourceResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a datasource tags: - Datasources /api/v1/datasources/actions/testConnection: post: description: 'This endpoint triggers an asynchronous connection test for a datasource configuration. The response includes an operation ID that you can use to poll the status of the connection test. ## Authorization Any authenticated Soda Cloud user in your organization may test a datasource connection. The test runs against a configuration provided in the request, not against an existing datasource. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/datasources/actions/testConnection requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiTestConnectionRequestDTO' required: true responses: '202': description: Accepted headers: Location: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Test datasource connection tags: - Datasources /api/v1/datasources/actions/testConnection/{operationId}: get: description: 'This endpoint allows you to check the status of an asynchronous connection test operation. Use the operation ID returned by the test connection endpoint to poll for its current state. ## Authorization Any authenticated Soda Cloud user in your organization may poll the status of a connection test operation. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/datasources/actions/testConnection/{operationId} parameters: - in: path name: operationId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiTestConnectionStatusResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get status for async connection test tags: - Datasources /api/v1/datasources/roles: get: description: 'This endpoint enables you to gather information about the datasource roles available in your organization''s Soda Cloud account. Use the datasource roles to manage access to individual datasources. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 100, inclusive. The default value is 100. - `page`: Supply an integer value. The default value is 0. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Any Soda Cloud user in your organization may execute this query. ## Tags `Datasources` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/datasources/roles parameters: - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasourceRolesResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List datasource roles tags: - Datasources post: description: 'This endpoint allows you to create a new custom datasource role in your organization''s Soda Cloud account. Datasource roles define a named set of permissions that control what actions users can perform on individual datasources, such as creating datasets, managing datasource settings, managing permissions, or deleting the datasource. Once created, the role can be assigned to users or user groups via the datasource responsibilities endpoints. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Datasources` ## Rate limiting 60 requests/60 seconds' operationId: POST/api/v1/datasources/roles requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasourceRoleRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateDatasourceRoleResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a datasource role tags: - Datasources /api/v1/datasources/roles/{roleId}: post: description: 'This endpoint allows you to update the name or permissions of an existing custom datasource role. Datasource roles define a named set of permissions that control what actions users can perform on individual datasources, such as creating datasets, managing datasource settings, managing permissions, or deleting the datasource. Changes apply immediately to all users and user groups assigned this role. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Datasources` ## Rate limiting 60 requests/60 seconds' operationId: POST/api/v1/datasources/roles/{roleId} parameters: - in: path name: roleId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasourceRoleRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDatasourceRoleResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update a datasource role tags: - Datasources delete: description: 'This endpoint allows you to delete a custom datasource role from your organization''s Soda Cloud account. Datasource roles define a named set of permissions that control what actions users can perform on individual datasources, such as creating datasets, managing datasource settings, managing permissions, or deleting the datasource. Deletion is performed asynchronously and may take some time to complete. Deletion will fail if the role is still assigned to any datasource permissions or used in responsibility settings. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Datasources` ## Rate limiting 60 requests/60 seconds' operationId: DELETE/api/v1/datasources/roles/{roleId} parameters: - in: path name: roleId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteDatasourceRoleResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a datasource role tags: - Datasources /api/v1/datasources/{datasourceId}: get: description: 'This endpoint allows you to retrieve a specific datasource by its ID. ## Authorization Users with the **View** permission on the datasource can retrieve its details. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/datasources/{datasourceId} parameters: - in: path name: datasourceId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiGetDatasourceResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get a datasource tags: - Datasources post: description: 'Updates the configuration of an existing contract (V4) datasource. Only the fields provided in the request body will be updated. ## Authorization Users with the **Manage datasource settings** permission on the datasource, or the organization-level **Manage datasources and runners** permission, can update its configuration. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/datasources/{datasourceId} parameters: - in: path name: datasourceId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDatasourceRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDatasourceResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update a datasource tags: - Datasources delete: description: 'Deletes an existing datasource and all its associated resources. The deletion is performed asynchronously. ## Authorization Users with the **Delete** permission on the datasource, or the organization-level **Manage datasources and runners** permission, can delete it. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 10 requests/60 seconds' operationId: DELETE/api/v1/datasources/{datasourceId} parameters: - in: path name: datasourceId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteDatasourceResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a datasource tags: - Datasources /api/v1/datasources/{datasourceId}/diagnosticsWarehouse: get: description: 'This endpoint allows you to retrieve the diagnostics warehouse configuration for a specific datasource in your organization''s Soda Cloud account. The diagnostics warehouse collects scan-related data and securely forwards it to the customer''s warehouse for storage and analysis. ## Authorization Users with the **View** permission on the datasource can retrieve its diagnostics warehouse configuration. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/datasources/{datasourceId}/diagnosticsWarehouse parameters: - in: path name: datasourceId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasourceDiagnosticsWarehouseResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get datasource diagnostics warehouse configuration tags: - Datasources post: description: 'This endpoint allows you to update the diagnostics warehouse configuration for a specific datasource in your organization''s Soda Cloud account. The diagnostics warehouse collects scan-related data and securely stores it in your warehouse for storage and analysis. ## Table name template The `tableNameTemplate` field controls how diagnostic tables are named in the warehouse. Use the `{dataset_name}` placeholder to include the source dataset name. For example, `dwh_{dataset_name}_failed` produces table names like `dwh_orders_failed`. ## Authorization Users with the **Manage datasource settings** permission on the datasource, or the organization-level **Manage datasources and runners** permission, can update its diagnostics warehouse configuration. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/datasources/{datasourceId}/diagnosticsWarehouse parameters: - in: path name: datasourceId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasourceDiagnosticsWarehouseResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update datasource diagnostics warehouse configuration tags: - Datasources /api/v1/datasources/{datasourceId}/discover: post: description: 'This endpoint triggers a discovery scan on the specified datasource. Discovery scans detect new tables and schemas in the datasource. Use this to run discovery on-demand instead of waiting for the scheduled cron. The response includes a `Location` header and `X-Soda-Scan-Id` header identifying the triggered scan. Use the scan ID with the **Get scan status** endpoint to poll for completion. ## Authorization Users with the **Manage datasource settings** permission on the datasource, or the organization-level **Manage datasources and runners** permission, can trigger discovery on the datasource. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/datasources/{datasourceId}/discover parameters: - in: path name: datasourceId required: true schema: type: string responses: '201': description: Created headers: Location: schema: type: string X-Soda-Scan-Id: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Trigger datasource discovery tags: - Datasources /api/v1/datasources/{datasourceId}/onboardDatasets: post: description: 'This endpoint triggers the asynchronous onboarding of discovered datasets for a datasource. Supply a list of discovered dataset IDs in the request body to onboard them as datasets. The response includes an onboarding ID that you can use to poll the status of the onboarding process. ## Authorization Users with the **Create datasets** permission on the datasource, or the organization-level **Create new datasources and datasets** permission, can onboard discovered datasets. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/datasources/{datasourceId}/onboardDatasets parameters: - in: path name: datasourceId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiOnboardDatasetsRequestDTO' required: true responses: '202': description: Accepted headers: Location: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Onboard discovered datasets tags: - Datasources /api/v1/datasources/{datasourceId}/onboardDatasets/{operationId}: get: description: 'This endpoint allows you to check the status of an asynchronous dataset onboarding operation. Use the operation ID returned by the onboard datasets endpoint to poll for its current state. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/datasources/{datasourceId}/onboardDatasets/{operationId} parameters: - in: path name: datasourceId required: true schema: type: string - in: path name: operationId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiOnboardDatasetsStatusResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get status for async dataset onboarding process tags: - Datasources /api/v1/datasources/{datasourceId}/responsibilities: get: description: 'This endpoint enables you to gather information about the user and user groups permissions assigned to a datasource, and their associated roles in your organization''s Soda Cloud account. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 1 and 100, inclusive. The default value is 100. - `page`: Supply an integer value. The default value is 0. ## Authorization Soda only returns the datasource responsibilities to which the user has **View datasource** permissions. Soda Cloud Admins have access to all datasource responsibilities. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 100 requests/60 seconds' operationId: GET/api/v1/datasources/{datasourceId}/responsibilities parameters: - in: path name: datasourceId required: true schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDatasourceResponsibilitiesResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List datasource responsibilities tags: - Datasources post: description: 'This endpoint enables you to update the user and user groups permissions and their associated roles for a datasource in your organization''s Soda Cloud account. **Note**: This API fully replaces the existing responsibilities. The entire list of responsibilities must be provided in the request, including both new and existing entries, as any omissions will result in their removal. ## Authorization Only users with **Manage datasource responsibilities** permission can update datasource responsibilities. Soda Cloud Admins have permission to update all datasources responsibilities.The Response of this call, when successful, is `201` and contains header `Location` which identify the URL where the responsibilities will eventually become available. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Datasources` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/datasources/{datasourceId}/responsibilities parameters: - in: path name: datasourceId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateDatasourceResponsibilitiesRequestDTO' required: true responses: '201': description: Created headers: Location: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update datasource responsibilities tags: - Datasources /api/v1/discoveredDatasets: get: description: 'This endpoint enables you to list datasets that Soda has discovered in your data sources. Discovered datasets are datasets that have been found during a discovery scan but may not yet be onboarded. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 1 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. - `datasourceId`: Optionally, use this parameter to collect only the discovered datasets associated with a specific data source. - `search`: Optionally, use this parameter to perform a search on the dataset name. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Any Soda Cloud user in your organization may execute this query. ## Tags `Discovered Datasets` ## Rate limiting 10 requests/60 seconds' operationId: GET/api/v1/discoveredDatasets parameters: - in: query name: datasourceId schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: search schema: type: string - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDiscoveredDatasetsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Discovered datasets tags: - Discovered Datasets /api/v1/incidents: get: description: 'This endpoint enables you to gather information about the incidents that exist in your organization''s Soda Cloud account. Each incident carries a `hasRcaReport` flag indicating whether a structured root cause analysis report has been published for it; retrieve the report itself from `GET /api/v1/incidents/{incidentId}/rcaReport`. **`hasRcaReport` is in private preview**: it is `true` or `false` only when the root cause analysis report preview is enabled for your organization, and `null` otherwise. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 1 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. - `status`: Optionally, use this parameter to collect only the incidents with a specific status. One of `reported`, `investigating`, `fixing`, `resolved`. - `severity`: Optionally, use this parameter to collect only the incidents with a specific severity. One of `minor`, `major`, `critical`. - `datasetId`: Optionally, use this parameter to collect only the incidents associated with a specific dataset. Find the `datasetId` in the URL of the dataset page in Soda Cloud. - `incidentIds`: Optionally, use this parameter to collect only a specific batch of incidents. Provide multiple values as a comma-separated list of incident IDs, which you can find on the individual incident pages in Soda Cloud. This query parameter is limited to 1000 incident IDs and can be combined with the other query parameters (`status`, `severity`, `datasetId`, `page`, `size`), which are all applied together. - `leadId`: Optionally, use this parameter to collect only the incidents assigned to a specific lead user. Provide the user id of the incident lead. - `from`: Optionally, use this parameter to collect only the incidents created on or after this moment, compared against each incident''s created timestamp. Supply an ISO8601 timestamp value. Example: `2026-08-01T00:00:00+01:00` - `to`: Optionally, use this parameter to collect only the incidents created on or before this moment, compared against each incident''s created timestamp. Supply an ISO8601 timestamp value. Example: `2026-08-01T23:59:59+01:00` The `leadId`, `from`, and `to` parameters can be combined with the other query parameters, which are all applied together (AND). If not specified, the query gathers information for all incidents in the account and sorts the results by incident number in ascending order. ## Authorization Soda only returns the incidents linked to datasets to which the user has **View dataset** permissions. Soda Cloud Admins have access to all incidents.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Incidents` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/incidents parameters: - in: query name: datasetId schema: type: string - in: query name: from schema: type: string format: date-time - in: query name: incidentIds schema: type: string - in: query name: leadId schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: severity schema: type: string - in: query name: size schema: type: integer format: int32 - in: query name: status schema: type: string - in: query name: to schema: type: string format: date-time responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiIncidentsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List incidents tags: - Incidents post: description: 'This endpoint enables you to create a new incident linked to one or more monitor results in your organization''s Soda Cloud account. The authenticated user becomes the incident reporter. ## Authorization Only users with **Manage incident** permission can create incidents. Soda Cloud Admins have permission to create incidents on all datasets.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Incidents` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/incidents requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateIncidentDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/IncidentContentDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create incident tags: - Incidents /api/v1/incidents/{incidentId}: post: description: 'This endpoint enables you to update an existing incident title, severity, status, or description in your organization''s Soda Cloud account. ## Authorization Only users with **Manage incident** permission can update incidents. Soda Cloud Admins have permission to update all incidents.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Incidents` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/incidents/{incidentId} parameters: - in: path name: incidentId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateIncidentDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/IncidentContentDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update incident tags: - Incidents /api/v1/incidents/{incidentId}/rcaReport: get: description: 'This endpoint returns the structured root cause analysis and impact assessment published on an incident in your organization''s Soda Cloud account. Returns 404 if the incident does not exist or has no RCA report published yet. ## Authorization Unlike the incident list, this endpoint requires **View dataset** permission on every dataset the incident touches. Soda Cloud Admins have access to all incidents. **See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Incidents` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/incidents/{incidentId}/rcaReport parameters: - in: path name: incidentId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiRcaReportContentDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get incident RCA report tags: - Incidents post: description: 'This endpoint publishes a structured root cause analysis and impact assessment onto an existing incident in your organization''s Soda Cloud account. The report is additive and does not mutate the incident''s own fields (title, severity, status, description). There is one report per incident: publishing replaces any previous report. Publishing to a resolved incident is rejected. ## Authorization Only users with **Manage incident** permission can publish incident RCA reports. Soda Cloud Admins have permission to publish reports on all incidents.**See [Manage dataset roles](https://go.soda.io/roles-dataset) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Incidents` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/incidents/{incidentId}/rcaReport parameters: - in: path name: incidentId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiRcaReportDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiRcaReportContentDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Publish incident RCA report tags: - Incidents /api/v1/licensing/spuConsumption: get: description: 'This endpoint returns the number of SPUs your organization consumed over a period. Both bounds are inclusive whole days and any time component is discarded: - `from`: Optional. Defaults to the first day of the current calendar month. - `to`: Optional. Defaults to today. Only organizations on SPU-based licensing accumulate consumption; others always read zero. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Licensing` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/licensing/spuConsumption parameters: - in: query name: from schema: type: string format: date-time - in: query name: to schema: type: string format: date-time responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiSpuConsumptionResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get SPU consumption tags: - Licensing /api/v1/notificationRules: get: description: 'This endpoint allows you to list the notification rules in your organization. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Notification Rules` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/notificationRules parameters: - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListNotificationRulesResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List notification rules tags: - Notification Rules post: description: 'Creates a notification rule with the provided filter and recipients. The filter is a simplified expression tree (and/or/not/equals/contains/in) over check and monitor attributes; recipients can be users, user groups, emails, integrations, or roles. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_NOTIFICATION_RULES to execute this call. ## Tags `Notification Rules` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/notificationRules requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiNotificationRuleRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiNotificationRuleDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a notification rule tags: - Notification Rules /api/v1/notificationRules/{notificationRuleId}: post: description: 'Updates a notification rule. This is a full replacement: the rule''s name, type, filter, recipients, status, and customization are all set from the request body. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_NOTIFICATION_RULES to execute this call. ## Tags `Notification Rules` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/notificationRules/{notificationRuleId} parameters: - in: path name: notificationRuleId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiNotificationRuleRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiNotificationRuleDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update a notification rule tags: - Notification Rules delete: description: 'Schedules a notification rule for deletion. Deletion is processed asynchronously. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_NOTIFICATION_RULES to execute this call. ## Tags `Notification Rules` ## Rate limiting 10 requests/60 seconds' operationId: DELETE/api/v1/notificationRules/{notificationRuleId} parameters: - in: path name: notificationRuleId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteNotificationRuleResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a notification rule tags: - Notification Rules /api/v1/runners: get: description: 'This endpoint allows you to list runners in your organization. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Runners` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/runners parameters: - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListRunnersResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List runners tags: - Runners post: description: 'Creates an API key for a new self-hosted runner deployment. Returns the API key credentials (id and secret) to configure the runner. The credentials are only returned at creation time and cannot be retrieved later, so make sure to store them securely. After creation the runner does not immediately become visible in Soda Cloud. The runner needs to registers itself using the API key credentials before it becomes available. See [deployment instructions](https://go.soda.io/agent) for setting up the runner. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATASOURCES_AND_AGENTS to execute this call. ## Tags `Runners` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/runners responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateRunnerResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a soda runner tags: - Runners /api/v1/runners/{runnerId}: get: description: 'This endpoint allows you to retrieve a specific runner by its ID. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Tags `Runners` ## Rate limiting 1000 requests/60 seconds' operationId: GET/api/v1/runners/{runnerId} parameters: - in: path name: runnerId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiGetRunnerResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get a runner tags: - Runners delete: description: "This endpoint allows you to delete a specific self-hosted runner by its ID. If the\ \ runner is still in use, the request will fail with a `400 Bad Request` response. \n\nSoda-hosted\ \ and virtual runners cannot be deleted through this endpoint.\n\n## Authentication\n\nUser authentication\ \ required: `true`\n\nThis endpoint accepts authentication via API keys in the `Basic` authentication\ \ header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically\ \ on each request.\n\n## Authorization\n\nUsers must have global role permission MANAGE_DATASOURCES_AND_AGENTS\ \ to execute this call.\n\n## Tags\n\n`Runners`\n\n## Rate limiting\n\n10 requests/60 seconds" operationId: DELETE/api/v1/runners/{runnerId} parameters: - in: path name: runnerId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteRunnerResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a runner tags: - Runners /api/v1/scans/{scanId}: get: description: 'This endpoint enables you to check on the state of a scan that you executed using the **Trigger a scan** endpoint. Call this endpoint to monitor the status of a scan during its execution. If you wish to access the logs of a completed scan, use the **Get scan logs** endpoint. This POST uses the following parameter to provide specific details: - `scanId`: Use the value of `X-Soda-Scan-Id` returned as part of the `201` response when you called the **Trigger a scan** endpoint. As a scan executes, you can call this endpoint to progressively collect values based on the state of the scan. Refer to the list below for the states that calls to this endpoint return. - `queuing`: The scan is in the queue for execution, awaiting a pick-up from a Soda Runner. - `executing`: A Soda Runner has picked up the scan and is executing. - `cancelationRequested`: An entity requested cancelation of this scan and the request is awaiting pick-up from the Soda Runner responsible for the scan. - `timeOutRequested`: A time out has been detected, and an automatic request to stop the scan execution is awaiting pick-up from the Soda Runner responsible for the scan. - `canceled`: A Soda Runner confirmed that the scan has been cancelled. This is the final state of the scan. - `timedOut`: A Soda Runner confirmed that the scan has timed-out. This is the final state of the scan. - `failed`: The scan did not start, or it did not successfully complete because of an unexpected cause. This is the final state of the scan. - `completedWithErrors`: The scan completed successfully, but there were errors involving some of the checks in the scan. This is the final state of the scan. - `completedWithFailures`: The scan completed successfully and reveals failed results for some checks. This is the final state of the scan. - `completedWithWarnings`: The scan completed successfully and reveals warning results for some checks. This is the final state of the scan. - `completed`: The scan completed successfully and reveals passing results for all checks. This is a final state of a scan To get the logs of the completed scan, please use API `/api/v1/scans/{scanId}/logs`. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Any Soda Cloud user in your organization may execute this query. ## Tags `Scans` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/scans/{scanId} parameters: - in: path name: scanId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiScanStatusResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get scan status tags: - Scans delete: description: 'This endpoint enables you to cancel a scan. Depending on the state of the scan when you call this endpoint, the response returns one of the following: - Where the state is `pending`, Soda immediately changes the state to `canceled`. - Where the state is `submitted`, Soda immediately changes the state to `cancelationRequested`. - Where the scan is in any other state, the endpoint returns a `400` (Bad request) response. This DELETE uses the following parameters to provide specific details: - `scanId`: Use the value of `X-Soda-Scan-Id` returned as part of the `201` response when you called the **Trigger a scan** endpoint. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Any Soda Cloud user in your organization may execute this query. ## Tags `Scans` ## Rate limiting 10 requests/60 seconds' operationId: DELETE/api/v1/scans/{scanId} parameters: - in: path name: scanId required: true schema: type: string responses: '200': description: Successful response headers: Location: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Cancel a scan tags: - Scans /api/v1/scans/{scanId}/logs: get: description: 'This endpoint enables you to gather log details about the final state of a scan you executed using the **Trigger a scan** endpoint. Use this endpoint to study scan logs to investigate issues with its execution. If you wish to access the state of a scan in progress, use the **Get scan status** endpoint. This GET is a paginated API that uses the following parameters to request specific details: - `scanId`: Use the value of `X-Soda-Scan-Id` returned as part of the `201` response when you called the **Trigger a scan** endpoint. - `size`: Supply an integer value between 100 and 1000, inclusive. The default value is 1000. - `page`: Supply an integer value. The default value is 0. The response sorts the the log information by creation timestamp in ascending order. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Any Soda Cloud user in your organization may execute this query. ## Tags `Scans` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/scans/{scanId}/logs parameters: - in: path name: scanId required: true schema: type: string - in: query name: page schema: type: integer format: int32 - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiScanLogsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get scan logs tags: - Scans /api/v1/secrets: get: description: 'This endpoint allows you to list secrets in your organization. This GET is a paginated API that uses the following parameters to request specific details: - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10. - `page`: Supply an integer value. The default value is 0. - `search`: Supply a string value to filter secrets by name (case-insensitive partial match). ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATASOURCES_AND_AGENTS to execute this call. ## Tags `Secrets` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/secrets parameters: - in: query name: page schema: type: integer format: int32 - in: query name: search schema: type: string - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiListSecretsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: List secrets tags: - Secrets post: description: 'Creates a new secret in your organization. Secrets store encrypted credentials that can be referenced in datasource configurations using `${secret.NAME}` placeholders, keeping sensitive values out of plain text. ## Encryption Secret values must be encrypted **client-side** before sending them to this endpoint. This enables a zero-trust design, where Soda never decrypts the secret. Decryption happens only during scan execution, within the runner. Use the `GET /api/v1/secretsPublicKey` endpoint to obtain the server''s RSA public key. The encryption uses a two-layer scheme: 1. Fetch the RSA public key from `GET /api/v1/secretsPublicKey`. 2. Generate a random AES-256-GCM key (32 bytes) and initialization vector (IV, 12 bytes). 3. Encrypt the secret value using AES-256-GCM with the generated key and IV. Base64-encode the ciphertext and prefix it with `encrypted_`. This becomes the `encryptedValue` field. 4. Export the raw AES key and IV as base64 strings and concatenate them as `{base64_key}:::{base64_iv}`. Encrypt this string using RSA-OAEP (SHA-256) with the public key from step 1. Base64-encode the result. This becomes the `encryptionKey` field. ## Constraints - The secret `name` must not contain whitespace and must be unique within the organization. - Both `encryptionKey` and `encryptedValue` are required. - The organization must have the contracts feature enabled and the secure store must not be disabled. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATASOURCES_AND_AGENTS to execute this call. ## Tags `Secrets` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/secrets requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateSecretRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateSecretResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create a secret tags: - Secrets /api/v1/secrets/{secretId}: post: description: 'Updates the encrypted value of an existing secret. The secret name cannot be changed. Both `encryptionKey` and `encryptedValue` must be provided together — you cannot update one without the other. ## Encryption The new secret value must be encrypted **client-side** using the same two-layer encryption scheme as creation. See the `POST /api/v1/secrets` (Create a secret) endpoint for the full encryption workflow. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATASOURCES_AND_AGENTS to execute this call. ## Tags `Secrets` ## Rate limiting 100 requests/60 seconds' operationId: POST/api/v1/secrets/{secretId} parameters: - in: path name: secretId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateSecretRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateSecretResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update a secret tags: - Secrets delete: description: 'Deletes an existing secret. The secret cannot be deleted if it is referenced by a datasource configuration. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATASOURCES_AND_AGENTS to execute this call. ## Tags `Secrets` ## Rate limiting 10 requests/60 seconds' operationId: DELETE/api/v1/secrets/{secretId} parameters: - in: path name: secretId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteSecretResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete a secret tags: - Secrets /api/v1/secretsPublicKey: get: description: 'Returns the RSA public key in JWK (JSON Web Key) format, used for client-side encryption of secret values. ## Usage When creating or updating a secret, the secret value must be encrypted client-side before sending it to the API. This endpoint provides the RSA public key needed for that encryption. ## Encryption workflow 1. Fetch this public key. 2. Generate a random AES-256-GCM key (32 bytes) and initialization vector (IV, 12 bytes). 3. Encrypt the secret value using AES-256-GCM with the generated key and IV. Base64-encode the ciphertext and prefix it with `encrypted_`. This becomes the `encryptedValue` field. 4. Export the raw AES key and IV as base64 strings and concatenate them as `{base64_key}:::{base64_iv}`. Encrypt this string using RSA-OAEP (SHA-256) with this public key. Base64-encode the result. This becomes the `encryptionKey` field. 5. Use the `encryptedValue` and `encryptionKey` in the create or update secret request. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_DATASOURCES_AND_AGENTS to execute this call. ## Tags `Secrets` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/secretsPublicKey responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiGetEncryptionKeyResponse' description: Successful response '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get the encryption public key tags: - Secrets /api/v1/test-login: get: description: 'This endpoint enables you to test the API connection to your organization''s Soda Cloud account. Use this endpoint to verify that the authentication and authorization details are accurate and the API is ready to accept calls. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Any Soda Cloud user in your organization may execute this query. ## Tags `Utility` ## Rate limiting 10 requests/10 seconds' operationId: GET/api/v1/test-login responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiTestLoginResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Test connection tags: - Utility /api/v1/userGroups: get: description: "This endpoint enables you to gather information about the user groups in your organization's\ \ Soda Cloud account, including lists of members.\n\nThis GET is a paginated API that uses the\ \ following parameters to request specific details:\n\n- `size`: Supply an integer value between\ \ 10 and 1000, inclusive. The default value is 1000.\n\n- `page`: Supply an integer value. The\ \ default value is 0.\n\n- `search`: Optionally, use this parameter to perform a fuzzy search\ \ on the user group name. \n\nIf not specified, the query gathers information for all user groups\ \ in the account and sorts the results by user group name in ascending order.\n\n## Authentication\n\ \nUser authentication required: `true`\n\nThis endpoint accepts authentication via API keys in\ \ the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie\ \ sessions extend automatically on each request.\n\n## Authorization\n\nAny Soda Cloud user in\ \ your organization may execute this query.\n\n## Tags\n\n`Users`\n\n## Rate limiting\n\n60 requests/60\ \ seconds" operationId: GET/api/v1/userGroups parameters: - in: query name: page schema: type: integer format: int32 - in: query name: search schema: type: string - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUserGroupsResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get user groups tags: - Users post: description: 'This endpoint enables you to create a new user group in your organization''s Soda Cloud account. The Response of this call, when successful, is `201` and contains headers `Location` which is a reference to the newly created User Group. ## Authorization Only users with **Manage organization settings** permission can update user groups.**See [Manage global roles](https://go.soda.io/roles-global) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Users` ## Rate limiting 60 requests/60 seconds' operationId: POST/api/v1/userGroups requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiCreateUserGroupRequestDTO' required: true responses: '200': description: Successful response headers: Location: schema: type: string '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Create user group tags: - Users /api/v1/userGroups/{userGroupId}: get: description: 'This endpoint enables you to gather information about a single user group in your organization''s Soda Cloud account, including lists of members. This GET is a non-paginated API that returns a single organization based on its ID. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Any Soda Cloud user in your organization may execute this query. ## Tags `Users` ## Rate limiting 60 requests/60 seconds' operationId: GET/api/v1/userGroups/{userGroupId} parameters: - in: path name: userGroupId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/UserGroupContentDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get user group tags: - Users post: description: 'This endpoint enables you to update an existing user group in your organization''s Soda Cloud account. The Response of this call, when successful, is `200` and contains updated User Group details. ## Authorization Only users with **Manage organization settings** permission can update user groups.**See [Manage global roles](https://go.soda.io/roles-global) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Users` ## Rate limiting 60 requests/60 seconds' operationId: POST/api/v1/userGroups/{userGroupId} parameters: - in: path name: userGroupId required: true schema: type: string requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUpdateUserGroupRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/UserGroupContentDTO' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Update user group tags: - Users delete: description: 'This endpoint enables you to delete an existing user group from your organization''s Soda Cloud account. In case of success, the response returns a `200` (OK) response. In case user group is not found, the response returns a `404` (Not found) response. ## Authorization Only users with **Manage organization settings** permission can update user groups.**See [Manage global roles](https://go.soda.io/roles-global) for more information.** ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Users` ## Rate limiting 60 requests/60 seconds' operationId: DELETE/api/v1/userGroups/{userGroupId} parameters: - in: path name: userGroupId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDeleteUserGroupResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Delete user group tags: - Users /api/v1/users: get: description: "This endpoint enables you to gather information about the users in your organization's\ \ Soda Cloud account.\n\nThis GET is a paginated API that uses the following parameters to request\ \ specific details:\n\n- `size`: Supply an integer value between 1 and 1000, inclusive. The default\ \ value is 1000.\n\n- `page`: Supply an integer value. The default value is 0.\n\n- `search`:\ \ Optionally, use this parameter to perform a fuzzy search on the user first name, last name,\ \ or email address. \n\nIf not specified, the query gathers information for all users in the account\ \ and sorts the results by user name in ascending order.\n\n## Authentication\n\nUser authentication\ \ required: `true`\n\nThis endpoint accepts authentication via API keys in the `Basic` authentication\ \ header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically\ \ on each request.\n\n## Authorization\n\nAny Soda Cloud user in your organization may execute\ \ this query.\n\n## Tags\n\n`Users`\n\n## Rate limiting\n\n60 requests/60 seconds" operationId: GET/api/v1/users parameters: - in: query name: page schema: type: integer format: int32 - in: query name: search schema: type: string - in: query name: size schema: type: integer format: int32 responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiUsersResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Get users tags: - Users post: description: 'This endpoint enables you to invite users to your organization''s Soda Cloud account. Invited users will receive an email with a link to set their password and join your organization in Soda Cloud. Once they complete the setup, they will have access to Soda Cloud based on the roles and permissions you assign. If your organization is using SSO, invited users will receive an invitation email with a link to Soda Cloud. When they log in using SSO, they are immediately added to the Soda Cloud organization. You can invite up to 10 users per request. The response contains lists of successful and failed invitations. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Users` ## Rate limiting 10 requests/60 seconds' operationId: POST/api/v1/users requestBody: content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiInviteUserRequestDTO' required: true responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiInviteUserResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Invite users tags: - Users /api/v1/users/{userId}/disable: post: description: 'This endpoint disables a user in your organization''s Soda Cloud account. Disabling a user deactivates their membership in the organization. The user is not deleted and can be reactivated later. Users in SSO-enabled organizations cannot be disabled via this endpoint, as they are managed by the identity provider. ## Authentication User authentication required: `true` This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request. ## Authorization Users must have global role permission MANAGE_ORGANISATION_SETTINGS to execute this call. ## Tags `Users` ## Rate limiting 60 requests/60 seconds' operationId: POST/api/v1/users/{userId}/disable parameters: - in: path name: userId required: true schema: type: string responses: '200': content: application/json: schema: type: object $ref: '#/components/schemas/PublicApiDisableUserResponse' description: Successful response '400': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Bad request '401': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Unauthorized '403': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Forbidden '404': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Not found '429': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Too many requests '500': content: application/json: schema: type: object $ref: '#/components/schemas/ErrorResponse' description: Internal server error summary: Disable user tags: - Users components: securitySchemes: basicAuthApiKey: scheme: basic type: http cookieToken: in: cookie name: token type: apiKey schemas: AggregateDiagnosticsV4: type: object properties: checkRowsTested: type: integer format: int32 datasetRowsTested: type: integer format: int32 AggregateDiffDiagnosticsV4: type: object properties: diff: type: number diffPercent: type: number function: type: string sourceCheckRowsTested: type: integer format: int32 sourceDatasetRowsTested: type: integer format: int32 sourceValue: type: number targetCheckRowsTested: type: integer format: int32 targetDatasetRowsTested: type: integer format: int32 targetValue: type: number AgreementSlimDTO: type: object properties: cloudUrl: type: string name: type: string AttributeContentDTO: type: object properties: allowedValues: type: array items: type: string description: type: string id: type: string label: type: string name: type: string resourceType: type: object $ref: '#/components/schemas/AttributeResourceTypeDTO' type: type: object $ref: '#/components/schemas/AttributeTypeDTO' required: - id - label - name - resourceType - type AttributeResourceTypeDTO: type: string enum: - dataset - check - column AttributeTypeDTO: type: string enum: - text - number - checkbox - datetime - singleSelect - multiSelect CheckResultAnomalyDetectionDetailsDTO: type: object properties: predictedValue: type: number CheckResultDiagnosticsV4: type: object properties: aggregate: type: object $ref: '#/components/schemas/AggregateDiagnosticsV4' aggregate_diff: type: object $ref: '#/components/schemas/AggregateDiffDiagnosticsV4' duplicate: type: object $ref: '#/components/schemas/DuplicateDiagnosticsV4' duplicate_diff: type: object $ref: '#/components/schemas/DuplicateDiffDiagnosticsV4' failed_rows: type: object $ref: '#/components/schemas/FailedRowsDiagnosticsV4' freshness: type: object $ref: '#/components/schemas/FreshnessDiagnosticsV4' freshness_diff: type: object $ref: '#/components/schemas/FreshnessDiffDiagnosticsV4' fuzzy_duplicate: type: object $ref: '#/components/schemas/FuzzyDuplicateDiagnosticsV4' group_by: type: object $ref: '#/components/schemas/GroupByDiagnosticsV4' hierarchy: type: object $ref: '#/components/schemas/HierarchyDiagnosticsV4' invalid: type: object $ref: '#/components/schemas/InvalidDiagnosticsV4' llm: type: object $ref: '#/components/schemas/LlmDiagnosticsV4' metric: type: object $ref: '#/components/schemas/MetricDiagnosticsV4' metric_diff: type: object $ref: '#/components/schemas/MetricDiffDiagnosticsV4' missing: type: object $ref: '#/components/schemas/MissingDiagnosticsV4' reference_diff: type: object $ref: '#/components/schemas/ReferenceDiffDiagnosticsV4' row_count: type: object $ref: '#/components/schemas/RowCountDiagnosticsV4' row_count_diff: type: object $ref: '#/components/schemas/RowCountDiffDiagnosticsV4' rows_diff: type: object $ref: '#/components/schemas/RowsDiffDiagnosticsV4' schema: type: object $ref: '#/components/schemas/SchemaDiagnosticsV4' CheckResultLevelDTO: type: string enum: - info - warning - critical - not_evaluated - excluded CheckResultValueDTO: type: object properties: anomalyDetectionDetails: type: object $ref: '#/components/schemas/CheckResultAnomalyDetectionDetailsDTO' dataTimestamp: type: string format: date-time diagnostics: type: object $ref: '#/components/schemas/CheckResultDiagnosticsV4' id: type: string measure: type: object $ref: '#/components/schemas/MeasureDTO' value: type: number valueLabel: type: string valueSeries: type: object $ref: '#/components/schemas/CheckResultValueSeriesDTO' required: - id CheckResultValueSeriesDTO: type: object properties: values: type: array items: type: object $ref: '#/components/schemas/CheckResultValueSeriesDTO_ValueSeriesValue' CheckResultValueSeriesDTO_ValueSeriesValue: type: object properties: label: type: string level: type: object $ref: '#/components/schemas/EvaluationStatusDTO' value: type: number CheckTypeDTO: type: string enum: - missing - invalid - row_count - aggregate - schema - duplicate - freshness - failed_rows - metric - group_by - row_count_diff - aggregate_diff - freshness_diff - metric_diff - rows_diff - duplicate_diff - llm - hierarchy - fuzzy_duplicate - reference_diff ChecksContentDTO: type: object properties: agreements: type: array deprecated: true items: type: object $ref: '#/components/schemas/AgreementSlimDTO' attributes: type: object $ref: '#/components/schemas/MapOfStringToString' checkType: type: string cloudUrl: type: string column: type: string createdAt: type: string format: date-time datasets: type: array items: type: object $ref: '#/components/schemas/DatasetSlimDTO' definition: type: string description: type: string evaluationStatus: type: object $ref: '#/components/schemas/EvaluationStatusDTO' group: type: object $ref: '#/components/schemas/ChecksContentDTO_Group' id: type: string incidents: type: array items: type: object $ref: '#/components/schemas/IncidentSlimDTO' lastCheckResultValue: type: object $ref: '#/components/schemas/CheckResultValueDTO' lastCheckRunTime: type: string format: date-time deprecated: true lastUpdated: type: string format: date-time deprecated: true metricType: type: string name: type: string owner: type: object $ref: '#/components/schemas/OwnerDTO' deprecated: true required: - createdAt - datasets - evaluationStatus - id - incidents - name ChecksContentDTO_Group: type: object properties: groupType: type: string identity: type: string name: type: string ColumnMetricContentDTO: type: object properties: average: type: number averageLength: type: number distinctCount: type: integer format: int64 extremeValues: type: object $ref: '#/components/schemas/ExtremeValuesContentDTO' frequentValues: type: array items: type: object $ref: '#/components/schemas/ValueCountContentDTO' histogram: type: array items: type: object $ref: '#/components/schemas/HistogramBinContentDTO' maximum: type: object $ref: '#/components/schemas/_object' maximumLength: type: integer format: int32 maximumTimestamp: type: string format: date-time median: type: number minimum: type: object $ref: '#/components/schemas/_object' minimumLength: type: integer format: int32 minimumTimestamp: type: string format: date-time missingCount: type: integer format: int64 standardDeviation: type: number sum: type: number variance: type: number ColumnMetricMonitorConfigurationDTO: type: object properties: configuration: type: object $ref: '#/components/schemas/ColumnMonitorConfigurationDTO' metricType: type: object $ref: '#/components/schemas/ColumnMonitorMetricTypeDTO' required: - configuration - metricType ColumnMetricMonitorDTO: type: object properties: checkId: type: string columnName: type: string configuration: type: object $ref: '#/components/schemas/ColumnMonitorConfigurationDTO' metricType: type: object $ref: '#/components/schemas/ColumnMonitorMetricTypeDTO' required: - checkId - columnName - configuration - metricType ColumnMonitorConfigurationDTO: type: object properties: groupByColumns: type: array items: type: object $ref: '#/components/schemas/GroupByColumnConfigurationDTO' exclusionZones: type: array items: type: object $ref: '#/components/schemas/ExclusionZoneDTO' isEnabled: type: boolean isSamplingEnabled: type: boolean sensitivity: type: number thresholdStrategy: type: object $ref: '#/components/schemas/ThresholdStrategyDTO' validRange: type: object $ref: '#/components/schemas/ValidRangeDTO' ColumnMonitorMetricTypeDTO: type: string enum: - missingPercentage - duplicatePercentage - average - columnFreshness - sum - distinctValuesCount - count - minimumValue - maximumValue - duplicateValuesPercentage - minimumLength - maximumLength - averageLength - standardDeviation - variance - q1 - median - q3 ColumnTypeDTO: type: string enum: - unknown - string - integer - float - time - boolean - date - dateTime ContractContentDTO: type: object properties: contents: type: string created: type: string format: date-time datasetId: type: string datasetQualifiedName: type: string id: type: string lastUpdated: type: string format: date-time ContractVersionDTO: type: object properties: checksum: type: string contents: type: string contractId: type: string created: type: string format: date-time creatorId: type: string id: type: string CustomMetricMonitorDTO: type: object properties: checkId: type: string columnName: type: string configuration: type: object $ref: '#/components/schemas/CustomSqlMonitorConfigurationDTO' monitorName: type: string required: - checkId - configuration - monitorName CustomSqlMonitorConfigurationDTO: type: object properties: groupByColumnNames: type: array items: type: string resultMetric: type: string sqlQuery: type: string exclusionZones: type: array items: type: object $ref: '#/components/schemas/ExclusionZoneDTO' isEnabled: type: boolean isSamplingEnabled: type: boolean sensitivity: type: number thresholdStrategy: type: object $ref: '#/components/schemas/ThresholdStrategyDTO' validRange: type: object $ref: '#/components/schemas/ValidRangeDTO' required: - resultMetric - sqlQuery CustomSqlMonitorConfigurationUpdateDTO: type: object properties: groupByColumnNames: type: array items: type: string resultMetric: type: string sqlQuery: type: string exclusionZones: type: array items: type: object $ref: '#/components/schemas/ExclusionZoneDTO' isEnabled: type: boolean isSamplingEnabled: type: boolean sensitivity: type: number thresholdStrategy: type: object $ref: '#/components/schemas/ThresholdStrategyDTO' validRange: type: object $ref: '#/components/schemas/ValidRangeDTO' DataQualityStatusDTO: type: string enum: - pass - warn - fail DataStandardActivityContentDTO: type: object properties: activeCount: type: integer format: int32 checkResults: type: object $ref: '#/components/schemas/DataStandardCheckResultsDTO' datasetCount: type: integer format: int32 totalCount: type: integer format: int32 required: - activeCount - checkResults - datasetCount - totalCount DataStandardCheckContentDTO: type: object properties: checkType: type: object $ref: '#/components/schemas/CheckTypeDTO' compliance: type: number datasetCount: type: integer format: int32 failingCount: type: integer format: int32 lastScanTime: type: string format: date-time name: type: string notEvaluatedCount: type: integer format: int32 passingCount: type: integer format: int32 warningCount: type: integer format: int32 worstLevel: type: object $ref: '#/components/schemas/CheckResultLevelDTO' DataStandardCheckResultsDTO: type: object properties: failingCount: type: integer format: int32 notEvaluatedCount: type: integer format: int32 passingCount: type: integer format: int32 warningCount: type: integer format: int32 DataStandardContentDTO: type: object properties: attributes: type: object $ref: '#/components/schemas/MapOfStringTo_object' checkResults: type: object $ref: '#/components/schemas/DataStandardCheckResultsDTO' cloudUrl: type: string compliance: type: integer format: int64 contents: type: string created: type: string format: date-time datasetCount: type: integer format: int32 description: type: string id: type: string label: type: string lastScanTime: type: string format: date-time lastUpdated: type: string format: date-time name: type: string owners: type: array items: type: object $ref: '#/components/schemas/DatasetOwnerDTO' schedule: type: object $ref: '#/components/schemas/DataStandardScheduleDTO' scope: type: object $ref: '#/components/schemas/DataStandardScopeDTO' status: type: object $ref: '#/components/schemas/DataStandardStatusDTO' required: - id DataStandardDatasetContentDTO: type: object properties: checkResults: type: object $ref: '#/components/schemas/DataStandardCheckResultsDTO' cloudUrl: type: string id: type: string label: type: string lastScanId: type: string lastScanTime: type: string format: date-time name: type: string owners: type: array items: type: object $ref: '#/components/schemas/DatasetOwnerDTO' qualifiedName: type: string required: - id - name DataStandardOwnerRequestDTO: type: object properties: type: type: object $ref: '#/components/schemas/DatasetOwnerTypeDTO' userGroupId: type: string userId: type: string required: - type DataStandardScheduleDTO: type: object properties: enabled: type: boolean DataStandardScopeAttributeFilterDTO: type: object properties: attributeName: type: string booleanValue: type: boolean date: type: string format: date-time filters: type: array items: type: object $ref: '#/components/schemas/DataStandardScopeAttributeFilterDTO' type: type: object $ref: '#/components/schemas/DataStandardScopeAttributeFilterTypeDTO' value: type: string required: - type DataStandardScopeAttributeFilterTypeDTO: type: string enum: - equals - contains - and - or DataStandardScopeDTO: type: object properties: rules: type: array items: type: object $ref: '#/components/schemas/DataStandardScopeRuleDTO' DataStandardScopeMatchingDatasetContentDTO: type: object properties: datasourceId: type: string id: type: string label: type: string name: type: string qualifiedName: type: string required: - datasourceId - id - name DataStandardScopeRuleDTO: type: object properties: attributesFilter: type: object $ref: '#/components/schemas/DataStandardScopeAttributeFilterDTO' datasourceId: type: string name: type: string schema: type: string DataStandardSortFieldDTO: type: string enum: - name - label DataStandardStatusDTO: type: string enum: - draft - active - paused - invalid DatasetColumnProfilingContentDTO: type: object properties: id: type: string metrics: type: object $ref: '#/components/schemas/ColumnMetricContentDTO' name: type: string type: type: string required: - id - name - type DatasetComputeWarehouseConfigurationDTO: type: object properties: availableWarehouses: type: array items: type: object $ref: '#/components/schemas/DatasetComputeWarehouseConfigurationDTO_WarehouseConfigurationDTO' currentWarehouse: type: object $ref: '#/components/schemas/DatasetComputeWarehouseConfigurationDTO_WarehouseConfigurationDTO' datasetWarehouseOverride: type: object $ref: '#/components/schemas/DatasetComputeWarehouseConfigurationDTO_WarehouseConfigurationDTO' defaultWarehouse: type: object $ref: '#/components/schemas/DatasetComputeWarehouseConfigurationDTO_WarehouseConfigurationDTO' enabled: type: boolean DatasetComputeWarehouseConfigurationDTO_WarehouseConfigurationDTO: type: object properties: name: type: string required: - name DatasetDiagnosticsWarehouseFailedRowsConfigurationRequest: type: object properties: enabled: type: boolean failedRowSamples: type: object $ref: '#/components/schemas/FailedRowSamplesDTO' failedRowsCollectionStrategy: type: object $ref: '#/components/schemas/FailedRowsCollectionStrategyDTO' maxRowCount: type: integer format: int32 schema: type: string deprecated: true storageStrategy: type: object $ref: '#/components/schemas/DiagnosticsWarehouseFailedRowsStorageStrategyDTO' uniqueKeyColumnNames: type: array items: type: string DatasetDiagnosticsWarehouseScanAndResultsConfigurationRequest: type: object properties: enabled: type: boolean DatasetMetricMonitorConfigurationDTO: type: object properties: configuration: type: object $ref: '#/components/schemas/DatasetMonitorConfigurationDTO' metricType: type: object $ref: '#/components/schemas/DatasetMonitorMetricTypeDTO' required: - configuration - metricType DatasetMonitorConfigurationDTO: type: object properties: exclusionZones: type: array items: type: object $ref: '#/components/schemas/ExclusionZoneDTO' isEnabled: type: boolean isSamplingEnabled: type: boolean sensitivity: type: number thresholdStrategy: type: object $ref: '#/components/schemas/ThresholdStrategyDTO' validRange: type: object $ref: '#/components/schemas/ValidRangeDTO' DatasetMonitorMetricTypeDTO: type: string enum: - rowCount - freshness - schema - rowsInserted - totalRowCountChange - timeliness - recordAnomalyScore DatasetOwnerDTO: type: object properties: type: type: object $ref: '#/components/schemas/DatasetOwnerTypeDTO' user: type: object $ref: '#/components/schemas/UserContentDTO' userGroup: type: object $ref: '#/components/schemas/UserGroupContentBasicDTO' required: - type DatasetOwnerTypeDTO: type: string enum: - user - userGroup DatasetPartitionColumnContentDTO: type: object properties: columnType: type: object $ref: '#/components/schemas/ColumnTypeDTO' name: type: string required: - columnType - name DatasetResponsibilityContentDTO: type: object properties: managed: type: boolean role: type: object $ref: '#/components/schemas/DatasetRoleContentDTO' type: type: object $ref: '#/components/schemas/ResponsibilityTypeDTO' userGroupId: type: string userId: type: string required: - managed - role - type DatasetResponsibilityContentRequestDTO: type: object properties: roleId: type: string type: type: object $ref: '#/components/schemas/ResponsibilityTypeDTO' userGroupId: type: string userId: type: string required: - roleId - type DatasetRoleContentDTO: type: object properties: configureDataset: type: boolean createCheckProposals: type: boolean deleteDataset: type: boolean executeContracts: type: boolean deprecated: true id: type: string manageChecks: type: boolean manageContracts: type: boolean manageIncidents: type: boolean managePermissions: type: boolean name: type: string publishContracts: type: boolean deprecated: true viewFailedRows: type: boolean viewProfilingAndSamples: type: boolean required: - id - name DatasetSlimDTO: type: object properties: cloudUrl: type: string id: type: string name: type: string qualifiedName: type: string DatasetTimePartitionDTO: type: object properties: partitionColumn: type: object $ref: '#/components/schemas/DatasetPartitionColumnContentDTO' sqlExpression: type: string timePartitionType: type: object $ref: '#/components/schemas/DatasetTimePartitionTypeDTO' DatasetTimePartitionTypeDTO: type: string enum: - disabled - partitionColumn - sqlExpression DatasetsContentDTO: type: object properties: attributes: type: object $ref: '#/components/schemas/MapOfStringTo_object' checks: type: integer format: int64 cloudUrl: type: string dataQualityStatus: type: object $ref: '#/components/schemas/DataQualityStatusDTO' datasetQualifiedName: type: string datasource: type: object $ref: '#/components/schemas/DatasourcePropertiesDTO' healthStatus: type: integer format: int32 id: type: string incidents: type: integer format: int64 label: type: string lastUpdated: type: string format: date-time name: type: string owners: type: array items: type: object $ref: '#/components/schemas/DatasetOwnerDTO' partitionColumn: type: object $ref: '#/components/schemas/DatasetPartitionColumnContentDTO' deprecated: true qualifiedName: type: string tags: type: array items: type: string timePartition: type: object $ref: '#/components/schemas/DatasetTimePartitionDTO' required: - checks - cloudUrl - healthStatus - id - incidents - name DatasourcePropertiesDTO: type: object properties: label: type: string name: type: string prefix: type: string type: type: string version: type: object $ref: '#/components/schemas/ModelVersionDTO' DatasourceResponsibilityContentDTO: type: object properties: managed: type: boolean role: type: object $ref: '#/components/schemas/DatasourceRoleContentDTO' type: type: object $ref: '#/components/schemas/ResponsibilityTypeDTO' userGroupId: type: string userId: type: string required: - managed - role - type DatasourceResponsibilityContentRequestDTO: type: object properties: roleId: type: string type: type: object $ref: '#/components/schemas/ResponsibilityTypeDTO' userGroupId: type: string userId: type: string required: - roleId - type DatasourceRoleContentDTO: type: object properties: createDatasets: type: boolean deleteDatasource: type: boolean id: type: string manageDatasourceSettings: type: boolean managePermissions: type: boolean name: type: string viewDatasource: type: boolean required: - id - name DiagnosticsWarehouseFailedRowsStorageStrategyDTO: type: string enum: - fullFailedRows - uniqueKeys - scansAndResultsOnly DiscoveredDatasetContentDTO: type: object properties: createdAt: type: string format: date-time datasourceId: type: string id: type: string name: type: string onboarded: type: boolean qualifiedName: type: string required: - datasourceId - id - name - onboarded - qualifiedName DuplicateDiagnosticsV4: type: object properties: checkRowsTested: type: integer format: int32 datasetRowsTested: type: integer format: int32 failedRowsCount: type: integer format: int32 failedRowsDataQuery: type: string failedRowsKeysQuery: type: string failedRowsPercent: type: number failedRowsSourceQuery: type: string missingCount: type: integer format: int32 DuplicateDiffDiagnosticsV4: type: object properties: duplicateCountDiff: type: integer format: int32 duplicateDiffPercent: type: number sourceCheckRowsTested: type: integer format: int32 sourceDatasetRowsTested: type: integer format: int32 sourceDuplicateCount: type: integer format: int32 targetCheckRowsTested: type: integer format: int32 targetDatasetRowsTested: type: integer format: int32 targetDuplicateCount: type: integer format: int32 ErrorResponse: type: object properties: code: type: string message: type: string EvaluationStatusDTO: type: string enum: - pass - warn - fail - notEvaluated - excluded ExclusionZoneDTO: type: object properties: lowerLimit: type: number singleValue: type: boolean upperLimit: type: number required: - lowerLimit - upperLimit ExtremeValuesContentDTO: type: object properties: maximum: type: array items: type: object $ref: '#/components/schemas/_object' minimum: type: array items: type: object $ref: '#/components/schemas/_object' FailedInvitationDTO: type: object properties: email: type: string error: type: string FailedRowSamplesDTO: type: object properties: enabled: type: boolean sampleSize: type: integer format: int32 FailedRowsCollectionStrategyDTO: type: object properties: maxRowCountOverride: type: integer format: int32 threshold: type: number thresholdCondition: type: object $ref: '#/components/schemas/ThresholdConditionDTO' type: type: object $ref: '#/components/schemas/FailedRowsCollectionStrategyTypeDTO' required: - threshold - thresholdCondition FailedRowsCollectionStrategyTypeDTO: type: string enum: - useDefaultMaxRowCount - absolute - percentage FailedRowsConfigurationStateDTO: type: string enum: - ready - doNotDetectAutomatically - awaitingPrimaryKeysInformationFromAgent - awaitingPrimaryKeysInformationFromRunner - errorMissingUniqueKeys FailedRowsDiagnosticsV4: type: object properties: checkRowsTested: type: integer format: int32 datasetRowsTested: type: integer format: int32 failedRowsCount: type: integer format: int32 failedRowsDataQuery: type: string failedRowsKeysQuery: type: string failedRowsPercent: type: number failedRowsSourceQuery: type: string FreshnessDiagnosticsV4: type: object properties: actualTimestamp: type: string format: date-time actualTimestampUtc: type: string format: date-time datasetRowsTested: type: integer format: int32 expectedTimestamp: type: string format: date-time expectedTimestampUtc: type: string format: date-time FreshnessDiffDiagnosticsV4: type: object properties: freshnessDiff: type: integer format: int32 freshnessDiffUnit: type: object $ref: '#/components/schemas/FreshnessDiffDiagnosticsV4_UnitOfTimeDTO' sourceCheckRowsTested: type: integer format: int32 sourceDatasetRowsTested: type: integer format: int32 sourceMaxTimestamp: type: string format: date-time sourceMaxTimestampUtc: type: string format: date-time targetCheckRowsTested: type: integer format: int32 targetDatasetRowsTested: type: integer format: int32 targetMaxTimestamp: type: string format: date-time targetMaxTimestampUtc: type: string format: date-time FreshnessDiffDiagnosticsV4_UnitOfTimeDTO: type: string enum: - minutes - hours - days FuzzyDuplicateDiagnosticsV4: type: object properties: candidateRowsScored: type: integer format: int32 checkRowsTested: type: integer format: int32 clusterCount: type: integer format: int32 datasetRowsTested: type: integer format: int32 failedRowsCount: type: integer format: int32 failedRowsDataQuery: type: string failedRowsKeysQuery: type: string failedRowsSourceQuery: type: string fuzzyDuplicateCount: type: integer format: int32 fuzzyDuplicatePercent: type: number meanConfidence: type: number GenerateContractOperationStateDTO: type: string enum: - ongoing - completed - failed - canceled GroupByColumnConfigurationDTO: type: object properties: columnName: type: string excludedValues: type: array items: type: string required: - columnName GroupByDiagnosticsV4: type: object properties: diagnosticsCount: type: integer format: int32 failedRowsDataQuery: type: string failedRowsKeysQuery: type: string failedRowsSourceQuery: type: string groups: type: array items: type: object $ref: '#/components/schemas/GroupByDiagnosticsV4_Group' GroupByDiagnosticsV4_Group: type: object properties: group: type: string rowsTested: type: integer format: int64 status: type: object $ref: '#/components/schemas/GroupByDiagnosticsV4_GroupByOutcomeDTO' value: type: number GroupByDiagnosticsV4_GroupByOutcomeDTO: type: string enum: - pass - warn - fail HierarchyDiagnosticsV4: type: object properties: brokenPathCount: type: integer format: int32 checkRowsTested: type: integer format: int32 datasetRowsTested: type: integer format: int32 failedRowsCount: type: integer format: int32 failedRowsDataQuery: type: string failedRowsKeysQuery: type: string failedRowsSourceQuery: type: string invalidValueCount: type: integer format: int32 missingValueCount: type: integer format: int32 HistogramBinContentDTO: type: object properties: count: type: integer format: int64 lowerBound: type: number upperBound: type: number required: - count - lowerBound - upperBound IncidentContentDTO: type: object properties: description: type: string resolutionNotes: type: string severity: type: object $ref: '#/components/schemas/IncidentSeverityDTO' cloudUrl: type: string id: type: string name: type: string number: type: integer format: int32 status: type: object $ref: '#/components/schemas/IncidentStatusDTO' required: - cloudUrl - description - id - name - number - severity - status IncidentSeverityDTO: type: string enum: - minor - major - critical IncidentSlimDTO: type: object properties: cloudUrl: type: string id: type: string name: type: string number: type: integer format: int32 status: type: object $ref: '#/components/schemas/IncidentStatusDTO' required: - cloudUrl - id - name - number - status IncidentStatusDTO: type: string enum: - reported - investigating - fixing - resolved InvalidDiagnosticsV4: type: object properties: checkRowsTested: type: integer format: int32 datasetRowsTested: type: integer format: int32 failedRowsCount: type: integer format: int32 failedRowsDataQuery: type: string failedRowsKeysQuery: type: string failedRowsPercent: type: number failedRowsSourceQuery: type: string missingCount: type: integer format: int32 LlmDiagnosticsV4: type: object properties: completionTokens: type: integer format: int64 failedRowsCount: type: integer format: int32 failedRowsDataQuery: type: string failedRowsKeysQuery: type: string failedRowsSourceQuery: type: string model: type: string promptTokens: type: integer format: int64 rowsChecked: type: integer format: int32 rowsFailed: type: integer format: int32 rowsFailedPercent: type: number tokensSpent: type: integer format: int32 LogLevelDTO: type: string enum: - debug - info - warning - error LogsContentDTO: type: object properties: index: type: integer format: int32 level: type: object $ref: '#/components/schemas/LogLevelDTO' message: type: string timestamp: type: string format: date-time required: - index - level - message - timestamp MapOfStringToMapOfStringTo_object: type: object additionalProperties: true MapOfStringToString: type: object additionalProperties: true MapOfStringTo_object: type: object additionalProperties: true MeasureDTO: type: string enum: - time MetricDiagnosticsV4: type: object properties: datasetRowsTested: type: integer format: int32 MetricDiffDiagnosticsV4: type: object properties: metricDiff: type: number metricDiffPercent: type: number sourceCheckRowsTested: type: integer format: int32 sourceDatasetRowsTested: type: integer format: int32 sourceMetric: type: number targetCheckRowsTested: type: integer format: int32 targetDatasetRowsTested: type: integer format: int32 targetMetric: type: number MissingDiagnosticsV4: type: object properties: checkRowsTested: type: integer format: int32 datasetRowsTested: type: integer format: int32 failedRowsCount: type: integer format: int32 failedRowsDataQuery: type: string failedRowsKeysQuery: type: string failedRowsPercent: type: number failedRowsSourceQuery: type: string ModelVersionDTO: type: string enum: - '3' - '4' NotificationCustomizationDTO: type: object properties: message: type: string type: type: object $ref: '#/components/schemas/NotificationCustomizationTypeDTO' required: - type NotificationCustomizationTypeDTO: type: string enum: - rich - minimal NotificationFilterDTO: type: object properties: expression: type: object $ref: '#/components/schemas/NotificationFilterDTO' expressions: type: array items: type: object $ref: '#/components/schemas/NotificationFilterDTO' field: type: object $ref: '#/components/schemas/NotificationFilterFieldDTO' type: type: object $ref: '#/components/schemas/NotificationFilterTypeDTO' value: type: string values: type: array items: type: string required: - type NotificationFilterFieldDTO: type: object properties: attributeName: type: string field: type: object $ref: '#/components/schemas/NotificationFilterFieldTypeDTO' required: - field NotificationFilterFieldTypeDTO: type: string enum: - datasourceId - datasourceLabel - datasetId - datasetLabel - datasetOwnerId - datasetTags - checkId - checkName - checkOwnerId - columnId - metricType - datasetResourceAttribute - checkResourceAttribute NotificationFilterTypeDTO: type: string enum: - equals - contains - in - and - or - not NotificationLevelDTO: type: string enum: - info - warning - critical - not_evaluated NotificationRecipientDTO: type: object properties: customRoleId: type: string email: type: string integrationChannel: type: string integrationId: type: string role: type: object $ref: '#/components/schemas/NotificationRecipientRoleDTO' triggers: type: array items: type: object $ref: '#/components/schemas/NotificationRecipientTriggerDTO' type: type: object $ref: '#/components/schemas/NotificationRecipientTypeDTO' userGroupId: type: string userId: type: string required: - triggers - type NotificationRecipientRoleDTO: type: string enum: - datasetOwner - monitorOwner NotificationRecipientTriggerDTO: type: object properties: level: type: object $ref: '#/components/schemas/NotificationLevelDTO' scanState: type: object $ref: '#/components/schemas/NotificationScanStateDTO' type: type: object $ref: '#/components/schemas/NotificationTriggerTypeDTO' required: - type NotificationRecipientTypeDTO: type: string enum: - email - user - userGroup - integration - resourceRole - customRole NotificationRuleStatusDTO: type: string enum: - active - paused NotificationScanStateDTO: type: string enum: - failed - timedOut - canceled - completedWithErrors NotificationTriggerTypeDTO: type: string enum: - testResultLevel - scanState OwnerDTO: type: object properties: email: type: string firstName: type: string fullName: type: string lastName: type: string ProfilingSamplingStrategyConfigurationDTO: type: object properties: numberOfRows: type: integer format: int32 numberOfUnits: type: integer format: int32 unitOfTime: type: object $ref: '#/components/schemas/UnitOfTimeDTO' PublicApiBlastRadiusDTO: type: object properties: assetType: type: object $ref: '#/components/schemas/RcaAssetTypeDTO' count: type: integer format: int32 PublicApiCheckSlimDTO: type: object properties: evaluationStatus: type: object $ref: '#/components/schemas/EvaluationStatusDTO' id: type: string PublicApiChecksResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/ChecksContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiCreateAttributeRequestDTO: type: object properties: allowedValues: type: array items: type: string description: type: string label: type: string name: type: string resourceType: type: object $ref: '#/components/schemas/AttributeResourceTypeDTO' type: type: object $ref: '#/components/schemas/AttributeTypeDTO' required: - label - name - resourceType - type PublicApiCreateAttributeResponse: type: object properties: attribute: type: object $ref: '#/components/schemas/AttributeContentDTO' required: - attribute PublicApiCreateColumnMetricMonitorRequestDTO: type: object properties: columnMetricMonitorConfiguration: type: object $ref: '#/components/schemas/ColumnMetricMonitorConfigurationDTO' columnName: type: string required: - columnMetricMonitorConfiguration - columnName PublicApiCreateColumnMetricMonitorResponse: type: object properties: columnMetricMonitor: type: object $ref: '#/components/schemas/ColumnMetricMonitorDTO' required: - columnMetricMonitor PublicApiCreateContractRequestDTO: type: object properties: contents: type: string datasetId: type: string datasetQualifiedName: type: string required: - contents PublicApiCreateContractResponse: type: object properties: contract: type: object $ref: '#/components/schemas/ContractContentDTO' PublicApiCreateCustomSqlMonitorRequestDTO: type: object properties: columnName: type: string configuration: type: object $ref: '#/components/schemas/CustomSqlMonitorConfigurationDTO' monitorName: type: string required: - configuration - monitorName PublicApiCreateCustomSqlMonitorResponse: type: object properties: customSqlMonitor: type: object $ref: '#/components/schemas/CustomMetricMonitorDTO' required: - customSqlMonitor PublicApiCreateDataStandardResponse: type: object properties: dataStandard: type: object $ref: '#/components/schemas/DataStandardContentDTO' PublicApiCreateDatasetRoleResponse: type: object properties: datasetRole: type: object $ref: '#/components/schemas/DatasetRoleContentDTO' required: - datasetRole PublicApiCreateDatasourceRequestDTO: type: object properties: configurationFileContents: type: string label: type: string runnerId: type: string required: - configurationFileContents PublicApiCreateDatasourceResponse: type: object properties: datasource: type: object $ref: '#/components/schemas/PublicApiDatasourceDTO' discoveryScanId: type: string PublicApiCreateDatasourceRoleResponse: type: object properties: datasourceRole: type: object $ref: '#/components/schemas/DatasourceRoleContentDTO' required: - datasourceRole PublicApiCreateIncidentDTO: type: object properties: description: type: string leadId: type: string monitorResultIds: type: array items: type: string resolutionNotes: type: string severity: type: object $ref: '#/components/schemas/IncidentSeverityDTO' status: type: object $ref: '#/components/schemas/IncidentStatusDTO' title: type: string required: - description - monitorResultIds - severity - title PublicApiCreateRunnerResponse: type: object properties: apiKeyId: type: string apiKeySecret: type: string PublicApiCreateSecretRequestDTO: type: object properties: encryptedValue: type: string encryptionKey: type: string name: type: string required: - encryptedValue - encryptionKey - name PublicApiCreateSecretResponse: type: object properties: secret: type: object $ref: '#/components/schemas/PublicApiSecretDTO' PublicApiCreateSkeletonContractRequestDTO: type: object properties: datasetId: type: string datasetQualifiedName: type: string PublicApiCreateSkeletonContractStatusResponse: type: object properties: created: type: string format: date-time datasetId: type: string datasetQualifiedName: type: string operationId: type: string state: type: object $ref: '#/components/schemas/SkeletonContractOperationStateDTO' PublicApiCreateUserGroupRequestDTO: type: object properties: name: type: string userIds: type: array items: type: string required: - name PublicApiDataStandardRequestDTO: type: object properties: attributes: type: object $ref: '#/components/schemas/MapOfStringTo_object' contents: type: string description: type: string label: type: string name: type: string owners: type: array items: type: object $ref: '#/components/schemas/DataStandardOwnerRequestDTO' schedule: type: object $ref: '#/components/schemas/DataStandardScheduleDTO' scope: type: object $ref: '#/components/schemas/DataStandardScopeDTO' status: type: object $ref: '#/components/schemas/DataStandardStatusDTO' required: - contents - name - owners - status PublicApiDataStandardsActivityResponse: type: object properties: activity: type: object $ref: '#/components/schemas/DataStandardActivityContentDTO' PublicApiDatasetColumnContentDTO: type: object properties: attributes: type: object $ref: '#/components/schemas/MapOfStringTo_object' columnId: type: string columnName: type: string required: - attributes - columnId - columnName PublicApiDatasetDiagnosticsWarehouseResponse: type: object properties: failedRowsConfiguration: type: object $ref: '#/components/schemas/PublicApiDatasetDiagnosticsWarehouseResponse_DiagnosticsWarehouseFailedRowsConfigurationDTO' scanAndResultsConfiguration: type: object $ref: '#/components/schemas/PublicApiDatasetDiagnosticsWarehouseResponse_DiagnosticsWarehouseScanAndResultsConfigurationDTO' schema: oneOf: - type: string - type: 'null' PublicApiDatasetDiagnosticsWarehouseResponse_DiagnosticsWarehouseFailedRowsConfigurationDTO: type: object properties: enabled: type: boolean failedRowSamples: type: object $ref: '#/components/schemas/FailedRowSamplesDTO' failedRowsCollectionStrategy: type: object $ref: '#/components/schemas/FailedRowsCollectionStrategyDTO' maxRowCount: type: integer format: int32 state: type: object $ref: '#/components/schemas/FailedRowsConfigurationStateDTO' storageStrategy: type: object $ref: '#/components/schemas/DiagnosticsWarehouseFailedRowsStorageStrategyDTO' uniqueKeyColumnNames: type: array items: type: string PublicApiDatasetDiagnosticsWarehouseResponse_DiagnosticsWarehouseScanAndResultsConfigurationDTO: type: object properties: enabled: type: boolean PublicApiDatasetMetricMonitoringResponse: type: object properties: columnMetricMonitors: type: array items: type: object $ref: '#/components/schemas/ColumnMetricMonitorDTO' customSqlMetricMonitors: type: array items: type: object $ref: '#/components/schemas/CustomMetricMonitorDTO' datasetId: type: string datasetMetricMonitorsConfiguration: type: array items: type: object $ref: '#/components/schemas/DatasetMetricMonitorConfigurationDTO' enabled: type: boolean historicalMetricCollectionScanStartDate: type: string format: date-time partitionColumn: type: string deprecated: true scanSchedule: type: object $ref: '#/components/schemas/ZonedCronDTO' timePartition: type: object $ref: '#/components/schemas/DatasetTimePartitionDTO' PublicApiDatasetProfilingResponse: type: object properties: columnCount: type: integer format: int64 columns: type: array items: type: object $ref: '#/components/schemas/DatasetColumnProfilingContentDTO' datasetId: type: string enabled: type: boolean partitionColumn: type: string deprecated: true profilingTime: type: string format: date-time rowCount: type: integer format: int64 samplingStrategyConfiguration: type: object $ref: '#/components/schemas/ProfilingSamplingStrategyConfigurationDTO' scanSchedule: type: object $ref: '#/components/schemas/ZonedCronDTO' timePartition: type: object $ref: '#/components/schemas/DatasetTimePartitionDTO' required: - columns - datasetId PublicApiDatasetResponsibilitiesResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DatasetResponsibilityContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiDatasetRoleRequestDTO: type: object properties: configureDataset: type: boolean createCheckProposals: type: boolean deleteDataset: type: boolean manageChecks: type: boolean manageContracts: type: boolean manageIncidents: type: boolean managePermissions: type: boolean name: type: string viewFailedRows: type: boolean viewProfilingAndSamples: type: boolean required: - name PublicApiDatasetRolesResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DatasetRoleContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiDatasetsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DatasetsContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiDatasourceDTO: type: object properties: createdAt: type: string format: date-time id: type: string label: type: string name: type: string type: type: object $ref: '#/components/schemas/PublicApiDatasourceTypeDTO' updatedAt: type: string format: date-time PublicApiDatasourceDiagnosticsWarehouseResponse: type: object properties: enabled: type: boolean failedRowsConfiguration: type: object $ref: '#/components/schemas/PublicApiDatasourceDiagnosticsWarehouseResponse_FailedRowsConfigurationDTO' reuseDatasource: type: boolean scanAndResultsConfiguration: type: object $ref: '#/components/schemas/PublicApiDatasourceDiagnosticsWarehouseResponse_ScanAndResultsConfigurationDTO' tableNameTemplate: type: string PublicApiDatasourceDiagnosticsWarehouseResponse_ActionButtonDTO: type: object properties: enabled: type: boolean title: type: string url: type: string PublicApiDatasourceDiagnosticsWarehouseResponse_FailedRowsConfigurationDTO: type: object properties: actionButton: type: object $ref: '#/components/schemas/PublicApiDatasourceDiagnosticsWarehouseResponse_ActionButtonDTO' enabled: type: boolean exposeQueries: type: boolean failedRowSamples: type: object $ref: '#/components/schemas/FailedRowSamplesDTO' failedRowsCollectionStrategy: type: object $ref: '#/components/schemas/FailedRowsCollectionStrategyDTO' locationMessage: type: string maxRowCount: type: integer format: int32 PublicApiDatasourceDiagnosticsWarehouseResponse_ScanAndResultsConfigurationDTO: type: object properties: enabled: type: boolean PublicApiDatasourceResponsibilitiesResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DatasourceResponsibilityContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiDatasourceRoleRequestDTO: type: object properties: createDatasets: type: boolean deleteDatasource: type: boolean manageDatasourceSettings: type: boolean managePermissions: type: boolean name: type: string viewDatasource: type: boolean required: - name PublicApiDatasourceRolesResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DatasourceRoleContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiDatasourceTypeDTO: type: string enum: - bigquery - mysql - postgres - snowflake - dask - spark - sparkdf - redshift - duckdb - presto - oracle - athena - trino - dremio - vertica - denodo - db2 - db2z - sqlserver - databricks - synapse - fabric - salesforce PublicApiDeleteAttributeResponse: type: object properties: message: type: string required: - message PublicApiDeleteColumnMetricMonitorResponse: type: object properties: message: type: string required: - message PublicApiDeleteCustomSqlMonitorResponse: type: object properties: message: type: string required: - message PublicApiDeleteDataStandardResponse: type: object properties: message: type: string required: - message PublicApiDeleteDatasetResponse: type: object properties: message: type: string required: - message PublicApiDeleteDatasetRoleResponse: type: object properties: message: type: string required: - message PublicApiDeleteDatasourceResponse: type: object properties: message: type: string PublicApiDeleteDatasourceRoleResponse: type: object properties: message: type: string required: - message PublicApiDeleteNotificationRuleResponse: type: object properties: message: type: string required: - message PublicApiDeleteRunnerResponse: type: object PublicApiDeleteSecretResponse: type: object properties: message: type: string PublicApiDeleteUserGroupResponse: type: object PublicApiDisableUserResponse: type: object PublicApiDiscoveredDatasetsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DiscoveredDatasetContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiEvaluateDataStandardScopeResponse: type: object properties: dataStandardId: type: string datasetIds: type: array items: type: string PublicApiExecuteDataStandardsRequestDTO: type: object properties: datasetId: type: string required: - datasetId PublicApiExecuteDataStandardsResponse: type: object properties: dataStandardIds: type: array items: type: string scanId: type: string PublicApiGenerateContractRequestDTO: type: object properties: datasetIds: type: array items: type: string datasetQualifiedNames: type: array items: type: string PublicApiGenerateContractStatusResponse: type: object properties: created: type: string format: date-time datasets: type: array items: type: object $ref: '#/components/schemas/PublicApiGenerateContractStatusResponse_DatasetGenerationStatus' operationId: type: string state: type: object $ref: '#/components/schemas/GenerateContractOperationStateDTO' PublicApiGenerateContractStatusResponse_DatasetGenerationStatus: type: object properties: datasetId: type: string datasetQualifiedName: type: string scanCloudUrl: type: string scanId: type: string scanState: type: object $ref: '#/components/schemas/ScanStateDTO' PublicApiGetContractResponse: type: object properties: contract: type: object $ref: '#/components/schemas/ContractContentDTO' PublicApiGetDataStandardResponse: type: object properties: dataStandard: type: object $ref: '#/components/schemas/DataStandardContentDTO' PublicApiGetDatasourceResponse: type: object properties: datasource: type: object $ref: '#/components/schemas/PublicApiDatasourceDTO' PublicApiGetEncryptionKeyResponse: type: object properties: encryptionKey: type: object $ref: '#/components/schemas/MapOfStringTo_object' PublicApiGetRunnerResponse: type: object properties: runner: type: object $ref: '#/components/schemas/PublicApiRunnerDTO' PublicApiImpactAssessmentDTO: type: object properties: affectedResources: type: array items: type: object $ref: '#/components/schemas/PublicApiRcaAffectedResourceDTO' blastRadius: type: object $ref: '#/components/schemas/PublicApiBlastRadiusDTO' summary: type: string PublicApiIncidentWithRcaReportDTO: type: object properties: hasRcaReport: type: boolean description: type: string resolutionNotes: type: string severity: type: object $ref: '#/components/schemas/IncidentSeverityDTO' cloudUrl: type: string id: type: string name: type: string number: type: integer format: int32 status: type: object $ref: '#/components/schemas/IncidentStatusDTO' required: - cloudUrl - description - id - name - number - severity - status PublicApiIncidentsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/PublicApiIncidentWithRcaReportDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiInviteUserRequestDTO: type: object properties: emails: type: array items: type: string required: - emails PublicApiInviteUserResponse: type: object properties: failedInvitations: type: array items: type: object $ref: '#/components/schemas/FailedInvitationDTO' validInvitations: type: array items: type: string PublicApiListAttributesResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/AttributeContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListContractVersionsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/ContractVersionDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListContractsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/ContractContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListDataStandardChecksResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DataStandardCheckContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListDataStandardDatasetsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DataStandardDatasetContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListDataStandardsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DataStandardContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListDatasetColumnsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/PublicApiDatasetColumnContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListDatasourcesResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/PublicApiDatasourceDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListNotificationRulesResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/PublicApiNotificationRuleDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListRunnersResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/PublicApiRunnerDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiListSecretsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/PublicApiSecretDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiNotificationRuleDTO: type: object properties: createdAt: type: string format: date-time customization: type: object $ref: '#/components/schemas/NotificationCustomizationDTO' filter: type: object $ref: '#/components/schemas/NotificationFilterDTO' id: type: string isDefault: type: boolean lastTriggeredAt: type: string format: date-time name: type: string ownerId: type: string recipients: type: array items: type: object $ref: '#/components/schemas/NotificationRecipientDTO' ruleType: type: object $ref: '#/components/schemas/PublicApiRuleTypeDTO' status: type: object $ref: '#/components/schemas/NotificationRuleStatusDTO' updatedAt: type: string format: date-time PublicApiNotificationRuleRequestDTO: type: object properties: customization: type: object $ref: '#/components/schemas/NotificationCustomizationDTO' filter: type: object $ref: '#/components/schemas/NotificationFilterDTO' name: type: string recipients: type: array items: type: object $ref: '#/components/schemas/NotificationRecipientDTO' ruleType: type: object $ref: '#/components/schemas/PublicApiRuleTypeDTO' status: type: object $ref: '#/components/schemas/NotificationRuleStatusDTO' required: - name - recipients - ruleType PublicApiOnboardDatasetsRequestDTO: type: object properties: discoveredDatasetIds: type: array items: type: string required: - discoveredDatasetIds PublicApiOnboardDatasetsStatusResponse: type: object properties: ended: type: string format: date-time id: type: string message: type: string started: type: string format: date-time state: type: object $ref: '#/components/schemas/PublicApiOnboardingStateDTO' required: - id - state PublicApiOnboardingStateDTO: type: string enum: - queued - processing - completed - failed - cancelled PublicApiPostProcessingStageDTO: type: object properties: ended: type: string format: date-time name: type: object $ref: '#/components/schemas/PublicApiPostProcessingStageTypeDTO' started: type: string format: date-time state: type: object $ref: '#/components/schemas/PublicApiPostProcessingStageStateDTO' required: - name PublicApiPostProcessingStageStateDTO: type: string enum: - ongoing - completed - failed PublicApiPostProcessingStageTypeDTO: type: string enum: - diagnosticWarehouse PublicApiPreviewDataStandardScopeRequestDTO: type: object properties: page: type: integer format: int32 scope: type: object $ref: '#/components/schemas/DataStandardScopeDTO' size: type: integer format: int32 PublicApiPreviewDataStandardScopeResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/DataStandardScopeMatchingDatasetContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiPublishContractRequestDTO: type: object properties: contents: type: string required: - contents PublicApiPublishContractResponse: type: object properties: contract: type: object $ref: '#/components/schemas/ContractContentDTO' PublicApiRcaAffectedResourceDTO: type: object properties: description: type: string metrics: type: array items: type: object $ref: '#/components/schemas/PublicApiRcaMetricDTO' resource: type: object $ref: '#/components/schemas/PublicApiRcaResourceRefDTO' required: - description - resource PublicApiRcaAgentDTO: type: object properties: model: type: string name: type: string sessionId: type: string version: type: string required: - name PublicApiRcaEvidenceDTO: type: object properties: kind: type: string resource: type: object $ref: '#/components/schemas/PublicApiRcaResourceRefDTO' text: type: string PublicApiRcaInvestigationStepDTO: type: object properties: detail: type: string evidence: type: array items: type: object $ref: '#/components/schemas/PublicApiRcaEvidenceDTO' order: type: integer format: int32 title: type: string required: - title PublicApiRcaLineageDTO: type: object properties: edges: type: array items: type: object $ref: '#/components/schemas/PublicApiRcaLineageEdgeDTO' nodes: type: array items: type: object $ref: '#/components/schemas/PublicApiRcaLineageNodeDTO' PublicApiRcaLineageEdgeDTO: type: object properties: from: type: string to: type: string required: - from - to PublicApiRcaLineageNodeDTO: type: object properties: id: type: string incidentAsset: type: boolean name: type: string namespace: type: string platform: type: string sodaResource: type: object $ref: '#/components/schemas/PublicApiRcaResourceRefDTO' status: type: object $ref: '#/components/schemas/RcaNodeStatusDTO' required: - id - name PublicApiRcaMetricDTO: type: object properties: label: type: string value: type: string required: - label - value PublicApiRcaRemediationItemDTO: type: object properties: action: type: string priority: type: object $ref: '#/components/schemas/RcaPriorityDTO' required: - action PublicApiRcaReportContentDTO: type: object properties: agentName: type: string blastRadiusAssetType: type: object $ref: '#/components/schemas/RcaAssetTypeDTO' blastRadiusCount: type: integer format: int32 confidence: type: object $ref: '#/components/schemas/RcaConfidenceDTO' durationSeconds: type: integer format: int32 generatedAt: type: string format: date-time id: type: string impactSummary: type: string incidentId: type: string publishedAt: type: string format: date-time rootCauseSummary: type: string status: type: object $ref: '#/components/schemas/RcaReportStatusDTO' PublicApiRcaReportDTO: type: object properties: agent: type: object $ref: '#/components/schemas/PublicApiRcaAgentDTO' impactAssessment: type: object $ref: '#/components/schemas/PublicApiImpactAssessmentDTO' rootCauseAnalysis: type: object $ref: '#/components/schemas/PublicApiRootCauseAnalysisDTO' required: - agent - rootCauseAnalysis PublicApiRcaResourceRefDTO: type: object properties: id: type: string name: type: string type: type: object $ref: '#/components/schemas/RcaResourceTypeDTO' url: type: string required: - id - type PublicApiRootCauseAnalysisDTO: type: object properties: confidence: type: object $ref: '#/components/schemas/RcaConfidenceDTO' durationSeconds: type: integer format: int32 generatedAt: type: string format: date-time investigation: type: array items: type: object $ref: '#/components/schemas/PublicApiRcaInvestigationStepDTO' lineage: type: object $ref: '#/components/schemas/PublicApiRcaLineageDTO' remediation: type: array items: type: object $ref: '#/components/schemas/PublicApiRcaRemediationItemDTO' rootCauseResource: type: object $ref: '#/components/schemas/PublicApiRcaResourceRefDTO' status: type: object $ref: '#/components/schemas/RcaReportStatusDTO' summary: type: string required: - confidence - generatedAt - status - summary PublicApiRuleTypeDTO: type: string enum: - check - monitor PublicApiRunnerDTO: type: object properties: id: type: string isOnline: type: boolean label: type: string lastSeenTimestamp: type: string format: date-time name: type: string type: type: object $ref: '#/components/schemas/PublicApiRunnerTypeDTO' versions: type: object $ref: '#/components/schemas/PublicApiRunnerVersionsDTO' PublicApiRunnerTypeDTO: type: string enum: - SELF_HOSTED - SODA_HOSTED PublicApiRunnerVersionsDTO: type: object properties: agent: type: string deprecated: true library: type: string runner: type: string PublicApiScanDefinitionSlim: type: object properties: id: type: string name: type: string required: - id - name PublicApiScanLogsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/LogsContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiScanStatusResponse: type: object properties: agentId: type: string deprecated: true checks: type: array items: type: object $ref: '#/components/schemas/PublicApiCheckSlimDTO' cloudUrl: type: string contractDatasetCloudUrl: type: string created: type: string format: date-time ended: type: string format: date-time errors: type: integer format: int32 failures: type: integer format: int32 id: type: string postProcessingStages: type: array items: type: object $ref: '#/components/schemas/PublicApiPostProcessingStageDTO' runnerId: type: string scanDefinition: type: object $ref: '#/components/schemas/PublicApiScanDefinitionSlim' scanTime: type: string format: date-time started: type: string format: date-time state: type: object $ref: '#/components/schemas/ScanStateDTO' submitted: type: string format: date-time warnings: type: integer format: int32 required: - cloudUrl - created - id - state PublicApiSecretDTO: type: object properties: created: type: string format: date-time id: type: string lastUpdated: type: string format: date-time name: type: string PublicApiSetColumnAttributesRequestDTO: type: object properties: columnAttributes: type: object $ref: '#/components/schemas/MapOfStringToMapOfStringTo_object' required: - columnAttributes PublicApiSpuConsumptionResponse: type: object properties: from: type: string format: date-time spusConsumed: type: integer format: int64 to: type: string format: date-time PublicApiTestConnectionRequestDTO: type: object properties: configurationFileContents: type: string runnerId: type: string required: - configurationFileContents - runnerId PublicApiTestConnectionStateDTO: type: string enum: - queued - processing - completed - failed - cancelled PublicApiTestConnectionStatusResponse: type: object properties: id: type: string message: type: string started: type: string format: date-time state: type: object $ref: '#/components/schemas/PublicApiTestConnectionStateDTO' required: - id - state PublicApiTestDataStandardRequestDTO: type: object properties: contents: type: string datasetId: type: string required: - contents - datasetId PublicApiTestDataStandardResponse: type: object properties: scanId: type: string PublicApiTestLoginResponse: type: object properties: organisationName: type: string PublicApiUpdateAttributeRequestDTO: type: object properties: allowedValues: type: array items: type: string description: type: string label: type: string PublicApiUpdateAttributeResponse: type: object properties: attribute: type: object $ref: '#/components/schemas/AttributeContentDTO' required: - attribute PublicApiUpdateColumnMetricMonitorRequestDTO: type: object properties: configuration: type: object $ref: '#/components/schemas/ColumnMonitorConfigurationDTO' required: - configuration PublicApiUpdateColumnMetricMonitorResponse: type: object properties: columnMetricMonitor: type: object $ref: '#/components/schemas/ColumnMetricMonitorDTO' required: - columnMetricMonitor PublicApiUpdateCustomSqlMonitorRequestDTO: type: object properties: columnName: type: string configuration: type: object $ref: '#/components/schemas/CustomSqlMonitorConfigurationUpdateDTO' name: type: string PublicApiUpdateCustomSqlMonitorResponse: type: object properties: customSqlMetricMonitor: type: object $ref: '#/components/schemas/CustomMetricMonitorDTO' required: - customSqlMetricMonitor PublicApiUpdateDataStandardResponse: type: object properties: dataStandard: type: object $ref: '#/components/schemas/DataStandardContentDTO' PublicApiUpdateDataStandardStatusRequestDTO: type: object properties: status: type: object $ref: '#/components/schemas/DataStandardStatusDTO' required: - status PublicApiUpdateDataStandardStatusResponse: type: object properties: dataStandard: type: object $ref: '#/components/schemas/DataStandardContentDTO' PublicApiUpdateDatasetDTO: type: object properties: attributes: type: object $ref: '#/components/schemas/MapOfStringTo_object' computeWarehouseOverride: type: object $ref: '#/components/schemas/UpdateDatasetComputeWarehouseOverrideConfigurationRequestDTO' diagnosticsWarehouse: type: object $ref: '#/components/schemas/UpdateDatasetDiagnosticsWarehouseConfigurationRequestDTO' label: type: string metricMonitoring: type: object $ref: '#/components/schemas/UpdateDatasetMetricMonitoringConfigurationRequestDTO' owners: type: array items: type: object $ref: '#/components/schemas/PublicApiUpdateDatasetOwnerRequestDTO' partitionColumn: type: string deprecated: true profiling: type: object $ref: '#/components/schemas/UpdateDatasetProfilingConfigurationRequestDTO' tags: type: array items: type: string timePartition: type: object $ref: '#/components/schemas/UpdateDatasetTimePartitionRequestDTO' PublicApiUpdateDatasetOwnerRequestDTO: type: object properties: type: type: object $ref: '#/components/schemas/DatasetOwnerTypeDTO' userGroupId: type: string userId: type: string required: - type PublicApiUpdateDatasetResponsibilitiesRequestDTO: type: object properties: responsibilities: type: array items: type: object $ref: '#/components/schemas/DatasetResponsibilityContentRequestDTO' required: - responsibilities PublicApiUpdateDatasetRoleResponse: type: object properties: datasetRole: type: object $ref: '#/components/schemas/DatasetRoleContentDTO' required: - datasetRole PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO: type: object properties: configurationFileContents: type: string enabled: type: boolean failedRowsConfiguration: type: object $ref: '#/components/schemas/PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO_FailedRowsConfigurationRequestDTO' reuseDatasource: type: boolean scanAndResultsConfiguration: type: object $ref: '#/components/schemas/PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO_ScanAndResultsConfigurationRequestDTO' tableNameTemplate: type: string PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO_ActionButtonRequestDTO: type: object properties: enabled: type: boolean title: type: string url: type: string PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO_FailedRowsConfigurationRequestDTO: type: object properties: actionButton: type: object $ref: '#/components/schemas/PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO_ActionButtonRequestDTO' enabled: type: boolean exposeQueries: type: boolean failedRowSamples: type: object $ref: '#/components/schemas/FailedRowSamplesDTO' failedRowsCollectionStrategy: type: object $ref: '#/components/schemas/FailedRowsCollectionStrategyDTO' locationMessage: type: string maxRowCount: type: integer format: int32 PublicApiUpdateDatasourceDiagnosticsWarehouseRequestDTO_ScanAndResultsConfigurationRequestDTO: type: object properties: enabled: type: boolean PublicApiUpdateDatasourceRequestDTO: type: object properties: configurationFileContents: type: string label: type: string runnerId: type: string PublicApiUpdateDatasourceResponse: type: object properties: datasource: type: object $ref: '#/components/schemas/PublicApiDatasourceDTO' PublicApiUpdateDatasourceResponsibilitiesRequestDTO: type: object properties: responsibilities: type: array items: type: object $ref: '#/components/schemas/DatasourceResponsibilityContentRequestDTO' required: - responsibilities PublicApiUpdateDatasourceRoleResponse: type: object properties: datasourceRole: type: object $ref: '#/components/schemas/DatasourceRoleContentDTO' required: - datasourceRole PublicApiUpdateIncidentDTO: type: object properties: description: type: string resolutionNotes: type: string severity: type: object $ref: '#/components/schemas/IncidentSeverityDTO' status: type: object $ref: '#/components/schemas/IncidentStatusDTO' title: type: string PublicApiUpdateSecretRequestDTO: type: object properties: encryptedValue: type: string encryptionKey: type: string required: - encryptedValue - encryptionKey PublicApiUpdateSecretResponse: type: object properties: secret: type: object $ref: '#/components/schemas/PublicApiSecretDTO' PublicApiUpdateUserGroupRequestDTO: type: object properties: userIds: type: array items: type: string PublicApiUserGroupsResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/UserGroupContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiUsersResponse: type: object properties: content: type: array items: type: object $ref: '#/components/schemas/UserContentDTO' first: type: boolean last: type: boolean number: type: integer format: int32 size: type: integer format: int32 totalElements: type: integer format: int32 totalPages: type: integer format: int32 required: - content - first - last - number - size - totalElements - totalPages PublicApiVerifyContractRequestDTO: type: object properties: checkPaths: type: array items: type: string RcaAssetTypeDTO: type: string enum: - dataset - datasource RcaConfidenceDTO: type: string enum: - high - medium - low RcaNodeStatusDTO: type: string enum: - rootCause - affected - healthy RcaPriorityDTO: type: string enum: - low - medium - high - urgent RcaReportStatusDTO: type: string enum: - completed - partial - inconclusive - failed RcaResourceTypeDTO: type: string enum: - dataset - datasource - check - checkResult ReferenceDiffDiagnosticsV4: type: object properties: diffCount: type: integer format: int32 diffPercent: type: number exclusiveInSource: type: integer format: int32 exclusiveInTarget: type: integer format: int32 sourceCheckRowsTested: type: integer format: int32 sourceDatasetRowsTested: type: integer format: int32 targetCheckRowsTested: type: integer format: int32 targetDatasetRowsTested: type: integer format: int32 ResponsibilityTypeDTO: type: string enum: - user - userGroup RowCountDiagnosticsV4: type: object properties: checkRowsTested: type: integer format: int32 datasetRowsTested: type: integer format: int32 RowCountDiffDiagnosticsV4: type: object properties: rowCountDiff: type: integer format: int32 rowCountDiffPercent: type: number sourceCheckRowsTested: type: integer format: int32 sourceDatasetRowsTested: type: integer format: int32 targetCheckRowsTested: type: integer format: int32 targetDatasetRowsTested: type: integer format: int32 RowsDiffDiagnosticsV4: type: object properties: changed: type: integer format: int32 diffCount: type: integer format: int32 diffPercent: type: number exclusiveInSource: type: integer format: int32 exclusiveInTarget: type: integer format: int32 sourceCheckRowsTested: type: integer format: int32 sourceDatasetRowsTested: type: integer format: int32 targetCheckRowsTested: type: integer format: int32 targetDatasetRowsTested: type: integer format: int32 ScanStateDTO: type: string enum: - queuing - executing - started - cancelationRequested - timeOutRequested - canceled - timedOut - failed - completedWithErrors - completedWithFailures - completedWithWarnings - completed SchemaDiagnosticsV4: type: object properties: actual: type: array items: type: object $ref: '#/components/schemas/SchemaDiagnosticsV4_Column' expected: type: array items: type: object $ref: '#/components/schemas/SchemaDiagnosticsV4_Column' SchemaDiagnosticsV4_Column: type: object properties: name: type: string type: type: string SkeletonContractOperationStateDTO: type: string enum: - ongoing - completed - failed - canceled ThresholdConditionDTO: type: string enum: - greaterThan - lessThan ThresholdStrategyDTO: type: object properties: isLowerBoundEnabled: type: boolean isUpperBoundEnabled: type: boolean required: - isLowerBoundEnabled - isUpperBoundEnabled UnitOfTimeDTO: type: string enum: - hours - days - weeks UpdateDatasetComputeWarehouseOverrideConfigurationRequestDTO: type: object properties: computeWarehouseConfiguration: type: object $ref: '#/components/schemas/UpdateDatasetComputeWarehouseOverrideConfigurationRequestDTO_WarehouseConfigurationDTO' enabled: type: boolean UpdateDatasetComputeWarehouseOverrideConfigurationRequestDTO_WarehouseConfigurationDTO: type: object properties: name: type: string required: - name UpdateDatasetDiagnosticsWarehouseConfigurationRequestDTO: type: object properties: failedRowsConfiguration: type: object $ref: '#/components/schemas/DatasetDiagnosticsWarehouseFailedRowsConfigurationRequest' scanAndResultsConfiguration: type: object $ref: '#/components/schemas/DatasetDiagnosticsWarehouseScanAndResultsConfigurationRequest' schema: type: string UpdateDatasetMetricMonitoringConfigurationRequestDTO: type: object properties: datasetMetricMonitorsConfiguration: type: array items: type: object $ref: '#/components/schemas/DatasetMetricMonitorConfigurationDTO' enabled: type: boolean historicalMetricCollectionScanStartDate: type: string format: date-time scanSchedule: type: object $ref: '#/components/schemas/ZonedCronDTO' UpdateDatasetProfilingConfigurationRequestDTO: type: object properties: enabled: type: boolean profilingSamplingStrategy: type: object $ref: '#/components/schemas/ProfilingSamplingStrategyConfigurationDTO' scanSchedule: type: object $ref: '#/components/schemas/ZonedCronDTO' UpdateDatasetTimePartitionRequestDTO: type: object properties: partitionColumn: type: string sqlExpression: type: string UserContentDTO: type: object properties: email: type: string firstName: type: string fullName: type: string lastName: type: string userId: type: string required: - email - userId UserGroupContentBasicDTO: type: object properties: name: type: string userGroupId: type: string required: - name - userGroupId UserGroupContentDTO: type: object properties: name: type: string userGroupId: type: string users: type: array items: type: object $ref: '#/components/schemas/UserContentDTO' required: - name - userGroupId - users ValidRangeDTO: type: object properties: max: type: number min: type: number ValueCountContentDTO: type: object properties: count: type: integer format: int64 value: type: object $ref: '#/components/schemas/_object' ZonedCronDTO: type: object properties: cronExpression: type: string timezone: type: string required: - cronExpression - timezone _object: type: object